happy-dom 2.50.0 → 2.51.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.

Potentially problematic release.


This version of happy-dom might be problematic. Click here for more details.

Files changed (104) hide show
  1. package/lib/async-task-manager/AsyncTaskManager.d.ts +65 -0
  2. package/lib/{window → async-task-manager}/AsyncTaskManager.js +52 -55
  3. package/lib/async-task-manager/AsyncTaskManager.js.map +1 -0
  4. package/lib/fetch/FetchHandler.d.ts +17 -0
  5. package/lib/fetch/FetchHandler.js +59 -0
  6. package/lib/fetch/FetchHandler.js.map +1 -0
  7. package/lib/fetch/Headers.d.ts +7 -0
  8. package/lib/fetch/Headers.js +53 -0
  9. package/lib/fetch/Headers.js.map +1 -0
  10. package/lib/fetch/IAbortSignal.d.ts +16 -0
  11. package/lib/fetch/IAbortSignal.js +4 -0
  12. package/lib/fetch/IAbortSignal.js.map +1 -0
  13. package/lib/fetch/IBody.d.ts +17 -0
  14. package/lib/{window/IFetchOptions.js → fetch/IBody.js} +1 -1
  15. package/lib/fetch/IBody.js.map +1 -0
  16. package/lib/fetch/IHeaders.d.ts +18 -0
  17. package/lib/fetch/IHeaders.js +3 -0
  18. package/lib/fetch/IHeaders.js.map +1 -0
  19. package/lib/fetch/IHeadersInit.d.ts +5 -0
  20. package/lib/fetch/IHeadersInit.js +3 -0
  21. package/lib/fetch/IHeadersInit.js.map +1 -0
  22. package/lib/fetch/IRequest.d.ts +18 -0
  23. package/lib/fetch/IRequest.js +3 -0
  24. package/lib/fetch/IRequest.js.map +1 -0
  25. package/lib/fetch/IRequestInit.d.ts +15 -0
  26. package/lib/fetch/IRequestInit.js +3 -0
  27. package/lib/fetch/IRequestInit.js.map +1 -0
  28. package/lib/fetch/IResponse.d.ts +20 -0
  29. package/lib/{window → fetch}/IResponse.js +0 -0
  30. package/lib/{window → fetch}/IResponse.js.map +1 -1
  31. package/lib/fetch/IResponseInit.d.ts +9 -0
  32. package/lib/fetch/IResponseInit.js +3 -0
  33. package/lib/fetch/IResponseInit.js.map +1 -0
  34. package/lib/fetch/Request.d.ts +69 -0
  35. package/lib/fetch/Request.js +179 -0
  36. package/lib/fetch/Request.js.map +1 -0
  37. package/lib/fetch/ResourceFetchHandler.d.ts +22 -0
  38. package/lib/fetch/{ResourceFetcher.js → ResourceFetchHandler.js} +19 -26
  39. package/lib/fetch/ResourceFetchHandler.js.map +1 -0
  40. package/lib/fetch/Response.d.ts +69 -0
  41. package/lib/fetch/Response.js +179 -0
  42. package/lib/fetch/Response.js.map +1 -0
  43. package/lib/file/Blob.d.ts +8 -1
  44. package/lib/file/Blob.js +48 -0
  45. package/lib/file/Blob.js.map +1 -1
  46. package/lib/file/IBlob.d.ts +10 -0
  47. package/lib/file/IBlob.js +3 -0
  48. package/lib/file/IBlob.js.map +1 -0
  49. package/lib/form-data/IFormData.d.ts +30 -0
  50. package/lib/form-data/IFormData.js +3 -0
  51. package/lib/form-data/IFormData.js.map +1 -0
  52. package/lib/index.d.ts +3 -5
  53. package/lib/index.js +3 -3
  54. package/lib/index.js.map +1 -1
  55. package/lib/nodes/html-link-element/HTMLLinkElement.js +3 -3
  56. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  57. package/lib/nodes/html-script-element/ScriptUtility.js +3 -9
  58. package/lib/nodes/html-script-element/ScriptUtility.js.map +1 -1
  59. package/lib/window/IWindow.d.ts +20 -16
  60. package/lib/window/Window.d.ts +45 -10
  61. package/lib/window/Window.js +72 -66
  62. package/lib/window/Window.js.map +1 -1
  63. package/package.json +3 -2
  64. package/src/async-task-manager/AsyncTaskManager.ts +128 -0
  65. package/src/fetch/FetchHandler.ts +54 -0
  66. package/src/fetch/Headers.ts +7 -0
  67. package/src/fetch/IAbortSignal.ts +34 -0
  68. package/src/fetch/IBody.ts +18 -0
  69. package/src/fetch/IHeaders.ts +18 -0
  70. package/src/fetch/IHeadersInit.ts +5 -0
  71. package/src/fetch/IRequest.ts +59 -0
  72. package/src/fetch/IRequestInit.ts +41 -0
  73. package/src/fetch/IResponse.ts +22 -0
  74. package/src/fetch/IResponseInit.ts +10 -0
  75. package/src/fetch/Request.ts +149 -0
  76. package/src/fetch/ResourceFetchHandler.ts +47 -0
  77. package/src/fetch/Response.ts +149 -0
  78. package/src/file/Blob.ts +12 -1
  79. package/src/file/IBlob.ts +10 -0
  80. package/src/form-data/IFormData.ts +33 -0
  81. package/src/index.ts +2 -6
  82. package/src/nodes/html-link-element/HTMLLinkElement.ts +3 -3
  83. package/src/nodes/html-script-element/ScriptUtility.ts +3 -9
  84. package/src/window/IWindow.ts +14 -16
  85. package/src/window/Window.ts +68 -67
  86. package/lib/fetch/ResourceFetcher.d.ts +0 -30
  87. package/lib/fetch/ResourceFetcher.js.map +0 -1
  88. package/lib/url-search-params/URLSearchParams.d.ts +0 -87
  89. package/lib/url-search-params/URLSearchParams.js +0 -196
  90. package/lib/url-search-params/URLSearchParams.js.map +0 -1
  91. package/lib/window/AsyncTaskManager.d.ts +0 -54
  92. package/lib/window/AsyncTaskManager.js.map +0 -1
  93. package/lib/window/AsyncTaskTypeEnum.d.ts +0 -5
  94. package/lib/window/AsyncTaskTypeEnum.js +0 -9
  95. package/lib/window/AsyncTaskTypeEnum.js.map +0 -1
  96. package/lib/window/IFetchOptions.d.ts +0 -13
  97. package/lib/window/IFetchOptions.js.map +0 -1
  98. package/lib/window/IResponse.d.ts +0 -32
  99. package/src/fetch/ResourceFetcher.ts +0 -55
  100. package/src/url-search-params/URLSearchParams.ts +0 -198
  101. package/src/window/AsyncTaskManager.ts +0 -127
  102. package/src/window/AsyncTaskTypeEnum.ts +0 -5
  103. package/src/window/IFetchOptions.ts +0 -11
  104. package/src/window/IResponse.ts +0 -34
