@hyperttp/core 1.2.0 → 1.2.6

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.
@@ -1,22 +1,15 @@
1
1
  import type { HttpClientOptions, HyperTransport, RetryOptions, TransportRequest, TransportResponse } from "@hyperttp/types";
2
2
  export declare function isRedirect(status: number): boolean;
3
- export declare function combineSignal(signal: AbortSignal | undefined, timeoutMs: number): {
4
- signal?: AbortSignal;
5
- cancelTimer: () => void;
6
- isTimeoutAbort: () => boolean;
7
- };
8
3
  export declare function shouldRetry(status: number, retryOptions: RetryOptions): boolean;
9
4
  export declare function sleep(ms: number): Promise<void>;
10
5
  export declare function calcDelay(attempt: number, retryOptions: RetryOptions): number;
11
- /**
12
- * @ru Высокопроизводительный транспорт на базе классических модулей http/https Node.js.
13
- */
14
6
  export declare class NodeTransport implements HyperTransport {
15
7
  config: HttpClientOptions;
16
8
  private readonly httpAgent;
17
9
  private readonly httpsAgent;
18
10
  constructor(config: HttpClientOptions);
19
11
  private get timeout();
12
+ private logRetry;
20
13
  execute(req: TransportRequest): Promise<TransportResponse>;
21
14
  private dispatchOnce;
22
15
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/transports/node.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB;IACD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,OAAO,CAAC;CAC/B,CA8BA;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACzB,OAAO,CAMT;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAI7E;AAkED;;GAEG;AACH,qBAAa,aAAc,YAAW,cAAc;IAC3C,MAAM,EAAE,iBAAiB,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;gBAE7B,MAAM,EAAE,iBAAiB;IAkBrC,OAAO,KAAK,OAAO,GAElB;IAEY,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuHvE,OAAO,CAAC,YAAY;IAwEP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/transports/node.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EAEd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAWzB,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACzB,OAAO,CAMT;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAI7E;AAgKD,qBAAa,aAAc,YAAW,cAAc;IAC3C,MAAM,EAAE,iBAAiB,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;gBAE7B,MAAM,EAAE,iBAAiB;IAkBrC,OAAO,KAAK,OAAO,GAElB;IAED,OAAO,CAAC,QAAQ;IAOH,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkJvE,OAAO,CAAC,YAAY;IAsGP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
@@ -1,41 +1,19 @@
1
1
  import http from "node:http";
2
2
  import https from "node:https";
3
+ import zlib from "node:zlib";
3
4
  import { Readable } from "node:stream";
5
+ import { ReadableStream } from "node:stream/web";
4
6
  const REDIRECT_STATUS_CODES = new Set([301, 302, 303, 307, 308]);
5
7
  const DEFAULT_RETRY_STATUS_CODES = [502, 503, 504];
8
+ const RETRYABLE_NETWORK_CODES = [
9
+ "ECONNREFUSED",
10
+ "ETIMEDOUT",
11
+ "ECONNRESET",
12
+ "EPIPE",
13
+ ];
6
14
  export function isRedirect(status) {
7
15
  return REDIRECT_STATUS_CODES.has(status);
8
16
  }
9
- export function combineSignal(signal, timeoutMs) {
10
- if (timeoutMs <= 0) {
11
- return {
12
- signal,
13
- cancelTimer: () => { },
14
- isTimeoutAbort: () => false,
15
- };
16
- }
17
- const timeoutController = new AbortController();
18
- const timer = setTimeout(() => timeoutController.abort(), timeoutMs);
19
- let combinedSignal;
20
- if (signal) {
21
- if (typeof AbortSignal.any === "function") {
22
- combinedSignal = AbortSignal.any([signal, timeoutController.signal]);
23
- }
24
- else {
25
- const onAbort = () => timeoutController.abort();
26
- signal.addEventListener("abort", onAbort, { once: true });
27
- combinedSignal = timeoutController.signal;
28
- }
29
- }
30
- else {
31
- combinedSignal = timeoutController.signal;
32
- }
33
- return {
34
- signal: combinedSignal,
35
- cancelTimer: () => clearTimeout(timer),
36
- isTimeoutAbort: () => timeoutController.signal.aborted,
37
- };
38
- }
39
17
  export function shouldRetry(status, retryOptions) {
40
18
  const codes = retryOptions.retryStatusCodes;
41
19
  if (codes && codes.length > 0) {
@@ -48,40 +26,119 @@ export function sleep(ms) {
48
26
  }
49
27
  export function calcDelay(attempt, retryOptions) {
50
28
  const { baseDelay = 1000, maxDelay = 10000, jitter = true } = retryOptions;
51
- const base = Math.min(baseDelay * 2 ** attempt, maxDelay);
29
+ const base = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);
52
30
  return jitter ? base * (0.75 + Math.random() * 0.5) : base;
53
31
  }
54
- /**
55
- * @ru Реализация ответа для стандартного Node.js транспорта.
56
- */
57
32
  class NodeTransportResponse {
58
33
  status;
59
34
  headers;
60
35
  url;
61
- body;
62
36
  baseUrl;
63
- _rawBody;
37
+ _decodedStream;
38
+ _cachedBuffer;
64
39
  _cachedText;
65
40
  _cachedJson;
66
41
  _cachedJsonReady = false;
67
- constructor(status, headers, url, rawBody) {
42
+ _cachedWebStream;
43
+ constructor(status, headers, url, rawStream) {
68
44
  this.status = status;
69
45
  this.headers = headers;
70
46
  this.url = url;
71
- this._rawBody = rawBody;
72
47
  this.baseUrl = url;
73
- const stream = Readable.from([rawBody]);
74
- Object.defineProperty(stream, "dump", {
75
- value: () => Promise.resolve(),
76
- writable: false,
77
- enumerable: false,
78
- configurable: true,
48
+ let stream = rawStream;
49
+ const contentEncoding = headers["content-encoding"];
50
+ if (typeof contentEncoding === "string") {
51
+ const encoding = contentEncoding.toLowerCase();
52
+ if (encoding.includes("gzip")) {
53
+ stream = stream.pipe(zlib.createGunzip());
54
+ }
55
+ else if (encoding.includes("deflate")) {
56
+ stream = stream.pipe(zlib.createInflate());
57
+ }
58
+ else if (encoding.includes("br")) {
59
+ stream = stream.pipe(zlib.createBrotliDecompress());
60
+ }
61
+ }
62
+ this._decodedStream = stream;
63
+ }
64
+ get body() {
65
+ if (!this._cachedWebStream) {
66
+ let webStream;
67
+ if (this._cachedBuffer) {
68
+ const buf = this._cachedBuffer;
69
+ webStream = new ReadableStream({
70
+ start(controller) {
71
+ controller.enqueue(new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength));
72
+ controller.close();
73
+ },
74
+ });
75
+ }
76
+ else {
77
+ webStream = Readable.toWeb(this._decodedStream);
78
+ }
79
+ Object.defineProperty(webStream, "dump", {
80
+ value: () => this.dump(),
81
+ writable: false,
82
+ enumerable: false,
83
+ configurable: true,
84
+ });
85
+ this._cachedWebStream = webStream;
86
+ }
87
+ return this._cachedWebStream;
88
+ }
89
+ async _getBuffer() {
90
+ if (this._cachedBuffer)
91
+ return this._cachedBuffer;
92
+ if (this._cachedWebStream) {
93
+ const reader = this._cachedWebStream.getReader();
94
+ const chunks = [];
95
+ while (true) {
96
+ const { done, value } = await reader.read();
97
+ if (done)
98
+ break;
99
+ if (value)
100
+ chunks.push(value);
101
+ }
102
+ let totalLength = 0;
103
+ for (const chunk of chunks)
104
+ totalLength += chunk.byteLength;
105
+ const merged = new Uint8Array(totalLength);
106
+ let offset = 0;
107
+ for (const chunk of chunks) {
108
+ merged.set(chunk, offset);
109
+ offset += chunk.byteLength;
110
+ }
111
+ this._cachedBuffer = Buffer.from(merged.buffer, merged.byteOffset, merged.byteLength);
112
+ return this._cachedBuffer;
113
+ }
114
+ return new Promise((resolve, reject) => {
115
+ const chunks = [];
116
+ const onData = (chunk) => {
117
+ chunks.push(chunk);
118
+ };
119
+ const onEnd = () => {
120
+ cleanup();
121
+ this._cachedBuffer = Buffer.concat(chunks);
122
+ resolve(this._cachedBuffer);
123
+ };
124
+ const onError = (err) => {
125
+ cleanup();
126
+ reject(err);
127
+ };
128
+ const cleanup = () => {
129
+ this._decodedStream.removeListener("data", onData);
130
+ this._decodedStream.removeListener("end", onEnd);
131
+ this._decodedStream.removeListener("error", onError);
132
+ };
133
+ this._decodedStream.on("data", onData);
134
+ this._decodedStream.on("end", onEnd);
135
+ this._decodedStream.on("error", onError);
79
136
  });
80
- this.body = stream;
81
137
  }
82
138
  async text() {
83
139
  if (this._cachedText === undefined) {
84
- this._cachedText = this._rawBody.toString("utf-8");
140
+ const buf = await this._getBuffer();
141
+ this._cachedText = buf.toString("utf-8");
85
142
  }
86
143
  return this._cachedText;
87
144
  }
@@ -99,10 +156,12 @@ class NodeTransportResponse {
99
156
  this._cachedJsonReady = true;
100
157
  return this._cachedJson;
101
158
  }
159
+ async dump() {
160
+ if (this._cachedBuffer)
161
+ return;
162
+ this._decodedStream.resume();
163
+ }
102
164
  }
103
- /**
104
- * @ru Высокопроизводительный транспорт на базе классических модулей http/https Node.js.
105
- */
106
165
  export class NodeTransport {
107
166
  config;
108
167
  httpAgent;
@@ -122,57 +181,65 @@ export class NodeTransport {
122
181
  get timeout() {
123
182
  return this.config.network?.timeout ?? 30000;
124
183
  }
184
+ logRetry(reason, attempt, maxRetries) {
185
+ this.config.logger?.("warn", `Retrying request: ${reason}. Attempt ${attempt}/${maxRetries}`);
186
+ }
125
187
  async execute(req) {
126
188
  let currentUrl = req.url;
127
189
  let currentMethod = req.method;
128
190
  let currentHeaders = { ...req.headers };
129
191
  let currentBody = req.body;
130
192
  let redirects = 0;
131
- let attempt = 0;
193
+ const startTime = Date.now();
194
+ let attempt = 1;
132
195
  const maxRedirects = this.config.network?.maxRedirects ?? 5;
133
196
  const maxRetries = this.config.retry?.maxRetries ?? 3;
134
- const isStreamBody = currentBody instanceof Readable;
197
+ const isStreamBody = currentBody instanceof ReadableStream;
135
198
  while (true) {
136
- const { signal, cancelTimer, isTimeoutAbort } = combineSignal(req.signal, this.timeout);
137
199
  try {
138
200
  const fullUrl = new URL(currentUrl);
139
201
  const result = await this.dispatchOnce(fullUrl, {
140
202
  method: currentMethod,
141
203
  headers: currentHeaders,
142
204
  body: currentBody,
143
- signal,
205
+ externalSignal: req.signal,
206
+ timeoutMs: this.timeout,
144
207
  });
145
208
  if ((this.config.network?.followRedirects ?? true) &&
146
209
  isRedirect(result.status)) {
210
+ result.body.resume();
147
211
  if (redirects >= maxRedirects) {
148
212
  throw new Error("Too many redirects");
149
213
  }
150
214
  const location = result.headers["location"];
151
- if (location && typeof location === "string") {
152
- const nextUrl = new URL(location, fullUrl.toString()).toString();
153
- let nextMethod = currentMethod;
154
- if (result.status === 303 ||
155
- ((result.status === 301 || result.status === 302) &&
156
- currentMethod === "POST")) {
157
- nextMethod = "GET";
158
- }
159
- currentUrl = nextUrl;
160
- currentMethod = nextMethod;
161
- currentBody =
162
- nextMethod === "GET" || isStreamBody ? undefined : currentBody;
163
- const nextHeaders = { ...currentHeaders };
164
- if (nextMethod === "GET") {
165
- delete nextHeaders["content-type"];
166
- delete nextHeaders["content-length"];
167
- }
168
- currentHeaders = nextHeaders;
169
- redirects += 1;
170
- continue;
215
+ const locationStr = Array.isArray(location) ? location[0] : location;
216
+ if (typeof locationStr !== "string") {
217
+ throw new Error("Invalid redirect location");
218
+ }
219
+ const nextUrl = new URL(locationStr, fullUrl.toString()).toString();
220
+ let nextMethod = currentMethod;
221
+ if (result.status === 303 ||
222
+ ((result.status === 301 || result.status === 302) &&
223
+ currentMethod === "POST")) {
224
+ nextMethod = "GET";
171
225
  }
226
+ currentUrl = nextUrl;
227
+ currentMethod = nextMethod;
228
+ currentBody =
229
+ nextMethod === "GET" || isStreamBody ? undefined : currentBody;
230
+ const nextHeaders = { ...currentHeaders };
231
+ if (nextMethod === "GET") {
232
+ delete nextHeaders["content-type"];
233
+ delete nextHeaders["content-length"];
234
+ }
235
+ currentHeaders = nextHeaders;
236
+ redirects += 1;
237
+ continue;
172
238
  }
173
239
  if (!isStreamBody &&
174
240
  shouldRetry(result.status, this.config.retry ?? {})) {
175
241
  if (attempt < maxRetries) {
242
+ result.body.resume();
176
243
  await sleep(calcDelay(attempt, this.config.retry ?? {}));
177
244
  attempt += 1;
178
245
  continue;
@@ -181,33 +248,49 @@ export class NodeTransport {
181
248
  return new NodeTransportResponse(result.status, result.headers, fullUrl.toString(), result.body);
182
249
  }
183
250
  catch (err) {
184
- if (err.name === "AbortError" || isTimeoutAbort()) {
185
- if (req.signal?.aborted)
186
- throw err;
187
- if (isTimeoutAbort()) {
188
- throw new Error(`Request timeout after ${this.timeout}ms`, {
189
- cause: err,
190
- });
251
+ const error = err;
252
+ if (error.name === "AbortError") {
253
+ if (req.signal?.aborted) {
254
+ throw error;
191
255
  }
192
- throw new Error("Transport closed or aborted", { cause: err });
256
+ const msg = `Request timeout after ${this.timeout}ms`;
257
+ this.config.logger?.("error", msg);
258
+ const timeoutErr = new Error(msg);
259
+ timeoutErr.name = "AbortError";
260
+ timeoutErr.code = "TIMEOUT";
261
+ timeoutErr.request = {
262
+ url: req.url,
263
+ method: req.method,
264
+ headers: req.headers,
265
+ };
266
+ timeoutErr.meta = {
267
+ retryCount: attempt - 1,
268
+ isRetryable: false,
269
+ duration: Date.now() - startTime,
270
+ };
271
+ throw timeoutErr;
193
272
  }
194
- const retryableCodes = [
195
- "ECONNREFUSED",
196
- "ETIMEDOUT",
197
- "ECONNRESET",
198
- "EPIPE",
199
- ];
200
273
  if (!isStreamBody &&
201
274
  attempt < maxRetries &&
202
- retryableCodes.includes(err.code)) {
275
+ error.code &&
276
+ RETRYABLE_NETWORK_CODES.includes(error.code)) {
277
+ this.logRetry(`due to ${error.code}`, attempt, maxRetries);
203
278
  await sleep(calcDelay(attempt, this.config.retry ?? {}));
204
279
  attempt += 1;
205
280
  continue;
206
281
  }
207
- throw err;
208
- }
209
- finally {
210
- cancelTimer();
282
+ error.code = error.code ?? "NETWORK_ERROR";
283
+ error.request = {
284
+ url: req.url,
285
+ method: req.method,
286
+ headers: req.headers,
287
+ };
288
+ error.meta = {
289
+ retryCount: attempt - 1,
290
+ isRetryable: false,
291
+ duration: Date.now() - startTime,
292
+ };
293
+ throw error;
211
294
  }
212
295
  }
213
296
  }
@@ -216,50 +299,86 @@ export class NodeTransport {
216
299
  const isHttps = url.protocol === "https:";
217
300
  const requestFn = isHttps ? https.request : http.request;
218
301
  const agent = isHttps ? this.httpsAgent : this.httpAgent;
302
+ let isDone = false;
303
+ let timer;
219
304
  const reqOptions = {
220
305
  method: options.method,
221
306
  headers: options.headers,
222
307
  agent,
223
- signal: options.signal,
224
308
  };
225
- if (options.signal?.aborted) {
309
+ if (options.externalSignal?.aborted) {
226
310
  const abortError = new Error("The operation was aborted.");
227
311
  abortError.name = "AbortError";
228
312
  return reject(abortError);
229
313
  }
230
314
  const req = requestFn(url, reqOptions, (res) => {
231
- const chunks = [];
232
- res.on("data", (chunk) => {
233
- chunks.push(chunk);
234
- });
235
- res.on("end", () => {
236
- const body = chunks.length === 0 ? Buffer.alloc(0) : Buffer.concat(chunks);
237
- resolve({
238
- status: res.statusCode ?? 200,
239
- headers: res.headers,
240
- body,
241
- });
315
+ if (timer)
316
+ clearTimeout(timer);
317
+ cleanupExternalSignal();
318
+ isDone = true;
319
+ resolve({
320
+ status: res.statusCode ?? 200,
321
+ headers: res.headers,
322
+ body: res,
242
323
  });
243
- res.on("error", (err) => {
324
+ });
325
+ if (options.timeoutMs > 0) {
326
+ timer = setTimeout(() => {
327
+ if (isDone)
328
+ return;
329
+ isDone = true;
330
+ cleanupExternalSignal();
331
+ req.destroy();
332
+ const err = new Error("The operation was aborted.");
333
+ err.name = "AbortError";
334
+ reject(err);
335
+ }, options.timeoutMs);
336
+ }
337
+ let onExternalAbort;
338
+ if (options.externalSignal) {
339
+ onExternalAbort = () => {
340
+ if (isDone)
341
+ return;
342
+ isDone = true;
343
+ if (timer)
344
+ clearTimeout(timer);
345
+ req.destroy();
346
+ const err = new Error("The operation was aborted.");
347
+ err.name = "AbortError";
244
348
  reject(err);
349
+ };
350
+ options.externalSignal.addEventListener("abort", onExternalAbort, {
351
+ once: true,
245
352
  });
246
- });
353
+ }
354
+ function cleanupExternalSignal() {
355
+ if (options.externalSignal && onExternalAbort) {
356
+ options.externalSignal.removeEventListener("abort", onExternalAbort);
357
+ }
358
+ }
247
359
  req.on("error", (err) => {
360
+ if (isDone)
361
+ return;
362
+ isDone = true;
363
+ if (timer)
364
+ clearTimeout(timer);
365
+ cleanupExternalSignal();
248
366
  reject(err);
249
367
  });
250
368
  if (options.body !== undefined && options.body !== null) {
251
369
  if (Buffer.isBuffer(options.body) || typeof options.body === "string") {
252
- req.write(options.body);
370
+ req.end(options.body);
253
371
  }
254
- else if (options.body instanceof Readable) {
255
- options.body.pipe(req);
256
- return; // Управление потоком передано pipe
372
+ else if (options.body instanceof ReadableStream) {
373
+ Readable.fromWeb(options.body).pipe(req);
257
374
  }
258
375
  else {
259
- req.write(JSON.stringify(options.body));
376
+ req.end(JSON.stringify(options.body));
260
377
  }
261
378
  }
262
- req.end();
379
+ else {
380
+ req.end();
381
+ }
263
382
  });
264
383
  }
265
384
  async close() {
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/transports/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/transports/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Method, RequestBodyData } from "@hyperttp/types";
2
+ export type NormalizedBody = string | Uint8Array | ArrayBuffer | FormData | URLSearchParams | ReadableStream | Blob | null | undefined;
3
+ export declare function normalizeHeaders(headers: unknown): Record<string, string>;
4
+ export declare function normalizeMethod(method: string): Method;
5
+ export declare function normalizeBody(method: Method, body: RequestBodyData | undefined): RequestBodyData | undefined;
6
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,UAAU,GACV,WAAW,GACX,QAAQ,GACR,eAAe,GACf,cAAc,GACd,IAAI,GACJ,IAAI,GACJ,SAAS,CAAC;AA+Bd,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiEzE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,eAAe,GAAG,SAAS,GAChC,eAAe,GAAG,SAAS,CAQ7B"}
@@ -0,0 +1,96 @@
1
+ const SINGLE_VALUE_HEADERS = new Set([
2
+ "content-type",
3
+ "content-length",
4
+ "content-encoding",
5
+ "content-disposition",
6
+ "host",
7
+ "authorization",
8
+ "proxy-authorization",
9
+ "user-agent",
10
+ "referer",
11
+ "origin",
12
+ "location",
13
+ "etag",
14
+ "last-modified",
15
+ ]);
16
+ const MULTI_VALUE_HEADERS = new Set([
17
+ "set-cookie",
18
+ "accept",
19
+ "accept-encoding",
20
+ "accept-language",
21
+ "cache-control",
22
+ "pragma",
23
+ "vary",
24
+ "warning",
25
+ "www-authenticate",
26
+ "proxy-authenticate",
27
+ ]);
28
+ export function normalizeHeaders(headers) {
29
+ const out = Object.create(null);
30
+ if (!headers)
31
+ return out;
32
+ const appendHeader = (key, rawValue) => {
33
+ const lower = key.toLowerCase();
34
+ if (!lower)
35
+ return;
36
+ if (rawValue === undefined || rawValue === null)
37
+ return;
38
+ const value = typeof rawValue === "string" ? rawValue : String(rawValue);
39
+ if (SINGLE_VALUE_HEADERS.has(lower)) {
40
+ out[lower] = value;
41
+ return;
42
+ }
43
+ const existing = out[lower];
44
+ if (existing === undefined) {
45
+ out[lower] = value;
46
+ return;
47
+ }
48
+ if (lower === "cookie" || lower === "cookie2") {
49
+ out[lower] = `${existing}; ${value}`;
50
+ return;
51
+ }
52
+ if (lower === "set-cookie") {
53
+ out[lower] = `${existing}\n${value}`;
54
+ return;
55
+ }
56
+ if (MULTI_VALUE_HEADERS.has(lower)) {
57
+ out[lower] = `${existing}, ${value}`;
58
+ return;
59
+ }
60
+ out[lower] = value;
61
+ };
62
+ if (Array.isArray(headers)) {
63
+ for (let i = 0; i < headers.length; i += 2) {
64
+ const key = headers[i];
65
+ const value = headers[i + 1];
66
+ if (typeof key !== "string" || !key)
67
+ continue;
68
+ appendHeader(key, value);
69
+ }
70
+ return out;
71
+ }
72
+ const headerObj = headers;
73
+ for (const [key, val] of Object.entries(headerObj)) {
74
+ if (val === undefined)
75
+ continue;
76
+ if (Array.isArray(val)) {
77
+ for (const item of val)
78
+ appendHeader(key, item);
79
+ }
80
+ else {
81
+ appendHeader(key, val);
82
+ }
83
+ }
84
+ return out;
85
+ }
86
+ export function normalizeMethod(method) {
87
+ return method.toUpperCase();
88
+ }
89
+ export function normalizeBody(method, body) {
90
+ const upper = method.toUpperCase();
91
+ if (upper === "GET" || upper === "HEAD") {
92
+ return undefined;
93
+ }
94
+ return body ?? undefined;
95
+ }
96
+ //# sourceMappingURL=normalize.js.map