@jsenv/terminal-recorder 1.5.56 → 1.5.57

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.
@@ -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) => {
@@ -185,6 +185,10 @@ const setup = () => {
185
185
  pendingActivities = [];
186
186
  const payload = JSON.stringify({
187
187
  clientId,
188
+ // The server reads browser/OS from the request headers, but a headless
189
+ // firefox/webkit looks exactly like a windowed one there; this flag is
190
+ // what tells them apart (chromium also says "Headless" in its user-agent).
191
+ webdriver: window.navigator.webdriver === true,
188
192
  tab: tabInfo({ closing }),
189
193
  activities,
190
194
  logs,