urllib 3.0.0-alpha.0 → 3.0.0-alpha.1
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/package.json +5 -6
- package/src/HttpClient.ts +35 -14
- package/src/Request.ts +7 -2
- package/src/Response.ts +37 -17
- package/src/cjs/HttpClient.d.ts +2 -21
- package/src/cjs/HttpClient.js +36 -13
- package/src/cjs/HttpClient.js.map +1 -1
- package/src/cjs/Request.d.ts +6 -2
- package/src/cjs/Response.d.ts +32 -17
- package/src/cjs/index.d.ts +1 -21
- package/src/cjs/utils.d.ts +2 -0
- package/src/cjs/utils.js +50 -0
- package/src/cjs/utils.js.map +1 -0
- package/src/esm/HttpClient.d.ts +2 -21
- package/src/esm/HttpClient.js +36 -13
- package/src/esm/HttpClient.js.map +1 -1
- package/src/esm/Request.d.ts +6 -2
- package/src/esm/Response.d.ts +32 -17
- package/src/esm/index.d.ts +1 -21
- package/src/esm/utils.d.ts +2 -0
- package/src/esm/utils.js +46 -0
- package/src/esm/utils.js.map +1 -0
- package/src/utils.ts +47 -0
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "urllib",
|
3
|
-
"version": "3.0.0-alpha.
|
3
|
+
"version": "3.0.0-alpha.1",
|
4
4
|
"description": "Help in opening URLs (mostly HTTP) in a complex world — basic and digest authentication, redirections, cookies and more. Base undici fetch API.",
|
5
5
|
"keywords": [
|
6
6
|
"urllib",
|
@@ -52,14 +52,10 @@
|
|
52
52
|
"prepack": "npm run build && rm -rf src/*.tsbuildinfo"
|
53
53
|
},
|
54
54
|
"dependencies": {
|
55
|
-
"content-type": "^1.0.2",
|
56
55
|
"default-user-agent": "^1.0.0",
|
57
56
|
"digest-header": "^0.0.1",
|
58
|
-
"humanize-ms": "^1.2.0",
|
59
|
-
"iconv-lite": "^0.4.15",
|
60
57
|
"ip": "^1.1.5",
|
61
58
|
"mime-types": "^2.1.35",
|
62
|
-
"tslib": "^2.4.0",
|
63
59
|
"undici": "^5.4.0"
|
64
60
|
},
|
65
61
|
"devDependencies": {
|
@@ -73,13 +69,16 @@
|
|
73
69
|
"eslint": "^8.17.0",
|
74
70
|
"eslint-config-egg": "^12.0.0",
|
75
71
|
"git-contributor": "1",
|
72
|
+
"iconv-lite": "^0.6.3",
|
76
73
|
"jest": "28",
|
77
74
|
"jest-summary-reporter": "^0.0.2",
|
75
|
+
"p-event": "^4.2.0",
|
78
76
|
"ts-jest": "28",
|
77
|
+
"tslib": "^2.4.0",
|
79
78
|
"typescript": "4"
|
80
79
|
},
|
81
80
|
"engines": {
|
82
|
-
"node": ">= 16.
|
81
|
+
"node": ">= 16.5.0"
|
83
82
|
},
|
84
83
|
"ci": {
|
85
84
|
"version": "16, 18"
|
package/src/HttpClient.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import { EventEmitter } from 'events';
|
2
2
|
import { debuglog } from 'util';
|
3
3
|
import { Readable, isReadable } from 'stream';
|
4
|
+
import { pipeline } from 'stream/promises';
|
4
5
|
import { Blob } from 'buffer';
|
5
6
|
import { createReadStream } from 'fs';
|
6
7
|
import { basename } from 'path';
|
@@ -10,6 +11,8 @@ import {
|
|
10
11
|
import createUserAgent from 'default-user-agent';
|
11
12
|
import mime from 'mime-types';
|
12
13
|
import { RequestURL, RequestOptions } from './Request';
|
14
|
+
import { HttpClientResponseMeta, HttpClientResponse, ReadableStreamWithMeta } from './Response';
|
15
|
+
import { parseJSON } from './utils';
|
13
16
|
|
14
17
|
const debug = debuglog('urllib');
|
15
18
|
|
@@ -76,7 +79,7 @@ export class HttpClient extends EventEmitter {
|
|
76
79
|
const requestStartTime = Date.now();
|
77
80
|
// keep urllib createCallbackResponse style
|
78
81
|
const resHeaders: Record<string, string> = {};
|
79
|
-
const res = {
|
82
|
+
const res: HttpClientResponseMeta = {
|
80
83
|
status: -1,
|
81
84
|
statusCode: -1,
|
82
85
|
statusMessage: '',
|
@@ -89,10 +92,6 @@ export class HttpClient extends EventEmitter {
|
|
89
92
|
timing: {
|
90
93
|
contentDownload: 0,
|
91
94
|
},
|
92
|
-
// remoteAddress: remoteAddress,
|
93
|
-
// remotePort: remotePort,
|
94
|
-
// socketHandledRequests: socketHandledRequests,
|
95
|
-
// socketHandledResponses: socketHandledResponses,
|
96
95
|
};
|
97
96
|
|
98
97
|
let requestTimeout = 5000;
|
@@ -110,10 +109,7 @@ export class HttpClient extends EventEmitter {
|
|
110
109
|
|
111
110
|
try {
|
112
111
|
const headers = new Headers(args.headers ?? {});
|
113
|
-
|
114
|
-
const disableUserAgent = args.headers &&
|
115
|
-
(args.headers['User-Agent'] === null || args.headers['user-agent'] === null);
|
116
|
-
if (!disableUserAgent && !headers.has('user-agent')) {
|
112
|
+
if (!headers.has('user-agent')) {
|
117
113
|
// need to set user-agent
|
118
114
|
headers.set('user-agent', HEADER_USER_AGENT);
|
119
115
|
}
|
@@ -131,6 +127,10 @@ export class HttpClient extends EventEmitter {
|
|
131
127
|
}
|
132
128
|
|
133
129
|
const isGETOrHEAD = requestOptions.method === 'GET' || requestOptions.method === 'HEAD';
|
130
|
+
// alias to args.content
|
131
|
+
if (args.stream && !args.content) {
|
132
|
+
args.content = args.stream;
|
133
|
+
}
|
134
134
|
|
135
135
|
if (args.files) {
|
136
136
|
if (isGETOrHEAD) {
|
@@ -234,16 +234,34 @@ export class HttpClient extends EventEmitter {
|
|
234
234
|
res.size = parseInt(res.headers['content-length']);
|
235
235
|
}
|
236
236
|
|
237
|
-
let data: any;
|
237
|
+
let data: any = null;
|
238
|
+
let responseBodyStream: ReadableStreamWithMeta | undefined;
|
238
239
|
if (args.streaming || args.dataType === 'stream') {
|
239
|
-
|
240
|
+
const meta = {
|
241
|
+
status: res.status,
|
242
|
+
statusCode: res.statusCode,
|
243
|
+
statusMessage: res.statusMessage,
|
244
|
+
headers: res.headers,
|
245
|
+
};
|
246
|
+
if (typeof Readable.fromWeb === 'function') {
|
247
|
+
responseBodyStream = Object.assign(Readable.fromWeb(response.body!), meta);
|
248
|
+
} else {
|
249
|
+
responseBodyStream = Object.assign(response.body!, meta);
|
250
|
+
}
|
251
|
+
} else if (args.writeStream) {
|
252
|
+
await pipeline(response.body!, args.writeStream);
|
240
253
|
} else if (args.dataType === 'text') {
|
241
254
|
data = await response.text();
|
242
255
|
} else if (args.dataType === 'json') {
|
243
256
|
if (requestOptions.method === 'HEAD') {
|
244
257
|
data = {};
|
245
258
|
} else {
|
246
|
-
data = await response.
|
259
|
+
data = await response.text();
|
260
|
+
if (data.length === 0) {
|
261
|
+
data = null;
|
262
|
+
} else {
|
263
|
+
data = parseJSON(data, args.fixJSONCtlChars);
|
264
|
+
}
|
247
265
|
}
|
248
266
|
} else {
|
249
267
|
// buffer
|
@@ -251,20 +269,23 @@ export class HttpClient extends EventEmitter {
|
|
251
269
|
}
|
252
270
|
res.rt = res.timing.contentDownload = Date.now() - requestStartTime;
|
253
271
|
|
254
|
-
|
272
|
+
const clientResponse: HttpClientResponse = {
|
255
273
|
status: res.status,
|
256
274
|
data,
|
257
275
|
headers: res.headers,
|
258
276
|
url: response.url,
|
259
277
|
redirected: response.redirected,
|
260
|
-
res,
|
278
|
+
res: responseBodyStream ?? res,
|
261
279
|
};
|
280
|
+
return clientResponse;
|
262
281
|
} catch (e: any) {
|
263
282
|
let err = e;
|
264
283
|
if (requestTimeoutController.signal.aborted) {
|
265
284
|
err = new HttpClientRequestTimeoutError(requestTimeout, { cause: e });
|
266
285
|
}
|
267
286
|
err.res = res;
|
287
|
+
err.status = res.status;
|
288
|
+
err.headers = res.headers;
|
268
289
|
// console.error(err);
|
269
290
|
throw err;
|
270
291
|
} finally {
|
package/src/Request.ts
CHANGED
@@ -5,6 +5,9 @@ export type HttpMethod = 'GET' | 'POST' | 'DELETE' | 'PUT' | 'HEAD' | 'OPTIONS'
|
|
5
5
|
|
6
6
|
export type RequestURL = string | URL;
|
7
7
|
|
8
|
+
export type FixJSONCtlCharsHandler = (data: string) => string;
|
9
|
+
export type FixJSONCtlChars = boolean | FixJSONCtlCharsHandler;
|
10
|
+
|
8
11
|
export type RequestOptions = {
|
9
12
|
/** Request method, defaults to GET. Could be GET, POST, DELETE or PUT. Alias 'type'. */
|
10
13
|
method?: HttpMethod | Lowercase<HttpMethod>;
|
@@ -14,7 +17,9 @@ export type RequestOptions = {
|
|
14
17
|
dataAsQueryString?: boolean;
|
15
18
|
/** Manually set the content of payload. If set, data will be ignored. */
|
16
19
|
content?: string | Buffer | Readable;
|
17
|
-
/** Stream to be pipe to the remote. If set, data and content will be ignored.
|
20
|
+
/** Stream to be pipe to the remote. If set, data and content will be ignored.
|
21
|
+
* Alias to `content` on Readable
|
22
|
+
*/
|
18
23
|
stream?: Readable;
|
19
24
|
/**
|
20
25
|
* A writable stream to be piped by the response stream.
|
@@ -46,7 +51,7 @@ export type RequestOptions = {
|
|
46
51
|
*/
|
47
52
|
streaming?: boolean;
|
48
53
|
/** Fix the control characters (U+0000 through U+001F) before JSON parse response. Default is false. */
|
49
|
-
fixJSONCtlChars?:
|
54
|
+
fixJSONCtlChars?: FixJSONCtlChars;
|
50
55
|
/** Request headers. */
|
51
56
|
headers?: Record<string, string>;
|
52
57
|
/**
|
package/src/Response.ts
CHANGED
@@ -1,20 +1,40 @@
|
|
1
|
-
import {
|
1
|
+
import { ReadableStream } from 'stream/web';
|
2
|
+
import { Readable } from 'stream';
|
2
3
|
|
3
|
-
export
|
4
|
-
data: T;
|
4
|
+
export type HttpClientResponseMeta = {
|
5
5
|
status: number;
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
6
|
+
statusCode: number;
|
7
|
+
statusMessage: string;
|
8
|
+
headers: Record<string, string>;
|
9
|
+
size: number;
|
10
|
+
aborted: boolean;
|
11
|
+
rt: number;
|
12
|
+
keepAliveSocket: boolean;
|
13
|
+
requestUrls: string[],
|
14
|
+
/**
|
15
|
+
* https://eggjs.org/en/core/httpclient.html#timing-boolean
|
16
|
+
*/
|
17
|
+
timing: {
|
18
|
+
contentDownload: number;
|
19
19
|
};
|
20
|
-
|
20
|
+
// remoteAddress: remoteAddress,
|
21
|
+
// remotePort: remotePort,
|
22
|
+
// socketHandledRequests: socketHandledRequests,
|
23
|
+
// socketHandledResponses: socketHandledResponses,
|
24
|
+
};
|
25
|
+
|
26
|
+
export type ReadableStreamWithMeta = (Readable | ReadableStream) & {
|
27
|
+
status: number;
|
28
|
+
statusCode: number;
|
29
|
+
statusMessage: string;
|
30
|
+
headers: Record<string, string>;
|
31
|
+
};
|
32
|
+
|
33
|
+
export type HttpClientResponse = {
|
34
|
+
data: any;
|
35
|
+
status: number;
|
36
|
+
headers: Record<string, string>;
|
37
|
+
url: string;
|
38
|
+
redirected: boolean;
|
39
|
+
res: ReadableStreamWithMeta | HttpClientResponseMeta;
|
40
|
+
};
|
package/src/cjs/HttpClient.d.ts
CHANGED
@@ -1,31 +1,12 @@
|
|
1
1
|
/// <reference types="node" />
|
2
2
|
import { EventEmitter } from 'events';
|
3
3
|
import { RequestURL, RequestOptions } from './Request';
|
4
|
+
import { HttpClientResponse } from './Response';
|
4
5
|
export declare type ClientOptions = {
|
5
6
|
defaultArgs?: RequestOptions;
|
6
7
|
};
|
7
8
|
export declare class HttpClient extends EventEmitter {
|
8
9
|
defaultArgs?: RequestOptions;
|
9
10
|
constructor(clientOptions?: ClientOptions);
|
10
|
-
request(url: RequestURL, options?: RequestOptions): Promise<
|
11
|
-
status: number;
|
12
|
-
data: any;
|
13
|
-
headers: Record<string, string>;
|
14
|
-
url: string;
|
15
|
-
redirected: boolean;
|
16
|
-
res: {
|
17
|
-
status: number;
|
18
|
-
statusCode: number;
|
19
|
-
statusMessage: string;
|
20
|
-
headers: Record<string, string>;
|
21
|
-
size: number;
|
22
|
-
aborted: boolean;
|
23
|
-
rt: number;
|
24
|
-
keepAliveSocket: boolean;
|
25
|
-
requestUrls: string[];
|
26
|
-
timing: {
|
27
|
-
contentDownload: number;
|
28
|
-
};
|
29
|
-
};
|
30
|
-
}>;
|
11
|
+
request(url: RequestURL, options?: RequestOptions): Promise<HttpClientResponse>;
|
31
12
|
}
|
package/src/cjs/HttpClient.js
CHANGED
@@ -6,12 +6,14 @@ const tslib_1 = require("tslib");
|
|
6
6
|
const events_1 = require("events");
|
7
7
|
const util_1 = require("util");
|
8
8
|
const stream_1 = require("stream");
|
9
|
+
const promises_1 = require("stream/promises");
|
9
10
|
const buffer_1 = require("buffer");
|
10
11
|
const fs_1 = require("fs");
|
11
12
|
const path_1 = require("path");
|
12
13
|
const undici_1 = require("undici");
|
13
14
|
const default_user_agent_1 = tslib_1.__importDefault(require("default-user-agent"));
|
14
15
|
const mime_types_1 = tslib_1.__importDefault(require("mime-types"));
|
16
|
+
const utils_1 = require("./utils");
|
15
17
|
const debug = (0, util_1.debuglog)('urllib');
|
16
18
|
// https://github.com/octet-stream/form-data
|
17
19
|
class BlobFromStream {
|
@@ -76,10 +78,6 @@ class HttpClient extends events_1.EventEmitter {
|
|
76
78
|
timing: {
|
77
79
|
contentDownload: 0,
|
78
80
|
},
|
79
|
-
// remoteAddress: remoteAddress,
|
80
|
-
// remotePort: remotePort,
|
81
|
-
// socketHandledRequests: socketHandledRequests,
|
82
|
-
// socketHandledResponses: socketHandledResponses,
|
83
81
|
};
|
84
82
|
let requestTimeout = 5000;
|
85
83
|
if (args.timeout) {
|
@@ -95,10 +93,7 @@ class HttpClient extends events_1.EventEmitter {
|
|
95
93
|
const method = ((_b = args.method) !== null && _b !== void 0 ? _b : 'GET').toUpperCase();
|
96
94
|
try {
|
97
95
|
const headers = new undici_1.Headers((_c = args.headers) !== null && _c !== void 0 ? _c : {});
|
98
|
-
|
99
|
-
const disableUserAgent = args.headers &&
|
100
|
-
(args.headers['User-Agent'] === null || args.headers['user-agent'] === null);
|
101
|
-
if (!disableUserAgent && !headers.has('user-agent')) {
|
96
|
+
if (!headers.has('user-agent')) {
|
102
97
|
// need to set user-agent
|
103
98
|
headers.set('user-agent', HEADER_USER_AGENT);
|
104
99
|
}
|
@@ -114,6 +109,10 @@ class HttpClient extends events_1.EventEmitter {
|
|
114
109
|
requestOptions.redirect = 'manual';
|
115
110
|
}
|
116
111
|
const isGETOrHEAD = requestOptions.method === 'GET' || requestOptions.method === 'HEAD';
|
112
|
+
// alias to args.content
|
113
|
+
if (args.stream && !args.content) {
|
114
|
+
args.content = args.stream;
|
115
|
+
}
|
117
116
|
if (args.files) {
|
118
117
|
if (isGETOrHEAD) {
|
119
118
|
requestOptions.method = 'POST';
|
@@ -223,9 +222,24 @@ class HttpClient extends events_1.EventEmitter {
|
|
223
222
|
if (res.headers['content-length']) {
|
224
223
|
res.size = parseInt(res.headers['content-length']);
|
225
224
|
}
|
226
|
-
let data;
|
225
|
+
let data = null;
|
226
|
+
let responseBodyStream;
|
227
227
|
if (args.streaming || args.dataType === 'stream') {
|
228
|
-
|
228
|
+
const meta = {
|
229
|
+
status: res.status,
|
230
|
+
statusCode: res.statusCode,
|
231
|
+
statusMessage: res.statusMessage,
|
232
|
+
headers: res.headers,
|
233
|
+
};
|
234
|
+
if (typeof stream_1.Readable.fromWeb === 'function') {
|
235
|
+
responseBodyStream = Object.assign(stream_1.Readable.fromWeb(response.body), meta);
|
236
|
+
}
|
237
|
+
else {
|
238
|
+
responseBodyStream = Object.assign(response.body, meta);
|
239
|
+
}
|
240
|
+
}
|
241
|
+
else if (args.writeStream) {
|
242
|
+
await (0, promises_1.pipeline)(response.body, args.writeStream);
|
229
243
|
}
|
230
244
|
else if (args.dataType === 'text') {
|
231
245
|
data = await response.text();
|
@@ -235,7 +249,13 @@ class HttpClient extends events_1.EventEmitter {
|
|
235
249
|
data = {};
|
236
250
|
}
|
237
251
|
else {
|
238
|
-
data = await response.
|
252
|
+
data = await response.text();
|
253
|
+
if (data.length === 0) {
|
254
|
+
data = null;
|
255
|
+
}
|
256
|
+
else {
|
257
|
+
data = (0, utils_1.parseJSON)(data, args.fixJSONCtlChars);
|
258
|
+
}
|
239
259
|
}
|
240
260
|
}
|
241
261
|
else {
|
@@ -243,14 +263,15 @@ class HttpClient extends events_1.EventEmitter {
|
|
243
263
|
data = Buffer.from(await response.arrayBuffer());
|
244
264
|
}
|
245
265
|
res.rt = res.timing.contentDownload = Date.now() - requestStartTime;
|
246
|
-
|
266
|
+
const clientResponse = {
|
247
267
|
status: res.status,
|
248
268
|
data,
|
249
269
|
headers: res.headers,
|
250
270
|
url: response.url,
|
251
271
|
redirected: response.redirected,
|
252
|
-
res,
|
272
|
+
res: responseBodyStream !== null && responseBodyStream !== void 0 ? responseBodyStream : res,
|
253
273
|
};
|
274
|
+
return clientResponse;
|
254
275
|
}
|
255
276
|
catch (e) {
|
256
277
|
let err = e;
|
@@ -258,6 +279,8 @@ class HttpClient extends events_1.EventEmitter {
|
|
258
279
|
err = new HttpClientRequestTimeoutError(requestTimeout, { cause: e });
|
259
280
|
}
|
260
281
|
err.res = res;
|
282
|
+
err.status = res.status;
|
283
|
+
err.headers = res.headers;
|
261
284
|
// console.error(err);
|
262
285
|
throw err;
|
263
286
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../HttpClient.ts"],"names":[],"mappings":";;;;;AAAA,mCAAsC;AACtC,+BAAgC;AAChC,mCAA8C;AAC9C,mCAA8B;AAC9B,2BAAsC;AACtC,+BAAgC;AAChC,mCAEgB;AAChB,oFAAiD;AACjD,oEAA8B;AAG9B,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,QAAQ,CAAC,CAAC;AAMjC,4CAA4C;AAC5C,MAAM,cAAc;IAGlB,YAAY,MAAgB,EAAE,IAAY;QAF1C,yCAAQ;QACR,uCAAM;QAEJ,+BAAA,IAAI,0BAAW,MAAM,MAAA,CAAC;QACtB,+BAAA,IAAI,wBAAS,IAAI,MAAA,CAAC;IACpB,CAAC;IAED,MAAM;QACJ,OAAO,+BAAA,IAAI,8BAAQ,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,+BAAA,IAAI,4BAAM,CAAC;IACpB,CAAC;IAED,IAAI,gFAAC,MAAM,CAAC,WAAW,EAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,6BAA8B,SAAQ,KAAK;IAC/C,YAAY,OAAe,EAAE,OAAqB;QAChD,MAAM,OAAO,GAAG,uBAAuB,OAAO,KAAK,CAAC;QACpD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,iBAAiB,GAAG,IAAA,4BAAe,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAElE,SAAS,WAAW,CAAC,MAAgB;IACnC,MAAM,QAAQ,GAAY,MAAc,CAAC,IAAI,CAAC;IAC9C,IAAI,QAAQ,EAAE;QACZ,OAAO,IAAA,eAAQ,EAAC,QAAQ,CAAC,CAAC;KAC3B;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAa,UAAW,SAAQ,qBAAY;IAG1C,YAAY,aAA6B;QACvC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAe,EAAE,OAAwB;;QACrD,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAChE,MAAM,IAAI,GAAG;YACX,GAAG,IAAI,CAAC,WAAW;YACnB,GAAG,OAAO;YACV,OAAO,EAAE,IAAI;SACd,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,2CAA2C;QAC3C,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,MAAM,GAAG,
|
1
|
+
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../HttpClient.ts"],"names":[],"mappings":"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"}
|
package/src/cjs/Request.d.ts
CHANGED
@@ -6,6 +6,8 @@ import { Readable, Writable } from 'stream';
|
|
6
6
|
import { LookupFunction } from 'net';
|
7
7
|
export declare type HttpMethod = 'GET' | 'POST' | 'DELETE' | 'PUT' | 'HEAD' | 'OPTIONS' | 'PATCH' | 'TRACE' | 'CONNECT';
|
8
8
|
export declare type RequestURL = string | URL;
|
9
|
+
export declare type FixJSONCtlCharsHandler = (data: string) => string;
|
10
|
+
export declare type FixJSONCtlChars = boolean | FixJSONCtlCharsHandler;
|
9
11
|
export declare type RequestOptions = {
|
10
12
|
/** Request method, defaults to GET. Could be GET, POST, DELETE or PUT. Alias 'type'. */
|
11
13
|
method?: HttpMethod | Lowercase<HttpMethod>;
|
@@ -15,7 +17,9 @@ export declare type RequestOptions = {
|
|
15
17
|
dataAsQueryString?: boolean;
|
16
18
|
/** Manually set the content of payload. If set, data will be ignored. */
|
17
19
|
content?: string | Buffer | Readable;
|
18
|
-
/** Stream to be pipe to the remote. If set, data and content will be ignored.
|
20
|
+
/** Stream to be pipe to the remote. If set, data and content will be ignored.
|
21
|
+
* Alias to `content` on Readable
|
22
|
+
*/
|
19
23
|
stream?: Readable;
|
20
24
|
/**
|
21
25
|
* A writable stream to be piped by the response stream.
|
@@ -47,7 +51,7 @@ export declare type RequestOptions = {
|
|
47
51
|
*/
|
48
52
|
streaming?: boolean;
|
49
53
|
/** Fix the control characters (U+0000 through U+001F) before JSON parse response. Default is false. */
|
50
|
-
fixJSONCtlChars?:
|
54
|
+
fixJSONCtlChars?: FixJSONCtlChars;
|
51
55
|
/** Request headers. */
|
52
56
|
headers?: Record<string, string>;
|
53
57
|
/**
|
package/src/cjs/Response.d.ts
CHANGED
@@ -1,20 +1,35 @@
|
|
1
1
|
/// <reference types="node" />
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
/// <reference types="node" />
|
3
|
+
import { ReadableStream } from 'stream/web';
|
4
|
+
import { Readable } from 'stream';
|
5
|
+
export declare type HttpClientResponseMeta = {
|
5
6
|
status: number;
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
7
|
+
statusCode: number;
|
8
|
+
statusMessage: string;
|
9
|
+
headers: Record<string, string>;
|
10
|
+
size: number;
|
11
|
+
aborted: boolean;
|
12
|
+
rt: number;
|
13
|
+
keepAliveSocket: boolean;
|
14
|
+
requestUrls: string[];
|
15
|
+
/**
|
16
|
+
* https://eggjs.org/en/core/httpclient.html#timing-boolean
|
17
|
+
*/
|
18
|
+
timing: {
|
19
|
+
contentDownload: number;
|
19
20
|
};
|
20
|
-
}
|
21
|
+
};
|
22
|
+
export declare type ReadableStreamWithMeta = (Readable | ReadableStream) & {
|
23
|
+
status: number;
|
24
|
+
statusCode: number;
|
25
|
+
statusMessage: string;
|
26
|
+
headers: Record<string, string>;
|
27
|
+
};
|
28
|
+
export declare type HttpClientResponse = {
|
29
|
+
data: any;
|
30
|
+
status: number;
|
31
|
+
headers: Record<string, string>;
|
32
|
+
url: string;
|
33
|
+
redirected: boolean;
|
34
|
+
res: ReadableStreamWithMeta | HttpClientResponseMeta;
|
35
|
+
};
|
package/src/cjs/index.d.ts
CHANGED
@@ -1,25 +1,5 @@
|
|
1
1
|
import { RequestOptions, RequestURL } from './Request';
|
2
|
-
export declare function request(url: RequestURL, options?: RequestOptions): Promise<
|
3
|
-
status: number;
|
4
|
-
data: any;
|
5
|
-
headers: Record<string, string>;
|
6
|
-
url: string;
|
7
|
-
redirected: boolean;
|
8
|
-
res: {
|
9
|
-
status: number;
|
10
|
-
statusCode: number;
|
11
|
-
statusMessage: string;
|
12
|
-
headers: Record<string, string>;
|
13
|
-
size: number;
|
14
|
-
aborted: boolean;
|
15
|
-
rt: number;
|
16
|
-
keepAliveSocket: boolean;
|
17
|
-
requestUrls: string[];
|
18
|
-
timing: {
|
19
|
-
contentDownload: number;
|
20
|
-
};
|
21
|
-
};
|
22
|
-
}>;
|
2
|
+
export declare function request(url: RequestURL, options?: RequestOptions): Promise<import("./Response").HttpClientResponse>;
|
23
3
|
export { HttpClient } from './HttpClient';
|
24
4
|
declare const _default: {
|
25
5
|
request: typeof request;
|
package/src/cjs/utils.js
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.parseJSON = void 0;
|
4
|
+
const JSONCtlCharsMap = {
|
5
|
+
'"': '\\"',
|
6
|
+
'\\': '\\\\',
|
7
|
+
'\b': '\\b',
|
8
|
+
'\f': '\\f',
|
9
|
+
'\n': '\\n',
|
10
|
+
'\r': '\\r',
|
11
|
+
'\t': '\\t', // \u0009
|
12
|
+
};
|
13
|
+
/* eslint no-control-regex: "off"*/
|
14
|
+
const JSONCtlCharsRE = /[\u0000-\u001F\u005C]/g;
|
15
|
+
function replaceOneChar(c) {
|
16
|
+
return JSONCtlCharsMap[c] || '\\u' + (c.charCodeAt(0) + 0x10000).toString(16).substring(1);
|
17
|
+
}
|
18
|
+
function replaceJSONCtlChars(value) {
|
19
|
+
return value.replace(JSONCtlCharsRE, replaceOneChar);
|
20
|
+
}
|
21
|
+
function parseJSON(data, fixJSONCtlChars) {
|
22
|
+
if (typeof fixJSONCtlChars === 'function') {
|
23
|
+
data = fixJSONCtlChars(data);
|
24
|
+
}
|
25
|
+
else if (fixJSONCtlChars) {
|
26
|
+
// https://github.com/node-modules/urllib/pull/77
|
27
|
+
// remote the control characters (U+0000 through U+001F)
|
28
|
+
data = replaceJSONCtlChars(data);
|
29
|
+
}
|
30
|
+
try {
|
31
|
+
data = JSON.parse(data);
|
32
|
+
}
|
33
|
+
catch (err) {
|
34
|
+
if (err.name === 'SyntaxError') {
|
35
|
+
err.name = 'JSONResponseFormatError';
|
36
|
+
}
|
37
|
+
if (data.length > 1024) {
|
38
|
+
// show 0~512 ... -512~end data
|
39
|
+
err.message += ' (data json format: ' +
|
40
|
+
JSON.stringify(data.slice(0, 512)) + ' ...skip... ' + JSON.stringify(data.slice(data.length - 512)) + ')';
|
41
|
+
}
|
42
|
+
else {
|
43
|
+
err.message += ' (data json format: ' + JSON.stringify(data) + ')';
|
44
|
+
}
|
45
|
+
throw err;
|
46
|
+
}
|
47
|
+
return data;
|
48
|
+
}
|
49
|
+
exports.parseJSON = parseJSON;
|
50
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":";;;AAEA,MAAM,eAAe,GAAG;IACtB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK,EAAE,SAAS;CACvB,CAAC;AACF,mCAAmC;AACnC,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEhD,SAAS,cAAc,CAAC,CAAS;IAC/B,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY,EAAE,eAAiC;IACvE,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;QACzC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;KAC9B;SAAM,IAAI,eAAe,EAAE;QAC1B,iDAAiD;QACjD,wDAAwD;QACxD,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;KAClC;IACD,IAAI;QACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACzB;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE;YAC9B,GAAG,CAAC,IAAI,GAAG,yBAAyB,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE;YACtB,+BAA+B;YAC/B,GAAG,CAAC,OAAO,IAAI,sBAAsB;gBACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC7G;aAAM;YACL,GAAG,CAAC,OAAO,IAAI,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;SACpE;QACD,MAAM,GAAG,CAAC;KACX;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAxBD,8BAwBC"}
|
package/src/esm/HttpClient.d.ts
CHANGED
@@ -1,31 +1,12 @@
|
|
1
1
|
/// <reference types="node" />
|
2
2
|
import { EventEmitter } from 'events';
|
3
3
|
import { RequestURL, RequestOptions } from './Request';
|
4
|
+
import { HttpClientResponse } from './Response';
|
4
5
|
export declare type ClientOptions = {
|
5
6
|
defaultArgs?: RequestOptions;
|
6
7
|
};
|
7
8
|
export declare class HttpClient extends EventEmitter {
|
8
9
|
defaultArgs?: RequestOptions;
|
9
10
|
constructor(clientOptions?: ClientOptions);
|
10
|
-
request(url: RequestURL, options?: RequestOptions): Promise<
|
11
|
-
status: number;
|
12
|
-
data: any;
|
13
|
-
headers: Record<string, string>;
|
14
|
-
url: string;
|
15
|
-
redirected: boolean;
|
16
|
-
res: {
|
17
|
-
status: number;
|
18
|
-
statusCode: number;
|
19
|
-
statusMessage: string;
|
20
|
-
headers: Record<string, string>;
|
21
|
-
size: number;
|
22
|
-
aborted: boolean;
|
23
|
-
rt: number;
|
24
|
-
keepAliveSocket: boolean;
|
25
|
-
requestUrls: string[];
|
26
|
-
timing: {
|
27
|
-
contentDownload: number;
|
28
|
-
};
|
29
|
-
};
|
30
|
-
}>;
|
11
|
+
request(url: RequestURL, options?: RequestOptions): Promise<HttpClientResponse>;
|
31
12
|
}
|
package/src/esm/HttpClient.js
CHANGED
@@ -3,12 +3,14 @@ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { EventEmitter } from 'events';
|
4
4
|
import { debuglog } from 'util';
|
5
5
|
import { Readable, isReadable } from 'stream';
|
6
|
+
import { pipeline } from 'stream/promises';
|
6
7
|
import { Blob } from 'buffer';
|
7
8
|
import { createReadStream } from 'fs';
|
8
9
|
import { basename } from 'path';
|
9
10
|
import { fetch, Headers, FormData, } from 'undici';
|
10
11
|
import createUserAgent from 'default-user-agent';
|
11
12
|
import mime from 'mime-types';
|
13
|
+
import { parseJSON } from './utils.js';
|
12
14
|
const debug = debuglog('urllib');
|
13
15
|
// https://github.com/octet-stream/form-data
|
14
16
|
class BlobFromStream {
|
@@ -73,10 +75,6 @@ export class HttpClient extends EventEmitter {
|
|
73
75
|
timing: {
|
74
76
|
contentDownload: 0,
|
75
77
|
},
|
76
|
-
// remoteAddress: remoteAddress,
|
77
|
-
// remotePort: remotePort,
|
78
|
-
// socketHandledRequests: socketHandledRequests,
|
79
|
-
// socketHandledResponses: socketHandledResponses,
|
80
78
|
};
|
81
79
|
let requestTimeout = 5000;
|
82
80
|
if (args.timeout) {
|
@@ -92,10 +90,7 @@ export class HttpClient extends EventEmitter {
|
|
92
90
|
const method = ((_b = args.method) !== null && _b !== void 0 ? _b : 'GET').toUpperCase();
|
93
91
|
try {
|
94
92
|
const headers = new Headers((_c = args.headers) !== null && _c !== void 0 ? _c : {});
|
95
|
-
|
96
|
-
const disableUserAgent = args.headers &&
|
97
|
-
(args.headers['User-Agent'] === null || args.headers['user-agent'] === null);
|
98
|
-
if (!disableUserAgent && !headers.has('user-agent')) {
|
93
|
+
if (!headers.has('user-agent')) {
|
99
94
|
// need to set user-agent
|
100
95
|
headers.set('user-agent', HEADER_USER_AGENT);
|
101
96
|
}
|
@@ -111,6 +106,10 @@ export class HttpClient extends EventEmitter {
|
|
111
106
|
requestOptions.redirect = 'manual';
|
112
107
|
}
|
113
108
|
const isGETOrHEAD = requestOptions.method === 'GET' || requestOptions.method === 'HEAD';
|
109
|
+
// alias to args.content
|
110
|
+
if (args.stream && !args.content) {
|
111
|
+
args.content = args.stream;
|
112
|
+
}
|
114
113
|
if (args.files) {
|
115
114
|
if (isGETOrHEAD) {
|
116
115
|
requestOptions.method = 'POST';
|
@@ -220,9 +219,24 @@ export class HttpClient extends EventEmitter {
|
|
220
219
|
if (res.headers['content-length']) {
|
221
220
|
res.size = parseInt(res.headers['content-length']);
|
222
221
|
}
|
223
|
-
let data;
|
222
|
+
let data = null;
|
223
|
+
let responseBodyStream;
|
224
224
|
if (args.streaming || args.dataType === 'stream') {
|
225
|
-
|
225
|
+
const meta = {
|
226
|
+
status: res.status,
|
227
|
+
statusCode: res.statusCode,
|
228
|
+
statusMessage: res.statusMessage,
|
229
|
+
headers: res.headers,
|
230
|
+
};
|
231
|
+
if (typeof Readable.fromWeb === 'function') {
|
232
|
+
responseBodyStream = Object.assign(Readable.fromWeb(response.body), meta);
|
233
|
+
}
|
234
|
+
else {
|
235
|
+
responseBodyStream = Object.assign(response.body, meta);
|
236
|
+
}
|
237
|
+
}
|
238
|
+
else if (args.writeStream) {
|
239
|
+
await pipeline(response.body, args.writeStream);
|
226
240
|
}
|
227
241
|
else if (args.dataType === 'text') {
|
228
242
|
data = await response.text();
|
@@ -232,7 +246,13 @@ export class HttpClient extends EventEmitter {
|
|
232
246
|
data = {};
|
233
247
|
}
|
234
248
|
else {
|
235
|
-
data = await response.
|
249
|
+
data = await response.text();
|
250
|
+
if (data.length === 0) {
|
251
|
+
data = null;
|
252
|
+
}
|
253
|
+
else {
|
254
|
+
data = parseJSON(data, args.fixJSONCtlChars);
|
255
|
+
}
|
236
256
|
}
|
237
257
|
}
|
238
258
|
else {
|
@@ -240,14 +260,15 @@ export class HttpClient extends EventEmitter {
|
|
240
260
|
data = Buffer.from(await response.arrayBuffer());
|
241
261
|
}
|
242
262
|
res.rt = res.timing.contentDownload = Date.now() - requestStartTime;
|
243
|
-
|
263
|
+
const clientResponse = {
|
244
264
|
status: res.status,
|
245
265
|
data,
|
246
266
|
headers: res.headers,
|
247
267
|
url: response.url,
|
248
268
|
redirected: response.redirected,
|
249
|
-
res,
|
269
|
+
res: responseBodyStream !== null && responseBodyStream !== void 0 ? responseBodyStream : res,
|
250
270
|
};
|
271
|
+
return clientResponse;
|
251
272
|
}
|
252
273
|
catch (e) {
|
253
274
|
let err = e;
|
@@ -255,6 +276,8 @@ export class HttpClient extends EventEmitter {
|
|
255
276
|
err = new HttpClientRequestTimeoutError(requestTimeout, { cause: e });
|
256
277
|
}
|
257
278
|
err.res = res;
|
279
|
+
err.status = res.status;
|
280
|
+
err.headers = res.headers;
|
258
281
|
// console.error(err);
|
259
282
|
throw err;
|
260
283
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../HttpClient.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EACL,KAAK,EAAe,OAAO,EAAE,QAAQ,GACtC,MAAM,QAAQ,CAAC;AAChB,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,IAAI,MAAM,YAAY,CAAC;AAG9B,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAMjC,4CAA4C;AAC5C,MAAM,cAAc;IAGlB,YAAY,MAAgB,EAAE,IAAY;QAF1C,yCAAQ;QACR,uCAAM;QAEJ,uBAAA,IAAI,0BAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,wBAAS,IAAI,MAAA,CAAC;IACpB,CAAC;IAED,MAAM;QACJ,OAAO,uBAAA,IAAI,8BAAQ,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,uBAAA,IAAI,4BAAM,CAAC;IACpB,CAAC;IAED,IAAI,gFAAC,MAAM,CAAC,WAAW,EAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,6BAA8B,SAAQ,KAAK;IAC/C,YAAY,OAAe,EAAE,OAAqB;QAChD,MAAM,OAAO,GAAG,uBAAuB,OAAO,KAAK,CAAC;QACpD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,iBAAiB,GAAG,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAElE,SAAS,WAAW,CAAC,MAAgB;IACnC,MAAM,QAAQ,GAAY,MAAc,CAAC,IAAI,CAAC;IAC9C,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC3B;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,OAAO,UAAW,SAAQ,YAAY;IAG1C,YAAY,aAA6B;QACvC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAe,EAAE,OAAwB;;QACrD,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAChE,MAAM,IAAI,GAAG;YACX,GAAG,IAAI,CAAC,WAAW;YACnB,GAAG,OAAO;YACV,OAAO,EAAE,IAAI;SACd,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,2CAA2C;QAC3C,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,MAAM,GAAG,
|
1
|
+
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../HttpClient.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EACL,KAAK,EAAe,OAAO,EAAE,QAAQ,GACtC,MAAM,QAAQ,CAAC;AAChB,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,IAAI,MAAM,YAAY,CAAC;AAG9B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAMjC,4CAA4C;AAC5C,MAAM,cAAc;IAGlB,YAAY,MAAgB,EAAE,IAAY;QAF1C,yCAAQ;QACR,uCAAM;QAEJ,uBAAA,IAAI,0BAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,wBAAS,IAAI,MAAA,CAAC;IACpB,CAAC;IAED,MAAM;QACJ,OAAO,uBAAA,IAAI,8BAAQ,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,uBAAA,IAAI,4BAAM,CAAC;IACpB,CAAC;IAED,IAAI,gFAAC,MAAM,CAAC,WAAW,EAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,6BAA8B,SAAQ,KAAK;IAC/C,YAAY,OAAe,EAAE,OAAqB;QAChD,MAAM,OAAO,GAAG,uBAAuB,OAAO,KAAK,CAAC;QACpD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,iBAAiB,GAAG,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAElE,SAAS,WAAW,CAAC,MAAgB;IACnC,MAAM,QAAQ,GAAY,MAAc,CAAC,IAAI,CAAC;IAC9C,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC3B;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,OAAO,UAAW,SAAQ,YAAY;IAG1C,YAAY,aAA6B;QACvC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAe,EAAE,OAAwB;;QACrD,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAChE,MAAM,IAAI,GAAG;YACX,GAAG,IAAI,CAAC,WAAW;YACnB,GAAG,OAAO;YACV,OAAO,EAAE,IAAI;SACd,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,2CAA2C;QAC3C,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,MAAM,GAAG,GAA2B;YAClC,MAAM,EAAE,CAAC,CAAC;YACV,UAAU,EAAE,CAAC,CAAC;YACd,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,CAAC;YACL,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,CAAE,GAAG,CAAC,QAAQ,EAAE,CAAE;YAC/B,MAAM,EAAE;gBACN,eAAe,EAAE,CAAC;aACnB;SACF,CAAC;QAEF,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC/B,cAAc,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,mCAAI,cAAc,CAAC;aAC1E;iBAAM;gBACL,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;aAC/B;SACF;QAED,MAAM,wBAAwB,GAAG,IAAI,eAAe,EAAE,CAAC;QACvD,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,CAAC,MAAA,IAAI,CAAC,MAAM,mCAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAEpD,IAAI;YACF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBAC9B,yBAAyB;gBACzB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;aAC9C;YACD,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;aAC3C;YAED,MAAM,cAAc,GAAgB;gBAClC,MAAM;gBACN,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,wBAAwB,CAAC,MAAM;aACxC,CAAC;YACF,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;gBACjC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;aACpC;YAED,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,KAAK,KAAK,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM,CAAC;YACxF,wBAAwB;YACxB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;aAC5B;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,WAAW,EAAE;oBACf,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC;iBAChC;gBACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAChC,MAAM,WAAW,GAA2C,EAAE,CAAC;gBAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAC7B,KAAK,MAAM,CAAE,KAAK,EAAE,IAAI,CAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;wBAClD,MAAM,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC;wBACpD,WAAW,CAAC,IAAI,CAAC,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC,CAAC;qBACnC;iBACF;qBAAM,IAAI,IAAI,CAAC,KAAK,YAAY,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAY,CAAC,EAAE;oBAC1E,WAAW,CAAC,IAAI,CAAC,CAAE,MAAM,EAAE,IAAI,CAAC,KAAiB,CAAE,CAAC,CAAC;iBACtD;qBAAM,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACxE,WAAW,CAAC,IAAI,CAAC,CAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC;iBAC1C;qBAAM,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;oBACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;wBAC9B,WAAW,CAAC,IAAI,CAAC,CAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAE,CAAC,CAAC;qBAChD;iBACF;gBACD,0BAA0B;gBAC1B,IAAI,IAAI,CAAC,IAAI,EAAE;oBACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;wBAC7B,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;qBAC1C;iBACF;gBACD,KAAK,MAAM,CAAE,KAAK,EAAE,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE;oBAC7D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;wBAC5B,oCAAoC;wBACpC,uDAAuD;wBACvD,iHAAiH;wBACjH,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;wBAC1C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;qBAC/F;yBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBAChC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAE,IAAI,CAAE,CAAC,EAAE,aAAa,KAAK,EAAE,CAAC,CAAC;qBAClE;yBAAM,IAAI,IAAI,YAAY,QAAQ,IAAI,UAAU,CAAC,IAAW,CAAC,EAAE;wBAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,aAAa,KAAK,EAAE,CAAC;wBAC3D,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;qBACzF;iBACF;gBACD,cAAc,CAAC,IAAI,GAAG,QAAQ,CAAC;aAChC;iBAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBACvB,IAAI,CAAC,WAAW,EAAE;oBAChB,IAAI,UAAU,CAAC,IAAI,CAAC,OAAmB,CAAC,EAAE;wBACxC,oBAAoB;wBACpB,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC;qBAClC;oBACD,iBAAiB;oBACjB,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;oBACnC,IAAI,IAAI,CAAC,WAAW,EAAE;wBACpB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;qBAC/C;iBACF;aACF;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE;gBACpB,MAAM,0BAA0B,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;uBAC3D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;uBAC1B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,0BAA0B,EAAE;wBAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;4BAC7B,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;yBACzD;qBACF;iBACF;qBAAM;oBACL,IAAI,0BAA0B,EAAE;wBAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAgB,CAAC,EAAE;4BACrC,oBAAoB;4BACpB,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC;yBAClC;wBACD,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;qBACjC;yBAAM;wBACL,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM;+BAC1B,IAAI,CAAC,WAAW,KAAK,kBAAkB;gCACvC,MAAA,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,0CAAE,UAAU,CAAC,kBAAkB,CAAC,CAAA,EAAE;4BAChE,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;gCAChC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;6BACjD;yBACF;6BAAM;4BACL,cAAc,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;yBACtD;qBACF;iBACF;aACF;YAED,KAAK,CAAC,iCAAiC,EAAE,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;YAC9F,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC;YAEjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YACzD,KAAK,MAAM,CAAE,IAAI,EAAE,KAAK,CAAE,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAC9C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;aAC3B;YACD,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC9C,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC;YACxC,IAAI,QAAQ,CAAC,UAAU,EAAE;gBACvB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACpC;YACD,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;gBACjC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;aACpD;YAED,IAAI,IAAI,GAAQ,IAAI,CAAC;YACrB,IAAI,kBAAsD,CAAC;YAC3D,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;gBAChD,MAAM,IAAI,GAAG;oBACX,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC;gBACF,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE;oBAC1C,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAK,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC5E;qBAAM;oBACL,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,EAAE,IAAI,CAAC,CAAC;iBAC1D;aACF;iBAAM,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC3B,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aAClD;iBAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;gBACnC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;aAC9B;iBAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;gBACnC,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM,EAAE;oBACpC,IAAI,GAAG,EAAE,CAAC;iBACX;qBAAM;oBACL,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;wBACrB,IAAI,GAAG,IAAI,CAAC;qBACb;yBAAM;wBACL,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;qBAC9C;iBACF;aACF;iBAAM;gBACL,SAAS;gBACT,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;aAClD;YACD,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;YAEpE,MAAM,cAAc,GAAuB;gBACzC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,IAAI;gBACJ,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,GAAG,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,GAAG;aAC/B,CAAC;YACF,OAAO,cAAc,CAAC;SACvB;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,wBAAwB,CAAC,MAAM,CAAC,OAAO,EAAE;gBAC3C,GAAG,GAAG,IAAI,6BAA6B,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aACvE;YACD,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;YACd,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACxB,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC1B,sBAAsB;YACtB,MAAM,GAAG,CAAC;SACX;gBAAS;YACR,YAAY,CAAC,cAAc,CAAC,CAAC;SAC9B;IACH,CAAC;CACF"}
|
package/src/esm/Request.d.ts
CHANGED
@@ -6,6 +6,8 @@ import { Readable, Writable } from 'stream';
|
|
6
6
|
import { LookupFunction } from 'net';
|
7
7
|
export declare type HttpMethod = 'GET' | 'POST' | 'DELETE' | 'PUT' | 'HEAD' | 'OPTIONS' | 'PATCH' | 'TRACE' | 'CONNECT';
|
8
8
|
export declare type RequestURL = string | URL;
|
9
|
+
export declare type FixJSONCtlCharsHandler = (data: string) => string;
|
10
|
+
export declare type FixJSONCtlChars = boolean | FixJSONCtlCharsHandler;
|
9
11
|
export declare type RequestOptions = {
|
10
12
|
/** Request method, defaults to GET. Could be GET, POST, DELETE or PUT. Alias 'type'. */
|
11
13
|
method?: HttpMethod | Lowercase<HttpMethod>;
|
@@ -15,7 +17,9 @@ export declare type RequestOptions = {
|
|
15
17
|
dataAsQueryString?: boolean;
|
16
18
|
/** Manually set the content of payload. If set, data will be ignored. */
|
17
19
|
content?: string | Buffer | Readable;
|
18
|
-
/** Stream to be pipe to the remote. If set, data and content will be ignored.
|
20
|
+
/** Stream to be pipe to the remote. If set, data and content will be ignored.
|
21
|
+
* Alias to `content` on Readable
|
22
|
+
*/
|
19
23
|
stream?: Readable;
|
20
24
|
/**
|
21
25
|
* A writable stream to be piped by the response stream.
|
@@ -47,7 +51,7 @@ export declare type RequestOptions = {
|
|
47
51
|
*/
|
48
52
|
streaming?: boolean;
|
49
53
|
/** Fix the control characters (U+0000 through U+001F) before JSON parse response. Default is false. */
|
50
|
-
fixJSONCtlChars?:
|
54
|
+
fixJSONCtlChars?: FixJSONCtlChars;
|
51
55
|
/** Request headers. */
|
52
56
|
headers?: Record<string, string>;
|
53
57
|
/**
|
package/src/esm/Response.d.ts
CHANGED
@@ -1,20 +1,35 @@
|
|
1
1
|
/// <reference types="node" />
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
/// <reference types="node" />
|
3
|
+
import { ReadableStream } from 'stream/web';
|
4
|
+
import { Readable } from 'stream';
|
5
|
+
export declare type HttpClientResponseMeta = {
|
5
6
|
status: number;
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
7
|
+
statusCode: number;
|
8
|
+
statusMessage: string;
|
9
|
+
headers: Record<string, string>;
|
10
|
+
size: number;
|
11
|
+
aborted: boolean;
|
12
|
+
rt: number;
|
13
|
+
keepAliveSocket: boolean;
|
14
|
+
requestUrls: string[];
|
15
|
+
/**
|
16
|
+
* https://eggjs.org/en/core/httpclient.html#timing-boolean
|
17
|
+
*/
|
18
|
+
timing: {
|
19
|
+
contentDownload: number;
|
19
20
|
};
|
20
|
-
}
|
21
|
+
};
|
22
|
+
export declare type ReadableStreamWithMeta = (Readable | ReadableStream) & {
|
23
|
+
status: number;
|
24
|
+
statusCode: number;
|
25
|
+
statusMessage: string;
|
26
|
+
headers: Record<string, string>;
|
27
|
+
};
|
28
|
+
export declare type HttpClientResponse = {
|
29
|
+
data: any;
|
30
|
+
status: number;
|
31
|
+
headers: Record<string, string>;
|
32
|
+
url: string;
|
33
|
+
redirected: boolean;
|
34
|
+
res: ReadableStreamWithMeta | HttpClientResponseMeta;
|
35
|
+
};
|
package/src/esm/index.d.ts
CHANGED
@@ -1,25 +1,5 @@
|
|
1
1
|
import { RequestOptions, RequestURL } from './Request';
|
2
|
-
export declare function request(url: RequestURL, options?: RequestOptions): Promise<
|
3
|
-
status: number;
|
4
|
-
data: any;
|
5
|
-
headers: Record<string, string>;
|
6
|
-
url: string;
|
7
|
-
redirected: boolean;
|
8
|
-
res: {
|
9
|
-
status: number;
|
10
|
-
statusCode: number;
|
11
|
-
statusMessage: string;
|
12
|
-
headers: Record<string, string>;
|
13
|
-
size: number;
|
14
|
-
aborted: boolean;
|
15
|
-
rt: number;
|
16
|
-
keepAliveSocket: boolean;
|
17
|
-
requestUrls: string[];
|
18
|
-
timing: {
|
19
|
-
contentDownload: number;
|
20
|
-
};
|
21
|
-
};
|
22
|
-
}>;
|
2
|
+
export declare function request(url: RequestURL, options?: RequestOptions): Promise<import("./Response").HttpClientResponse>;
|
23
3
|
export { HttpClient } from './HttpClient';
|
24
4
|
declare const _default: {
|
25
5
|
request: typeof request;
|
package/src/esm/utils.js
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
const JSONCtlCharsMap = {
|
2
|
+
'"': '\\"',
|
3
|
+
'\\': '\\\\',
|
4
|
+
'\b': '\\b',
|
5
|
+
'\f': '\\f',
|
6
|
+
'\n': '\\n',
|
7
|
+
'\r': '\\r',
|
8
|
+
'\t': '\\t', // \u0009
|
9
|
+
};
|
10
|
+
/* eslint no-control-regex: "off"*/
|
11
|
+
const JSONCtlCharsRE = /[\u0000-\u001F\u005C]/g;
|
12
|
+
function replaceOneChar(c) {
|
13
|
+
return JSONCtlCharsMap[c] || '\\u' + (c.charCodeAt(0) + 0x10000).toString(16).substring(1);
|
14
|
+
}
|
15
|
+
function replaceJSONCtlChars(value) {
|
16
|
+
return value.replace(JSONCtlCharsRE, replaceOneChar);
|
17
|
+
}
|
18
|
+
export function parseJSON(data, fixJSONCtlChars) {
|
19
|
+
if (typeof fixJSONCtlChars === 'function') {
|
20
|
+
data = fixJSONCtlChars(data);
|
21
|
+
}
|
22
|
+
else if (fixJSONCtlChars) {
|
23
|
+
// https://github.com/node-modules/urllib/pull/77
|
24
|
+
// remote the control characters (U+0000 through U+001F)
|
25
|
+
data = replaceJSONCtlChars(data);
|
26
|
+
}
|
27
|
+
try {
|
28
|
+
data = JSON.parse(data);
|
29
|
+
}
|
30
|
+
catch (err) {
|
31
|
+
if (err.name === 'SyntaxError') {
|
32
|
+
err.name = 'JSONResponseFormatError';
|
33
|
+
}
|
34
|
+
if (data.length > 1024) {
|
35
|
+
// show 0~512 ... -512~end data
|
36
|
+
err.message += ' (data json format: ' +
|
37
|
+
JSON.stringify(data.slice(0, 512)) + ' ...skip... ' + JSON.stringify(data.slice(data.length - 512)) + ')';
|
38
|
+
}
|
39
|
+
else {
|
40
|
+
err.message += ' (data json format: ' + JSON.stringify(data) + ')';
|
41
|
+
}
|
42
|
+
throw err;
|
43
|
+
}
|
44
|
+
return data;
|
45
|
+
}
|
46
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG;IACtB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK,EAAE,SAAS;CACvB,CAAC;AACF,mCAAmC;AACnC,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEhD,SAAS,cAAc,CAAC,CAAS;IAC/B,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,eAAiC;IACvE,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;QACzC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;KAC9B;SAAM,IAAI,eAAe,EAAE;QAC1B,iDAAiD;QACjD,wDAAwD;QACxD,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;KAClC;IACD,IAAI;QACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACzB;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE;YAC9B,GAAG,CAAC,IAAI,GAAG,yBAAyB,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE;YACtB,+BAA+B;YAC/B,GAAG,CAAC,OAAO,IAAI,sBAAsB;gBACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC7G;aAAM;YACL,GAAG,CAAC,OAAO,IAAI,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;SACpE;QACD,MAAM,GAAG,CAAC;KACX;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/src/utils.ts
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
import { FixJSONCtlChars } from './Request';
|
2
|
+
|
3
|
+
const JSONCtlCharsMap = {
|
4
|
+
'"': '\\"', // \u0022
|
5
|
+
'\\': '\\\\', // \u005c
|
6
|
+
'\b': '\\b', // \u0008
|
7
|
+
'\f': '\\f', // \u000c
|
8
|
+
'\n': '\\n', // \u000a
|
9
|
+
'\r': '\\r', // \u000d
|
10
|
+
'\t': '\\t', // \u0009
|
11
|
+
};
|
12
|
+
/* eslint no-control-regex: "off"*/
|
13
|
+
const JSONCtlCharsRE = /[\u0000-\u001F\u005C]/g;
|
14
|
+
|
15
|
+
function replaceOneChar(c: string) {
|
16
|
+
return JSONCtlCharsMap[c] || '\\u' + (c.charCodeAt(0) + 0x10000).toString(16).substring(1);
|
17
|
+
}
|
18
|
+
|
19
|
+
function replaceJSONCtlChars(value: string) {
|
20
|
+
return value.replace(JSONCtlCharsRE, replaceOneChar);
|
21
|
+
}
|
22
|
+
|
23
|
+
export function parseJSON(data: string, fixJSONCtlChars?: FixJSONCtlChars) {
|
24
|
+
if (typeof fixJSONCtlChars === 'function') {
|
25
|
+
data = fixJSONCtlChars(data);
|
26
|
+
} else if (fixJSONCtlChars) {
|
27
|
+
// https://github.com/node-modules/urllib/pull/77
|
28
|
+
// remote the control characters (U+0000 through U+001F)
|
29
|
+
data = replaceJSONCtlChars(data);
|
30
|
+
}
|
31
|
+
try {
|
32
|
+
data = JSON.parse(data);
|
33
|
+
} catch (err: any) {
|
34
|
+
if (err.name === 'SyntaxError') {
|
35
|
+
err.name = 'JSONResponseFormatError';
|
36
|
+
}
|
37
|
+
if (data.length > 1024) {
|
38
|
+
// show 0~512 ... -512~end data
|
39
|
+
err.message += ' (data json format: ' +
|
40
|
+
JSON.stringify(data.slice(0, 512)) + ' ...skip... ' + JSON.stringify(data.slice(data.length - 512)) + ')';
|
41
|
+
} else {
|
42
|
+
err.message += ' (data json format: ' + JSON.stringify(data) + ')';
|
43
|
+
}
|
44
|
+
throw err;
|
45
|
+
}
|
46
|
+
return data;
|
47
|
+
}
|