@subsquid/http-client 1.6.0-portal-api.c2dfdd → 1.7.0-2-0.3887d2

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;IAkC3B,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,26 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.asRetryAfterPause = exports.isHttpConnectionError = exports.GraphqlError = exports.HttpTimeoutError = exports.HttpError = exports.HttpResponse = exports.HttpClient = void 0;
4
- const logger_1 = require("@subsquid/logger");
3
+ exports.GraphqlError = exports.HttpBodyTimeoutError = exports.HttpTimeoutError = exports.HttpError = exports.HttpResponse = exports.HttpClient = void 0;
4
+ exports.asRetryAfterPause = asRetryAfterPause;
5
+ exports.isHttpConnectionError = isHttpConnectionError;
5
6
  const util_internal_1 = require("@subsquid/util-internal");
6
- const agent_1 = require("./agent");
7
- const request_1 = require("./request");
7
+ const util_timeout_1 = require("@subsquid/util-timeout");
8
8
  class HttpClient {
9
9
  constructor(options = {}) {
10
10
  this.requestCounter = 0;
11
- this.log = options.log === null ? undefined : options.log || (0, logger_1.createLogger)('sqd:http-client');
11
+ this.log = options.log === null ? undefined : options.log;
12
12
  this.headers = options.headers;
13
13
  this.setBaseUrl(options.baseUrl);
14
- this.agent = options.agent || agent_1.defaultAgentProvider;
15
14
  this.retrySchedule = options.retrySchedule || [10, 100, 500, 2000, 10000, 20000];
16
15
  this.retryAttempts = options.retryAttempts || 0;
17
16
  this.httpTimeout = options.httpTimeout ?? 20000;
17
+ this.bodyTimeout = options.bodyTimeout;
18
+ this.keepalive = options.keepalive;
19
+ this.fetch = options.fetch || fetch;
18
20
  }
19
21
  get(url, options) {
20
- return this.request('GET', url, options).then(res => res.body);
22
+ return this.request('GET', url, options).then((res) => res.body);
21
23
  }
22
24
  post(url, options) {
23
- return this.request('POST', url, options).then(res => res.body);
25
+ return this.request('POST', url, options).then((res) => res.body);
24
26
  }
25
27
  async request(method, url, options = {}) {
26
28
  let req = await this.prepareRequest(method, url, options);
@@ -34,11 +36,8 @@ class HttpClient {
34
36
  if (retryAttempts > retries && this.isRetryableError(res, req)) {
35
37
  let pause = asRetryAfterPause(res);
36
38
  if (pause == null) {
37
- pause = retrySchedule.length
38
- ? retrySchedule[Math.min(retries, retrySchedule.length - 1)]
39
- : 1000;
39
+ pause = retrySchedule.length ? retrySchedule[Math.min(retries, retrySchedule.length - 1)] : 1000;
40
40
  }
41
- // FIXME: should we count retries if there is retry-after header in response?
42
41
  retries += 1;
43
42
  this.beforeRetryPause(req, res, pause);
44
43
  await (0, util_internal_1.wait)(pause, req.signal);
@@ -62,7 +61,7 @@ class HttpClient {
62
61
  httpRequestUrl: req.url,
63
62
  httpRequestMethod: req.method,
64
63
  httpRequestHeaders: Array.from(req.headers),
65
- httpRequestBody: req.body
64
+ httpRequestBody: req.body,
66
65
  }, 'http request');
67
66
  }
68
67
  }
@@ -71,7 +70,8 @@ class HttpClient {
71
70
  let info = {
72
71
  httpRequestId: req.id,
73
72
  httpRequestUrl: req.url,
74
- httpRequestMethod: req.method
73
+ httpRequestMethod: req.method,
74
+ httpRequestBody: req.body,
75
75
  };
76
76
  if (reason instanceof Error) {
77
77
  info.reason = reason.toString();
@@ -92,7 +92,7 @@ class HttpClient {
92
92
  httpRequestId: req.id,
93
93
  httpResponseUrl: url,
94
94
  httpResponseStatus: status,
95
- httpResponseHeaders: Array.from(headers)
95
+ httpResponseHeaders: Array.from(headers),
96
96
  }, 'http headers');
97
97
  }
98
98
  }
@@ -106,21 +106,21 @@ class HttpClient {
106
106
  }
107
107
  this.log.debug({
108
108
  httpRequestId: req.id,
109
- httpResponseBody
109
+ httpResponseBody,
110
110
  }, 'http body');
111
111
  }
112
112
  }
