@wdio/utils 9.31.5 → 9.31.7

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/build/index.js CHANGED
@@ -379,23 +379,100 @@ function WebDriver(options, modifier, propertiesObject = {}) {
379
379
  const prototype = Object.create(scopeType.prototype);
380
380
  const log4 = logger("webdriver");
381
381
  const mittInstance = mitt();
382
+ const dialogListeners = [];
383
+ const emitDialogListenerTransition = (previousCount) => {
384
+ if (previousCount === 0 && dialogListeners.length > 0) {
385
+ mittInstance.emit("_dialogListenerRegistered");
386
+ } else if (previousCount > 0 && dialogListeners.length === 0) {
387
+ mittInstance.emit("_dialogListenerRemoved");
388
+ }
389
+ };
390
+ const addDialogListener = (listener, registered = listener) => {
391
+ const previousCount = dialogListeners.length;
392
+ mittInstance.on("dialog", registered);
393
+ dialogListeners.push({ listener, registered });
394
+ emitDialogListenerTransition(previousCount);
395
+ };
396
+ const removeDialogListener = (listener, registered) => {
397
+ const previousCount = dialogListeners.length;
398
+ let index = -1;
399
+ for (let i = dialogListeners.length - 1; i >= 0; i--) {
400
+ const entry2 = dialogListeners[i];
401
+ if (registered ? entry2.registered === registered : entry2.listener === listener) {
402
+ index = i;
403
+ break;
404
+ }
405
+ }
406
+ if (index === -1) {
407
+ return;
408
+ }
409
+ const [entry] = dialogListeners.splice(index, 1);
410
+ mittInstance.off("dialog", entry.registered);
411
+ emitDialogListenerTransition(previousCount);
412
+ };
413
+ const removeAllDialogListeners = () => {
414
+ const previousCount = dialogListeners.length;
415
+ mittInstance.off("dialog");
416
+ dialogListeners.length = 0;
417
+ emitDialogListenerTransition(previousCount);
418
+ };
382
419
  const eventHandler = {
383
- on: mittInstance.on.bind(mittInstance),
384
- off: mittInstance.off.bind(mittInstance),
420
+ on: (type, handler) => {
421
+ if (type === "dialog") {
422
+ addDialogListener(handler);
423
+ } else {
424
+ mittInstance.on(type, handler);
425
+ }
426
+ },
427
+ off: (type, handler) => {
428
+ if (type === "dialog") {
429
+ if (handler) {
430
+ removeDialogListener(handler);
431
+ } else {
432
+ removeAllDialogListeners();
433
+ }
434
+ } else {
435
+ mittInstance.off(type, handler);
436
+ }
437
+ },
385
438
  emit: mittInstance.emit.bind(mittInstance),
386
439
  once: (type, handler) => {
387
- const onceWrapper = (...args) => {
388
- mittInstance.off(type, onceWrapper);
389
- handler(...args);
440
+ const onceWrapper = (event) => {
441
+ if (type === "dialog") {
442
+ removeDialogListener(handler, onceWrapper);
443
+ } else {
444
+ mittInstance.off(type, onceWrapper);
445
+ }
446
+ handler(event);
390
447
  };
391
- mittInstance.on(type, onceWrapper);
448
+ if (type === "dialog") {
449
+ addDialogListener(handler, onceWrapper);
450
+ } else {
451
+ mittInstance.on(type, onceWrapper);
452
+ }
453
+ },
454
+ removeListener: (type, handler) => {
455
+ if (type === "dialog") {
456
+ if (handler) {
457
+ removeDialogListener(handler);
458
+ } else {
459
+ removeAllDialogListeners();
460
+ }
461
+ } else {
462
+ mittInstance.off(type, handler);
463
+ }
392
464
  },
393
- removeListener: mittInstance.off.bind(mittInstance),
394
465
  removeAllListeners: (type) => {
395
- if (type) {
466
+ if (type === "dialog") {
467
+ removeAllDialogListeners();
468
+ } else if (type) {
396
469
  mittInstance.off(type);
397
470
  } else {
398
- Object.assign(mittInstance, mitt());
471
+ const previousCount = dialogListeners.length;
472
+ mittInstance.off("dialog");
473
+ dialogListeners.length = 0;
474
+ emitDialogListenerTransition(previousCount);
475
+ mittInstance.all.clear();
399
476
  }
400
477
  }
401
478
  };
@@ -519,12 +596,6 @@ function WebDriver(options, modifier, propertiesObject = {}) {
519
596
  };
520
597
  for (const eventCommand of EVENTHANDLER_FUNCTIONS) {
521
598
  prototype[eventCommand] = function(...args) {
522
- if (eventCommand === "on" && args[0] === "dialog") {
523
- eventHandler.emit("_dialogListenerRegistered");
524
- }
525
- if (eventCommand === "off" && args[0] === "dialog") {
526
- eventHandler.emit("_dialogListenerRemoved");
527
- }
528
599
  switch (eventCommand) {
529
600
  case "on":
530
601
  eventHandler.on(args[0], args[1]);
@@ -930,7 +1001,7 @@ var ELEMENT_QUERY_COMMANDS = [
930
1001
  "nextElement",
931
1002
  "previousElement",
932
1003
  "parentElement",
933
- "unstable_select"
1004
+ "select"
934
1005
  ];
935
1006
  var ELEMENT_PROPS = [
936
1007
  "elementId",
@@ -1 +1 @@
1
- {"version":3,"file":"monad.d.ts","sourceRoot":"","sources":["../src/monad.ts"],"names":[],"mappings":"AAiBA,UAAU,gBAAgB;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,CAAA;CAC7C;AA8BD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAE,gBAAqB;WAwCvF,IAAI,aAAa,MAAM,mBAAmB,QAAQ,wCAAwC,MAAM,EAAE;eA6J1F,MAAM,QAAQ,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,QAAQ;EA8FzG"}
1
+ {"version":3,"file":"monad.d.ts","sourceRoot":"","sources":["../src/monad.ts"],"names":[],"mappings":"AAiBA,UAAU,gBAAgB;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,CAAA;CAC7C;AA8BD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAE,gBAAqB;WA8HvF,IAAI,aAAa,MAAM,mBAAmB,QAAQ,wCAAwC,MAAM,EAAE;eA6J1F,MAAM,QAAQ,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,QAAQ;EAiFzG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wdio/utils",
3
- "version": "9.31.5",
3
+ "version": "9.31.7",
4
4
  "description": "A WDIO helper utility to provide several utility functions used across the project.",
5
5
  "author": "Christian Bromann <mail@bromann.dev>",
6
6
  "homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-utils",
@@ -41,7 +41,7 @@
41
41
  "@wdio/logger": "9.29.1",
42
42
  "@wdio/types": "9.31.2",
43
43
  "decamelize": "^6.0.0",
44
- "deepmerge-ts": "^7.0.3",
44
+ "deepmerge-ts": "^8.0.0",
45
45
  "edgedriver": "^6.1.2",
46
46
  "geckodriver": "^6.1.1",
47
47
  "get-port": "^7.0.0",
@@ -55,5 +55,5 @@
55
55
  "publishConfig": {
56
56
  "access": "public"
57
57
  },
58
- "gitHead": "4f39140405a3a54a44c391f97a6de1fc3af2d33d"
58
+ "gitHead": "ba488fa25aaac3122a676405969a4f790615757f"
59
59
  }