urllib 2.38.1 → 3.0.0

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.
Files changed (55) hide show
  1. package/README.md +75 -264
  2. package/package.json +62 -59
  3. package/src/HttpAgent.ts +72 -0
  4. package/src/HttpClient.ts +514 -0
  5. package/src/Request.ts +118 -0
  6. package/src/Response.ts +41 -0
  7. package/src/cjs/HttpAgent.d.ts +16 -0
  8. package/src/cjs/HttpAgent.js +62 -0
  9. package/src/cjs/HttpAgent.js.map +1 -0
  10. package/src/cjs/HttpClient.d.ts +39 -0
  11. package/src/cjs/HttpClient.js +466 -0
  12. package/src/cjs/HttpClient.js.map +1 -0
  13. package/src/cjs/Request.d.ts +114 -0
  14. package/src/cjs/Request.js +3 -0
  15. package/src/cjs/Request.js.map +1 -0
  16. package/src/cjs/Response.d.ts +36 -0
  17. package/src/cjs/Response.js +3 -0
  18. package/src/cjs/Response.js.map +1 -0
  19. package/src/cjs/index.d.ts +7 -0
  20. package/src/cjs/index.js +18 -0
  21. package/src/cjs/index.js.map +1 -0
  22. package/src/cjs/package.json +3 -0
  23. package/src/cjs/utils.d.ts +3 -0
  24. package/src/cjs/utils.js +56 -0
  25. package/src/cjs/utils.js.map +1 -0
  26. package/src/esm/HttpAgent.d.ts +16 -0
  27. package/src/esm/HttpAgent.js +58 -0
  28. package/src/esm/HttpAgent.js.map +1 -0
  29. package/src/esm/HttpClient.d.ts +39 -0
  30. package/src/esm/HttpClient.js +462 -0
  31. package/src/esm/HttpClient.js.map +1 -0
  32. package/src/esm/Request.d.ts +114 -0
  33. package/src/esm/Request.js +2 -0
  34. package/src/esm/Request.js.map +1 -0
  35. package/src/esm/Response.d.ts +36 -0
  36. package/src/esm/Response.js +2 -0
  37. package/src/esm/Response.js.map +1 -0
  38. package/src/esm/index.d.ts +7 -0
  39. package/src/esm/index.js +13 -0
  40. package/src/esm/index.js.map +1 -0
  41. package/src/esm/package.json +3 -0
  42. package/src/esm/utils.d.ts +3 -0
  43. package/src/esm/utils.js +51 -0
  44. package/src/esm/utils.js.map +1 -0
  45. package/src/index.ts +16 -0
  46. package/src/utils.ts +53 -0
  47. package/History.md +0 -804
  48. package/lib/detect_proxy_agent.js +0 -31
  49. package/lib/get_proxy_from_uri.js +0 -81
  50. package/lib/httpclient.js +0 -61
  51. package/lib/httpclient2.js +0 -83
  52. package/lib/index.d.ts +0 -279
  53. package/lib/index.js +0 -21
  54. package/lib/index.test-d.ts +0 -19
  55. package/lib/urllib.js +0 -1317
@@ -0,0 +1,13 @@
1
+ import { HttpClient } from './HttpClient.js';
2
+ let httpclient;
3
+ export async function request(url, options) {
4
+ if (!httpclient) {
5
+ httpclient = new HttpClient();
6
+ }
7
+ return await httpclient.request(url, options);
8
+ }
9
+ export { HttpClient } from './HttpClient.js';
10
+ export default {
11
+ request,
12
+ };
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,IAAI,UAAsB,CAAC;AAC3B,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,OAAwB;IACrE,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;KAC/B;IACD,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,eAAe;IACb,OAAO;CACR,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,3 @@
1
+ import { FixJSONCtlChars } from './Request';
2
+ export declare function parseJSON(data: string, fixJSONCtlChars?: FixJSONCtlChars): string;
3
+ export declare function sleep(ms: number): Promise<void>;
@@ -0,0 +1,51 @@
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
+ export function sleep(ms) {
47
+ return new Promise(resolve => {
48
+ setTimeout(resolve, ms);
49
+ });
50
+ }
51
+ //# 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;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QACjC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
package/src/index.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { HttpClient } from './HttpClient';
2
+ import { RequestOptions, RequestURL } from './Request';
3
+
4
+ let httpclient: HttpClient;
5
+ export async function request(url: RequestURL, options?: RequestOptions) {
6
+ if (!httpclient) {
7
+ httpclient = new HttpClient();
8
+ }
9
+ return await httpclient.request(url, options);
10
+ }
11
+
12
+ export { HttpClient } from './HttpClient';
13
+
14
+ export default {
15
+ request,
16
+ };
package/src/utils.ts ADDED
@@ -0,0 +1,53 @@
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
+ }
48
+
49
+ export function sleep(ms: number) {
50
+ return new Promise<void>(resolve => {
51
+ setTimeout(resolve, ms);
52
+ });
53
+ }