113
113
  async prepareRequest(method, url, options) {
114
- await request_1.nodeFetch.load();
115
114
  let req = {
116
115
  id: this.requestCounter++,
117
116
  method,
118
- headers: new request_1.nodeFetch.Headers(options.headers),
117
+ headers: new Headers(options.headers),
119
118
  url: this.getAbsUrl(url),
120
119
  signal: options.abort,
121
- compress: true,
122
120
  timeout: options.httpTimeout ?? this.httpTimeout,
123
- stream: options.stream
121
+ bodyTimeout: options.bodyTimeout ?? this.bodyTimeout,
122
+ stream: options.stream,
123
+ keepalive: options.keepalive ?? this.keepalive,
124
124
  };
125
125
  this.handleBasicAuth(req);
126
126
  if (options.query) {
@@ -132,7 +132,6 @@ class HttpClient {
132
132
  req.url += '?' + qs;
133
133
  }
134
134
  }
135
- req.agent = this.agent.getNativeAgent(req.url);
136
135
  if (options.content !== undefined) {
137
136
  if (typeof options.content == 'string') {
138
137
  req.body = options.content;
@@ -140,11 +139,8 @@ class HttpClient {
140
139
  req.headers.set('content-type', 'text/plain');
141
140
  }
142
141
  }
143
- else if (Buffer.isBuffer(options.content)) {
144
- req.body = options.content;
145
- }
146
142
  else {
147
- req.body = Buffer.from(options.content.buffer, options.content.byteOffset, options.content.byteLength);
143
+ req.body = options.content;
148
144
  }
149
145
  }
150
146
  if (options.json !== undefined) {
@@ -183,7 +179,7 @@ class HttpClient {
183
179
  }, req.timeout);
184
180
  let res;
185
181
  try {
186
- return res = await this.performRequest({ ...req, signal: ac.signal });
182
+ return (res = await this.performRequest({ ...req, signal: ac.signal }));
187
183
  }
188
184
  catch (err) {
189
185
  if (timer == null) {
@@ -194,36 +190,27 @@ class HttpClient {
194
190
  }
195
191
  }
196
192
  finally {
197
- if (timer != null) {
198
- clearTimeout(timer);
199
- }
200
- if (req.signal && res?.stream) {
201
- // FIXME: is `close` always emitted?
202
- res.body.on('close', () => {
203
- req.signal.removeEventListener('abort', abort);
204
- });
205
- }
206
- else {
207
- req.signal?.removeEventListener('abort', abort);
208
- }
193
+ clearTimeout(timer);
194
+ req.signal?.removeEventListener('abort', abort);
209
195
  }
210
196
  }
211
197
  async performRequest(req) {
212
- let res = await request_1.nodeFetch.request(req.url, req);
198
+ let res = await this.fetch(req.url, req);
213
199
  this.afterResponseHeaders(req, res.url, res.status, res.headers);
214
- let httpResponse;
215
- if (req.stream && res.ok) {
216
- httpResponse = new HttpResponse(req.id, res.url, res.status, res.headers, res.body, res.body != null);
217
- }
218
- else {
219
- let body = await this.handleResponseBody(req, res);
220
- httpResponse = new HttpResponse(req.id, res.url, res.status, res.headers, body, false);
221
- }
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);
222
202
  this.afterResponse(req, httpResponse);
223
203
  return httpResponse;
224
204
  }
225
205
  async handleResponseBody(req, res) {
226
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
+ }
227
214
  if (contentType == 'application/json') {
228
215
  return res.json();
229
216
  }
@@ -233,7 +220,7 @@ class HttpClient {
233
220
  let arrayBuffer = await res.arrayBuffer();
234
221
  if (arrayBuffer.byteLength == 0)
235
222
  return undefined;
236
- return Buffer.from(arrayBuffer);
223
+ return arrayBuffer;
237
224
  }
238
225
  isRetryableError(error, req) {
239
226
  if (isHttpConnectionError(error))
@@ -310,7 +297,7 @@ class HttpClient {
310
297
  else {
311
298
  req.json = {
312
299
  query: gql,
313
- variables
300
+ variables,
314
301
  };
315
302
  }
316
303
  let res = await this.request(method, url, req);
@@ -345,7 +332,7 @@ class HttpResponse {
345
332
  status: this.status,
346
333
  headers: Array.from(this.headers),
347
334
  body: this.stream ? undefined : this.body,
348
- url: this.url
335
+ url: this.url,
349
336
  };
350
337
  }
351
338
  }
@@ -370,6 +357,15 @@ class HttpTimeoutError extends Error {
370
357
  }
371
358
  }
