urllib 4.3.1 → 4.5.0-beta.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/README.md +0 -2
- package/dist/commonjs/FetchOpaqueInterceptor.d.ts +8 -0
- package/dist/commonjs/FetchOpaqueInterceptor.js +18 -0
- package/dist/commonjs/FormData.d.ts +4 -0
- package/dist/commonjs/FormData.js +38 -0
- package/dist/commonjs/HttpAgent.d.ts +3 -3
- package/dist/commonjs/HttpAgent.js +6 -5
- package/dist/commonjs/HttpClient.d.ts +31 -0
- package/dist/commonjs/HttpClient.js +62 -98
- package/dist/commonjs/Request.d.ts +5 -0
- package/dist/commonjs/diagnosticsChannel.js +11 -4
- package/dist/commonjs/fetch.d.ts +24 -0
- package/dist/commonjs/fetch.js +221 -0
- package/dist/commonjs/index.d.ts +2 -1
- package/dist/commonjs/index.js +7 -2
- package/dist/commonjs/utils.d.ts +4 -0
- package/dist/commonjs/utils.js +57 -1
- package/dist/esm/FetchOpaqueInterceptor.d.ts +8 -0
- package/dist/esm/FetchOpaqueInterceptor.js +12 -0
- package/dist/esm/FormData.d.ts +4 -0
- package/dist/esm/FormData.js +31 -0
- package/dist/esm/HttpAgent.d.ts +3 -3
- package/dist/esm/HttpAgent.js +6 -5
- package/dist/esm/HttpClient.d.ts +31 -0
- package/dist/esm/HttpClient.js +59 -95
- package/dist/esm/Request.d.ts +5 -0
- package/dist/esm/diagnosticsChannel.js +11 -4
- package/dist/esm/fetch.d.ts +24 -0
- package/dist/esm/fetch.js +214 -0
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +3 -2
- package/dist/esm/utils.d.ts +4 -0
- package/dist/esm/utils.js +52 -1
- package/dist/package.json +1 -1
- package/package.json +7 -5
- package/src/FetchOpaqueInterceptor.ts +41 -0
- package/src/FormData.ts +32 -0
- package/src/HttpAgent.ts +9 -7
- package/src/HttpClient.ts +92 -100
- package/src/Request.ts +6 -0
- package/src/diagnosticsChannel.ts +13 -3
- package/src/fetch.ts +263 -0
- package/src/index.ts +3 -0
- package/src/utils.ts +54 -0
package/README.md
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
2
|
+
import { Dispatcher } from 'undici';
|
3
|
+
export interface FetchOpaque {
|
4
|
+
}
|
5
|
+
export interface OpaqueInterceptorOptions {
|
6
|
+
opaqueLocalStorage: AsyncLocalStorage<FetchOpaque>;
|
7
|
+
}
|
8
|
+
export declare function fetchOpaqueInterceptor(opts: OpaqueInterceptorOptions): (dispatch: Dispatcher["dispatch"]) => Dispatcher["dispatch"];
|
@@ -0,0 +1,18 @@
|
|
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.fetchOpaqueInterceptor = fetchOpaqueInterceptor;
|
7
|
+
const symbols_js_1 = __importDefault(require("./symbols.js"));
|
8
|
+
function fetchOpaqueInterceptor(opts) {
|
9
|
+
const opaqueLocalStorage = opts?.opaqueLocalStorage;
|
10
|
+
return (dispatch) => {
|
11
|
+
return function redirectInterceptor(opts, handler) {
|
12
|
+
const opaque = opaqueLocalStorage?.getStore();
|
13
|
+
handler.opaque = opaque;
|
14
|
+
return dispatch(opts, handler);
|
15
|
+
};
|
16
|
+
};
|
17
|
+
}
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmV0Y2hPcGFxdWVJbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9GZXRjaE9wYXF1ZUludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBK0JBLHdEQVNDO0FBdENELDhEQUFtQztBQTZCbkMsU0FBZ0Isc0JBQXNCLENBQUMsSUFBOEI7SUFDbkUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEVBQUUsa0JBQWtCLENBQUM7SUFDcEQsT0FBTyxDQUFDLFFBQWdDLEVBQTBCLEVBQUU7UUFDbEUsT0FBTyxTQUFTLG1CQUFtQixDQUFDLElBQWdDLEVBQUUsT0FBbUM7WUFDdkcsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDN0MsT0FBZSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDakMsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
@@ -0,0 +1,38 @@
|
|
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.FormData = void 0;
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
8
|
+
const form_data_1 = __importDefault(require("form-data"));
|
9
|
+
class FormData extends form_data_1.default {
|
10
|
+
_getContentDisposition(value, options) {
|
11
|
+
// support non-ascii filename
|
12
|
+
// https://github.com/form-data/form-data/pull/571
|
13
|
+
let filename;
|
14
|
+
let contentDisposition;
|
15
|
+
if (typeof options.filepath === 'string') {
|
16
|
+
// custom filepath for relative paths
|
17
|
+
filename = node_path_1.default.normalize(options.filepath).replace(/\\/g, '/');
|
18
|
+
}
|
19
|
+
else if (options.filename || value.name || value.path) {
|
20
|
+
// custom filename take precedence
|
21
|
+
// formidable and the browser add a name property
|
22
|
+
// fs- and request- streams have path property
|
23
|
+
filename = node_path_1.default.basename(options.filename || value.name || value.path);
|
24
|
+
}
|
25
|
+
else if (value.readable && value.hasOwnProperty('httpVersion')) {
|
26
|
+
// or try http response
|
27
|
+
filename = node_path_1.default.basename(value.client._httpMessage.path || '');
|
28
|
+
}
|
29
|
+
if (filename) {
|
30
|
+
// https://datatracker.ietf.org/doc/html/rfc6266#section-4.1
|
31
|
+
// support non-ascii filename
|
32
|
+
contentDisposition = 'filename="' + filename + '"; filename*=UTF-8\'\'' + encodeURIComponent(filename);
|
33
|
+
}
|
34
|
+
return contentDisposition;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
exports.FormData = FormData;
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybURhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRm9ybURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMERBQTZCO0FBQzdCLDBEQUFrQztBQUVsQyxNQUFhLFFBQVMsU0FBUSxtQkFBUztJQUNyQyxzQkFBc0IsQ0FBQyxLQUFVLEVBQUUsT0FBWTtRQUM3Qyw2QkFBNkI7UUFDN0Isa0RBQWtEO1FBQ2xELElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxrQkFBa0IsQ0FBQztRQUV2QixJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN6QyxxQ0FBcUM7WUFDckMsUUFBUSxHQUFHLG1CQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEQsa0NBQWtDO1lBQ2xDLGlEQUFpRDtZQUNqRCw4Q0FBOEM7WUFDOUMsUUFBUSxHQUFHLG1CQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDakUsdUJBQXVCO1lBQ3ZCLFFBQVEsR0FBRyxtQkFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYiw0REFBNEQ7WUFDNUQsNkJBQTZCO1lBQzdCLGtCQUFrQixHQUFHLFlBQVksR0FBRyxRQUFRLEdBQUcsd0JBQXdCLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekcsQ0FBQztRQUVELE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBNUJELDRCQTRCQyJ9
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import { LookupFunction } from 'node:net';
|
2
2
|
import { Agent, Dispatcher, buildConnector } from 'undici';
|
3
3
|
export type CheckAddressFunction = (ip: string, family: number | string, hostname: string) => boolean;
|
4
|
-
export
|
4
|
+
export interface HttpAgentOptions extends Agent.Options {
|
5
5
|
lookup?: LookupFunction;
|
6
6
|
checkAddress?: CheckAddressFunction;
|
7
7
|
connect?: buildConnector.BuildOptions;
|
8
8
|
allowH2?: boolean;
|
9
|
-
}
|
9
|
+
}
|
10
10
|
export declare class HttpAgent extends Agent {
|
11
11
|
#private;
|
12
12
|
constructor(options: HttpAgentOptions);
|
13
|
-
dispatch(options: Agent.DispatchOptions, handler: Dispatcher.
|
13
|
+
dispatch(options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandler): boolean;
|
14
14
|
}
|
@@ -25,9 +25,9 @@ class HttpAgent extends undici_1.Agent {
|
|
25
25
|
#checkAddress;
|
26
26
|
constructor(options) {
|
27
27
|
/* eslint node/prefer-promises/dns: off*/
|
28
|
-
const
|
29
|
-
const
|
30
|
-
|
28
|
+
const { lookup = node_dns_1.default.lookup, ...baseOpts } = options;
|
29
|
+
const lookupFunction = (hostname, dnsOptions, callback) => {
|
30
|
+
lookup(hostname, dnsOptions, (err, ...args) => {
|
31
31
|
// address will be array on Node.js >= 20
|
32
32
|
const address = args[0];
|
33
33
|
const family = args[1];
|
@@ -54,7 +54,8 @@ class HttpAgent extends undici_1.Agent {
|
|
54
54
|
});
|
55
55
|
};
|
56
56
|
super({
|
57
|
-
|
57
|
+
...baseOpts,
|
58
|
+
connect: { ...options.connect, lookup: lookupFunction, allowH2: options.allowH2 },
|
58
59
|
});
|
59
60
|
this.#checkAddress = options.checkAddress;
|
60
61
|
}
|
@@ -78,4 +79,4 @@ class HttpAgent extends undici_1.Agent {
|
|
78
79
|
}
|
79
80
|
}
|
80
81
|
exports.HttpAgent = HttpAgent;
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0h0dHBBZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3REFBMkI7QUFDM0IsdUNBQWdEO0FBQ2hELG1DQUlnQjtBQVdoQixNQUFNLG1CQUFvQixTQUFRLEtBQUs7SUFDckMsUUFBUSxDQUFTO0lBQ2pCLEVBQUUsQ0FBUztJQUNYLE1BQU0sQ0FBUztJQUVmLFlBQVksUUFBZ0IsRUFBRSxFQUFVLEVBQUUsTUFBYztRQUN0RCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQztRQUNsQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBRUQsTUFBYSxTQUFVLFNBQVEsY0FBSztJQUNsQyxhQUFhLENBQXdCO0lBRXJDLFlBQVksT0FBeUI7UUFDbkMseUNBQXlDO1FBQ3pDLE1BQU0sRUFBRSxNQUFNLEdBQUcsa0JBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFckQsTUFBTSxjQUFjLEdBQW1CLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUN4RSxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFO2dCQUNuRCx5Q0FBeUM7Z0JBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxD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
|
@@ -1,9 +1,32 @@
|
|
1
|
+
import diagnosticsChannel from 'node:diagnostics_channel';
|
1
2
|
import { EventEmitter } from 'node:events';
|
2
3
|
import { LookupFunction } from 'node:net';
|
3
4
|
import { Dispatcher } from 'undici';
|
4
5
|
import { CheckAddressFunction } from './HttpAgent.js';
|
5
6
|
import { RequestURL, RequestOptions, RequestMeta } from './Request.js';
|
6
7
|
import { RawResponseWithMeta, HttpClientResponse } from './Response.js';
|
8
|
+
export declare const PROTO_RE: RegExp;
|
9
|
+
export interface UndiciTimingInfo {
|
10
|
+
startTime: number;
|
11
|
+
redirectStartTime: number;
|
12
|
+
redirectEndTime: number;
|
13
|
+
postRedirectStartTime: number;
|
14
|
+
finalServiceWorkerStartTime: number;
|
15
|
+
finalNetworkResponseStartTime: number;
|
16
|
+
finalNetworkRequestStartTime: number;
|
17
|
+
endTime: number;
|
18
|
+
encodedBodySize: number;
|
19
|
+
decodedBodySize: number;
|
20
|
+
finalConnectionTimingInfo: {
|
21
|
+
domainLookupStartTime: number;
|
22
|
+
domainLookupEndTime: number;
|
23
|
+
connectionStartTime: number;
|
24
|
+
connectionEndTime: number;
|
25
|
+
secureConnectionStartTime: number;
|
26
|
+
};
|
27
|
+
}
|
28
|
+
export interface UnidiciTimingInfo extends UndiciTimingInfo {
|
29
|
+
}
|
7
30
|
export type ClientOptions = {
|
8
31
|
defaultArgs?: RequestOptions;
|
9
32
|
/** Allow to use HTTP2 first. Default is `false` */
|
@@ -46,6 +69,14 @@ export type RequestContext = {
|
|
46
69
|
retries: number;
|
47
70
|
socketErrorRetries: number;
|
48
71
|
requestStartTime?: number;
|
72
|
+
redirects: number;
|
73
|
+
history: string[];
|
74
|
+
};
|
75
|
+
export declare const channels: {
|
76
|
+
request: diagnosticsChannel.Channel<unknown, unknown>;
|
77
|
+
response: diagnosticsChannel.Channel<unknown, unknown>;
|
78
|
+
fetchRequest: diagnosticsChannel.Channel<unknown, unknown>;
|
79
|
+
fetchResponse: diagnosticsChannel.Channel<unknown, unknown>;
|
49
80
|
};
|
50
81
|
export type RequestDiagnosticsMessage = {
|
51
82
|
request: RequestMeta;
|