@@ -0,0 +1,65 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * Handles async tasks.
4
+ */
5
+ export default class AsyncTaskManager {
6
+ private static taskID;
7
+ private runningTasks;
8
+ private runningTimers;
9
+ private queue;
10
+ /**
11
+ * Returns a promise that is fulfilled when async tasks are complete.
12
+ * This method is not part of the HTML standard.
13
+ *
14
+ * @returns Promise.
15
+ */
16
+ whenComplete(): Promise<void>;
17
+ /**
18
+ * Cancels all tasks.
19
+ *
20
+ * @param [error] Error.
21
+ */
22
+ cancelAll(error?: Error): void;
23
+ /**
24
+ * Starts a timer.
25
+ *
26
+ * @param timerID Timer ID.
27
+ */
28
+ startTimer(timerID: NodeJS.Timeout): void;
29
+ /**
30
+ * Ends a timer.
31
+ *
32
+ * @param timerID Timer ID.
33
+ */
34
+ endTimer(timerID: NodeJS.Timeout): void;
35
+ /**
36
+ * Starts an async task.
37
+ *
38
+ * @returns Task ID.
39
+ */
40
+ startTask(): number;
41
+ /**
42
+ * Ends an async task.
43
+ *
44
+ * @param taskID Task ID.
45
+ */
46
+ endTask(taskID: number): void;
47
+ /**
48
+ * Returns the amount of running tasks.
49
+ *
50
+ * @returns Count.
51
+ */
52
+ getTaskCount(): number;
53
+ /**
54
+ * Returns the amount of running timers.
55
+ *
56
+ * @returns Count.
57
+ */
58
+ getTimerCount(): number;
59
+ /**
60
+ * Returns a new task ID.
61
+ *
62
+ * @returns Task ID.
63
+ */
64
+ private newTaskID;
65
+ }
@@ -35,17 +35,14 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
38
  Object.defineProperty(exports, "__esModule", { value: true });
