@hyperttp/transport-bun 0.2.0 → 0.2.2

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/bun.d.ts CHANGED
@@ -1,28 +1,92 @@
1
1
  import type { HttpClientOptions, HyperTransport, TransportRequest, TransportResponse } from "@hyperttp/types";
2
- export declare function fastGetHostname(url: string): string;
3
- export declare function getAbortError(signal?: AbortSignal): unknown;
4
- export declare function throwIfAborted(signal?: AbortSignal): void;
5
- export declare function normalizeCookieHeader(value: string | string[] | undefined): string;
6
- export declare function normalizeHeaderValue(name: string, value: string | string[]): string;
2
+ /**
3
+ * @ru Конфигурация транспорта Bun.
4
+ * @en Bun transport configuration.
5
+ */
6
+ export interface BunTransportConfig extends HttpClientOptions {
7
+ /**
8
+ * @ru Базовый URL для всех запросов.
9
+ * @en Base URL for all requests.
10
+ */
11
+ baseUrl?: string;
12
+ }
13
+ /**
14
+ * @ru Высокопроизводительный HTTP-транспорт для Bun с нативными оптимизациями.
15
+ * Поддерживает cookies, concurrency control, таймауты, keepalive и TLS конфигурацию.
16
+ * @en High-performance HTTP transport for Bun with native optimizations.
17
+ * Supports cookies, concurrency control, timeouts, keepalive, and TLS configuration.
18
+ */
7
19
  export declare class BunTransport implements HyperTransport {
8
- config: HttpClientOptions;
20
+ config: BunTransportConfig;
9
21
  private cookieJar;
22
+ private readonly cookieDomains;
10
23
  private cookieCache;
24
+ private cookieCacheSize;
11
25
  private activeRequests;
12
26
  private concurrencyQueue;
27
+ private queueHead;
28
+ private queueTail;
13
29
  private hasCookies;
14
30
  private _maxConcurrent;
15
31
  private _timeout;
16
32
  private _userAgent;
17
33
  private _keepalive;
18
34
  private _tlsConfig;
19
- constructor(config: HttpClientOptions);
35
+ /**
36
+ * @ru Создаёт экземпляр BunTransport.
37
+ * @en Creates a BunTransport instance.
38
+ * @param config - Transport configuration.
39
+ */
40
+ constructor(config: BunTransportConfig);
41
+ /**
42
+ * @ru Инвалидирует кэшированные настройки при изменении конфигурации.
43
+ * @en Invalidates cached settings when configuration changes.
44
+ */
20
45
  private invalidateConfig;
46
+ /**
47
+ * @ru Выполняет HTTP-запрос через нативный fetch Bun.
48
+ * @en Executes an HTTP request via Bun's native fetch.
49
+ * @param req - The normalized transport request.
50
+ * @returns Promise resolving to the transport response.
51
+ */
21
52
  execute(req: TransportRequest): Promise<TransportResponse>;
53
+ /**
54
+ * @ru Подготавливает заголовки запроса, добавляя User-Agent и cookies.
55
+ * @en Prepares request headers, adding User-Agent and cookies.
56
+ * @param req - The transport request.
57
+ * @returns The prepared headers or undefined.
58
+ */
22
59
  private prepareHeaders;
60
+ /**
61
+ * @ru Ожидает свободный слот в очереди concurrency.
62
+ * @en Waits for an available slot in the concurrency queue.
63
+ * @param signal - Optional abort signal.
64
+ * @returns Promise that resolves when a slot is available.
65
+ */
66
+ private waitForSlot;
67
+ /**
68
+ * @ru Освобождает слот и уведомляет следующий запрос в очереди.
69
+ * @en Releases a slot and notifies the next request in the queue.
70
+ */
71
+ private releaseSlot;
72
+ /**
73
+ * @ru Извлекает cookies для указанного домена из cookie jar.
74
+ * @en Retrieves cookies for the specified domain from the cookie jar.
75
+ * @param requestDomain - The domain to get cookies for.
76
+ * @returns The cookie string or empty string.
77
+ */
23
78
  private getCookiesForDomain;
24
- private updateCookies;
79
+ /**
80
+ * @ru Мягко закрывает транспорт, очищая очереди и cookies.
81
+ * @en Gracefully closes the transport, clearing queues and cookies.
82
+ * @returns Promise that resolves when the transport is closed.
83
+ */
25
84
  close(): Promise<void>;
85
+ /**
86
+ * @ru Принудительно уничтожает транспорт и все активные соединения.
87
+ * @en Immediately destroys the transport and all active connections.
88
+ * @returns Promise that resolves when the transport is destroyed.
89
+ */
26
90
  destroy(): Promise<void>;
27
91
  }