372
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;
373
369
  class GraphqlError extends Error {
374
370
  constructor(messages) {
375
371
  super(`GraphQL error: ${messages[0].message}`);
@@ -380,13 +376,13 @@ class GraphqlError extends Error {
380
376
  }
381
377
  }
382
378
  exports.GraphqlError = GraphqlError;
383
- function isHttpConnectionError(err) {
384
- return request_1.nodeFetch.isLoaded
385
- && err instanceof request_1.nodeFetch.FetchError
386
- && err.type == 'system'
387
- && (err.message.startsWith('request to') || err.code == 'ERR_STREAM_PREMATURE_CLOSE');
388
- }
389
- exports.isHttpConnectionError = isHttpConnectionError;
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;
@@ -402,6 +398,25 @@ function asRetryAfterPause(res) {
402
398
  }
403
399
  return undefined;
404
400
  }
405
- exports.asRetryAfterPause = asRetryAfterPause;
406
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
+ }
407
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-portal-api.c2dfdd",
3
+ "version": "1.7.0-2-0.3887d2",
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,12 +16,11 @@
16
16
  ],
17
17
  "dependencies": {
18
18
  "@subsquid/logger": "^1.3.3",
19
- "@subsquid/util-internal": "3.3.0-portal-api.c2dfdd",
20
- "node-fetch": "^3.3.2"
19
+ "@subsquid/util-internal": "3.3.0-2-0.3887d2",
20
+ "@subsquid/util-timeout": "2.3.3-2-0.3887d2"
21
21
  },
22
22
  "devDependencies": {
23
- "@types/node": "^18.18.14",
24
- "typescript": "~5.3.2"
23
+ "typescript": "~5.5.4"
25
24
  },
