@algolia/requester-node-http 5.0.0-alpha.9 → 5.0.0-alpha.90

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/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './src/echoRequester';
2
- export * from './src/createHttpRequester';
1
+ export * from './src/echoRequester';
2
+ export * from './src/createHttpRequester';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,91 +1,84 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var url = require('url');
6
4
  var clientCommon = require('@algolia/client-common');
7
5
  var http = require('http');
8
6
  var https = require('https');
9
7
 
10
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
-
12
- var http__default = /*#__PURE__*/_interopDefaultLegacy(http);
13
- var https__default = /*#__PURE__*/_interopDefaultLegacy(https);
14
-
15
- function echoRequester(status = 200) {
16
- return clientCommon.createEchoRequester({ getURL: (url$1) => new url.URL(url$1), status });
8
+ function echoRequester(status = 200) {
9
+ return clientCommon.createEchoRequester({ getURL: (url$1) => new url.URL(url$1), status });
17
10
  }
18
11
 
19
- // Global agents allow us to reuse the TCP protocol with multiple clients
20
- const agentOptions = { keepAlive: true };
21
- const defaultHttpAgent = new http__default["default"].Agent(agentOptions);
22
- const defaultHttpsAgent = new https__default["default"].Agent(agentOptions);
23
- function createHttpRequester({ agent: userGlobalAgent, httpAgent: userHttpAgent, httpsAgent: userHttpsAgent, requesterOptions = {}, } = {}) {
24
- const httpAgent = userHttpAgent || userGlobalAgent || defaultHttpAgent;
25
- const httpsAgent = userHttpsAgent || userGlobalAgent || defaultHttpsAgent;
26
- function send(request) {
27
- return new Promise((resolve) => {
28
- let responseTimeout;
29
- // eslint-disable-next-line prefer-const -- linter thinks this is not reassigned
30
- let connectTimeout;
31
- const url$1 = new url.URL(request.url);
32
- const path = url$1.search === null ? url$1.pathname : `${url$1.pathname}${url$1.search}`;
33
- const options = {
34
- agent: url$1.protocol === 'https:' ? httpsAgent : httpAgent,
35
- hostname: url$1.hostname,
36
- path,
37
- method: request.method,
38
- ...requesterOptions,
39
- headers: {
40
- ...request.headers,
41
- ...requesterOptions.headers,
42
- },
43
- };
44
- if (url$1.port && !requesterOptions.port) {
45
- options.port = url$1.port;
46
- }
47
- const req = (url$1.protocol === 'https:' ? https__default["default"] : http__default["default"]).request(options, (response) => {
48
- let contentBuffers = [];
49
- response.on('data', (chunk) => {
50
- contentBuffers = contentBuffers.concat(chunk);
51
- });
52
- response.on('end', () => {
53
- clearTimeout(connectTimeout);
54
- clearTimeout(responseTimeout);
55
- resolve({
56
- status: response.statusCode || 0,
57
- content: Buffer.concat(contentBuffers).toString(),
58
- isTimedOut: false,
59
- });
60
- });
61
- });
62
- const createTimeout = (timeout, content) => {
63
- return setTimeout(() => {
64
- req.destroy();
65
- resolve({
66
- status: 0,
67
- content,
68
- isTimedOut: true,
69
- });
70
- }, timeout);
71
- };
72
- connectTimeout = createTimeout(request.connectTimeout, 'Connection timeout');
73
- req.on('error', (error) => {
74
- clearTimeout(connectTimeout);
75
- clearTimeout(responseTimeout);
76
- resolve({ status: 0, content: error.message, isTimedOut: false });
77
- });
78
- req.once('response', () => {
79
- clearTimeout(connectTimeout);
80
- responseTimeout = createTimeout(request.responseTimeout, 'Socket timeout');
81
- });
82
- if (request.data !== undefined) {
83
- req.write(request.data);
84
- }
85
- req.end();
86
- });
87
- }
88
- return { send };
12
+ // Global agents allow us to reuse the TCP protocol with multiple clients
13
+ const agentOptions = { keepAlive: true };
14
+ const defaultHttpAgent = new http.Agent(agentOptions);
15
+ const defaultHttpsAgent = new https.Agent(agentOptions);
16
+ function createHttpRequester({ agent: userGlobalAgent, httpAgent: userHttpAgent, httpsAgent: userHttpsAgent, requesterOptions = {}, } = {}) {
17
+ const httpAgent = userHttpAgent || userGlobalAgent || defaultHttpAgent;
18
+ const httpsAgent = userHttpsAgent || userGlobalAgent || defaultHttpsAgent;
19
+ function send(request) {
20
+ return new Promise((resolve) => {
21
+ let responseTimeout;
22
+ // eslint-disable-next-line prefer-const -- linter thinks this is not reassigned
23
+ let connectTimeout;
24
+ const url$1 = new url.URL(request.url);
25
+ const path = url$1.search === null ? url$1.pathname : `${url$1.pathname}${url$1.search}`;
26
+ const options = {
27
+ agent: url$1.protocol === 'https:' ? httpsAgent : httpAgent,
28
+ hostname: url$1.hostname,
29
+ path,
30
+ method: request.method,
31
+ ...requesterOptions,
32
+ headers: {
33
+ ...request.headers,
34
+ ...requesterOptions.headers,
35
+ },
36
+ };
37
+ if (url$1.port && !requesterOptions.port) {
38
+ options.port = url$1.port;
39
+ }
40
+ const req = (url$1.protocol === 'https:' ? https : http).request(options, (response) => {
41
+ let contentBuffers = [];
42
+ response.on('data', (chunk) => {
43
+ contentBuffers = contentBuffers.concat(chunk);
44
+ });
45
+ response.on('end', () => {
46
+ clearTimeout(connectTimeout);
47
+ clearTimeout(responseTimeout);
48
+ resolve({
49
+ status: response.statusCode || 0,
50
+ content: Buffer.concat(contentBuffers).toString(),
51
+ isTimedOut: false,
52
+ });
53
+ });
54
+ });
55
+ const createTimeout = (timeout, content) => {
56
+ return setTimeout(() => {
57
+ req.destroy();
58
+ resolve({
59
+ status: 0,
60
+ content,
61
+ isTimedOut: true,
62
+ });
63
+ }, timeout);
64
+ };
65
+ connectTimeout = createTimeout(request.connectTimeout, 'Connection timeout');
66
+ req.on('error', (error) => {
67
+ clearTimeout(connectTimeout);
68
+ clearTimeout(responseTimeout);
69
+ resolve({ status: 0, content: error.message, isTimedOut: false });
70
+ });
71
+ req.once('response', () => {
72
+ clearTimeout(connectTimeout);
73
+ responseTimeout = createTimeout(request.responseTimeout, 'Socket timeout');
74
+ });
75
+ if (request.data !== undefined) {
76
+ req.write(request.data);
77
+ }
78
+ req.end();
79
+ });
80
+ }
81
+ return { send };
89
82
  }
90
83
 
91
84
  exports.createHttpRequester = createHttpRequester;
@@ -3,80 +3,80 @@ import { createEchoRequester } from '@algolia/client-common';
3
3
  import http from 'http';
4
4
  import https from 'https';
5
5
 
6
- function echoRequester(status = 200) {
7
- return createEchoRequester({ getURL: (url) => new URL(url), status });
6
+ function echoRequester(status = 200) {
7
+ return createEchoRequester({ getURL: (url) => new URL(url), status });
8
8
  }
9
9
 
10
- // Global agents allow us to reuse the TCP protocol with multiple clients
11
- const agentOptions = { keepAlive: true };
12
- const defaultHttpAgent = new http.Agent(agentOptions);
13
- const defaultHttpsAgent = new https.Agent(agentOptions);
14
- function createHttpRequester({ agent: userGlobalAgent, httpAgent: userHttpAgent, httpsAgent: userHttpsAgent, requesterOptions = {}, } = {}) {
15
- const httpAgent = userHttpAgent || userGlobalAgent || defaultHttpAgent;
16
- const httpsAgent = userHttpsAgent || userGlobalAgent || defaultHttpsAgent;
17
- function send(request) {
18
- return new Promise((resolve) => {
19
- let responseTimeout;
20
- // eslint-disable-next-line prefer-const -- linter thinks this is not reassigned
21
- let connectTimeout;
22
- const url = new URL(request.url);
23
- const path = url.search === null ? url.pathname : `${url.pathname}${url.search}`;
24
- const options = {
25
- agent: url.protocol === 'https:' ? httpsAgent : httpAgent,
26
- hostname: url.hostname,
27
- path,
28
- method: request.method,
29
- ...requesterOptions,
30
- headers: {
31
- ...request.headers,
32
- ...requesterOptions.headers,
33
- },
34
- };
35
- if (url.port && !requesterOptions.port) {
36
- options.port = url.port;
37
- }
38
- const req = (url.protocol === 'https:' ? https : http).request(options, (response) => {
39
- let contentBuffers = [];
40
- response.on('data', (chunk) => {
41
- contentBuffers = contentBuffers.concat(chunk);
42
- });
43
- response.on('end', () => {
44
- clearTimeout(connectTimeout);
45
- clearTimeout(responseTimeout);
46
- resolve({
47
- status: response.statusCode || 0,
48
- content: Buffer.concat(contentBuffers).toString(),
49
- isTimedOut: false,
50
- });
51
- });
52
- });
53
- const createTimeout = (timeout, content) => {
54
- return setTimeout(() => {
55
- req.destroy();
56
- resolve({
57
- status: 0,
58
- content,
59
- isTimedOut: true,
60
- });
61
- }, timeout);
62
- };
63
- connectTimeout = createTimeout(request.connectTimeout, 'Connection timeout');
64
- req.on('error', (error) => {
65
- clearTimeout(connectTimeout);
66
- clearTimeout(responseTimeout);
67
- resolve({ status: 0, content: error.message, isTimedOut: false });
68
- });
69
- req.once('response', () => {
70
- clearTimeout(connectTimeout);
71
- responseTimeout = createTimeout(request.responseTimeout, 'Socket timeout');
72
- });
73
- if (request.data !== undefined) {
74
- req.write(request.data);
75
- }
76
- req.end();
77
- });
78
- }
79
- return { send };
10
+ // Global agents allow us to reuse the TCP protocol with multiple clients
11
+ const agentOptions = { keepAlive: true };
12
+ const defaultHttpAgent = new http.Agent(agentOptions);
13
+ const defaultHttpsAgent = new https.Agent(agentOptions);
14
+ function createHttpRequester({ agent: userGlobalAgent, httpAgent: userHttpAgent, httpsAgent: userHttpsAgent, requesterOptions = {}, } = {}) {
15
+ const httpAgent = userHttpAgent || userGlobalAgent || defaultHttpAgent;
16
+ const httpsAgent = userHttpsAgent || userGlobalAgent || defaultHttpsAgent;
17
+ function send(request) {
18
+ return new Promise((resolve) => {
19
+ let responseTimeout;
20
+ // eslint-disable-next-line prefer-const -- linter thinks this is not reassigned
21
+ let connectTimeout;
22
+ const url = new URL(request.url);
23
+ const path = url.search === null ? url.pathname : `${url.pathname}${url.search}`;
24
+ const options = {
25
+ agent: url.protocol === 'https:' ? httpsAgent : httpAgent,
26
+ hostname: url.hostname,
27
+ path,
28
+ method: request.method,
29
+ ...requesterOptions,
30
+ headers: {
31
+ ...request.headers,
32
+ ...requesterOptions.headers,
33
+ },
34
+ };
35
+ if (url.port && !requesterOptions.port) {
36
+ options.port = url.port;
37
+ }
38
+ const req = (url.protocol === 'https:' ? https : http).request(options, (response) => {
39
+ let contentBuffers = [];
40
+ response.on('data', (chunk) => {
41
+ contentBuffers = contentBuffers.concat(chunk);
42
+ });
43
+ response.on('end', () => {
44
+ clearTimeout(connectTimeout);
45
+ clearTimeout(responseTimeout);
46
+ resolve({
47
+ status: response.statusCode || 0,
48
+ content: Buffer.concat(contentBuffers).toString(),
49
+ isTimedOut: false,
50
+ });
51
+ });
52
+ });
53
+ const createTimeout = (timeout, content) => {
54
+ return setTimeout(() => {
55
+ req.destroy();
56
+ resolve({
57
+ status: 0,
58
+ content,
59
+ isTimedOut: true,
60
+ });
61
+ }, timeout);
62
+ };
63
+ connectTimeout = createTimeout(request.connectTimeout, 'Connection timeout');
64
+ req.on('error', (error) => {
65
+ clearTimeout(connectTimeout);
66
+ clearTimeout(responseTimeout);
67
+ resolve({ status: 0, content: error.message, isTimedOut: false });
68
+ });
69
+ req.once('response', () => {
70
+ clearTimeout(connectTimeout);
71
+ responseTimeout = createTimeout(request.responseTimeout, 'Socket timeout');
72
+ });
73
+ if (request.data !== undefined) {
74
+ req.write(request.data);
75
+ }
76
+ req.end();
77
+ });
78
+ }
79
+ return { send };
80
80
  }
81
81
 
82
82
  export { createHttpRequester, echoRequester };
@@ -1,16 +1,16 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import http from 'http';
4
- import https from 'https';
5
- import type { Requester } from '@algolia/client-common';
6
- export declare type CreateHttpRequesterOptions = Partial<{
7
- agent: http.Agent | https.Agent;
8
- httpAgent: http.Agent;
9
- httpsAgent: https.Agent;
10
- /**
11
- * RequestOptions to be merged with the end request, it will override default options if provided.
12
- */
13
- requesterOptions: https.RequestOptions;
14
- }>;
15
- export declare function createHttpRequester({ agent: userGlobalAgent, httpAgent: userHttpAgent, httpsAgent: userHttpsAgent, requesterOptions, }?: CreateHttpRequesterOptions): Requester;
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import http from 'http';
4
+ import https from 'https';
5
+ import type { Requester } from '@algolia/client-common';
6
+ export type CreateHttpRequesterOptions = Partial<{
7
+ agent: http.Agent | https.Agent;
8
+ httpAgent: http.Agent;
9
+ httpsAgent: https.Agent;
10
+ /**
11
+ * RequestOptions to be merged with the end request, it will override default options if provided.
12
+ */
13
+ requesterOptions: https.RequestOptions;
14
+ }>;
15
+ export declare function createHttpRequester({ agent: userGlobalAgent, httpAgent: userHttpAgent, httpsAgent: userHttpsAgent, requesterOptions, }?: CreateHttpRequesterOptions): Requester;
16
16
  //# sourceMappingURL=createHttpRequester.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createHttpRequester.d.ts","sourceRoot":"","sources":["../../src/createHttpRequester.ts"],"names":[],"mappings":";;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAc,SAAS,EAAY,MAAM,wBAAwB,CAAC;AAE9E,oBAAY,0BAA0B,GAAG,OAAO,CAAC;IAC/C,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAChC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;IACxB;;OAEG;IACH,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC;CACxC,CAAC,CAAC;AAOH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,cAAc,EAC1B,gBAAqB,GACtB,GAAE,0BAA+B,GAAG,SAAS,CA6F7C"}
1
+ {"version":3,"file":"createHttpRequester.d.ts","sourceRoot":"","sources":["../../src/createHttpRequester.ts"],"names":[],"mappings":";;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAc,SAAS,EAAY,MAAM,wBAAwB,CAAC;AAE9E,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC;IAC/C,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAChC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;IACxB;;OAEG;IACH,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC;CACxC,CAAC,CAAC;AAOH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,cAAc,EAC1B,gBAAqB,GACtB,GAAE,0BAA+B,GAAG,SAAS,CA6F7C"}
@@ -1,3 +1,3 @@
1
- import type { Requester } from '@algolia/client-common';
2
- export declare function echoRequester(status?: number): Requester;
1
+ import type { Requester } from '@algolia/client-common';
2
+ export declare function echoRequester(status?: number): Requester;
3
3
  //# sourceMappingURL=echoRequester.d.ts.map
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@algolia/requester-node-http",
3
- "version": "5.0.0-alpha.9",
3
+ "version": "5.0.0-alpha.90",
4
4
  "description": "Promise-based request library for node using the native http module.",
5
5
  "repository": "algolia/algoliasearch-client-javascript",
6
6
  "license": "MIT",
7
7
  "author": "Algolia",
8
- "main": "dist/requester-node-http.cjs.js",
8
+ "type": "module",
9
+ "main": "dist/requester-node-http.cjs",
9
10
  "module": "dist/requester-node-http.esm.node.js",
10
11
  "types": "dist/index.d.ts",
11
12
  "files": [
@@ -19,15 +20,17 @@
19
20
  "test": "jest"
20
21
  },
21
22
  "dependencies": {
22
- "@algolia/client-common": "5.0.0-alpha.9"
23
+ "@algolia/client-common": "5.0.0-alpha.90"
23
24
  },
24
25
  "devDependencies": {
25
- "@types/jest": "28.1.6",
26
- "@types/node": "16.11.47",
27
- "jest": "28.1.3",
28
- "nock": "13.2.9",
29
- "ts-jest": "28.0.5",
30
- "typescript": "4.7.4"
26
+ "@babel/preset-env": "7.23.2",
27
+ "@babel/preset-typescript": "7.23.2",
28
+ "@types/jest": "29.5.7",
29
+ "@types/node": "20.8.10",
30
+ "jest": "29.7.0",
31
+ "nock": "13.3.8",
32
+ "ts-jest": "29.1.1",
33
+ "typescript": "5.2.2"
31
34
  },
32
35
  "engines": {
33
36
  "node": ">= 14.0.0"
@@ -151,8 +151,8 @@ describe('status code handling', () => {
151
151
  // create a test response stream that is chunked inside a unicode character
152
152
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
153
153
  function* generate() {
154
- yield data.slice(0, 3);
155
- yield data.slice(3);
154
+ yield data.subarray(0, 3);
155
+ yield data.subarray(3);
156
156
  }
157
157
 
158
158
  const testStream = Readable.from(generate());
@@ -186,7 +186,7 @@ describe('timeout handling', () => {
186
186
  const response = await requester.send({
187
187
  ...timeoutRequest,
188
188
  connectTimeout: 1000,
189
- url: 'http://www.google.com:81',
189
+ url: 'http://localhost:1111/connection_timeout',
190
190
  });
191
191
 
192
192
  const now = Date.now();
@@ -201,7 +201,7 @@ describe('timeout handling', () => {
201
201
  const response = await requester.send({
202
202
  ...timeoutRequest,
203
203
  connectTimeout: 2000,
204
- url: 'http://www.google.com:81',
204
+ url: 'http://localhost:1111/connection_timeout',
205
205
  });
206
206
 
207
207
  const now = Date.now();