28
92
  //# sourceMappingURL=bun.d.ts.map
package/bun.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqBnD;AAED,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAK3D;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAKzD;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACnC,MAAM,CAGR;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GACvB,MAAM,CAOR;AAED,qBAAa,YAAa,YAAW,cAAc;IAC1C,MAAM,EAAE,iBAAiB,CAAC;IAEjC,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAmC;gBAEzC,MAAM,EAAE,iBAAiB;IAKrC,OAAO,CAAC,gBAAgB;IASX,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoFvE,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,aAAa;IAuDR,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
1
+ {"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AA4HzB;;;GAGG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,cAAc;IAC1C,MAAM,EAAE,kBAAkB,CAAC;IAElC,OAAO,CAAC,SAAS,CAA+D;IAChF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,eAAe,CAAK;IAE5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,gBAAgB,CAAmD;IAC3E,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAgD;IAElE;;;;OAIG;gBACS,MAAM,EAAE,kBAAkB;IAKtC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;;;OAKG;IACU,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsEvE;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAgCtB;;;;;OAKG;YACW,WAAW;IAmBzB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAkBnB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAgC3B;;;;OAIG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnC;;;;OAIG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
package/bun.js CHANGED
@@ -1,255 +1,375 @@
1
- export function fastGetHostname(url) {
1
+ /**
2
+ * @ru Кэш hostname'ов для быстрого извлечения домена из URL.
3
+ * @en Hostname cache for fast domain extraction from URLs.
4
+ */
5
+ let hostnameCacheSize = 0;
6
+ let hostnameCache = Object.create(null);
7
+ let lastUrl = "";
8
+ let lastHost = "";
9
+ /**
10
+ * @ru Быстрое извлечение hostname из URL с кэшированием.
11
+ * @en Fast hostname extraction from URL with caching.
12
+ * @param url - The URL to extract hostname from.
13
+ * @returns The extracted hostname.
14
+ */
15
+ function fastGetHostname(url) {
16
+ if (url === lastUrl)
17
+ return lastHost;
2
18
  if (!url)
3
19
  return "localhost";
4
- if (url.charCodeAt(0) === 47)
5
- return "localhost";
6
- let start = url.indexOf("//");
7
- if (start === -1) {
8
- start = 0;
20
+ const cached = hostnameCache[url];
21
+ if (cached !== undefined) {
22
+ lastUrl = url;
23
+ lastHost = cached;
24
+ return cached;
25
+ }
26
+ let start = 0;
27
+ const first = url.charCodeAt(0);
28
+ if (first === 47) {
29
+ start = url.charCodeAt(1) === 47 ? 2 : 0;
30
+ if (start === 0)
31
+ return "localhost";
9
32
  }
10
33
  else {
11
- start += 2;
34
+ const schemeIdx = url.indexOf("://");
35
+ if (schemeIdx !== -1)
36
+ start = schemeIdx + 3;
12
37
  }
13
- let end = url.indexOf("/", start);
14
- if (end === -1)
15
- end = url.indexOf("?", start);
16
- if (end === -1)
17
- end = url.length;
18
- const portIdx = url.indexOf(":", start);
19
- if (portIdx !== -1 && portIdx < end) {
20
- end = portIdx;
38
+ let end = url.length;
39
+ for (let i = start; i < end; i++) {
40
+ const code = url.charCodeAt(i);
41
+ if (code === 47 || code === 63 || code === 35) {
42
+ end = i;
43
+ break;
44
+ }
21
45
  }
22
- return url.slice(start, end) || "localhost";
23
- }
24
- export function getAbortError(signal) {
25
- return (signal?.reason ??
26
- new DOMException("The operation was aborted.", "AbortError"));
27
- }
28
- export function throwIfAborted(signal) {
29
- if (!signal)
30
- return;
31
- if (signal.aborted) {
32
- throw getAbortError(signal);
46
+ const atIdx = url.indexOf("@", start);
47
+ if (atIdx !== -1 && atIdx < end)
48
+ start = atIdx + 1;
49
+ const colonIdx = url.indexOf(":", start);
50
+ if (colonIdx !== -1 && colonIdx < end)
51
+ end = colonIdx;
52
+ const host = url.slice(start, end) || "localhost";
53
+ if (hostnameCacheSize > 1024) {
54
+ hostnameCache = Object.create(null);
55
+ hostnameCacheSize = 0;
33
56
  }
57
+ hostnameCache[url] = host;
58
+ hostnameCacheSize++;
59
+ lastUrl = url;
60
+ lastHost = host;
61
+ return host;
34
62
  }
35
- export function normalizeCookieHeader(value) {
36
- if (value === undefined)
37
- return "";
38
- return Array.isArray(value) ? value.join("; ") : String(value).trim();
63
+ /**
64
+ * @ru Разрешает относительный URL относительно baseUrl.
65
+ * @en Resolves a relative URL against a baseUrl.
66
+ * @param baseUrl - The base URL.
67
+ * @param url - The URL to resolve.
68
+ * @returns The resolved absolute URL.
69
+ */
70
+ function resolveUrl(baseUrl, url) {
71
+ if (url.charCodeAt(0) === 47)
72
+ return baseUrl + url;
73
+ if (url.startsWith("http://") || url.startsWith("https://"))
74
+ return url;
75
+ return baseUrl + "/" + url;
39
76
  }
40
- export function normalizeHeaderValue(name, value) {
41
- if (Array.isArray(value)) {
42
- return name.toLowerCase() === "cookie"
43
- ? value.join("; ")
44
- : value.join(", ");
45
- }
46
- return value;
77
+ /**
78
+ * @ru Кэшированные DOMException для частых ошибок abort/timeout.
79
+ * @en Cached DOMException for frequent abort/timeout errors.
80
+ */
81
+ const ABORT_ERROR = new DOMException("The operation was aborted.", "AbortError");
82
+ const TIMEOUT_ERROR = new DOMException("The operation was aborted due to timeout.", "TimeoutError");
83
+ /**
84
+ * @ru Извлекает причину abort из signal или возвращает кэшированную ошибку.
85
+ * @en Extracts abort reason from signal or returns cached error.
86
+ * @param signal - Optional abort signal.
87
+ * @returns The abort error or reason.
88
+ */
89
+ function getAbortError(signal) {
90
+ return signal?.reason ?? ABORT_ERROR;
47
91
  }
92
+ /**
93
+ * @ru Нормализует тело запроса в формат, совместимый с fetch.
94
+ * @en Normalizes request body to fetch-compatible format.
95
+ * @param body - The request body to normalize.
96
+ * @returns The normalized body or undefined.
97
+ */
98
+ function normalizeBody(body) {
99
+ if (body == null)
100
+ return undefined;
101
+ if (typeof body === "string")
102
+ return body;
103
+ if (body instanceof Uint8Array)
104
+ return body;
105
+ if (body instanceof ArrayBuffer)
106
+ return body;
107
+ if (ArrayBuffer.isView(body))
108
+ return body;
109
+ if (typeof ReadableStream !== "undefined" && body instanceof ReadableStream)
110
+ return body;
111
+ if (typeof URLSearchParams !== "undefined" && body instanceof URLSearchParams)
112
+ return body;
113
+ if (typeof FormData !== "undefined" && body instanceof FormData)
114
+ return body;
115
+ if (typeof Blob !== "undefined" && body instanceof Blob)
116
+ return body;
117
+ if (typeof body === "object")
118
+ return JSON.stringify(body);
119
+ return String(body);
120
+ }
121
+ /**
122
+ * @ru Высокопроизводительный HTTP-транспорт для Bun с нативными оптимизациями.
123
+ * Поддерживает cookies, concurrency control, таймауты, keepalive и TLS конфигурацию.
124
+ * @en High-performance HTTP transport for Bun with native optimizations.
125
+ * Supports cookies, concurrency control, timeouts, keepalive, and TLS configuration.
126
+ */
48
127
  export class BunTransport {
49
128
  config;
50
- cookieJar = new Map();
51
- cookieCache = new Map();
129
+ cookieJar = Object.create(null);
130
+ cookieDomains = [];
131
+ cookieCache = Object.create(null);
132
+ cookieCacheSize = 0;
52
133
  activeRequests = 0;
53
- concurrencyQueue = [];
134
+ concurrencyQueue = Object.create(null);
135
+ queueHead = 0;
136
+ queueTail = 0;
54
137
  hasCookies = false;
55
138
  _maxConcurrent = 0;
56
139
  _timeout = 0;
57
140
  _userAgent = undefined;
58
141
  _keepalive = false;
59
- _tlsConfig;
142
+ _tlsConfig = null;
143
+ /**
144
+ * @ru Создаёт экземпляр BunTransport.
145
+ * @en Creates a BunTransport instance.
146
+ * @param config - Transport configuration.
147
+ */
60
148
  constructor(config) {
61
149
  this.config = config;
62
150
  this.invalidateConfig();
63
151
  }
152
+ /**
153
+ * @ru Инвалидирует кэшированные настройки при изменении конфигурации.
154
+ * @en Invalidates cached settings when configuration changes.
155
+ */
64
156
  invalidateConfig() {
65
- const net = this.config.network;
157
+ const net = this.config?.network;
66
158
  this._maxConcurrent = net?.maxConcurrent ?? 0;
67
159
  this._timeout = net?.timeout ?? 0;
68
160
  this._userAgent = net?.userAgent;
69
161
  this._keepalive = !!net?.keepAliveTimeout;
70
- this._tlsConfig = { rejectUnauthorized: net?.rejectUnauthorized ?? true };
162
+ this._tlsConfig = (net?.rejectUnauthorized ?? true) ? null : { rejectUnauthorized: false };
71
163
  }
164
+ /**
165
+ * @ru Выполняет HTTP-запрос через нативный fetch Bun.
166
+ * @en Executes an HTTP request via Bun's native fetch.
167
+ * @param req - The normalized transport request.
168
+ * @returns Promise resolving to the transport response.
169
+ */
72
170
  async execute(req) {
73
171
  const maxConcurrent = this._maxConcurrent;
74
- let signal = req.signal;
75
172
  const timeoutMs = this._timeout;
173
+ let signal = req.signal;
174
+ let timer = null;
76
175
  if (timeoutMs > 0) {
77
- const timeoutSignal = AbortSignal.timeout(timeoutMs);
78
- signal = req.signal
79
- ? AbortSignal.any([req.signal, timeoutSignal])
80
- : timeoutSignal;
176
+ if (!signal) {
177
+ signal = AbortSignal.timeout(timeoutMs);
178
+ }
179
+ else if (signal.aborted) {
180
+ throw getAbortError(signal);
181
+ }
182
+ else {
183
+ const controller = new AbortController();
184
+ const originalSignal = signal;
185
+ originalSignal.addEventListener("abort", () => controller.abort(originalSignal.reason), {
186
+ once: true,
187
+ });
188
+ timer = setTimeout(() => controller.abort(TIMEOUT_ERROR), timeoutMs);
189
+ signal = controller.signal;
190
+ }
81
191
  }
82
192
  if (signal?.aborted)
83
193
  throw getAbortError(signal);
84
194
  if (maxConcurrent > 0 && this.activeRequests >= maxConcurrent) {
85
- await new Promise((resolve, reject) => {
86
- const onAbort = () => {
87
- signal?.removeEventListener("abort", onAbort);
88
- reject(getAbortError(signal));
89
- };
90
- signal?.addEventListener("abort", onAbort, { once: true });
91
- this.concurrencyQueue.push(() => {
92
- signal?.removeEventListener("abort", onAbort);
93
- resolve();
94
- });
95
- });
195
+ await this.waitForSlot(signal);
196
+ if (signal?.aborted)
197
+ throw getAbortError(signal);
96
198
  }
97
- if (signal?.aborted)
98
- throw getAbortError(signal);
99
199
  this.activeRequests++;
100
200
  try {
101
- const nativeRes = await fetch(req.url, {
201
+ const headers = this.prepareHeaders(req);
202
+ const fullUrl = resolveUrl(this.config?.baseUrl ?? "", req.url);
203
+ const init = {
102
204
  method: req.method,
103
- headers: this.prepareHeaders(req),
104
- body: req.body,
105
- signal,
106
- keepalive: this._keepalive,
107
205
  redirect: "manual",
108
- tls: this._tlsConfig,
109
- });
110
- if (this.hasCookies || nativeRes.headers.has("set-cookie")) {
111
- const setCookies = nativeRes.headers.getSetCookie();
112
- if (setCookies?.length) {
113
- this.updateCookies(fastGetHostname(req.url), setCookies);
114
- }
115
- }
116
- const rawBody = nativeRes.body ?? new ReadableStream();
117
- const bodyPayload = rawBody;
118
- bodyPayload.dump = async function () {
119
- return rawBody.cancel().catch(() => { });
120
206
  };
121
- const headersObj = {};
122
- nativeRes.headers.forEach((value, key) => {
123
- const first = key.charCodeAt(0);
124
- if (first === 99 || first === 67) {
125
- const lower = key.toLowerCase();
126
- if (lower === "content-encoding" || lower === "content-length") {
127
- return;
128
- }
129
- }
130
- headersObj[key] = value;
131
- });
207
+ if (headers !== undefined)
208
+ init.headers = headers;
209
+ if (req.body !== undefined)
210
+ init.body = normalizeBody(req.body);
211
+ if (signal !== undefined)
212
+ init.signal = signal;
213
+ if (this._keepalive)
214
+ init.keepalive = true;
215
+ if (this._tlsConfig !== null)
216
+ init.tls = this._tlsConfig;
217
+ const nativeRes = await fetch(fullUrl, init);
218
+ if (timer !== null) {
219
+ clearTimeout(timer);
220
+ timer = null;
221
+ }
132
222
  return {
133
223
  status: nativeRes.status,
134
- headers: headersObj,
135
224
  url: nativeRes.url,
136
- body: bodyPayload,
225
+ body: nativeRes.body,
226
+ headers: nativeRes.headers,
137
227
  };
138
228
  }
229
+ catch (err) {
230
+ if (timer !== null)
231
+ clearTimeout(timer);
232
+ throw err;
233
+ }
139
234
  finally {
140
235
  this.activeRequests--;
141
- if (maxConcurrent > 0 && this.concurrencyQueue.length > 0) {
142
- const nextResolver = this.concurrencyQueue.shift();
143
- if (nextResolver)
144
- nextResolver();
145
- }
236
+ if (maxConcurrent > 0)
237
+ this.releaseSlot();
146
238
  }
147
239
  }
240
+ /**
241
+ * @ru Подготавливает заголовки запроса, добавляя User-Agent и cookies.
242
+ * @en Prepares request headers, adding User-Agent and cookies.
243
+ * @param req - The transport request.
244
+ * @returns The prepared headers or undefined.
245
+ */
148
246
  prepareHeaders(req) {
149
247
  const original = req.headers;
150
- const headers = {};
151
- for (const key in original) {
152
- if (Object.prototype.hasOwnProperty.call(original, key)) {
153
- headers[key] = normalizeHeaderValue(key, original[key]);
154
- }
155
- }
156
- const ua = this._userAgent;
157
- if (ua && !headers["User-Agent"] && !headers["user-agent"]) {
158
- headers["User-Agent"] = ua;
159
- }
160
- const userCookie = normalizeCookieHeader(headers["Cookie"]);
161
- const hasUserCookie = userCookie.length > 0;
162
- if (!this.hasCookies) {
163
- if (hasUserCookie) {
164
- headers["Cookie"] = userCookie;
248
+ const needUA = this._userAgent !== undefined;
249
+ const needCookies = this.hasCookies;
250
+ if (!needUA && !needCookies)
251
+ return original;
252
+ if (original == null) {
253
+ const headers = Object.create(null);
254
+ if (needUA)
255
+ headers["user-agent"] = this._userAgent;
256
+ if (needCookies) {
257
+ const savedCookies = this.getCookiesForDomain(fastGetHostname(req.url));
258
+ if (savedCookies.length > 0)
259
+ headers["cookie"] = savedCookies;
165
260
  }
166
261
  return headers;
167
262
  }
168
- const domain = fastGetHostname(req.url);
169
- const savedCookies = this.getCookiesForDomain(domain);
170
- const hasSavedCookies = savedCookies.length > 0;
171
- if (hasUserCookie && hasSavedCookies) {
172
- headers["Cookie"] = `${userCookie}; ${savedCookies}`;
263
+ if (needUA && original["user-agent"] === undefined) {
264
+ original["user-agent"] = this._userAgent;
173
265
  }
174
- else if (hasUserCookie) {
175
- headers["Cookie"] = userCookie;
176
- }
177
- else if (hasSavedCookies) {
178
- headers["Cookie"] = savedCookies;
266
+ if (needCookies) {
267
+ const savedCookies = this.getCookiesForDomain(fastGetHostname(req.url));
268
+ if (savedCookies.length > 0) {
269
+ const currentCookie = original["cookie"];
270
+ original["cookie"] = currentCookie ? currentCookie + "; " + savedCookies : savedCookies;
271
+ }
179
272
  }
180
- return headers;
273
+ return original;
181
274
  }
182
- getCookiesForDomain(requestDomain) {
183
- if (this.cookieCache.has(requestDomain)) {
184
- return this.cookieCache.get(requestDomain);
185
- }
186
- const matchedCookies = [];
187
- for (const [storedDomain, cookiesMap] of this.cookieJar) {
188
- if (requestDomain === storedDomain ||
189
- requestDomain.endsWith("." + storedDomain)) {
190
- for (const [key, val] of cookiesMap) {
191
- matchedCookies.push(`${key}=${val}`);
192
- }
275
+ /**
276
+ * @ru Ожидает свободный слот в очереди concurrency.
277
+ * @en Waits for an available slot in the concurrency queue.
278
+ * @param signal - Optional abort signal.
279
+ * @returns Promise that resolves when a slot is available.
280
+ */
281
+ async waitForSlot(signal) {
282
+ return new Promise((resolve, reject) => {
283
+ const currentTail = this.queueTail++;
284
+ const onAbort = () => {
285
+ signal?.removeEventListener("abort", onAbort);
286
+ delete this.concurrencyQueue[currentTail];
287
+ reject(getAbortError(signal));
288
+ };
289
+ if (signal)
290
+ signal.addEventListener("abort", onAbort, { once: true });
291
+ this.concurrencyQueue[currentTail] = () => {
292
+ signal?.removeEventListener("abort", onAbort);
293
+ resolve();
294
+ };
295
+ });
296
+ }
297
+ /**
298
+ * @ru Освобождает слот и уведомляет следующий запрос в очереди.
299
+ * @en Releases a slot and notifies the next request in the queue.
300
+ */
301
+ releaseSlot() {
302
+ while (this.queueHead < this.queueTail) {
303
+ const next = this.concurrencyQueue[this.queueHead];
304
+ if (next !== undefined) {
305
+ delete this.concurrencyQueue[this.queueHead];
306
+ this.queueHead++;
307
+ next();
308
+ return;
193
309
  }
310
+ this.queueHead++;
311
+ }
312
+ if (this.queueHead === this.queueTail) {
313
+ this.queueHead = 0;
314
+ this.queueTail = 0;
194
315
  }
195
- const result = matchedCookies.length > 0 ? matchedCookies.join("; ") : "";
196
- this.cookieCache.set(requestDomain, result);
197
- return result;
198
316
  }
199
- updateCookies(requestDomain, setCookies) {
200
- this.hasCookies = true;
201
- for (let i = 0; i < setCookies.length; i++) {
202
- const cookieStr = setCookies[i];
203
- if (!cookieStr)
204
- continue;
205
- const parts = cookieStr.split(";");
206
- const rawPair = parts[0];
207
- if (!rawPair)
317
+ /**
318
+ * @ru Извлекает cookies для указанного домена из cookie jar.
319
+ * @en Retrieves cookies for the specified domain from the cookie jar.
320
+ * @param requestDomain - The domain to get cookies for.
321
+ * @returns The cookie string or empty string.
322
+ */
323
+ getCookiesForDomain(requestDomain) {
324
+ const cached = this.cookieCache[requestDomain];
325
+ if (cached !== undefined)
326
+ return cached;
327
+ let result = "";
328
+ const domainsLen = this.cookieDomains.length;
329
+ for (let i = 0; i < domainsLen; i++) {
330
+ const storedDomain = this.cookieDomains[i];
331
+ if (!storedDomain)
208
332
  continue;
209
- const equalIdx = rawPair.indexOf("=");
210
- if (equalIdx === -1)
333
+ if (requestDomain !== storedDomain && !requestDomain.endsWith("." + storedDomain))
211
334
  continue;
212
- const key = rawPair.slice(0, equalIdx).trim();
213
- const val = rawPair.slice(equalIdx + 1).trim();
214
- if (!key)
335
+ const cookiesMap = this.cookieJar[storedDomain];
336
+ if (!cookiesMap)
215
337
  continue;
216
- let targetDomain = requestDomain;
217
- for (let j = 1; j < parts.length; j++) {
218
- const attr = parts[j];
219
- if (!attr)
220
- continue;
221
- const trimmedAttr = attr.trim();
222
- if (trimmedAttr.toLowerCase().startsWith("domain=")) {
223
- let domVal = trimmedAttr.slice(7).trim();
224
- if (domVal.startsWith(".")) {
225
- domVal = domVal.slice(1);
226
- }
227
- if (domVal)
228
- targetDomain = domVal;
229
- break;
230
- }
231
- }
232
- let domainMap = this.cookieJar.get(targetDomain);
233
- if (!domainMap) {
234
- domainMap = new Map();
235
- this.cookieJar.set(targetDomain, domainMap);
236
- }
237
- domainMap.set(key, val);
238
- if (this.cookieCache.size > 0) {
239
- for (const cachedDomain of this.cookieCache.keys()) {
240
- if (cachedDomain === targetDomain ||
241
- cachedDomain.endsWith("." + targetDomain)) {
242
- this.cookieCache.delete(cachedDomain);
243
- }
244
- }
338
+ for (const key in cookiesMap) {
339
+ if (result.length > 0)
340
+ result += "; ";
341
+ result += key + "=" + cookiesMap[key];
245
342
  }
246
343
  }
344
+ if (this.cookieCacheSize > 1024) {
345
+ this.cookieCache = Object.create(null);
346
+ this.cookieCacheSize = 0;
347
+ }
348
+ this.cookieCache[requestDomain] = result;
349
+ this.cookieCacheSize++;
350
+ return result;
247
351
  }
352
+ /**
353
+ * @ru Мягко закрывает транспорт, очищая очереди и cookies.
354
+ * @en Gracefully closes the transport, clearing queues and cookies.
355
+ * @returns Promise that resolves when the transport is closed.
356
+ */
248
357
  async close() {
249
- this.concurrencyQueue = [];
250
- this.cookieJar.clear();
251
- this.cookieCache.clear();
358
+ this.concurrencyQueue = Object.create(null);
359
+ this.queueHead = 0;
360
+ this.queueTail = 0;
361
+ this.cookieJar = Object.create(null);
362
+ this.cookieDomains.length = 0;
363
+ this.cookieCache = Object.create(null);
364
+ this.cookieCacheSize = 0;
365
+ this.activeRequests = 0;
366
+ this.hasCookies = false;
252
367
  }
368
+ /**
369
+ * @ru Принудительно уничтожает транспорт и все активные соединения.
370
+ * @en Immediately destroys the transport and all active connections.
371
+ * @returns Promise that resolves when the transport is destroyed.
372
+ */
253
373
  async destroy() {
254
374
  await this.close();
255
375
  }
package/bun.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bun.js","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bun.js","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { fastGetHostname, BunTransport } from "./bun.js";
1
+ export { BunTransport } from "./bun.js";
2
2
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
package/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { fastGetHostname, BunTransport } from "./bun.js";
1
+ export { BunTransport } from "./bun.js";
2
2
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,22 +1,24 @@
1
1
  {
2
2
  "name": "@hyperttp/transport-bun",
3
- "version": "0.2.0",
4
- "description": "High-performance, extensible HTTP client for Bun",
3
+ "version": "0.2.2",
4
+ "description": "High-performance HTTP transport for Bun with native fetch optimizations",
5
5
  "type": "module",
6
+ "sideEffects": false,
7
+ "main": "./index.js",
8
+ "types": "./index.d.ts",
6
9
  "exports": {
7
10
  ".": {
8
11
  "types": "./index.d.ts",
9
- "import": "./index.js",
10
- "require": "./index.js"
11
- },
12
- "./package.json": "./package.json"
12
+ "import": "./index.js"
13
+ }
13
14
  },
14
15
  "keywords": [
15
16
  "http",
16
- "client",
17
+ "transport",
17
18
  "high-performance",
18
19
  "fetch",
19
- "bun"
20
+ "bun",
21
+ "hyperttp"
20
22
  ],
21
23
  "author": "dirold2",
22
24
  "license": "MIT",
@@ -25,7 +27,7 @@
25
27
  "url": "git+https://github.com/IT-IF-OR/hyperttp-transport-bun.git"
26
28
  },
27
29
  "peerDependencies": {
28
- "@hyperttp/types": "link:@hyperttp/types"
30
+ "@hyperttp/types": "^0.2.1"
29
31
  },
30
32
  "private": false
31
33
  }