@jsenv/plugin-supervisor 1.8.11 → 1.8.12

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.
@@ -1287,28 +1287,20 @@ window.__supervisor__ = (() => {
1287
1287
  return exception;
1288
1288
  };
1289
1289
  const addEventListenerCalledLast = (object, eventNameListened, eventCallback) => {
1290
- const eventCallbackSet = new Set();
1291
- object.addEventListener(eventNameListened, event => {
1292
- for (const callback of eventCallbackSet) {
1293
- callback(event);
1294
- }
1295
- eventCallback(event);
1296
- });
1290
+ // Listeners are called in registration order, so "called last" means
1291
+ // "registered last". Rather than swallowing the registrations done by the
1292
+ // rest of the page (which would silently drop capture/once/passive/signal
1293
+ // and break removeEventListener), let them register natively and move our
1294
+ // own listener back to the end each time one shows up.
1297
1295
  const addEventListener = object.addEventListener;
1298
1296
  const removeEventListener = object.removeEventListener;
1299
- object.addEventListener = function (eventName, callback) {
1300
- if (eventName === eventNameListened) {
1301
- eventCallbackSet.add(callback);
1302
- return;
1303
- }
1304
- addEventListener.call(this, eventName, callback);
1305
- };
1306
- object.removeEventListener = function (eventName, callback) {
1307
- if (eventName === eventNameListened) {
1308
- eventCallbackSet.delete(callback);
1309
- return;
1297
+ addEventListener.call(object, eventNameListened, eventCallback);
1298
+ object.addEventListener = function (eventName, ...rest) {
1299
+ addEventListener.call(this, eventName, ...rest);
1300
+ if (this === object && eventName === eventNameListened) {
1301
+ removeEventListener.call(object, eventNameListened, eventCallback);
1302
+ addEventListener.call(object, eventNameListened, eventCallback);
1310
1303
  }
1311
- removeEventListener.call(this, eventName, callback);
1312
1304
  };
1313
1305
  };
1314
1306
  addEventListenerCalledLast(window, "error", errorEvent => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/plugin-supervisor",
3
- "version": "1.8.11",
3
+ "version": "1.8.12",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1459,28 +1459,20 @@ window.__supervisor__ = (() => {
1459
1459
  eventNameListened,
1460
1460
  eventCallback,
1461
1461
  ) => {
1462
- const eventCallbackSet = new Set();
1463
- object.addEventListener(eventNameListened, (event) => {
1464
- for (const callback of eventCallbackSet) {
1465
- callback(event);
1466
- }
1467
- eventCallback(event);
1468
- });
1462
+ // Listeners are called in registration order, so "called last" means
1463
+ // "registered last". Rather than swallowing the registrations done by the
1464
+ // rest of the page (which would silently drop capture/once/passive/signal
1465
+ // and break removeEventListener), let them register natively and move our
1466
+ // own listener back to the end each time one shows up.
1469
1467
  const addEventListener = object.addEventListener;
1470
1468
  const removeEventListener = object.removeEventListener;
1471
- object.addEventListener = function (eventName, callback) {
1472
- if (eventName === eventNameListened) {
1473
- eventCallbackSet.add(callback);
1474
- return;
1475
- }
1476
- addEventListener.call(this, eventName, callback);
1477
- };
1478
- object.removeEventListener = function (eventName, callback) {
1479
- if (eventName === eventNameListened) {
1480
- eventCallbackSet.delete(callback);
1481
- return;
1469
+ addEventListener.call(object, eventNameListened, eventCallback);
1470
+ object.addEventListener = function (eventName, ...rest) {
1471
+ addEventListener.call(this, eventName, ...rest);
1472
+ if (this === object && eventName === eventNameListened) {
1473
+ removeEventListener.call(object, eventNameListened, eventCallback);
1474
+ addEventListener.call(object, eventNameListened, eventCallback);
1482
1475
  }
1483
- removeEventListener.call(this, eventName, callback);
1484
1476
  };
1485
1477
  };
1486
1478
  addEventListenerCalledLast(window, "error", (errorEvent) => {