26
25
  "scripts": {
27
26
  "build": "rm -rf lib && tsc"
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,11 +106,8 @@ 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
- // FIXME: should we count retries if there is retry-after header in response?
114
111
  retries += 1
115
112
  this.beforeRetryPause(req, res, pause)
116
113
  await wait(pause, req.signal)
@@ -127,13 +124,16 @@ export class HttpClient {
127
124
 
128
125
  protected beforeRequest(req: FetchRequest): void {
129
126
  if (this.log?.isDebug()) {
130
- this.log.debug({
131
- httpRequestId: req.id,
132
- httpRequestUrl: req.url,
133
- httpRequestMethod: req.method,
134
- httpRequestHeaders: Array.from(req.headers),
135
- httpRequestBody: req.body
136
- }, '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
+ )
137
137
  }
138
138
  }
139
139
 
@@ -142,7 +142,8 @@ export class HttpClient {
142
142
  let info: any = {
143
143
  httpRequestId: req.id,
144
144
  httpRequestUrl: req.url,
145
- httpRequestMethod: req.method
145
+ httpRequestMethod: req.method,
146
+ httpRequestBody: req.body,
146
147
  }
147
148
  if (reason instanceof Error) {
148
149
  info.reason = reason.toString()
@@ -159,12 +160,15 @@ export class HttpClient {
159
160
 
160
161
  protected afterResponseHeaders(req: FetchRequest, url: string, status: number, headers: Headers): void {
161
162
  if (this.log?.isDebug()) {
162
- this.log.debug({
163
- httpRequestId: req.id,
164
- httpResponseUrl: url,
165
- httpResponseStatus: status,
166
- httpResponseHeaders: Array.from(headers)
167
- }, '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
+ )
168
172
  }
169
173
  }
170
174
 
@@ -176,10 +180,13 @@ export class HttpClient {
176
180
  httpResponseBody = '...body is too long to be logged'
177
181
  }
178
182
  }
179
- this.log.debug({
180
- httpRequestId: req.id,
181
- httpResponseBody
182
- }, 'http body')
183
+ this.log.debug(
184
+ {
185
+ httpRequestId: req.id,
186
+ httpResponseBody,
187
+ },
188
+ 'http body'
189
+ )
183
190
  }
184
191
  }
185
192
 
@@ -188,17 +195,16 @@ export class HttpClient {
188
195
  url: string,
189
196
  options: RequestOptions & HttpBody
190
197
  ): Promise<FetchRequest> {
191
- await nodeFetch.load()
192
-
193
198
  let req: FetchRequest = {
194
199
  id: this.requestCounter++,
195
200
  method,
196
- headers: new nodeFetch.Headers(options.headers),
201
+ headers: new Headers(options.headers),
197
202
  url: this.getAbsUrl(url),
198
203
  signal: options.abort,
199
- compress: true,
200
204
  timeout: options.httpTimeout ?? this.httpTimeout,
201
- stream: options.stream
205
+ bodyTimeout: options.bodyTimeout ?? this.bodyTimeout,
206
+ stream: options.stream,
207
+ keepalive: options.keepalive ?? this.keepalive,
202
208
  }
203
209
 
204
210
  this.handleBasicAuth(req)
@@ -212,18 +218,14 @@ export class HttpClient {
212
218
  }
213
219
  }
214
220
 
215
- req.agent = this.agent.getNativeAgent(req.url)
216
-
217
221
  if (options.content !== undefined) {
218
222
  if (typeof options.content == 'string') {
219
223
  req.body = options.content
220
224
  if (!req.headers.has('content-type')) {
221
225
  req.headers.set('content-type', 'text/plain')
222
226
  }
223
- } else if (Buffer.isBuffer(options.content)) {
224
- req.body = options.content
225
227
  } else {
226
- req.body = Buffer.from(options.content.buffer, options.content.byteOffset, options.content.byteLength)
228
+ req.body = options.content
227
229
  }
228
230
  }
229
231
 
@@ -236,7 +238,7 @@ export class HttpClient {
236
238
 
237
239
  for (let name in this.headers) {
238
240
  if (!req.headers.has(name)) {
239
- req.headers.set(name, ''+this.headers[name])
241
+ req.headers.set(name, '' + this.headers[name])
240
242
  }
241
243
  }
242
244
 
@@ -271,38 +273,31 @@ export class HttpClient {
271
273
 
272
274
  let res: HttpResponse | undefined
273
275
  try {
274
- return res = await this.performRequest({...req, signal: ac.signal})
275
- } catch(err: any) {
276
+ return (res = await this.performRequest({...req, signal: ac.signal}))
277
+ } catch (err: any) {
276
278
  if (timer == null) {
277
279
  throw new HttpTimeoutError(req.timeout)
278
280
  } else {
279
281
  throw err
280
282
  }
281
283
  } finally {
282
- if (timer != null) {
283
- clearTimeout(timer)
284
- }
285
- if (req.signal && res?.stream) {
286
- // FIXME: is `close` always emitted?
287
- (res.body as NodeJS.ReadableStream).on('close', () => {
288
- req.signal!.removeEventListener('abort', abort)
289
- })
290
- } else {
291
- req.signal?.removeEventListener('abort', abort)
292
- }
284
+ clearTimeout(timer)
285
+ req.signal?.removeEventListener('abort', abort)
293
286
  }
294
287
  }
295
288
 
296
289
  private async performRequest(req: FetchRequest): Promise<HttpResponse> {
297
- let res = await nodeFetch.request(req.url, req)
290
+ let res = await this.fetch(req.url, req)
298
291
  this.afterResponseHeaders(req, res.url, res.status, res.headers)
299
- let httpResponse
300
- if (req.stream && res.ok) {
301
- httpResponse = new HttpResponse(req.id, res.url, res.status, res.headers, res.body, res.body != null)
302
- } else {
303
- let body = await this.handleResponseBody(req, res)
304
- httpResponse = new HttpResponse(req.id, res.url, res.status, res.headers, body, false)
305
- }
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
+ )
306
301
  this.afterResponse(req, httpResponse)
307
302
  return httpResponse
308
303
  }
@@ -310,6 +305,15 @@ export class HttpClient {
310
305
  protected async handleResponseBody(req: FetchRequest, res: FetchResponse): Promise<any> {
311
306
  let contentType = (res.headers.get('content-type') || '').split(';')[0]
312
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
+
313
317
  if (contentType == 'application/json') {
314
318
  return res.json()
315
319
  }
@@ -320,7 +324,7 @@ export class HttpClient {
320
324
 
321
325
  let arrayBuffer = await res.arrayBuffer()
322
326
  if (arrayBuffer.byteLength == 0) return undefined
323
- return Buffer.from(arrayBuffer)
327
+ return arrayBuffer
324
328
  }
325
329
 
326
330
  isRetryableError(error: HttpResponse | Error, req?: FetchRequest): boolean {
@@ -330,7 +334,7 @@ export class HttpClient {
330
334
  error = error.response
331
335
  }
332
336
  if (error instanceof HttpResponse) {
333
- switch(error.status) {
337
+ switch (error.status) {
334
338
  case 429:
335
339
  case 502:
336
340
  case 503:
@@ -344,7 +348,7 @@ export class HttpClient {
344
348
  return false
345
349
  }
346
350
 
347
- private getRequestUrlAndAuth(url: string): {url: string, basic?: string} {
351
+ private getRequestUrlAndAuth(url: string): {url: string; basic?: string} {
348
352
  let u = new URL(this.getAbsUrl(url))
349
353
  if (u.username || u.password) {
350
354
  let basic = btoa(u.username + ':' + u.password)
@@ -379,7 +383,7 @@ export class HttpClient {
379
383
  }
380
384
  }
381
385
 
382
- async graphqlRequest<T=any>(gql: string, options: GraphqlRequestOptions = {}): Promise<T> {
386
+ async graphqlRequest<T = any>(gql: string, options: GraphqlRequestOptions = {}): Promise<T> {
383
387
  let {method = 'POST', url = '/', variables, ...reqOptions} = options
384
388
  let req: RequestOptions & {json?: any} = reqOptions
385
389
  if (method == 'GET') {
@@ -393,10 +397,10 @@ export class HttpClient {
393
397
  } else {
394
398
  req.json = {
395
399
  query: gql,
396
- variables
400
+ variables,
397
401
  }
398
402
  }
399
- 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)
400
404
  if (res.body.errors?.length) {
401
405
  throw new GraphqlError(res.body.errors)
402
406
  } else {
@@ -405,8 +409,7 @@ export class HttpClient {
405
409
  }
406
410
  }
407
411
 
408
-
409
- export class HttpResponse<T=any> {
412
+ export class HttpResponse<T = any> {
410
413
  constructor(
411
414
  public readonly requestId: number,
412
415
  public readonly url: string,
@@ -414,8 +417,7 @@ export class HttpResponse<T=any> {
414
417
  public readonly headers: Headers,
415
418
  public readonly body: T,
416
419
  public readonly stream: boolean
417
- ) {
418
- }
420
+ ) {}
419
421
 
420
422
  get ok(): boolean {
421
423
  return this.status >= 200 && this.status < 300
@@ -431,12 +433,11 @@ export class HttpResponse<T=any> {
431
433
  status: this.status,
432
434
  headers: Array.from(this.headers),
433
435
  body: this.stream ? undefined : this.body,
434
- url: this.url
436
+ url: this.url,
435
437
  }
436
438
  }
437
439
  }
438
440
 
439
-
440
441
  export class HttpError extends Error {
441
442
  constructor(public readonly response: HttpResponse) {
442
443
  super(`Got ${response.status} from ${response.url}`)
@@ -447,7 +448,6 @@ export class HttpError extends Error {
447
448
  }
448
449
  }
449
450
 
450
-
451
451
  export class HttpTimeoutError extends Error {
452
452
  constructor(public readonly ms: number) {
453
453
  super(`request timed out after ${ms} ms`)
@@ -458,13 +458,21 @@ export class HttpTimeoutError extends Error {
458
458
  }
459
459
  }
460
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
+ }
461
470
 
462
471
  export interface GraphqlMessage {
463
472
  message: string
464
473
  path?: (string | number)[]
465
474
  }
466
475
 
467
-
468
476
  export class GraphqlError extends Error {
469
477
  constructor(public readonly messages: GraphqlMessage[]) {
470
478
  super(`GraphQL error: ${messages[0].message}`)
@@ -475,14 +483,13 @@ export class GraphqlError extends Error {
475
483
  }
476
484
  }
477
485
 
478
-
479
- export function isHttpConnectionError(err: unknown): boolean {
480
- return nodeFetch.isLoaded
481
- && err instanceof nodeFetch.FetchError
482
- && err.type == 'system'
483
- && (err.message.startsWith('request to') || err.code == 'ERR_STREAM_PREMATURE_CLOSE')
484
- }
485
-
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
+ // }
486
493
 
487
494
  export function asRetryAfterPause(res: HttpResponse | Error): number | undefined {
488
495
  if (res instanceof HttpError) {
@@ -498,4 +505,29 @@ export function asRetryAfterPause(res: HttpResponse | Error): number | undefined
498
505
  return undefined
499
506
  }
500
507
 
501
- 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,17 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import * as http from 'http';
4
- import * as https from 'https';
5
- export interface AgentProvider {
6
- getNativeAgent(url: string): http.Agent;
7
- }
8
- export declare const defaultAgentProvider: AgentProvider;
9
- export declare class HttpAgent implements AgentProvider {
10
- private options;
11
- private http?;
12
- private https?;
13
- constructor(options: https.AgentOptions);
14
- getNativeAgent(url: string): http.Agent;
15
- close(): void;
16
- }
17
- //# 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,QAAQ,cAAc,YAAY,CAAC,CAAC;;;;iBAe/B,MAAM,SAAS,WAAW,GAAG,QAAQ,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
- }