happy-dom 9.8.3 → 9.8.4
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.
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EventTarget.d.ts","sourceRoot":"","sources":["../../src/event/EventTarget.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAI5D,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,WAAY,YAAW,YAAY;IAChE,SAAgB,UAAU,EAAE;QAC3B,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC;KAC3D,CAAM;IACP,SAAgB,gBAAgB,EAAE;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,CAAC;KAC9C,CAAM;IAEP;;;;;;;OAOG;IACI,gBAAgB,CACtB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,cAAc,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,qBAAqB,GACvC,IAAI;
|
1
|
+
{"version":3,"file":"EventTarget.d.ts","sourceRoot":"","sources":["../../src/event/EventTarget.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAI5D,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,WAAY,YAAW,YAAY;IAChE,SAAgB,UAAU,EAAE;QAC3B,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC;KAC3D,CAAM;IACP,SAAgB,gBAAgB,EAAE;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,CAAC;KAC9C,CAAM;IAEP;;;;;;;OAOG;IACI,gBAAgB,CACtB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,cAAc,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,qBAAqB,GACvC,IAAI;IAsBP;;;;;OAKG;IACI,mBAAmB,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,cAAc,GACjD,IAAI;IAkBP;;;;;;;OAOG;IACI,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAqG3C;;;;;;;;;OASG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,cAAc,GAAG,IAAI;IAI3F;;;;;;;;;OASG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,cAAc,GAAG,IAAI;IAI3F;;;;OAIG;IACI,UAAU,IAAI,OAAO,GAAG,IAAI;CAYnC"}
|
package/lib/event/EventTarget.js
CHANGED
@@ -24,6 +24,9 @@ class EventTarget {
|
|
24
24
|
const listenerOptions = typeof options === 'boolean' ? { capture: options } : options || null;
|
25
25
|
this._listeners[type] = this._listeners[type] || [];
|
26
26
|
this._listenerOptions[type] = this._listenerOptions[type] || [];
|
27
|
+
if (this._listeners[type].includes(listener)) {
|
28
|
+
return;
|
29
|
+
}
|
27
30
|
this._listeners[type].push(listener);
|
28
31
|
this._listenerOptions[type].push(listenerOptions);
|
29
32
|
// Tracks the amount of capture event listeners to improve performance when they are not used.
|
@@ -128,7 +131,13 @@ class EventTarget {
|
|
128
131
|
}
|
129
132
|
event._isInPassiveEventListener = false;
|
130
133
|
if (options?.once) {
|
134
|
+
// At this time, listeners and listenersOptions are cloned arrays. When the original value is deleted,
|
135
|
+
// The value corresponding to the cloned array is not deleted. So we need to delete the value in the cloned array.
|
136
|
+
listeners.splice(i, 1);
|
137
|
+
listenerOptions.splice(i, 1);
|
131
138
|
this.removeEventListener(event.type, listener);
|
139
|
+
i--;
|
140
|
+
max--;
|
132
141
|
}
|
133
142
|
if (event._immediatePropagationStopped) {
|
134
143
|
return !(event.cancelable && event.defaultPrevented);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EventTarget.js","sourceRoot":"","sources":["../../src/event/EventTarget.ts"],"names":[],"mappings":";;;;;AAIA,sEAA8C;AAK9C;;GAEG;AACH,MAA8B,WAAW;IAAzC;QACiB,eAAU,GAEtB,EAAE,CAAC;QACS,qBAAgB,GAE5B,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"EventTarget.js","sourceRoot":"","sources":["../../src/event/EventTarget.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/event/EventTarget.ts
CHANGED
@@ -35,7 +35,9 @@ export default abstract class EventTarget implements IEventTarget {
|
|
35
35
|
|
36
36
|
this._listeners[type] = this._listeners[type] || [];
|
37
37
|
this._listenerOptions[type] = this._listenerOptions[type] || [];
|
38
|
-
|
38
|
+
if (this._listeners[type].includes(listener)) {
|
39
|
+
return;
|
40
|
+
}
|
39
41
|
this._listeners[type].push(listener);
|
40
42
|
this._listenerOptions[type].push(listenerOptions);
|
41
43
|
|
@@ -168,7 +170,13 @@ export default abstract class EventTarget implements IEventTarget {
|
|
168
170
|
event._isInPassiveEventListener = false;
|
169
171
|
|
170
172
|
if (options?.once) {
|
173
|
+
// At this time, listeners and listenersOptions are cloned arrays. When the original value is deleted,
|
174
|
+
// The value corresponding to the cloned array is not deleted. So we need to delete the value in the cloned array.
|
175
|
+
listeners.splice(i, 1);
|
176
|
+
listenerOptions.splice(i, 1);
|
171
177
|
this.removeEventListener(event.type, listener);
|
178
|
+
i--;
|
179
|
+
max--;
|
172
180
|
}
|
173
181
|
|
174
182
|
if (event._immediatePropagationStopped) {
|