happy-dom 17.1.1 → 17.1.2
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/cjs/PropertySymbol.cjs +2 -1
- package/cjs/PropertySymbol.cjs.map +1 -1
- package/cjs/PropertySymbol.d.ts +1 -0
- package/cjs/PropertySymbol.d.ts.map +1 -1
- package/cjs/browser/utilities/BrowserFrameNavigator.cjs +2 -1
- package/cjs/browser/utilities/BrowserFrameNavigator.cjs.map +1 -1
- package/cjs/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
- package/cjs/fetch/AbortController.cjs.map +1 -1
- package/cjs/fetch/AbortController.d.ts +1 -1
- package/cjs/fetch/AbortController.d.ts.map +1 -1
- package/cjs/fetch/AbortSignal.cjs +49 -15
- package/cjs/fetch/AbortSignal.cjs.map +1 -1
- package/cjs/fetch/AbortSignal.d.ts +28 -4
- package/cjs/fetch/AbortSignal.d.ts.map +1 -1
- package/cjs/fetch/Fetch.cjs +8 -5
- package/cjs/fetch/Fetch.cjs.map +1 -1
- package/cjs/fetch/Fetch.d.ts.map +1 -1
- package/cjs/fetch/SyncFetch.cjs +5 -2
- package/cjs/fetch/SyncFetch.cjs.map +1 -1
- package/cjs/fetch/SyncFetch.d.ts.map +1 -1
- package/lib/PropertySymbol.d.ts +1 -0
- package/lib/PropertySymbol.d.ts.map +1 -1
- package/lib/PropertySymbol.js +1 -0
- package/lib/PropertySymbol.js.map +1 -1
- package/lib/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
- package/lib/browser/utilities/BrowserFrameNavigator.js +2 -1
- package/lib/browser/utilities/BrowserFrameNavigator.js.map +1 -1
- package/lib/fetch/AbortController.d.ts +1 -1
- package/lib/fetch/AbortController.d.ts.map +1 -1
- package/lib/fetch/AbortController.js.map +1 -1
- package/lib/fetch/AbortSignal.d.ts +28 -4
- package/lib/fetch/AbortSignal.d.ts.map +1 -1
- package/lib/fetch/AbortSignal.js +49 -15
- package/lib/fetch/AbortSignal.js.map +1 -1
- package/lib/fetch/Fetch.d.ts.map +1 -1
- package/lib/fetch/Fetch.js +8 -5
- package/lib/fetch/Fetch.js.map +1 -1
- package/lib/fetch/SyncFetch.d.ts.map +1 -1
- package/lib/fetch/SyncFetch.js +5 -2
- package/lib/fetch/SyncFetch.js.map +1 -1
- package/package.json +1 -1
- package/src/PropertySymbol.ts +1 -0
- package/src/browser/utilities/BrowserFrameNavigator.ts +8 -1
- package/src/fetch/AbortController.ts +1 -1
- package/src/fetch/AbortSignal.ts +61 -25
- package/src/fetch/Fetch.ts +10 -7
- package/src/fetch/SyncFetch.ts +6 -3
package/src/fetch/AbortSignal.ts
CHANGED
@@ -14,9 +14,9 @@ export default class AbortSignal extends EventTarget {
|
|
14
14
|
protected declare static [PropertySymbol.window]: BrowserWindow;
|
15
15
|
protected declare [PropertySymbol.window]: BrowserWindow;
|
16
16
|
|
17
|
-
//
|
18
|
-
public
|
19
|
-
public
|
17
|
+
// Internal properties
|
18
|
+
public [PropertySymbol.aborted]: boolean = false;
|
19
|
+
public [PropertySymbol.reason]: any = undefined;
|
20
20
|
|
21
21
|
// Events
|
22
22
|
public onabort: ((this: AbortSignal, event: Event) => void) | null = null;
|
@@ -28,9 +28,7 @@ export default class AbortSignal extends EventTarget {
|
|
28
28
|
super();
|
29
29
|
|
30
30
|
if (!this[PropertySymbol.window]) {
|
31
|
-
throw new TypeError(
|
32
|
-
`Failed to construct '${this.constructor.name}': '${this.constructor.name}' was constructed outside a Window context.`
|
33
|
-
);
|
31
|
+
throw new TypeError(`Failed to construct 'AbortSignal': Illegal constructor`);
|
34
32
|
}
|
35
33
|
}
|
36
34
|
|
@@ -41,22 +39,59 @@ export default class AbortSignal extends EventTarget {
|
|
41
39
|
return 'AbortSignal';
|
42
40
|
}
|
43
41
|
|
42
|
+
/**
|
43
|
+
* Returns true if the signal has been aborted.
|
44
|
+
*
|
45
|
+
* @returns True if the signal has been aborted.
|
46
|
+
*/
|
47
|
+
public get aborted(): boolean {
|
48
|
+
return this[PropertySymbol.aborted];
|
49
|
+
}
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Setter for aborted. Value will be ignored as the property is read-only.
|
53
|
+
*
|
54
|
+
* @param _value Aborted.
|
55
|
+
*/
|
56
|
+
public set aborted(_value: boolean) {
|
57
|
+
// Do nothing
|
58
|
+
}
|
59
|
+
|
60
|
+
/**
|
61
|
+
* Returns the reason the signal was aborted.
|
62
|
+
*
|
63
|
+
* @returns Reason.
|
64
|
+
*/
|
65
|
+
public get reason(): any {
|
66
|
+
return this[PropertySymbol.reason];
|
67
|
+
}
|
68
|
+
|
69
|
+
/**
|
70
|
+
* Setter for reason. Value will be ignored as the property is read-only.
|
71
|
+
*
|
72
|
+
* @param _value Reason.
|
73
|
+
*/
|
74
|
+
public set reason(_value: any) {
|
75
|
+
// Do nothing
|
76
|
+
}
|
77
|
+
|
44
78
|
/**
|
45
79
|
* Aborts the signal.
|
46
80
|
*
|
47
81
|
* @param [reason] Reason.
|
48
82
|
*/
|
49
|
-
public [PropertySymbol.abort](reason?:
|
83
|
+
public [PropertySymbol.abort](reason?: any): void {
|
50
84
|
if (this.aborted) {
|
51
85
|
return;
|
52
86
|
}
|
53
|
-
|
54
|
-
reason
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
87
|
+
this[PropertySymbol.reason] =
|
88
|
+
reason !== undefined
|
89
|
+
? reason
|
90
|
+
: new this[PropertySymbol.window].DOMException(
|
91
|
+
'signal is aborted without reason',
|
92
|
+
DOMExceptionNameEnum.abortError
|
93
|
+
);
|
94
|
+
this[PropertySymbol.aborted] = true;
|
60
95
|
this.dispatchEvent(new Event('abort'));
|
61
96
|
}
|
62
97
|
|
@@ -75,15 +110,16 @@ export default class AbortSignal extends EventTarget {
|
|
75
110
|
* @param [reason] Reason.
|
76
111
|
* @returns AbortSignal instance.
|
77
112
|
*/
|
78
|
-
public static abort(reason?:
|
113
|
+
public static abort(reason?: any): AbortSignal {
|
79
114
|
const signal = new this();
|
80
|
-
|
81
|
-
reason
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
115
|
+
signal[PropertySymbol.reason] =
|
116
|
+
reason !== undefined
|
117
|
+
? reason
|
118
|
+
: new this[PropertySymbol.window].DOMException(
|
119
|
+
'signal is aborted without reason',
|
120
|
+
DOMExceptionNameEnum.abortError
|
121
|
+
);
|
122
|
+
signal[PropertySymbol.aborted] = true;
|
87
123
|
return signal;
|
88
124
|
}
|
89
125
|
|
@@ -118,8 +154,8 @@ export default class AbortSignal extends EventTarget {
|
|
118
154
|
*/
|
119
155
|
public static any(signals: AbortSignal[]): AbortSignal {
|
120
156
|
for (const signal of signals) {
|
121
|
-
if (signal.aborted) {
|
122
|
-
return this.abort(signal.reason);
|
157
|
+
if (signal[PropertySymbol.aborted]) {
|
158
|
+
return this.abort(signal[PropertySymbol.reason]);
|
123
159
|
}
|
124
160
|
}
|
125
161
|
|
@@ -135,7 +171,7 @@ export default class AbortSignal extends EventTarget {
|
|
135
171
|
for (const signal of signals) {
|
136
172
|
const handler = (): void => {
|
137
173
|
stopListening();
|
138
|
-
anySignal[PropertySymbol.abort](signal.reason);
|
174
|
+
anySignal[PropertySymbol.abort](signal[PropertySymbol.reason]);
|
139
175
|
};
|
140
176
|
handlers.set(signal, handler);
|
141
177
|
signal.addEventListener('abort', handler);
|
package/src/fetch/Fetch.ts
CHANGED
@@ -134,9 +134,12 @@ export default class Fetch {
|
|
134
134
|
|
135
135
|
FetchRequestValidationUtility.validateSchema(this.request);
|
136
136
|
|
137
|
-
if (this.request.signal.aborted) {
|
138
|
-
|
139
|
-
|
137
|
+
if (this.request.signal[PropertySymbol.aborted]) {
|
138
|
+
if (this.request.signal[PropertySymbol.reason] !== undefined) {
|
139
|
+
throw this.request.signal[PropertySymbol.reason];
|
140
|
+
}
|
141
|
+
throw new this[PropertySymbol.window].DOMException(
|
142
|
+
'signal is aborted without reason',
|
140
143
|
DOMExceptionNameEnum.abortError
|
141
144
|
);
|
142
145
|
}
|
@@ -947,8 +950,8 @@ export default class Fetch {
|
|
947
950
|
headers.delete('cookie2');
|
948
951
|
}
|
949
952
|
|
950
|
-
if (this.request.signal.aborted) {
|
951
|
-
this.abort();
|
953
|
+
if (this.request.signal[PropertySymbol.aborted]) {
|
954
|
+
this.abort(this.request.signal[PropertySymbol.reason]);
|
952
955
|
return true;
|
953
956
|
}
|
954
957
|
|
@@ -1006,7 +1009,7 @@ export default class Fetch {
|
|
1006
1009
|
*
|
1007
1010
|
* @param reason Reason.
|
1008
1011
|
*/
|
1009
|
-
private abort(reason?:
|
1012
|
+
private abort(reason?: any): void {
|
1010
1013
|
const error = new this.#window.DOMException(
|
1011
1014
|
'The operation was aborted.' + (reason ? ' ' + reason.toString() : ''),
|
1012
1015
|
DOMExceptionNameEnum.abortError
|
@@ -1034,7 +1037,7 @@ export default class Fetch {
|
|
1034
1037
|
}
|
1035
1038
|
|
1036
1039
|
if (this.reject) {
|
1037
|
-
this.reject(error);
|
1040
|
+
this.reject(reason !== undefined ? reason : error);
|
1038
1041
|
}
|
1039
1042
|
}
|
1040
1043
|
}
|
package/src/fetch/SyncFetch.ts
CHANGED
@@ -113,9 +113,12 @@ export default class SyncFetch {
|
|
113
113
|
|
114
114
|
FetchRequestValidationUtility.validateSchema(this.request);
|
115
115
|
|
116
|
-
if (this.request.signal.aborted) {
|
117
|
-
|
118
|
-
|
116
|
+
if (this.request.signal[PropertySymbol.aborted]) {
|
117
|
+
if (this.request.signal[PropertySymbol.reason] !== undefined) {
|
118
|
+
throw this.request.signal[PropertySymbol.reason];
|
119
|
+
}
|
120
|
+
throw new this[PropertySymbol.window].DOMException(
|
121
|
+
'signal is aborted without reason',
|
119
122
|
DOMExceptionNameEnum.abortError
|
120
123
|
);
|
121
124
|
}
|