42
- var AsyncTaskTypeEnum_1 = __importDefault(require("./AsyncTaskTypeEnum"));
43
39
  /**
44
40
  * Handles async tasks.
45
41
  */
46
42
  var AsyncTaskManager = /** @class */ (function () {
47
43
  function AsyncTaskManager() {
48
- this.tasks = {};
44
+ this.runningTasks = [];
45
+ this.runningTimers = [];
49
46
  this.queue = [];
50
47
  }
51
48
  /**
@@ -73,15 +70,14 @@ var AsyncTaskManager = /** @class */ (function () {
73
70
  *
74
71
  * @param [error] Error.
75
72
  */
76
- AsyncTaskManager.prototype.cancelAllTasks = function (error) {
77
- if (this.tasks[AsyncTaskTypeEnum_1.default.timer]) {
78
- for (var _i = 0, _a = this.tasks[AsyncTaskTypeEnum_1.default.timer]; _i < _a.length; _i++) {
79
- var id = _a[_i];
80
- global.clearTimeout(id);
81
- }
73
+ AsyncTaskManager.prototype.cancelAll = function (error) {
74
+ for (var _i = 0, _a = this.runningTimers; _i < _a.length; _i++) {
75
+ var timerID = _a[_i];
76
+ global.clearTimeout(timerID);
82
77
  }
83
78
  var promises = this.queue;
84
- this.tasks = {};
79
+ this.runningTasks = [];
80
+ this.runningTimers = [];
85
81
  this.queue = [];
86
82
  for (var _b = 0, promises_1 = promises; _b < promises_1.length; _b++) {
87
83
  var promise = promises_1[_b];
@@ -96,74 +92,75 @@ var AsyncTaskManager = /** @class */ (function () {
96
92
  /**
97
93
  * Starts a timer.
98
94
  *
99
- * @param id Timer ID.
95
+ * @param timerID Timer ID.
100
96
  */
101
- AsyncTaskManager.prototype.startTimer = function (id) {
102
- if (id === void 0) { id = null; }
103
- this.tasks[AsyncTaskTypeEnum_1.default.timer] = this.tasks[AsyncTaskTypeEnum_1.default.timer] || [];
104
- this.tasks[AsyncTaskTypeEnum_1.default.timer].push(id);
97
+ AsyncTaskManager.prototype.startTimer = function (timerID) {
98
+ this.runningTimers.push(timerID);
105
99
  };
106
100
  /**
107
101
  * Ends a timer.
108
102
  *
109
- * @param id Timer ID.
103
+ * @param timerID Timer ID.
110
104
  */
111
- AsyncTaskManager.prototype.endTimer = function (id) {
112
- if (id === void 0) { id = null; }
113
- if (this.tasks[AsyncTaskTypeEnum_1.default.timer]) {
114
- var index = this.tasks[AsyncTaskTypeEnum_1.default.timer].indexOf(id);
115
- if (index !== -1) {
116
- this.tasks[AsyncTaskTypeEnum_1.default.timer].splice(index, 1);
117
- if (this.tasks[AsyncTaskTypeEnum_1.default.timer].length === 0) {
118
- delete this.tasks[AsyncTaskTypeEnum_1.default.timer];
119
- if (Object.keys(this.tasks).length === 0) {
120
- this.cancelAllTasks();
121
- }
122
- }
123
- }
105
+ AsyncTaskManager.prototype.endTimer = function (timerID) {
106
+ var index = this.runningTimers.indexOf(timerID);
107
+ if (index !== -1) {
108
+ this.runningTimers.splice(index, 1);
109
+ }
110
+ if (!this.runningTasks.length && !this.runningTimers.length) {
111
+ this.cancelAll();
124
112
  }
125
113
  };
126
114
  /**
127
115
  * Starts an async task.
128
116
  *
129
- * @param type Task type.
117
+ * @returns Task ID.
130
118
  */
131
- AsyncTaskManager.prototype.startTask = function (type) {
132
- this.tasks[type] = this.tasks[type] || [];
133
- this.tasks[type].push(type);
119
+ AsyncTaskManager.prototype.startTask = function () {
120
+ var taskID = this.newTaskID();
121
+ this.runningTasks.push(taskID);
122
+ return taskID;
134
123
  };
135
124
  /**
136
125
  * Ends an async task.
137
126
  *
138
- * @param type Task type.
139
- * @param [error] Error.
127
+ * @param taskID Task ID.
140
128
  */
141
- AsyncTaskManager.prototype.endTask = function (type, error) {
142
- if (error) {
143
- this.cancelAllTasks(error);
129
+ AsyncTaskManager.prototype.endTask = function (taskID) {
130
+ var index = this.runningTasks.indexOf(taskID);
131
+ if (index !== -1) {
132
+ this.runningTasks.splice(index, 1);
144
133
  }
145
- else if (this.tasks[type]) {
146
- this.tasks[type].pop();
147
- if (this.tasks[type].length === 0) {
148
- delete this.tasks[type];
149
- if (Object.keys(this.tasks).length === 0) {
150
- this.cancelAllTasks();
151
- }
152
- }
134
+ if (!this.runningTasks.length && !this.runningTimers.length) {
135
+ this.cancelAll();
153
136
  }
154
137
  };
155
138
  /**
156
- * Returns the amount of running tasks by type.
139
+ * Returns the amount of running tasks.
157
140
  *
158
- * @param type Task type.
159
141
  * @returns Count.
160
142
  */
161
- AsyncTaskManager.prototype.getRunningCount = function (type) {
162
- if (this.tasks[type]) {
163
- return this.tasks[type].length;
164
- }
165
- return 0;
143
+ AsyncTaskManager.prototype.getTaskCount = function () {
144
+ return this.runningTasks.length;
145
+ };
146
+ /**
147
+ * Returns the amount of running timers.
148
+ *
149
+ * @returns Count.
150
+ */
151
+ AsyncTaskManager.prototype.getTimerCount = function () {
152
+ return this.runningTimers.length;
153
+ };
154
+ /**
155
+ * Returns a new task ID.
156
+ *
157
+ * @returns Task ID.
158
+ */
159
+ AsyncTaskManager.prototype.newTaskID = function () {
160
+ this.constructor.taskID++;
161
+ return this.constructor.taskID;
166
162
  };
163
+ AsyncTaskManager.taskID = 0;
167
164
  return AsyncTaskManager;
168
165
  }());
169
166
  exports.default = AsyncTaskManager;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncTaskManager.js","sourceRoot":"","sources":["../../src/async-task-manager/AsyncTaskManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import IRequestInit from './IRequestInit';
2
+ import IDocument from '../nodes/document/IDocument';
3
+ import IResponse from './IResponse';
4
+ /**
5
+ * Helper class for performing fetch.
6
+ */
7
+ export default class FetchHandler {
8
+ /**
9
+ * Returns resource data asynchonously.
10
+ *
11
+ * @param document Document.
12
+ * @param url URL to resource.
13
+ * @param [init] Init.
14
+ * @returns Response.
15
+ */
16
+ static fetch(document: IDocument, url: string, init?: IRequestInit): Promise<IResponse>;
17
+ }
@@ -0,0 +1,59 @@
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
+ var RelativeURL_1 = __importDefault(require("../location/RelativeURL"));
7
+ /**
8
+ * Helper class for performing fetch.
9
+ */
10
+ var FetchHandler = /** @class */ (function () {
11
+ function FetchHandler() {
12
+ }
13
+ /**
14
+ * Returns resource data asynchonously.
15
+ *
16
+ * @param document Document.
17
+ * @param url URL to resource.
18
+ * @param [init] Init.
19
+ * @returns Response.
20
+ */
21
+ FetchHandler.fetch = function (document, url, init) {
22
+ // We want to only load NodeFetch when it is needed to improve performance and not have direct dependencies to server side packages.
23
+ var nodeFetch = require('node-fetch');
24
+ var Response = require('./Response').default;
25
+ var taskManager = document.defaultView.happyDOM.asyncTaskManager;
26
+ return new Promise(function (resolve, reject) {
27
+ var taskID = taskManager.startTask();
28
+ nodeFetch(RelativeURL_1.default.getAbsoluteURL(document.defaultView.location, url), init)
29
+ .then(function (response) {
30
+ if (taskManager.getTaskCount() === 0) {
31
+ reject(new Error('Failed to complete fetch request. Task was canceled.'));
32
+ }
33
+ else {
34
+ response.constructor['_ownerDocument'] = document;
35
+ for (var _i = 0, _a = Object.keys(Response.prototype); _i < _a.length; _i++) {
36
+ var key = _a[_i];
37
+ if (Response.prototype.hasOwnProperty(key) && key !== 'constructor') {
38
+ if (typeof Response.prototype[key] === 'function') {
39
+ response[key] = Response.prototype[key].bind(response);
40
+ }
41
+ else {
42
+ response[key] = Response.prototype[key];
43
+ }
44
+ }
45
+ }
46
+ taskManager.endTask(taskID);
47
+ resolve(response);
48
+ }
49
+ })
50
+ .catch(function (error) {
51
+ reject(error);
52
+ taskManager.cancelAll(error);
53
+ });
54
+ });
55
+ };
56
+ return FetchHandler;
57
+ }());
58
+ exports.default = FetchHandler;
59
+ //# sourceMappingURL=FetchHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FetchHandler.js","sourceRoot":"","sources":["../../src/fetch/FetchHandler.ts"],"names":[],"mappings":";;;;;AAAA,wEAAkD;AAKlD;;GAEG;AACH;IAAA;IA6CA,CAAC;IA5CA;;;;;;;OAOG;IACW,kBAAK,GAAnB,UAAoB,QAAmB,EAAE,GAAW,EAAE,IAAmB;QACxE,oIAAoI;QACpI,IAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACxC,IAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;QAC/C,IAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAEnE,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAClC,IAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;YAEvC,SAAS,CAAC,qBAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;iBAC7E,IAAI,CAAC,UAAC,QAAQ;gBACd,IAAI,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;oBACrC,MAAM,CAAC,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC;iBAC1E;qBAAM;oBACN,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;oBAElD,KAAkB,UAA+B,EAA/B,KAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAA/B,cAA+B,EAA/B,IAA+B,EAAE;wBAA9C,IAAM,GAAG,SAAA;wBACb,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,aAAa,EAAE;4BACpE,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE;gCAClD,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;6BACvD;iCAAM;gCACN,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;6BACxC;yBACD;qBACD;oBAED,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC;iBAClB;YACF,CAAC,CAAC;iBACD,KAAK,CAAC,UAAC,KAAK;gBACZ,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,mBAAC;AAAD,CAAC,AA7CD,IA6CC"}
@@ -0,0 +1,7 @@
1
+ import * as NodeFetch from 'node-fetch';
2
+ import IHeaders from './IHeaders';
3
+ /**
4
+ * Fetch headers.
5
+ */
6
+ export default class Headers extends NodeFetch.Headers implements IHeaders {
7
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ var NodeFetch = __importStar(require("node-fetch"));
42
+ /**
43
+ * Fetch headers.
44
+ */
45
+ var Headers = /** @class */ (function (_super) {
46
+ __extends(Headers, _super);
47
+ function Headers() {
48
+ return _super !== null && _super.apply(this, arguments) || this;
49
+ }
50
+ return Headers;
51
+ }(NodeFetch.Headers));
52
+ exports.default = Headers;
53
+ //# sourceMappingURL=Headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../src/fetch/Headers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAwC;AAGxC;;GAEG;AACH;IAAqC,2BAAiB;IAAtD;;IAA4E,CAAC;IAAD,cAAC;AAAD,CAAC,AAA7E,CAAqC,SAAS,CAAC,OAAO,GAAuB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Abort signal.
3
+ */
4
+ export default interface IAbortSignal {
5
+ aborted: boolean;
6
+ addEventListener: (type: 'abort', listener: (this: IAbortSignal, event: any) => any, options?: boolean | {
7
+ capture?: boolean | undefined;
8
+ once?: boolean | undefined;
9
+ passive?: boolean | undefined;
10
+ }) => void;
11
+ removeEventListener: (type: 'abort', listener: (this: IAbortSignal, event: any) => any, options?: boolean | {
12
+ capture?: boolean | undefined;
13
+ }) => void;
14
+ dispatchEvent: (event: any) => boolean;
15
+ onabort: null | ((this: IAbortSignal, event: any) => void);
16
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=IAbortSignal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IAbortSignal.js","sourceRoot":"","sources":["../../src/fetch/IAbortSignal.ts"],"names":[],"mappings":";AAAA,uDAAuD"}
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ import IBlob from '../file/IBlob';
3
+ /**
4
+ * Fetch response.
5
+ */
6
+ export default interface IBody {
7
+ readonly body: NodeJS.ReadableStream;
8
+ readonly bodyUsed: boolean;
9
+ readonly size: number;
10
+ readonly timeout: number;
11
+ arrayBuffer(): Promise<ArrayBuffer>;
12
+ blob(): Promise<IBlob>;
13
+ buffer(): Promise<Buffer>;
14
+ json(): Promise<unknown>;
15
+ text(): Promise<string>;
16
+ textConverted(): Promise<string>;
17
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IFetchOptions.js.map
3
+ //# sourceMappingURL=IBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IBody.js","sourceRoot":"","sources":["../../src/fetch/IBody.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Fetch headers.
3
+ */
4
+ export default interface IHeaders extends Iterable<[string, string]> {
5
+ forEach(callback: (value: string, name: string) => void): void;
6
+ append(name: string, value: string): void;
7
+ delete(name: string): void;
8
+ get(name: string): string | null;
9
+ has(name: string): boolean;
10
+ raw(): {
11
+ [k: string]: string[];
12
+ };
13
+ set(name: string, value: string): void;
14
+ entries(): IterableIterator<[string, string]>;
15
+ keys(): IterableIterator<string>;
16
+ values(): IterableIterator<string>;
17
+ [Symbol.iterator](): Iterator<[string, string]>;
18
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IHeaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IHeaders.js","sourceRoot":"","sources":["../../src/fetch/IHeaders.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import IHeaders from './IHeaders';
2
+ declare type IHeadersInit = string[][] | {
3
+ [key: string]: string;
4
+ } | IHeaders;
5
+ export default IHeadersInit;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IHeadersInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IHeadersInit.js","sourceRoot":"","sources":["../../src/fetch/IHeadersInit.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import IHeaders from './IHeaders';
2
+ import IBody from './IBody';
3
+ /**
4
+ * Fetch request.
5
+ */
6
+ export default interface IRequest extends IBody {
7
+ readonly headers: IHeaders;
8
+ readonly method: string;
9
+ readonly redirect: 'error' | 'follow' | 'manual';
10
+ readonly referrer: string;
11
+ readonly url: string;
12
+ /**
13
+ * Returns a clone.
14
+ *
15
+ * @returns Clone.
16
+ */
17
+ clone(): IRequest;
18
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IRequest.js","sourceRoot":"","sources":["../../src/fetch/IRequest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" />
2
+ import IHeadersInit from './IHeadersInit';
3
+ import IAbortSignal from './IAbortSignal';
4
+ import { URLSearchParams } from 'url';
5
+ import IFormData from '../form-data/IFormData';
6
+ /**
7
+ * Fetch request init.
8
+ */
9
+ export default interface IRequestInit {
10
+ body?: ArrayBuffer | ArrayBufferView | NodeJS.ReadableStream | string | URLSearchParams | IFormData | null;
11
+ headers?: IHeadersInit;
12
+ method?: string;
13
+ redirect?: 'error' | 'manual' | 'follow';
14
+ signal?: IAbortSignal | null;
15
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IRequestInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IRequestInit.js","sourceRoot":"","sources":["../../src/fetch/IRequestInit.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import IHeaders from './IHeaders';
2
+ import IBody from './IBody';
3
+ /**
4
+ * Fetch response.
5
+ */
6
+ export default interface IResponse extends IBody {
7
+ readonly headers: IHeaders;
8
+ readonly ok: boolean;
9
+ readonly redirected: boolean;
10
+ readonly status: number;
11
+ readonly statusText: string;
12
+ readonly type: 'basic' | 'cors' | 'default' | 'error' | 'opaque' | 'opaqueredirect';
13
+ readonly url: string;
14
+ /**
15
+ * Returns a clone.
16
+ *
17
+ * @returns Clone.
18
+ */
19
+ clone(): IResponse;
20
+ }
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"IResponse.js","sourceRoot":"","sources":["../../src/window/IResponse.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"IResponse.js","sourceRoot":"","sources":["../../src/fetch/IResponse.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import IHeaders from './IHeaders';
2
+ /**
3
+ * Response init.
4
+ */
5
+ export default interface IResponseInit {
6
+ headers?: IHeaders | string[][] | Record<string, string>;
7
+ status?: number;
8
+ statusText?: string;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IResponseInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IResponseInit.js","sourceRoot":"","sources":["../../src/fetch/IResponseInit.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ /// <reference types="node" />
2
+ import * as NodeFetch from 'node-fetch';
3
+ import IRequest from './IRequest';
4
+ import IBlob from '../file/IBlob';
5
+ import IDocument from '../nodes/document/IDocument';
6
+ /**
7
+ * Fetch request.
8
+ */
9
+ export default class Request extends NodeFetch.Request implements IRequest {
10
+ static _ownerDocument: IDocument;
11
+ /**
12
+ * Returns array buffer.
13
+ *
14
+ * @returns Array buffer.
15
+ */
16
+ arrayBuffer(): Promise<ArrayBuffer>;
17
+ /**
18
+ * Returns blob.
19
+ *
20
+ * @returns Blob.
21
+ */
22
+ blob(): Promise<IBlob>;
23
+ /**
24
+ * Returns buffer.
25
+ *
26
+ * @returns Buffer.
27
+ */
28
+ buffer(): Promise<Buffer>;
29
+ /**
30
+ * Returns json.
31
+ *
32
+ * @returns JSON.
33
+ */
34
+ json(): Promise<unknown>;
35
+ /**
36
+ * Returns json.
37
+ *
38
+ * @returns JSON.
39
+ */
40
+ text(): Promise<string>;
41
+ /**
42
+ * Returns json.
43
+ *
44
+ * @returns JSON.
45
+ */
46
+ textConverted(): Promise<string>;
47
+ /**
48
+ * Handles promise start.
49
+ *
50
+ * @returns Task ID.
51
+ */
52
+ private _handlePromiseStart;
53
+ /**
54
+ * Handles promise end.
55
+ *
56
+ * @param resolve Resolve.
57
+ * @param reject Reject.
58
+ * @param taskID Task ID.
59
+ * @param response Response.
60
+ */
61
+ private _handlePromiseEnd;
62
+ /**
63
+ * Handles promise error.
64
+ *
65
+ * @param error
66
+ * @param reject
67
+ */
68
+ private _handlePromiseError;
69
+ }