@subsquid/http-client 1.6.0 → 1.7.0-2-0.a5e4b7

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/lib/client.d.ts CHANGED
@@ -1,10 +1,7 @@
1
1
  import type { Logger } from '@subsquid/logger';
2
- import type { Headers, RequestInit, Response } from 'node-fetch';
3
- import { AgentProvider } from './agent';
4
2
  import { HttpBody } from './body';
5
3
  export { HttpBody };
6
4
  export interface HttpClientOptions {
7
- agent?: AgentProvider;
8
5
  baseUrl?: string;
9
6
  headers?: Record<string, string | number | bigint>;
10
7
  /**
@@ -14,9 +11,12 @@ export interface HttpClientOptions {
14
11
  * Overall request processing time might be much larger due to retries.
15
12
  */
16
13
  httpTimeout?: number;
14
+ bodyTimeout?: number;
17
15
  retryAttempts?: number;
18
16
  retrySchedule?: number[];
17
+ keepalive?: boolean;
19
18
  log?: Logger | null;
19
+ fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
20
20
  }
21
21
  export interface RequestOptions {
22
22
  query?: Record<string, string | number | bigint>;
@@ -24,8 +24,10 @@ export interface RequestOptions {
24
24
  retryAttempts?: number;
25
25
  retrySchedule?: number[];
26
26
  httpTimeout?: number;
27
+ bodyTimeout?: number;
27
28
  abort?: AbortSignal;
28
29
  stream?: boolean;
30
+ keepalive?: boolean;
29
31
  }
30
32
  export interface GraphqlRequestOptions extends RequestOptions {
31
33
  variables?: Record<string, any>;
@@ -38,6 +40,7 @@ export interface FetchRequest extends RequestInit {
38
40
  url: string;
39
41
  headers: Headers;
40
42
  timeout?: number;
43
+ bodyTimeout?: number;
41
44
  signal?: AbortSignal;
42
45
  stream?: boolean;
43
46
  }
@@ -46,11 +49,13 @@ export declare class HttpClient {
46
49
  protected log?: Logger;
47
50
  protected headers?: Record<string, string | number | bigint>;
48
51
  private baseUrl?;
49
- private agent;
50
52
  private retrySchedule;
51
53
  private retryAttempts;
52
54
  private httpTimeout;
55
+ private bodyTimeout?;
53
56
  private requestCounter;
57
+ private keepalive?;
58
+ private fetch;
54
59
  constructor(options?: HttpClientOptions);
55
60
  get<T = any>(url: string, options?: RequestOptions): Promise<T>;
56
61
  post<T = any>(url: string, options?: RequestOptions & HttpBody): Promise<T>;
@@ -97,6 +102,10 @@ export declare class HttpTimeoutError extends Error {
97
102
  constructor(ms: number);
98
103
  get name(): string;
99
104
  }
105
+ export declare class HttpBodyTimeoutError extends Error {
106
+ constructor(ms: number);
107
+ get name(): string;
108
+ }
100
109
  export interface GraphqlMessage {
101
110
  message: string;
102
111
  path?: (string | number)[];
@@ -106,6 +115,6 @@ export declare class GraphqlError extends Error {
106
115
  constructor(messages: GraphqlMessage[]);
107
116
  get name(): string;
108
117
  }
109
- export declare function isHttpConnectionError(err: unknown): boolean;
110
118
  export declare function asRetryAfterPause(res: HttpResponse | Error): number | undefined;
119
+ export declare function isHttpConnectionError(error: unknown): boolean;
111
120
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAG5C,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAC,aAAa,EAAuB,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAA;AAI/B,OAAO,EAAC,QAAQ,EAAC,CAAA;AAGjB,MAAM,WAAW,iBAAiB;IAC9B,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAA;IAClD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAGD,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAA;IAChD,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB;AAGD,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,KAAK,CAAA;CACjB;AAGD,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB;AAGD,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAA;AAGpC,qBAAa,UAAU;IACnB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAA;IAC5D,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,cAAc,CAAI;gBAEd,OAAO,GAAE,iBAAsB;IAU3C,GAAG,CAAC,CAAC,GAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7D,IAAI,CAAC,CAAC,GAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IAInE,OAAO,CAAC,CAAC,GAAC,GAAG,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAc,GAAG,QAAa,GACxC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAiC3B,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAYhD,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAoBhG,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAWtG,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI;cAenD,cAAc,CAC1B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,GAAG,QAAQ,GACnC,OAAO,CAAC,YAAY,CAAC;IAwDxB,OAAO,CAAC,eAAe;YAUT,yBAAyB;YAwCzB,cAAc;cAcZ,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBvF,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO;IAqB1E,OAAO,CAAC,oBAAoB;IAY5B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQ9B,OAAO,CAAC,UAAU;IAeZ,cAAc,CAAC,CAAC,GAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,CAAC,CAAC;CAwB5F;AAGD,qBAAa,YAAY,CAAC,CAAC,GAAC,GAAG;aAEP,SAAS,EAAE,MAAM;aACjB,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,MAAM;aACd,OAAO,EAAE,OAAO;aAChB,IAAI,EAAE,CAAC;aACP,MAAM,EAAE,OAAO;gBALf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,OAAO;IAInC,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,MAAM,IAAI,IAAI;IAKd,MAAM;;;;;;CAQT;AAGD,qBAAa,SAAU,SAAQ,KAAK;aACJ,QAAQ,EAAE,YAAY;gBAAtB,QAAQ,EAAE,YAAY;IAIlD,IAAI,IAAI,IAAI,MAAM,CAEjB;CACJ;AAGD,qBAAa,gBAAiB,SAAQ,KAAK;aACX,EAAE,EAAE,MAAM;gBAAV,EAAE,EAAE,MAAM;IAItC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACJ;AAGD,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAC7B;AAGD,qBAAa,YAAa,SAAQ,KAAK;aACP,QAAQ,EAAE,cAAc,EAAE;gBAA1B,QAAQ,EAAE,cAAc,EAAE;IAItD,IAAI,IAAI,IAAI,MAAM,CAEjB;CACJ;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAK3D;AAGD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAY/E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/lib/client.js CHANGED
@@ -1,28 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GraphqlError = exports.HttpTimeoutError = exports.HttpError = exports.HttpResponse = exports.HttpClient = void 0;
4
- exports.isHttpConnectionError = isHttpConnectionError;
3
+ exports.GraphqlError = exports.HttpBodyTimeoutError = exports.HttpTimeoutError = exports.HttpError = exports.HttpResponse = exports.HttpClient = void 0;
5
4
  exports.asRetryAfterPause = asRetryAfterPause;
6
- const logger_1 = require("@subsquid/logger");
5
+ exports.isHttpConnectionError = isHttpConnectionError;
7
6
  const util_internal_1 = require("@subsquid/util-internal");
8
- const agent_1 = require("./agent");
9
- const request_1 = require("./request");
7
+ const util_timeout_1 = require("@subsquid/util-timeout");
10
8
  class HttpClient {
11
9
  constructor(options = {}) {
12
10
  this.requestCounter = 0;
13
- this.log = options.log === null ? undefined : options.log || (0, logger_1.createLogger)('sqd:http-client');
11
+ this.log = options.log === null ? undefined : options.log;
14
12
  this.headers = options.headers;
15
13
  this.setBaseUrl(options.baseUrl);
16
- this.agent = options.agent || agent_1.defaultAgentProvider;
17
14
  this.retrySchedule = options.retrySchedule || [10, 100, 500, 2000, 10000, 20000];
18
15
  this.retryAttempts = options.retryAttempts || 0;
19
16
  this.httpTimeout = options.httpTimeout ?? 20000;
17
+ this.bodyTimeout = options.bodyTimeout;
18
+ this.keepalive = options.keepalive;
19
+ this.fetch = options.fetch || fetch;
20
20
  }
21
21
  get(url, options) {
22
- return this.request('GET', url, options).then(res => res.body);
22
+ return this.request('GET', url, options).then((res) => res.body);
23
23
  }
24
24
  post(url, options) {
25
- return this.request('POST', url, options).then(res => res.body);
25
+ return this.request('POST', url, options).then((res) => res.body);
26
26
  }
27
27
  async request(method, url, options = {}) {
28
28
  let req = await this.prepareRequest(method, url, options);
@@ -36,9 +36,7 @@ class HttpClient {
36
36
  if (retryAttempts > retries && this.isRetryableError(res, req)) {
37
37
  let pause = asRetryAfterPause(res);
38
38
  if (pause == null) {
39
- pause = retrySchedule.length
40
- ? retrySchedule[Math.min(retries, retrySchedule.length - 1)]
41
- : 1000;
39
+ pause = retrySchedule.length ? retrySchedule[Math.min(retries, retrySchedule.length - 1)] : 1000;
42
40
  }
43
41
  retries += 1;
44
42
  this.beforeRetryPause(req, res, pause);
@@ -63,7 +61,7 @@ class HttpClient {
63
61
  httpRequestUrl: req.url,
64
62
  httpRequestMethod: req.method,
65
63
  httpRequestHeaders: Array.from(req.headers),
66
- httpRequestBody: req.body
64
+ httpRequestBody: req.body,
67
65
  }, 'http request');
68
66
  }
69
67
  }
@@ -72,7 +70,8 @@ class HttpClient {
72
70
  let info = {
73
71
  httpRequestId: req.id,
74
72
  httpRequestUrl: req.url,
75
- httpRequestMethod: req.method
73
+ httpRequestMethod: req.method,
74
+ httpRequestBody: req.body,
76
75
  };
77
76
  if (reason instanceof Error) {
78
77
  info.reason = reason.toString();
@@ -93,7 +92,7 @@ class HttpClient {
93
92
  httpRequestId: req.id,
94
93
  httpResponseUrl: url,
95
94
  httpResponseStatus: status,
96
- httpResponseHeaders: Array.from(headers)
95
+ httpResponseHeaders: Array.from(headers),
97
96
  }, 'http headers');
98
97
  }
99
98
  }
@@ -107,21 +106,21 @@ class HttpClient {
107
106
  }
108
107
  this.log.debug({
109
108
  httpRequestId: req.id,
110
- httpResponseBody
109
+ httpResponseBody,
111
110
  }, 'http body');
112
111
  }
113
112
  }
114
113
  async prepareRequest(method, url, options) {
115
- await request_1.nodeFetch.load();
116
114
  let req = {
117
115
  id: this.requestCounter++,
118
116
  method,
119
- headers: new request_1.nodeFetch.Headers(options.headers),
117
+ headers: new Headers(options.headers),
120
118
  url: this.getAbsUrl(url),
121
119
  signal: options.abort,
122
- compress: true,
123
120
  timeout: options.httpTimeout ?? this.httpTimeout,
124
- stream: options.stream
121
+ bodyTimeout: options.bodyTimeout ?? this.bodyTimeout,
122
+ stream: options.stream,
123
+ keepalive: options.keepalive ?? this.keepalive,
125
124
  };
126
125
  this.handleBasicAuth(req);
127
126
  if (options.query) {
@@ -133,7 +132,6 @@ class HttpClient {
133
132
  req.url += '?' + qs;
134
133
  }
135
134
  }
136
- req.agent = this.agent.getNativeAgent(req.url);
137
135
  if (options.content !== undefined) {
138
136
  if (typeof options.content == 'string') {
139
137
  req.body = options.content;
@@ -141,11 +139,8 @@ class HttpClient {
141
139
  req.headers.set('content-type', 'text/plain');
142
140
  }
143
141
  }
144
- else if (Buffer.isBuffer(options.content)) {
145
- req.body = options.content;
146
- }
147
142
  else {
148
- req.body = Buffer.from(options.content.buffer, options.content.byteOffset, options.content.byteLength);
143
+ req.body = options.content;
149
144
  }
150
145
  }
151
146
  if (options.json !== undefined) {
@@ -184,7 +179,7 @@ class HttpClient {
184
179
  }, req.timeout);
185
180
  let res;
186
181
  try {
187
- return res = await this.performRequest({ ...req, signal: ac.signal });
182
+ return (res = await this.performRequest({ ...req, signal: ac.signal }));
188
183
  }
189
184
  catch (err) {
190
185
  if (timer == null) {
@@ -195,36 +190,27 @@ class HttpClient {
195
190
  }
196
191
  }
197
192
  finally {
198
- if (timer != null) {
199
- clearTimeout(timer);
200
- }
201
- if (req.signal && res?.stream) {
202
- // FIXME: is `close` always emitted?
203
- res.body.on('close', () => {
204
- req.signal.removeEventListener('abort', abort);
205
- });
206
- }
207
- else {
208
- req.signal?.removeEventListener('abort', abort);
209
- }
193
+ clearTimeout(timer);
194
+ req.signal?.removeEventListener('abort', abort);
210
195
  }
211
196
  }
212
197
  async performRequest(req) {
213
- let res = await request_1.nodeFetch.request(req.url, req);
198
+ let res = await this.fetch(req.url, req);
214
199
  this.afterResponseHeaders(req, res.url, res.status, res.headers);
215
- let httpResponse;
216
- if (req.stream && res.ok) {
217
- httpResponse = new HttpResponse(req.id, res.url, res.status, res.headers, res.body, res.body != null);
218
- }
219
- else {
220
- let body = await this.handleResponseBody(req, res);
221
- httpResponse = new HttpResponse(req.id, res.url, res.status, res.headers, body, false);
222
- }
200
+ let body = await this.handleResponseBody(req, res);
201
+ let httpResponse = new HttpResponse(req.id, res.url, res.status, res.headers, body, body instanceof ReadableStream);
223
202
  this.afterResponse(req, httpResponse);
224
203
  return httpResponse;
225
204
  }
226
205
  async handleResponseBody(req, res) {
227
206
  let contentType = (res.headers.get('content-type') || '').split(';')[0];
207
+ if (req.bodyTimeout != null && res.body != null) {
208
+ let body = (0, util_timeout_1.addStreamTimeout)(res.body, req.bodyTimeout, () => new HttpBodyTimeoutError(req.bodyTimeout));
209
+ res = new Response(body, res);
210
+ }
211
+ if (req.stream && res.ok && res.body != null) {
212
+ return res.body;
213
+ }
228
214
  if (contentType == 'application/json') {
229
215
  return res.json();
230
216
  }
@@ -234,7 +220,7 @@ class HttpClient {
234
220
  let arrayBuffer = await res.arrayBuffer();
235
221
  if (arrayBuffer.byteLength == 0)
236
222
  return undefined;
237
- return Buffer.from(arrayBuffer);
223
+ return arrayBuffer;
238
224
  }
239
225
  isRetryableError(error, req) {
240
226
  if (isHttpConnectionError(error))
@@ -311,7 +297,7 @@ class HttpClient {
311
297
  else {
312
298
  req.json = {
313
299
  query: gql,
314
- variables
300
+ variables,
315
301
  };
316
302
  }
317
303
  let res = await this.request(method, url, req);
@@ -346,7 +332,7 @@ class HttpResponse {
346
332
  status: this.status,
347
333
  headers: Array.from(this.headers),
348
334
  body: this.stream ? undefined : this.body,
349
- url: this.url
335
+ url: this.url,
350
336
  };
351
337
  }
352
338
  }
@@ -371,6 +357,15 @@ class HttpTimeoutError extends Error {
371
357
  }
372
358
  }
373
359
  exports.HttpTimeoutError = HttpTimeoutError;
360
+ class HttpBodyTimeoutError extends Error {
361
+ constructor(ms) {
362
+ super(`request body timed out after ${ms} ms`);
363
+ }
364
+ get name() {
365
+ return 'HttpBodyTimeoutError';
366
+ }
367
+ }
368
+ exports.HttpBodyTimeoutError = HttpBodyTimeoutError;
374
369
  class GraphqlError extends Error {
375
370
  constructor(messages) {
376
371
  super(`GraphQL error: ${messages[0].message}`);
@@ -381,12 +376,13 @@ class GraphqlError extends Error {
381
376
  }
382
377
  }
383
378
  exports.GraphqlError = GraphqlError;
384
- function isHttpConnectionError(err) {
385
- return request_1.nodeFetch.isLoaded
386
- && err instanceof request_1.nodeFetch.FetchError
387
- && err.type == 'system'
388
- && (err.message.startsWith('request to') || err.code == 'ERR_STREAM_PREMATURE_CLOSE');
389
- }
379
+ // export function isHttpConnectionError(err: unknown): boolean {
380
+ // return false
381
+ // nodeFetch.isLoaded
382
+ // && err instanceof nodeFetch.FetchError
383
+ // && err.type == 'system'
384
+ // && (err.message.startsWith('request to') || err.code == 'ERR_STREAM_PREMATURE_CLOSE')
385
+ // }
390
386
  function asRetryAfterPause(res) {
391
387
  if (res instanceof HttpError) {
392
388
  res = res.response;
@@ -403,4 +399,24 @@ function asRetryAfterPause(res) {
403
399
  return undefined;
404
400
  }
405
401
  const HTTP_DATE_REGEX = /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT$/;
402
+ // ref: https://github.com/sindresorhus/is-network-error/blob/main/index.js
403
+ const errorMessages = new Set([
404
+ 'network error', // Chrome
405
+ 'Failed to fetch', // Chrome
406
+ 'NetworkError when attempting to fetch resource.', // Firefox
407
+ 'The Internet connection appears to be offline.', // Safari 16
408
+ 'Load failed', // Safari 17+
409
+ 'Network request failed', // `cross-fetch`
410
+ 'fetch failed', // Undici (Node.js)
411
+ 'terminated', // Undici (Node.js)
412
+ ]);
413
+ function isHttpConnectionError(error) {
414
+ if (error instanceof TypeError) {
415
+ if (error.message === 'Load failed') {
416
+ return error.stack === undefined;
417
+ }
418
+ return errorMessages.has(error.message);
419
+ }
420
+ return false;
421
+ }
406
422
  //# sourceMappingURL=client.js.map
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  export * from './client';
2
- export { AgentProvider, HttpAgent } from './agent';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,OAAO,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
package/lib/index.js CHANGED
@@ -14,8 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.HttpAgent = void 0;
18
17
  __exportStar(require("./client"), exports);
19
- var agent_1 = require("./agent");
20
- Object.defineProperty(exports, "HttpAgent", { enumerable: true, get: function () { return agent_1.HttpAgent; } });
21
18
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,iCAAgD;AAAzB,kGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subsquid/http-client",
3
- "version": "1.6.0",
3
+ "version": "1.7.0-2-0.a5e4b7",
4
4
  "description": "Small convenience layer on top of fetch",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "repository": "git@github.com:subsquid/squid.git",
@@ -16,11 +16,10 @@
16
16
  ],
17
17
  "dependencies": {
18
18
  "@subsquid/logger": "^1.3.3",
19
- "@subsquid/util-internal": "^3.2.0",
20
- "node-fetch": "^3.3.2"
19
+ "@subsquid/util-internal": "3.3.0-2-0.a5e4b7",
20
+ "@subsquid/util-timeout": "2.3.3-2-0.a5e4b7"
21
21
  },
22
22
  "devDependencies": {
23
- "@types/node": "^18.18.14",
24
23
  "typescript": "~5.5.4"
25
24
  },
26
25
  "scripts": {
package/src/client.ts CHANGED
@@ -1,17 +1,11 @@
1
1
  import type {Logger} from '@subsquid/logger'
2
- import {createLogger} from '@subsquid/logger'
3
2
  import {addErrorContext, ensureError, wait} from '@subsquid/util-internal'
4
- import type {Headers, RequestInit, Response} from 'node-fetch'
5
- import {AgentProvider, defaultAgentProvider} from './agent'
6
3
  import {HttpBody} from './body'
7
- import {nodeFetch} from './request'
8
-
4
+ import {addStreamTimeout} from '@subsquid/util-timeout'
9
5
 
10
6
  export {HttpBody}
11
7
 
12
-
13
8
  export interface HttpClientOptions {
14
- agent?: AgentProvider
15
9
  baseUrl?: string
16
10
  headers?: Record<string, string | number | bigint>
17
11
  /**
@@ -21,23 +15,27 @@ export interface HttpClientOptions {
21
15
  * Overall request processing time might be much larger due to retries.
22
16
  */
23
17
  httpTimeout?: number
18
+ bodyTimeout?: number
24
19
  retryAttempts?: number
25
20
  retrySchedule?: number[]
21
+ keepalive?: boolean
22
+
26
23
  log?: Logger | null
24
+ fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>
27
25
  }
28
26
 
29
-
30
27
  export interface RequestOptions {
31
28
  query?: Record<string, string | number | bigint>
32
29
  headers?: HeadersInit
33
30
  retryAttempts?: number
34
31
  retrySchedule?: number[]
35
32
  httpTimeout?: number
33
+ bodyTimeout?: number
36
34
  abort?: AbortSignal
37
35
  stream?: boolean
36
+ keepalive?: boolean
38
37
  }
39
38
 
40
-
41
39
  export interface GraphqlRequestOptions extends RequestOptions {
42
40
  variables?: Record<string, any>
43
41
  url?: string
@@ -45,52 +43,54 @@ export interface GraphqlRequestOptions extends RequestOptions {
45
43
  stream?: false
46
44
  }
47
45
 
48
-
49
46
  export interface FetchRequest extends RequestInit {
50
47
  id: number
51
48
  url: string
52
49
  headers: Headers
53
50
  timeout?: number
51
+ bodyTimeout?: number
54
52
  signal?: AbortSignal
55
53
  stream?: boolean
56
54
  }
57
55
 
58
-
59
56
  export type FetchResponse = Response
60
57
 
61
-
62
58
  export class HttpClient {
63
59
  protected log?: Logger
64
60
  protected headers?: Record<string, string | number | bigint>
65
61
  private baseUrl?: string
66
- private agent: AgentProvider
67
62
  private retrySchedule: number[]
68
63
  private retryAttempts: number
69
64
  private httpTimeout: number
65
+ private bodyTimeout?: number
70
66
  private requestCounter = 0
67
+ private keepalive?: boolean
68
+ private fetch: (input: RequestInfo, init?: RequestInit) => Promise<Response>
71
69
 
72
70
  constructor(options: HttpClientOptions = {}) {
73
- this.log = options.log === null ? undefined : options.log || createLogger('sqd:http-client')
71
+ this.log = options.log === null ? undefined : options.log
74
72
  this.headers = options.headers
75
73
  this.setBaseUrl(options.baseUrl)
76
- this.agent = options.agent || defaultAgentProvider
77
74
  this.retrySchedule = options.retrySchedule || [10, 100, 500, 2000, 10000, 20000]
78
75
  this.retryAttempts = options.retryAttempts || 0
79
76
  this.httpTimeout = options.httpTimeout ?? 20000
77
+ this.bodyTimeout = options.bodyTimeout
78
+ this.keepalive = options.keepalive
79
+ this.fetch = options.fetch || fetch
80
80
  }
81
81
 
82
- get<T=any>(url: string, options?: RequestOptions): Promise<T> {
83
- return this.request('GET', url, options).then(res => res.body)
82
+ get<T = any>(url: string, options?: RequestOptions): Promise<T> {
83
+ return this.request('GET', url, options).then((res) => res.body)
84
84
  }
85
85
 
86
- post<T=any>(url: string, options?: RequestOptions & HttpBody): Promise<T> {
87
- return this.request('POST', url, options).then(res => res.body)
86
+ post<T = any>(url: string, options?: RequestOptions & HttpBody): Promise<T> {
87
+ return this.request('POST', url, options).then((res) => res.body)
88
88
  }
89
89
 
90
- async request<T=any>(
90
+ async request<T = any>(
91
91
  method: string,
92
92
  url: string,
93
- options: RequestOptions & HttpBody = {},
93
+ options: RequestOptions & HttpBody = {}
94
94
  ): Promise<HttpResponse<T>> {
95
95
  let req = await this.prepareRequest(method, url, options)
96
96
 
@@ -106,9 +106,7 @@ export class HttpClient {
106
106
  if (retryAttempts > retries && this.isRetryableError(res, req)) {
107
107
  let pause = asRetryAfterPause(res)
108
108
  if (pause == null) {
109
- pause = retrySchedule.length
110
- ? retrySchedule[Math.min(retries, retrySchedule.length - 1)]
111
- : 1000
109
+ pause = retrySchedule.length ? retrySchedule[Math.min(retries, retrySchedule.length - 1)] : 1000
112
110
  }
113
111
  retries += 1
114
112
  this.beforeRetryPause(req, res, pause)
@@ -126,13 +124,16 @@ export class HttpClient {
126
124
 
127
125
  protected beforeRequest(req: FetchRequest): void {
128
126
  if (this.log?.isDebug()) {
129
- this.log.debug({
130
- httpRequestId: req.id,
131
- httpRequestUrl: req.url,
132
- httpRequestMethod: req.method,
133
- httpRequestHeaders: Array.from(req.headers),
134
- httpRequestBody: req.body
135
- }, 'http request')
127
+ this.log.debug(
128
+ {
129
+ httpRequestId: req.id,
130
+ httpRequestUrl: req.url,
131
+ httpRequestMethod: req.method,
132
+ httpRequestHeaders: Array.from(req.headers),
133
+ httpRequestBody: req.body,
134
+ },
135
+ 'http request'
136
+ )
136
137
  }
137
138
  }
138
139
 
@@ -141,7 +142,8 @@ export class HttpClient {
141
142
  let info: any = {
142
143
  httpRequestId: req.id,
143
144
  httpRequestUrl: req.url,
144
- httpRequestMethod: req.method
145
+ httpRequestMethod: req.method,
146
+ httpRequestBody: req.body,
145
147
  }
146
148
  if (reason instanceof Error) {
147
149
  info.reason = reason.toString()
@@ -158,12 +160,15 @@ export class HttpClient {
158
160
 
159
161
  protected afterResponseHeaders(req: FetchRequest, url: string, status: number, headers: Headers): void {
160
162
  if (this.log?.isDebug()) {
161
- this.log.debug({
162
- httpRequestId: req.id,
163
- httpResponseUrl: url,
164
- httpResponseStatus: status,
165
- httpResponseHeaders: Array.from(headers)
166
- }, 'http headers')
163
+ this.log.debug(
164
+ {
165
+ httpRequestId: req.id,
166
+ httpResponseUrl: url,
167
+ httpResponseStatus: status,
168
+ httpResponseHeaders: Array.from(headers),
169
+ },
170
+ 'http headers'
171
+ )
167
172
  }
168
173
  }
169
174
 
@@ -175,10 +180,13 @@ export class HttpClient {
175
180
  httpResponseBody = '...body is too long to be logged'
176
181
  }
177
182
  }
178
- this.log.debug({
179
- httpRequestId: req.id,
180
- httpResponseBody
181
- }, 'http body')
183
+ this.log.debug(
184
+ {
185
+ httpRequestId: req.id,
186
+ httpResponseBody,
187
+ },
188
+ 'http body'
189
+ )
182
190
  }
183
191
  }
184
192
 
@@ -187,17 +195,16 @@ export class HttpClient {
187
195
  url: string,
188
196
  options: RequestOptions & HttpBody
189
197
  ): Promise<FetchRequest> {
190
- await nodeFetch.load()
191
-
192
198
  let req: FetchRequest = {
193
199
  id: this.requestCounter++,
194
200
  method,
195
- headers: new nodeFetch.Headers(options.headers),
201
+ headers: new Headers(options.headers),
196
202
  url: this.getAbsUrl(url),
197
203
  signal: options.abort,
198
- compress: true,
199
204
  timeout: options.httpTimeout ?? this.httpTimeout,
200
- stream: options.stream
205
+ bodyTimeout: options.bodyTimeout ?? this.bodyTimeout,
206
+ stream: options.stream,
207
+ keepalive: options.keepalive ?? this.keepalive,
201
208
  }
202
209
 
203
210
  this.handleBasicAuth(req)
@@ -211,18 +218,14 @@ export class HttpClient {
211
218
  }
212
219
  }
213
220
 
214
- req.agent = this.agent.getNativeAgent(req.url)
215
-
216
221
  if (options.content !== undefined) {
217
222
  if (typeof options.content == 'string') {
218
223
  req.body = options.content
219
224
  if (!req.headers.has('content-type')) {
220
225
  req.headers.set('content-type', 'text/plain')
221
226
  }
222
- } else if (Buffer.isBuffer(options.content)) {
223
- req.body = options.content
224
227
  } else {
225
- req.body = Buffer.from(options.content.buffer, options.content.byteOffset, options.content.byteLength)
228
+ req.body = options.content
226
229
  }
227
230
  }
228
231
 
@@ -235,7 +238,7 @@ export class HttpClient {
235
238
 
236
239
  for (let name in this.headers) {
237
240
  if (!req.headers.has(name)) {
238
- req.headers.set(name, ''+this.headers[name])
241
+ req.headers.set(name, '' + this.headers[name])
239
242
  }
240
243
  }
241
244
 
@@ -270,38 +273,31 @@ export class HttpClient {
270
273
 
271
274
  let res: HttpResponse | undefined
272
275
  try {
273
- return res = await this.performRequest({...req, signal: ac.signal})
274
- } catch(err: any) {
276
+ return (res = await this.performRequest({...req, signal: ac.signal}))
277
+ } catch (err: any) {
275
278
  if (timer == null) {
276
279
  throw new HttpTimeoutError(req.timeout)
277
280
  } else {
278
281
  throw err
279
282
  }
280
283
  } finally {
281
- if (timer != null) {
282
- clearTimeout(timer)
283
- }
284
- if (req.signal && res?.stream) {
285
- // FIXME: is `close` always emitted?
286
- (res.body as NodeJS.ReadableStream).on('close', () => {
287
- req.signal!.removeEventListener('abort', abort)
288
- })
289
- } else {
290
- req.signal?.removeEventListener('abort', abort)
291
- }
284
+ clearTimeout(timer)
285
+ req.signal?.removeEventListener('abort', abort)
292
286
  }
293
287
  }
294
288
 
295
289
  private async performRequest(req: FetchRequest): Promise<HttpResponse> {
296
- let res = await nodeFetch.request(req.url, req)
290
+ let res = await this.fetch(req.url, req)
297
291
  this.afterResponseHeaders(req, res.url, res.status, res.headers)
298
- let httpResponse
299
- if (req.stream && res.ok) {
300
- httpResponse = new HttpResponse(req.id, res.url, res.status, res.headers, res.body, res.body != null)
301
- } else {
302
- let body = await this.handleResponseBody(req, res)
303
- httpResponse = new HttpResponse(req.id, res.url, res.status, res.headers, body, false)
304
- }
292
+ let body = await this.handleResponseBody(req, res)
293
+ let httpResponse = new HttpResponse(
294
+ req.id,
295
+ res.url,
296
+ res.status,
297
+ res.headers,
298
+ body,
299
+ body instanceof ReadableStream
300
+ )
305
301
  this.afterResponse(req, httpResponse)
306
302
  return httpResponse
307
303
  }
@@ -309,6 +305,15 @@ export class HttpClient {
309
305
  protected async handleResponseBody(req: FetchRequest, res: FetchResponse): Promise<any> {
310
306
  let contentType = (res.headers.get('content-type') || '').split(';')[0]
311
307
 
308
+ if (req.bodyTimeout != null && res.body != null) {
309
+ let body = addStreamTimeout(res.body, req.bodyTimeout, () => new HttpBodyTimeoutError(req.bodyTimeout!))
310
+ res = new Response(body, res)
311
+ }
312
+
313
+ if (req.stream && res.ok && res.body != null) {
314
+ return res.body
315
+ }
316
+
312
317
  if (contentType == 'application/json') {
313
318
  return res.json()
314
319
  }
@@ -319,7 +324,7 @@ export class HttpClient {
319
324
 
320
325
  let arrayBuffer = await res.arrayBuffer()
321
326
  if (arrayBuffer.byteLength == 0) return undefined
322
- return Buffer.from(arrayBuffer)
327
+ return arrayBuffer
323
328
  }
324
329
 
325
330
  isRetryableError(error: HttpResponse | Error, req?: FetchRequest): boolean {
@@ -329,7 +334,7 @@ export class HttpClient {
329
334
  error = error.response
330
335
  }
331
336
  if (error instanceof HttpResponse) {
332
- switch(error.status) {
337
+ switch (error.status) {
333
338
  case 429:
334
339
  case 502:
335
340
  case 503:
@@ -343,7 +348,7 @@ export class HttpClient {
343
348
  return false
344
349
  }
345
350
 
346
- private getRequestUrlAndAuth(url: string): {url: string, basic?: string} {
351
+ private getRequestUrlAndAuth(url: string): {url: string; basic?: string} {
347
352
  let u = new URL(this.getAbsUrl(url))
348
353
  if (u.username || u.password) {
349
354
  let basic = btoa(u.username + ':' + u.password)
@@ -378,7 +383,7 @@ export class HttpClient {
378
383
  }
379
384
  }
380
385
 
381
- async graphqlRequest<T=any>(gql: string, options: GraphqlRequestOptions = {}): Promise<T> {
386
+ async graphqlRequest<T = any>(gql: string, options: GraphqlRequestOptions = {}): Promise<T> {
382
387
  let {method = 'POST', url = '/', variables, ...reqOptions} = options
383
388
  let req: RequestOptions & {json?: any} = reqOptions
384
389
  if (method == 'GET') {
@@ -392,10 +397,10 @@ export class HttpClient {
392
397
  } else {
393
398
  req.json = {
394
399
  query: gql,
395
- variables
400
+ variables,
396
401
  }
397
402
  }
398
- let res = await this.request<{data: T, errors?: GraphqlMessage[]}>(method, url, req)
403
+ let res = await this.request<{data: T; errors?: GraphqlMessage[]}>(method, url, req)
399
404
  if (res.body.errors?.length) {
400
405
  throw new GraphqlError(res.body.errors)
401
406
  } else {
@@ -404,8 +409,7 @@ export class HttpClient {
404
409
  }
405
410
  }
406
411
 
407
-
408
- export class HttpResponse<T=any> {
412
+ export class HttpResponse<T = any> {
409
413
  constructor(
410
414
  public readonly requestId: number,
411
415
  public readonly url: string,
@@ -413,8 +417,7 @@ export class HttpResponse<T=any> {
413
417
  public readonly headers: Headers,
414
418
  public readonly body: T,
415
419
  public readonly stream: boolean
416
- ) {
417
- }
420
+ ) {}
418
421
 
419
422
  get ok(): boolean {
420
423
  return this.status >= 200 && this.status < 300
@@ -430,12 +433,11 @@ export class HttpResponse<T=any> {
430
433
  status: this.status,
431
434
  headers: Array.from(this.headers),
432
435
  body: this.stream ? undefined : this.body,
433
- url: this.url
436
+ url: this.url,
434
437
  }
435
438
  }
436
439
  }
437
440
 
438
-
439
441
  export class HttpError extends Error {
440
442
  constructor(public readonly response: HttpResponse) {
441
443
  super(`Got ${response.status} from ${response.url}`)
@@ -446,7 +448,6 @@ export class HttpError extends Error {
446
448
  }
447
449
  }
448
450
 
449
-
450
451
  export class HttpTimeoutError extends Error {
451
452
  constructor(public readonly ms: number) {
452
453
  super(`request timed out after ${ms} ms`)
@@ -457,13 +458,21 @@ export class HttpTimeoutError extends Error {
457
458
  }
458
459
  }
459
460
 
461
+ export class HttpBodyTimeoutError extends Error {
462
+ constructor(ms: number) {
463
+ super(`request body timed out after ${ms} ms`)
464
+ }
465
+
466
+ get name(): string {
467
+ return 'HttpBodyTimeoutError'
468
+ }
469
+ }
460
470
 
461
471
  export interface GraphqlMessage {
462
472
  message: string
463
473
  path?: (string | number)[]
464
474
  }
465
475
 
466
-
467
476
  export class GraphqlError extends Error {
468
477
  constructor(public readonly messages: GraphqlMessage[]) {
469
478
  super(`GraphQL error: ${messages[0].message}`)
@@ -474,14 +483,13 @@ export class GraphqlError extends Error {
474
483
  }
475
484
  }
476
485
 
477
-
478
- export function isHttpConnectionError(err: unknown): boolean {
479
- return nodeFetch.isLoaded
480
- && err instanceof nodeFetch.FetchError
481
- && err.type == 'system'
482
- && (err.message.startsWith('request to') || err.code == 'ERR_STREAM_PREMATURE_CLOSE')
483
- }
484
-
486
+ // export function isHttpConnectionError(err: unknown): boolean {
487
+ // return false
488
+ // nodeFetch.isLoaded
489
+ // && err instanceof nodeFetch.FetchError
490
+ // && err.type == 'system'
491
+ // && (err.message.startsWith('request to') || err.code == 'ERR_STREAM_PREMATURE_CLOSE')
492
+ // }
485
493
 
486
494
  export function asRetryAfterPause(res: HttpResponse | Error): number | undefined {
487
495
  if (res instanceof HttpError) {
@@ -497,4 +505,29 @@ export function asRetryAfterPause(res: HttpResponse | Error): number | undefined
497
505
  return undefined
498
506
  }
499
507
 
500
- const HTTP_DATE_REGEX = /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT$/;
508
+ const HTTP_DATE_REGEX =
509
+ /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT$/
510
+
511
+ // ref: https://github.com/sindresorhus/is-network-error/blob/main/index.js
512
+ const errorMessages = new Set([
513
+ 'network error', // Chrome
514
+ 'Failed to fetch', // Chrome
515
+ 'NetworkError when attempting to fetch resource.', // Firefox
516
+ 'The Internet connection appears to be offline.', // Safari 16
517
+ 'Load failed', // Safari 17+
518
+ 'Network request failed', // `cross-fetch`
519
+ 'fetch failed', // Undici (Node.js)
520
+ 'terminated', // Undici (Node.js)
521
+ ])
522
+
523
+ export function isHttpConnectionError(error: unknown) {
524
+ if (error instanceof TypeError) {
525
+ if (error.message === 'Load failed') {
526
+ return error.stack === undefined
527
+ }
528
+
529
+ return errorMessages.has(error.message)
530
+ }
531
+
532
+ return false
533
+ }
package/src/index.ts CHANGED
@@ -1,2 +1 @@
1
1
  export * from './client'
2
- export {AgentProvider, HttpAgent} from './agent'
package/esm.d.ts DELETED
@@ -1,2 +0,0 @@
1
-
2
- export declare function esm<T>(mod: string): Promise<T>
package/esm.js DELETED
@@ -1,3 +0,0 @@
1
- exports.esm = function esm(mod) {
2
- return import(mod)
3
- }
package/lib/agent.d.ts DELETED
@@ -1,15 +0,0 @@
1
- import * as http from 'http';
2
- import * as https from 'https';
3
- export interface AgentProvider {
4
- getNativeAgent(url: string): http.Agent;
5
- }
6
- export declare const defaultAgentProvider: AgentProvider;
7
- export declare class HttpAgent implements AgentProvider {
8
- private options;
9
- private http?;
10
- private https?;
11
- constructor(options: https.AgentOptions);
12
- getNativeAgent(url: string): http.Agent;
13
- close(): void;
14
- }
15
- //# sourceMappingURL=agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,aAAa;IAC1B,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;CAC1C;AAGD,eAAO,MAAM,oBAAoB,EAAE,aAQlC,CAAA;AAGD,qBAAa,SAAU,YAAW,aAAa;IAI/B,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,IAAI,CAAC,CAAY;IACzB,OAAO,CAAC,KAAK,CAAC,CAAa;gBAEP,OAAO,EAAE,KAAK,CAAC,YAAY;IAE/C,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK;IAQvC,KAAK;CAIR"}
package/lib/agent.js DELETED
@@ -1,57 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.HttpAgent = exports.defaultAgentProvider = void 0;
27
- const http = __importStar(require("http"));
28
- const https = __importStar(require("https"));
29
- exports.defaultAgentProvider = {
30
- getNativeAgent(url) {
31
- if (url.startsWith('https://')) {
32
- return https.globalAgent;
33
- }
34
- else {
35
- return http.globalAgent;
36
- }
37
- }
38
- };
39
- class HttpAgent {
40
- constructor(options) {
41
- this.options = options;
42
- }
43
- getNativeAgent(url) {
44
- if (url.startsWith('https://')) {
45
- return this.https || (this.https = new https.Agent(this.options));
46
- }
47
- else {
48
- return this.http || (this.http = new http.Agent(this.options));
49
- }
50
- }
51
- close() {
52
- this.http?.destroy();
53
- this.https?.destroy();
54
- }
55
- }
56
- exports.HttpAgent = HttpAgent;
57
- //# sourceMappingURL=agent.js.map
package/lib/agent.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,6CAA8B;AAQjB,QAAA,oBAAoB,GAAkB;IAC/C,cAAc,CAAC,GAAW;QACtB,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,WAAW,CAAA;QAC5B,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,WAAW,CAAA;QAC3B,CAAC;IACL,CAAC;CACJ,CAAA;AAGD,MAAa,SAAS;IAIlB,YAAoB,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;IAEnD,cAAc,CAAC,GAAW;QACtB,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QACrE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAClE,CAAC;IACL,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAA;QACpB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAA;IACzB,CAAC;CACJ;AAlBD,8BAkBC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const assert_1 = __importDefault(require("assert"));
7
- const node_test_1 = require("node:test");
8
- const client_1 = require("./client");
9
- (0, node_test_1.it)('basic auth', async () => {
10
- let client = new client_1.HttpClient();
11
- let credentials = await client.get('http://hello:world@httpbin.org/basic-auth/hello/world');
12
- assert_1.default.deepStrictEqual(credentials, { authenticated: true, user: 'hello' });
13
- });
14
- //# sourceMappingURL=client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":";;;;;AAAA,oDAA2B;AAC3B,yCAA4B;AAC5B,qCAAmC;AAGnC,IAAA,cAAE,EAAC,YAAY,EAAE,KAAK,IAAI,EAAE;IACxB,IAAI,MAAM,GAAG,IAAI,mBAAU,EAAE,CAAA;IAC7B,IAAI,WAAW,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAA;IAC3F,gBAAM,CAAC,eAAe,CAAC,WAAW,EAAE,EAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC,CAAA;AAC7E,CAAC,CAAC,CAAA"}
package/lib/request.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import type { RequestInit, Response } from 'node-fetch';
2
- export declare const nodeFetch: {
3
- load(): Promise<typeof import("node-fetch")>;
4
- readonly Headers: typeof import("node-fetch").Headers;
5
- readonly FetchError: typeof import("node-fetch").FetchError;
6
- readonly isLoaded: boolean;
7
- request(url: string, init?: RequestInit): Promise<Response>;
8
- };
9
- //# sourceMappingURL=request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAA;AAOrD,eAAO,MAAM,SAAS;YACJ,OAAO,CAAC,cAAc,YAAY,CAAC,CAAC;;;;iBAe/B,MAAM,SAAS,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;CAIpE,CAAA"}
package/lib/request.js DELETED
@@ -1,32 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.nodeFetch = void 0;
7
- const assert_1 = __importDefault(require("assert"));
8
- const esm_1 = require("../esm");
9
- let mod;
10
- exports.nodeFetch = {
11
- async load() {
12
- if (mod)
13
- return mod;
14
- return mod = await (0, esm_1.esm)('node-fetch');
15
- },
16
- get Headers() {
17
- (0, assert_1.default)(mod, 'node-fetch ESM is not loaded');
18
- return mod.Headers;
19
- },
20
- get FetchError() {
21
- (0, assert_1.default)(mod, 'node-fetch ESM is not loaded');
22
- return mod.FetchError;
23
- },
24
- get isLoaded() {
25
- return !!mod;
26
- },
27
- async request(url, init) {
28
- let m = await exports.nodeFetch.load();
29
- return m.default(url, init);
30
- }
31
- };
32
- //# sourceMappingURL=request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAE3B,gCAA0B;AAG1B,IAAI,GAA4C,CAAA;AAGnC,QAAA,SAAS,GAAG;IACrB,KAAK,CAAC,IAAI;QACN,IAAI,GAAG;YAAE,OAAO,GAAG,CAAA;QACnB,OAAO,GAAG,GAAG,MAAM,IAAA,SAAG,EAA+B,YAAY,CAAC,CAAA;IACtE,CAAC;IACD,IAAI,OAAO;QACP,IAAA,gBAAM,EAAC,GAAG,EAAE,8BAA8B,CAAC,CAAA;QAC3C,OAAO,GAAG,CAAC,OAAO,CAAA;IACtB,CAAC;IACD,IAAI,UAAU;QACV,IAAA,gBAAM,EAAC,GAAG,EAAE,8BAA8B,CAAC,CAAA;QAC3C,OAAO,GAAG,CAAC,UAAU,CAAA;IACzB,CAAC;IACD,IAAI,QAAQ;QACR,OAAO,CAAC,CAAC,GAAG,CAAA;IAChB,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,IAAkB;QACzC,IAAI,CAAC,GAAG,MAAM,iBAAS,CAAC,IAAI,EAAE,CAAA;QAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;CACJ,CAAA"}
package/src/agent.ts DELETED
@@ -1,39 +0,0 @@
1
- import * as http from 'http'
2
- import * as https from 'https'
3
-
4
-
5
- export interface AgentProvider {
6
- getNativeAgent(url: string): http.Agent
7
- }
8
-
9
-
10
- export const defaultAgentProvider: AgentProvider = {
11
- getNativeAgent(url: string): http.Agent {
12
- if (url.startsWith('https://')) {
13
- return https.globalAgent
14
- } else {
15
- return http.globalAgent
16
- }
17
- }
18
- }
19
-
20
-
21
- export class HttpAgent implements AgentProvider {
22
- private http?: http.Agent
23
- private https?: https.Agent
24
-
25
- constructor(private options: https.AgentOptions) {}
26
-
27
- getNativeAgent(url: string): http.Agent {
28
- if (url.startsWith('https://')) {
29
- return this.https || (this.https = new https.Agent(this.options))
30
- } else {
31
- return this.http || (this.http = new http.Agent(this.options))
32
- }
33
- }
34
-
35
- close() {
36
- this.http?.destroy()
37
- this.https?.destroy()
38
- }
39
- }
@@ -1,10 +0,0 @@
1
- import assert from 'assert'
2
- import {it} from 'node:test'
3
- import {HttpClient} from './client'
4
-
5
-
6
- it('basic auth', async () => {
7
- let client = new HttpClient()
8
- let credentials = await client.get('http://hello:world@httpbin.org/basic-auth/hello/world')
9
- assert.deepStrictEqual(credentials, {authenticated: true, user: 'hello'})
10
- })
package/src/request.ts DELETED
@@ -1,29 +0,0 @@
1
- import assert from 'assert'
2
- import type {RequestInit, Response} from 'node-fetch'
3
- import {esm} from '../esm'
4
-
5
-
6
- let mod: typeof import('node-fetch') | undefined
7
-
8
-
9
- export const nodeFetch = {
10
- async load(): Promise<typeof import('node-fetch')> {
11
- if (mod) return mod
12
- return mod = await esm<typeof import('node-fetch') >('node-fetch')
13
- },
14
- get Headers() {
15
- assert(mod, 'node-fetch ESM is not loaded')
16
- return mod.Headers
17
- },
18
- get FetchError() {
19
- assert(mod, 'node-fetch ESM is not loaded')
20
- return mod.FetchError
21
- },
22
- get isLoaded() {
23
- return !!mod
24
- },
25
- async request(url: string, init?: RequestInit): Promise<Response> {
26
- let m = await nodeFetch.load()
27
- return m.default(url, init)
28
- }
29
- }