appium-geckodriver 2.2.2 → 2.2.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [2.2.4](https://github.com/appium/appium-geckodriver/compare/v2.2.3...v2.2.4) (2026-05-11)
2
+
3
+ ### Miscellaneous Chores
4
+
5
+ * Enable strict TS mode ([#162](https://github.com/appium/appium-geckodriver/issues/162)) ([d6f500a](https://github.com/appium/appium-geckodriver/commit/d6f500a8117dc1ed081859b9427eaf572ad9e0df))
6
+
7
+ ## [2.2.3](https://github.com/appium/appium-geckodriver/compare/v2.2.2...v2.2.3) (2026-05-04)
8
+
9
+ ### Miscellaneous Chores
10
+
11
+ * remove lodash ([#160](https://github.com/appium/appium-geckodriver/issues/160)) ([6a4b9b6](https://github.com/appium/appium-geckodriver/commit/6a4b9b6051dcb4ed21361f6764e174645c8b9a0e))
12
+
1
13
  ## [2.2.2](https://github.com/appium/appium-geckodriver/compare/v2.2.1...v2.2.2) (2026-05-01)
2
14
 
3
15
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
- import type { IDoctorCheck } from '@appium/types';
1
+ import type { AppiumLogger, IDoctorCheck } from '@appium/types';
2
2
  export declare class GeckodriverCheck implements IDoctorCheck {
3
- log: import('@appium/types').AppiumLogger;
3
+ log: AppiumLogger;
4
4
  diagnose(): Promise<import("@appium/types").DoctorCheckResult>;
5
5
  fix(): Promise<string>;
6
6
  hasAutofix(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"required-checks.d.ts","sourceRoot":"","sources":["../../../lib/doctor/required-checks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAKhD,qBAAa,gBAAiB,YAAW,YAAY;IACnD,GAAG,EAAG,OAAO,eAAe,EAAE,YAAY,CAAC;IAErC,QAAQ;IAOR,GAAG;IAST,UAAU;IAIV,UAAU;CAGX;AACD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
1
+ {"version":3,"file":"required-checks.d.ts","sourceRoot":"","sources":["../../../lib/doctor/required-checks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAK9D,qBAAa,gBAAiB,YAAW,YAAY;IACnD,GAAG,EAAG,YAAY,CAAC;IAEb,QAAQ;IAOR,GAAG;IAST,UAAU;IAIV,UAAU;CAGX;AACD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"required-checks.js","sourceRoot":"","sources":["../../../lib/doctor/required-checks.ts"],"names":[],"mappings":";;;AAAA,mCAA8C;AAC9C,6CAA+C;AAG/C,MAAM,gBAAgB,GAAG,iDAAiD,CAAC;AAC3E,MAAM,SAAS,GAAG,cAAc,gBAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAEnE,MAAa,gBAAgB;IAC3B,GAAG,CAAwC;IAE3C,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAqB,EAAC,SAAS,CAAC,CAAC;QACtD,OAAO,MAAM;YACX,CAAC,CAAC,gBAAM,CAAC,EAAE,CAAC,GAAG,SAAS,qBAAqB,MAAM,EAAE,CAAC;YACtD,CAAC,CAAC,gBAAM,CAAC,GAAG,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,CACL,GAAG,SAAS,2DAA2D;YACvE,mCAAmC,gBAAgB,gBAAgB;YACnE,sEAAsE;YACtE,kCAAkC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CACrD,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA1BD,4CA0BC;AACY,QAAA,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"required-checks.js","sourceRoot":"","sources":["../../../lib/doctor/required-checks.ts"],"names":[],"mappings":";;;AAAA,mCAA8C;AAC9C,6CAA+C;AAG/C,MAAM,gBAAgB,GAAG,iDAAiD,CAAC;AAC3E,MAAM,SAAS,GAAG,cAAc,gBAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAEnE,MAAa,gBAAgB;IAC3B,GAAG,CAAgB;IAEnB,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAqB,EAAC,SAAS,CAAC,CAAC;QACtD,OAAO,MAAM;YACX,CAAC,CAAC,gBAAM,CAAC,EAAE,CAAC,GAAG,SAAS,qBAAqB,MAAM,EAAE,CAAC;YACtD,CAAC,CAAC,gBAAM,CAAC,GAAG,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,CACL,GAAG,SAAS,2DAA2D;YACvE,mCAAmC,gBAAgB,gBAAgB;YACnE,sEAAsE;YACtE,kCAAkC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CACrD,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA1BD,4CA0BC;AACY,QAAA,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAC1B,WAAW,EACX,YAAY,EACZ,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,UAAU,EAAS,MAAM,eAAe,CAAC;AACjD,OAAO,EAAoB,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAC,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAUhD,MAAM,MAAM,gBAAgB,GAAG,OAAO,qBAAqB,CAAC;AAE5D,qBAAa,WACX,SAAQ,UAAU,CAAC,gBAAgB,EAAE,YAAY,CACjD,YAAW,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC;IAE1D,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;IAE1C,WAAW,kCAA4B;IAEvC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAuB;gBAEhC,IAAI,GAAE,WAA+B;IAgBjD,IAAI,KAAK,IAAI,iBAAiB,CAK7B;IAED,IAAa,YAAY,IAAI,MAAM,GAAG,IAAI,CAEzC;IAGQ,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAIxC,iBAAiB,IAAI,YAAY,EAAE;IAInC,QAAQ,IAAI,OAAO;IAInB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG;IAmBrC,aAAa,CAC1B,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,QAAQ,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAC1C,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAqBzC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7C,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,oBAAoB;CAe7B;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAC1B,WAAW,EACX,YAAY,EACZ,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,UAAU,EAAS,MAAM,eAAe,CAAC;AACjD,OAAO,EAAoB,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAC,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAUhD,MAAM,MAAM,gBAAgB,GAAG,OAAO,qBAAqB,CAAC;AAE5D,qBAAa,WACX,SAAQ,UAAU,CAAC,gBAAgB,EAAE,YAAY,CACjD,YAAW,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC;IAE1D,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAe;IAExD,WAAW,kCAA4B;IAEvC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAuB;gBAEhC,IAAI,GAAE,WAA+B;IAgBjD,IAAI,KAAK,IAAI,iBAAiB,CAK7B;IAED,IAAa,YAAY,IAAI,MAAM,GAAG,IAAI,CAEzC;IAGQ,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAIxC,iBAAiB,IAAI,YAAY,EAAE;IAInC,QAAQ,IAAI,OAAO;IAInB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG;IAmBrC,aAAa,CAC1B,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,QAAQ,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAC1C,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAqBzC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7C,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,oBAAoB;CAgB7B;AAED,eAAe,WAAW,CAAC"}
@@ -32,12 +32,8 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
35
  Object.defineProperty(exports, "__esModule", { value: true });
39
36
  exports.GeckoDriver = void 0;
40
- const lodash_1 = __importDefault(require("lodash"));
41
37
  const driver_1 = require("appium/driver");
42
38
  const gecko_1 = require("./gecko");
43
39
  const desired_caps_1 = require("./desired-caps");
@@ -51,14 +47,14 @@ const NO_PROXY = [
51
47
  ['POST', new RegExp('^/session/[^/]+/elements?$')],
52
48
  ];
53
49
  class GeckoDriver extends driver_1.BaseDriver {
54
- proxyReqRes;
50
+ proxyReqRes = null;
55
51
  findElOrEls = findCommands.findElOrEls;
56
52
  isProxyActive = false;
57
53
  _gecko = null;
58
54
  _bidiProxyUrl = null;
59
55
  constructor(opts = {}) {
60
56
  super(opts);
61
- this.desiredCapConstraints = lodash_1.default.cloneDeep(desired_caps_1.desiredCapConstraints);
57
+ this.desiredCapConstraints = structuredClone(desired_caps_1.desiredCapConstraints);
62
58
  this.locatorStrategies = [
63
59
  'xpath',
64
60
  'tag name',
@@ -106,7 +102,7 @@ class GeckoDriver extends driver_1.BaseDriver {
106
102
  async createSession(w3cCaps1, w3cCaps2, ...args) {
107
103
  const [sessionId, processedCaps] = await super.createSession(w3cCaps1, w3cCaps2, ...args);
108
104
  this._gecko = new gecko_1.GeckoDriverServer(this.log, processedCaps);
109
- let response = null;
105
+ let response;
110
106
  try {
111
107
  response = await this._gecko.start((0, utils_1.formatCapsForServer)(processedCaps), {
112
108
  reqBasePath: this.basePath,
@@ -138,7 +134,7 @@ class GeckoDriver extends driver_1.BaseDriver {
138
134
  }
139
135
  _extractWebSocketUrl(response) {
140
136
  const webSocketUrl = response?.capabilities?.webSocketUrl;
141
- if (lodash_1.default.isEmpty(webSocketUrl) || !lodash_1.default.isString(webSocketUrl)) {
137
+ if (typeof webSocketUrl !== 'string' || webSocketUrl.length === 0) {
142
138
  return null;
143
139
  }
144
140
  try {
@@ -148,7 +144,8 @@ class GeckoDriver extends driver_1.BaseDriver {
148
144
  : webSocketUrl;
149
145
  }
150
146
  catch (e) {
151
- this.log.warn(`Failed to parse WebSocket URL from '${webSocketUrl}': ${e.message}`);
147
+ const msg = e instanceof Error ? e.message : String(e);
148
+ this.log.warn(`Failed to parse WebSocket URL from '${webSocketUrl}': ${msg}`);
152
149
  return null;
153
150
  }
154
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAuB;AASvB,0CAAiD;AACjD,mCAA6D;AAC7D,iDAAqD;AACrD,2CAAwE;AACxE,8DAAgD;AAChD,mCAA4C;AAE5C,MAAM,QAAQ,GAAmB;IAC/B,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC7C,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,4BAA4B,CAAC,CAAC;CACnD,CAAC;AAIF,MAAa,WACX,SAAQ,mBAA0C;IAG3C,WAAW,CAAwB;IAE1C,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;IAE/B,aAAa,GAAY,KAAK,CAAC;IAC/B,MAAM,GAA6B,IAAI,CAAC;IACxC,aAAa,GAAkB,IAAI,CAAC;IAE5C,YAAY,OAAoB,EAAiB;QAC/C,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,qBAAqB,GAAG,gBAAC,CAAC,SAAS,CAAC,oCAAqB,CAAC,CAAC;QAChE,IAAI,CAAC,iBAAiB,GAAG;YACvB,OAAO;YACP,UAAU;YACV,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,8EAA8E;YAC9E,IAAI;YACJ,MAAM;SACP,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAa,YAAY;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,6DAA6D;IACpD,WAAW,CAAC,SAAkB;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEQ,iBAAiB;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,mBAAmB,CAAC,IAAS;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,IAAI,CAAC,qBAAqB;YAC1B,CAAC,IAAI,CAAC,gBAAgB,CAAC,uDAA2C,CAAC,EACnE,CAAC;YACD,MAAM,IAAI,eAAM,CAAC,sBAAsB,CACrC,sDAAsD;gBACpD,IAAI,uDAA2C,mCAAmC;gBAClF,uBAAuB,CAC1B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,KAAK,CAAC,aAAa,CAC1B,QAAyC,EACzC,QAA0C,EAC1C,GAAG,IAAW;QAEd,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC7D,IAAI,QAAQ,GAAwB,IAAI,CAAC;QACzC,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,2BAAmB,EAAC,aAAa,CAAC,EAAE;gBACrE,WAAW,EAAE,IAAI,CAAC,QAAQ;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,CAAC,CAAC;QACV,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACpC,CAAC;IAEQ,KAAK,CAAC,aAAa;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEO,oBAAoB,CAAC,QAAsB;QACjD,MAAM,YAAY,GAAI,QAAQ,EAAE,YAAoB,EAAE,YAAY,CAAC;QACnE,IAAI,gBAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,QAAQ,KAAK,yBAAiB;gBACzC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,yBAAiB,CAAC;gBACrD,CAAC,CAAC,YAAY,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uCAAuC,YAAY,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA9HD,kCA8HC;AAED,kBAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gecko.d.ts","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,EAAS,MAAM,eAAe,CAAC;AAM9C,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAWpF,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAwID,qBAAa,UAAW,SAAQ,OAAO;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEV,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAE,QAAe;CASnF;AAmBD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY;IAMjD,IAAI,KAAK,IAAI,UAAU,CAKtB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAkEhF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB5B;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"gecko.d.ts","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAS,MAAM,eAAe,CAAC;AAM9C,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAWpF,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAwID,qBAAa,UAAW,SAAQ,OAAO;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEV,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAE,QAAe;CASnF;AA2BD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY;IAMjD,IAAI,KAAK,IAAI,UAAU,CAKtB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAmEhF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB5B;AAED,eAAe,iBAAiB,CAAC"}
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.GeckoDriverServer = exports.GeckoProxy = exports.GECKO_SERVER_HOST = void 0;
7
- const lodash_1 = __importDefault(require("lodash"));
8
7
  const node_os_1 = __importDefault(require("node:os"));
9
8
  const node_path_1 = __importDefault(require("node:path"));
10
9
  const driver_1 = require("appium/driver");
@@ -67,7 +66,7 @@ class GeckoDriverProcess {
67
66
  const driverBin = await this.resolveGeckodriverBinary();
68
67
  const args = [];
69
68
  /* #region Options */
70
- switch (lodash_1.default.toLower(this.verbosity)) {
69
+ switch (this.verbosity?.toLowerCase()) {
71
70
  case constants_1.VERBOSITY.DEBUG:
72
71
  args.push('-v');
73
72
  break;
@@ -78,13 +77,13 @@ class GeckoDriverProcess {
78
77
  if (this.noReset) {
79
78
  args.push('--connect-existing');
80
79
  // https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-connect-existing-code
81
- if (lodash_1.default.isNil(this.marionettePort)) {
80
+ if (this.marionettePort == null) {
82
81
  this.log.info(`'marionettePort' capability value is not provided while 'noReset' is enabled`);
83
82
  this.log.info(`Assigning 'marionettePort' to the default value (${DEFAULT_MARIONETTE_PORT})`);
84
83
  }
85
84
  args.push('--marionette-port', `${this.marionettePort ?? DEFAULT_MARIONETTE_PORT}`);
86
85
  }
87
- else if (!lodash_1.default.isNil(this.marionettePort)) {
86
+ else if (this.marionettePort != null) {
88
87
  args.push('--marionette-port', `${this.marionettePort}`);
89
88
  }
90
89
  /* #endregion */
@@ -94,7 +93,7 @@ class GeckoDriverProcess {
94
93
  }
95
94
  this._proc = new teen_process_1.SubProcess(driverBin, args);
96
95
  this._proc.on('output', (stdout, stderr) => {
97
- const line = lodash_1.default.trim(stdout || stderr);
96
+ const line = (stdout || stderr).trim();
98
97
  if (line) {
99
98
  this.log.debug(`[${GD_BINARY}] ${line}`);
100
99
  }
@@ -147,8 +146,15 @@ class GeckoProxy extends driver_1.JWProxy {
147
146
  }
148
147
  exports.GeckoProxy = GeckoProxy;
149
148
  const RUNNING_PROCESS_IDS = [];
149
+ const removeRunningProcessId = (pid) => {
150
+ let idx = RUNNING_PROCESS_IDS.indexOf(pid);
151
+ while (idx >= 0) {
152
+ RUNNING_PROCESS_IDS.splice(idx, 1);
153
+ idx = RUNNING_PROCESS_IDS.indexOf(pid);
154
+ }
155
+ };
150
156
  process.once('exit', () => {
151
- if (lodash_1.default.isEmpty(RUNNING_PROCESS_IDS)) {
157
+ if (RUNNING_PROCESS_IDS.length === 0) {
152
158
  return;
153
159
  }
154
160
  const command = support_1.system.isWindows()
@@ -207,7 +213,7 @@ class GeckoDriverServer {
207
213
  }
208
214
  catch (err) {
209
215
  if (this._proxy?.didProcessExit) {
210
- throw new Error(err.message);
216
+ throw new Error(err.message, { cause: err });
211
217
  }
212
218
  return false;
213
219
  }
@@ -223,14 +229,14 @@ class GeckoDriverServer {
223
229
  }
224
230
  if (/Condition unmet/.test(e.message)) {
225
231
  throw new Error(`Gecko Driver server is not listening within ${STARTUP_TIMEOUT_MS}ms timeout. ` +
226
- `Make sure it could be started manually from a terminal`);
232
+ `Make sure it could be started manually from a terminal`, { cause: e });
227
233
  }
228
234
  throw e;
229
235
  }
230
236
  const pid = this._process.proc?.pid;
231
237
  if (pid) {
232
238
  RUNNING_PROCESS_IDS.push(pid);
233
- this._process.proc?.on('exit', () => void lodash_1.default.pull(RUNNING_PROCESS_IDS, pid));
239
+ this._process.proc?.on('exit', () => removeRunningProcessId(pid));
234
240
  }
235
241
  return (await this._proxy.command('/session', 'POST', {
236
242
  capabilities: {
@@ -1 +1 @@
1
- {"version":3,"file":"gecko.js","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gecko.js","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,9 @@ export declare function mkdirp(p: string): Promise<void>;
14
14
  /**
15
15
  * Extract a specific file from a tar.gz archive
16
16
  */
17
- export declare function extractFileFromTarGz(srcAcrhive: string, fileToExtract: string, dstPath: string): Promise<void>;
17
+ export declare function extractFileFromTarGz(srcArchive: string, fileToExtract: string, dstPath: string): Promise<void>;
18
18
  /**
19
19
  * Extract a specific file from a zip archive
20
20
  */
21
- export declare function extractFileFromZip(srcAcrhive: string, fileToExtract: string, dstPath: string): Promise<void>;
21
+ export declare function extractFileFromZip(srcArchive: string, fileToExtract: string, dstPath: string): Promise<void>;
22
22
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAKhD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAkBpE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAqBf"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAKhD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAkBpE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAqBf"}
@@ -8,7 +8,6 @@ exports.downloadToFile = downloadToFile;
8
8
  exports.mkdirp = mkdirp;
9
9
  exports.extractFileFromTarGz = extractFileFromTarGz;
10
10
  exports.extractFileFromZip = extractFileFromZip;
11
- const lodash_1 = __importDefault(require("lodash"));
12
11
  const support_1 = require("appium/support");
13
12
  const tar_stream_1 = __importDefault(require("tar-stream"));
14
13
  const node_zlib_1 = __importDefault(require("node:zlib"));
@@ -21,7 +20,7 @@ const GECKO_CAP_PREFIXES = ['moz:'];
21
20
  */
22
21
  function formatCapsForServer(caps) {
23
22
  const result = {};
24
- for (const [name, value] of lodash_1.default.toPairs(caps)) {
23
+ for (const [name, value] of Object.entries(caps)) {
25
24
  if (GECKO_CAP_PREFIXES.some((prefix) => name.startsWith(prefix)) ||
26
25
  driver_1.STANDARD_CAPS.has(name)) {
27
26
  result[name] = value;
@@ -32,7 +31,7 @@ function formatCapsForServer(caps) {
32
31
  }
33
32
  if (result.platformName) {
34
33
  // Geckodriver only supports lowercase platform names
35
- result.platformName = lodash_1.default.toLower(result.platformName);
34
+ result.platformName = result.platformName.toLowerCase();
36
35
  }
37
36
  return result;
38
37
  }
@@ -51,7 +50,7 @@ async function mkdirp(p) {
51
50
  /**
52
51
  * Extract a specific file from a tar.gz archive
53
52
  */
54
- async function extractFileFromTarGz(srcAcrhive, fileToExtract, dstPath) {
53
+ async function extractFileFromTarGz(srcArchive, fileToExtract, dstPath) {
55
54
  const chunks = [];
56
55
  const extract = tar_stream_1.default.extract();
57
56
  const extractPromise = new bluebird_1.default((resolve, reject) => {
@@ -77,20 +76,20 @@ async function extractFileFromTarGz(srcAcrhive, fileToExtract, dstPath) {
77
76
  }
78
77
  }
79
78
  else {
80
- return reject(new Error(`The file '${fileToExtract}' could not be found in the '${srcAcrhive}' archive`));
79
+ return reject(new Error(`The file '${fileToExtract}' could not be found in the '${srcArchive}' archive`));
81
80
  }
82
81
  resolve();
83
82
  });
84
83
  });
85
- support_1.fs.createReadStream(srcAcrhive).pipe(node_zlib_1.default.createGunzip()).pipe(extract);
84
+ support_1.fs.createReadStream(srcArchive).pipe(node_zlib_1.default.createGunzip()).pipe(extract);
86
85
  await extractPromise;
87
86
  }
88
87
  /**
89
88
  * Extract a specific file from a zip archive
90
89
  */
91
- async function extractFileFromZip(srcAcrhive, fileToExtract, dstPath) {
90
+ async function extractFileFromZip(srcArchive, fileToExtract, dstPath) {
92
91
  let didFindEntry = false;
93
- await support_1.zip.readEntries(srcAcrhive, async ({ entry, extractEntryTo }) => {
92
+ await support_1.zip.readEntries(srcArchive, async ({ entry, extractEntryTo }) => {
94
93
  if (didFindEntry || entry.fileName !== fileToExtract) {
95
94
  return;
96
95
  }
@@ -105,7 +104,7 @@ async function extractFileFromZip(srcAcrhive, fileToExtract, dstPath) {
105
104
  }
106
105
  });
107
106
  if (!didFindEntry) {
108
- throw new Error(`The file '${fileToExtract}' could not be found in the '${srcAcrhive}' archive`);
107
+ throw new Error(`The file '${fileToExtract}' could not be found in the '${srcArchive}' archive`);
109
108
  }
110
109
  }
111
110
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import {resolveExecutablePath} from './utils';
2
2
  import {system, doctor} from '@appium/support';
3
- import type {IDoctorCheck} from '@appium/types';
3
+ import type {AppiumLogger, IDoctorCheck} from '@appium/types';
4
4
 
5
5
  const GD_DOWNLOAD_LINK = 'https://github.com/mozilla/geckodriver/releases';
6
6
  const GD_BINARY = `geckodriver${system.isWindows() ? '.exe' : ''}`;
7
7
 
8
8
  export class GeckodriverCheck implements IDoctorCheck {
9
- log!: import('@appium/types').AppiumLogger;
9
+ log!: AppiumLogger;
10
10
 
11
11
  async diagnose() {
12
12
  const gdPath = await resolveExecutablePath(GD_BINARY);
package/lib/driver.ts CHANGED
@@ -1,4 +1,3 @@
1
- import _ from 'lodash';
2
1
  import type {
3
2
  RouteMatcher,
4
3
  DefaultCreateSessionResult,
@@ -27,7 +26,7 @@ export class GeckoDriver
27
26
  extends BaseDriver<GeckoConstraints, StringRecord>
28
27
  implements ExternalDriver<GeckoConstraints, string, StringRecord>
29
28
  {
30
- public proxyReqRes: (...args: any) => any;
29
+ public proxyReqRes: (...args: any) => any = null as any;
31
30
 
32
31
  findElOrEls = findCommands.findElOrEls;
33
32
 
@@ -37,7 +36,7 @@ export class GeckoDriver
37
36
 
38
37
  constructor(opts: InitialOpts = {} as InitialOpts) {
39
38
  super(opts);
40
- this.desiredCapConstraints = _.cloneDeep(desiredCapConstraints);
39
+ this.desiredCapConstraints = structuredClone(desiredCapConstraints);
41
40
  this.locatorStrategies = [
42
41
  'xpath',
43
42
  'tag name',
@@ -101,7 +100,7 @@ export class GeckoDriver
101
100
  ): Promise<DefaultCreateSessionResult<GeckoConstraints>> {
102
101
  const [sessionId, processedCaps] = await super.createSession(w3cCaps1, w3cCaps2, ...args);
103
102
  this._gecko = new GeckoDriverServer(this.log, processedCaps);
104
- let response: StringRecord | null = null;
103
+ let response: StringRecord;
105
104
  try {
106
105
  response = await this._gecko.start(formatCapsForServer(processedCaps), {
107
106
  reqBasePath: this.basePath,
@@ -136,7 +135,7 @@ export class GeckoDriver
136
135
 
137
136
  private _extractWebSocketUrl(response: StringRecord): string | null {
138
137
  const webSocketUrl = (response?.capabilities as any)?.webSocketUrl;
139
- if (_.isEmpty(webSocketUrl) || !_.isString(webSocketUrl)) {
138
+ if (typeof webSocketUrl !== 'string' || webSocketUrl.length === 0) {
140
139
  return null;
141
140
  }
142
141
  try {
@@ -145,7 +144,8 @@ export class GeckoDriver
145
144
  ? webSocketUrl.replace(asUrl.host, GECKO_SERVER_HOST)
146
145
  : webSocketUrl;
147
146
  } catch (e) {
148
- this.log.warn(`Failed to parse WebSocket URL from '${webSocketUrl}': ${e.message}`);
147
+ const msg = e instanceof Error ? e.message : String(e);
148
+ this.log.warn(`Failed to parse WebSocket URL from '${webSocketUrl}': ${msg}`);
149
149
  return null;
150
150
  }
151
151
  }
package/lib/gecko.ts CHANGED
@@ -1,4 +1,3 @@
1
- import _ from 'lodash';
2
1
  import os from 'node:os';
3
2
  import path from 'node:path';
4
3
  import {JWProxy, errors} from 'appium/driver';
@@ -79,7 +78,7 @@ class GeckoDriverProcess {
79
78
  const driverBin = await this.resolveGeckodriverBinary();
80
79
  const args: string[] = [];
81
80
  /* #region Options */
82
- switch (_.toLower(this.verbosity)) {
81
+ switch (this.verbosity?.toLowerCase()) {
83
82
  case VERBOSITY.DEBUG:
84
83
  args.push('-v');
85
84
  break;
@@ -90,7 +89,7 @@ class GeckoDriverProcess {
90
89
  if (this.noReset) {
91
90
  args.push('--connect-existing');
92
91
  // https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-connect-existing-code
93
- if (_.isNil(this.marionettePort)) {
92
+ if (this.marionettePort == null) {
94
93
  this.log.info(
95
94
  `'marionettePort' capability value is not provided while 'noReset' is enabled`,
96
95
  );
@@ -99,7 +98,7 @@ class GeckoDriverProcess {
99
98
  );
100
99
  }
101
100
  args.push('--marionette-port', `${this.marionettePort ?? DEFAULT_MARIONETTE_PORT}`);
102
- } else if (!_.isNil(this.marionettePort)) {
101
+ } else if (this.marionettePort != null) {
103
102
  args.push('--marionette-port', `${this.marionettePort}`);
104
103
  }
105
104
  /* #endregion */
@@ -110,7 +109,7 @@ class GeckoDriverProcess {
110
109
  }
111
110
  this._proc = new SubProcess(driverBin, args);
112
111
  this._proc.on('output', (stdout, stderr) => {
113
- const line = _.trim(stdout || stderr);
112
+ const line = (stdout || stderr).trim();
114
113
  if (line) {
115
114
  this.log.debug(`[${GD_BINARY}] ${line}`);
116
115
  }
@@ -173,8 +172,16 @@ export class GeckoProxy extends JWProxy {
173
172
  }
174
173
 
175
174
  const RUNNING_PROCESS_IDS: (number | undefined)[] = [];
175
+ const removeRunningProcessId = (pid: number): void => {
176
+ let idx = RUNNING_PROCESS_IDS.indexOf(pid);
177
+ while (idx >= 0) {
178
+ RUNNING_PROCESS_IDS.splice(idx, 1);
179
+ idx = RUNNING_PROCESS_IDS.indexOf(pid);
180
+ }
181
+ };
182
+
176
183
  process.once('exit', () => {
177
- if (_.isEmpty(RUNNING_PROCESS_IDS)) {
184
+ if (RUNNING_PROCESS_IDS.length === 0) {
178
185
  return;
179
186
  }
180
187
 
@@ -240,7 +247,7 @@ export class GeckoDriverServer {
240
247
  return true;
241
248
  } catch (err: any) {
242
249
  if (this._proxy?.didProcessExit) {
243
- throw new Error(err.message);
250
+ throw new Error(err.message, {cause: err});
244
251
  }
245
252
  return false;
246
253
  }
@@ -259,6 +266,7 @@ export class GeckoDriverServer {
259
266
  throw new Error(
260
267
  `Gecko Driver server is not listening within ${STARTUP_TIMEOUT_MS}ms timeout. ` +
261
268
  `Make sure it could be started manually from a terminal`,
269
+ {cause: e},
262
270
  );
263
271
  }
264
272
  throw e;
@@ -266,7 +274,7 @@ export class GeckoDriverServer {
266
274
  const pid = this._process.proc?.pid;
267
275
  if (pid) {
268
276
  RUNNING_PROCESS_IDS.push(pid);
269
- this._process.proc?.on('exit', () => void _.pull(RUNNING_PROCESS_IDS, pid));
277
+ this._process.proc?.on('exit', () => removeRunningProcessId(pid));
270
278
  }
271
279
 
272
280
  return (await this._proxy.command('/session', 'POST', {
package/lib/utils.ts CHANGED
@@ -1,4 +1,3 @@
1
- import _ from 'lodash';
2
1
  import {fs, net, zip, tempDir} from 'appium/support';
3
2
  import tar from 'tar-stream';
4
3
  import zlib from 'node:zlib';
@@ -14,7 +13,7 @@ const GECKO_CAP_PREFIXES = ['moz:'] as const;
14
13
  */
15
14
  export function formatCapsForServer(caps: StringRecord): StringRecord {
16
15
  const result: StringRecord = {};
17
- for (const [name, value] of _.toPairs(caps)) {
16
+ for (const [name, value] of Object.entries(caps)) {
18
17
  if (
19
18
  GECKO_CAP_PREFIXES.some((prefix) => name.startsWith(prefix)) ||
20
19
  STANDARD_CAPS.has(name as any)
@@ -27,7 +26,7 @@ export function formatCapsForServer(caps: StringRecord): StringRecord {
27
26
  }
28
27
  if (result.platformName) {
29
28
  // Geckodriver only supports lowercase platform names
30
- result.platformName = _.toLower(result.platformName);
29
+ result.platformName = result.platformName.toLowerCase();
31
30
  }
32
31
  return result;
33
32
  }
@@ -50,7 +49,7 @@ export async function mkdirp(p: string): Promise<void> {
50
49
  * Extract a specific file from a tar.gz archive
51
50
  */
52
51
  export async function extractFileFromTarGz(
53
- srcAcrhive: string,
52
+ srcArchive: string,
54
53
  fileToExtract: string,
55
54
  dstPath: string,
56
55
  ): Promise<void> {
@@ -79,7 +78,7 @@ export async function extractFileFromTarGz(
79
78
  } else {
80
79
  return reject(
81
80
  new Error(
82
- `The file '${fileToExtract}' could not be found in the '${srcAcrhive}' archive`,
81
+ `The file '${fileToExtract}' could not be found in the '${srcArchive}' archive`,
83
82
  ),
84
83
  );
85
84
  }
@@ -87,7 +86,7 @@ export async function extractFileFromTarGz(
87
86
  });
88
87
  });
89
88
 
90
- fs.createReadStream(srcAcrhive).pipe(zlib.createGunzip()).pipe(extract);
89
+ fs.createReadStream(srcArchive).pipe(zlib.createGunzip()).pipe(extract);
91
90
 
92
91
  await extractPromise;
93
92
  }
@@ -96,12 +95,12 @@ export async function extractFileFromTarGz(
96
95
  * Extract a specific file from a zip archive
97
96
  */
98
97
  export async function extractFileFromZip(
99
- srcAcrhive: string,
98
+ srcArchive: string,
100
99
  fileToExtract: string,
101
100
  dstPath: string,
102
101
  ): Promise<void> {
103
102
  let didFindEntry = false;
104
- await zip.readEntries(srcAcrhive, async ({entry, extractEntryTo}) => {
103
+ await zip.readEntries(srcArchive, async ({entry, extractEntryTo}) => {
105
104
  if (didFindEntry || entry.fileName !== fileToExtract) {
106
105
  return;
107
106
  }
@@ -117,7 +116,7 @@ export async function extractFileFromZip(
117
116
  });
118
117
  if (!didFindEntry) {
119
118
  throw new Error(
120
- `The file '${fileToExtract}' could not be found in the '${srcAcrhive}' archive`,
119
+ `The file '${fileToExtract}' could not be found in the '${srcArchive}' archive`,
121
120
  );
122
121
  }
123
122
  }
@@ -1,19 +1,18 @@
1
1
  {
2
2
  "name": "appium-geckodriver",
3
- "version": "2.2.2",
3
+ "version": "2.2.4",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-geckodriver",
9
- "version": "2.2.2",
9
+ "version": "2.2.4",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "appium-adb": "^14.0.0",
13
13
  "asyncbox": "^6.0.1",
14
14
  "axios": "^1.7.7",
15
15
  "bluebird": "^3.5.1",
16
- "lodash": "^4.17.4",
17
16
  "portscanner": "2.2.0",
18
17
  "semver": "^7.6.3",
19
18
  "tar-stream": "^3.1.7",
@@ -26,9 +25,12 @@
26
25
  "@semantic-release/changelog": "^6.0.1",
27
26
  "@semantic-release/git": "^10.0.1",
28
27
  "@types/bluebird": "^3.5.38",
29
- "@types/lodash": "^4.14.196",
28
+ "@types/chai": "^5.2.3",
29
+ "@types/chai-as-promised": "^8.0.2",
30
30
  "@types/mocha": "^10.0.1",
31
31
  "@types/node": "^25.0.0",
32
+ "@types/portscanner": "^2.1.4",
33
+ "@types/tar-stream": "^3.1.4",
32
34
  "chai": "^6.0.0",
33
35
  "chai-as-promised": "^8.0.0",
34
36
  "conventional-changelog-conventionalcommits": "^9.1.0",
@@ -64,9 +66,9 @@
64
66
  }
65
67
  },
66
68
  "node_modules/@appium/schema": {
67
- "version": "1.1.0",
68
- "resolved": "https://registry.npmjs.org/@appium/schema/-/schema-1.1.0.tgz",
69
- "integrity": "sha512-m0vTLU7mhC9RR294Nz84g+FhEQ0iZKq6p3rfz1+qfEqCXRXUvDbllSOu2tCVpBKMIoEFZAmkwjuwXobJpCnilQ==",
69
+ "version": "1.1.1",
70
+ "resolved": "https://registry.npmjs.org/@appium/schema/-/schema-1.1.1.tgz",
71
+ "integrity": "sha512-u2dHLEqnI5oHWYVsKUv3yypeu0a82+6N39awkFz5jKcxVCSbssr+Rvh0/0LOa/gwePGxi1OzjHpZzNXlr7hI7Q==",
70
72
  "license": "Apache-2.0",
71
73
  "dependencies": {
72
74
  "json-schema": "0.4.0"
@@ -77,33 +79,32 @@
77
79
  }
78
80
  },
79
81
  "node_modules/@appium/support": {
80
- "version": "7.1.1",
81
- "resolved": "https://registry.npmjs.org/@appium/support/-/support-7.1.1.tgz",
82
- "integrity": "sha512-WJewvoQxDOaVKjlvjVwifNDMQUVdCy0Edcxobl6I7pJzSE2O15Bi3BEq5AMzDpaXs7DtjZTLkHT29Tin9KHV3Q==",
82
+ "version": "7.2.2",
83
+ "resolved": "https://registry.npmjs.org/@appium/support/-/support-7.2.2.tgz",
84
+ "integrity": "sha512-SfaFg0tAy0cqHQixtyB3BdZSyv287381McIq4/Zd6J070KFGNjXhF2wDGO3f2uN5VaYugwBYz/ZQEgozh6tK8g==",
83
85
  "license": "Apache-2.0",
84
86
  "dependencies": {
85
87
  "@appium/logger": "2.0.7",
86
88
  "@appium/tsconfig": "1.1.2",
87
- "@appium/types": "1.3.1",
89
+ "@appium/types": "1.4.0",
88
90
  "@colors/colors": "1.6.0",
89
91
  "archiver": "7.0.1",
90
- "asyncbox": "6.1.0",
91
- "axios": "1.15.0",
92
+ "asyncbox": "6.2.0",
93
+ "axios": "1.16.0",
92
94
  "base64-stream": "1.0.0",
93
95
  "bluebird": "3.7.2",
94
96
  "bplist-creator": "0.1.1",
95
97
  "bplist-parser": "0.3.2",
96
98
  "form-data": "4.0.5",
97
99
  "get-stream": "9.0.1",
98
- "glob": "13.0.6",
100
+ "glob": "13.0.5",
99
101
  "jsftp": "2.1.3",
100
102
  "klaw": "4.1.0",
101
103
  "lockfile": "1.0.4",
102
- "lodash": "4.18.1",
103
104
  "log-symbols": "7.0.1",
104
105
  "ncp": "2.0.0",
105
106
  "package-directory": "8.2.0",
106
- "plist": "3.1.0",
107
+ "plist": "4.0.0",
107
108
  "pluralize": "8.0.0",
108
109
  "read-pkg": "10.1.0",
109
110
  "resolve-from": "5.0.0",
@@ -111,7 +112,7 @@
111
112
  "semver": "7.7.4",
112
113
  "shell-quote": "1.8.3",
113
114
  "supports-color": "10.2.2",
114
- "teen_process": "4.1.1",
115
+ "teen_process": "4.1.3",
115
116
  "type-fest": "5.6.0",
116
117
  "uuid": "14.0.0",
117
118
  "which": "6.0.1",
@@ -125,31 +126,31 @@
125
126
  "sharp": "0.34.5"
126
127
  }
127
128
  },
128
- "node_modules/@appium/support/node_modules/axios": {
129
- "version": "1.15.0",
130
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz",
131
- "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==",
132
- "license": "MIT",
133
- "dependencies": {
134
- "follow-redirects": "^1.15.11",
135
- "form-data": "^4.0.5",
136
- "proxy-from-env": "^2.1.0"
137
- }
138
- },
139
- "node_modules/@appium/support/node_modules/teen_process": {
140
- "version": "4.1.1",
141
- "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-4.1.1.tgz",
142
- "integrity": "sha512-E9gaYuVaWrvbxzZDgZ/MjWkPKqiKETBWSRy06qz1GOyKU22mI76JrxzaGbeddcHcmW8ZFXPowPv1ad3a7S+Xvg==",
129
+ "node_modules/@appium/support/node_modules/asyncbox": {
130
+ "version": "6.2.0",
131
+ "resolved": "https://registry.npmjs.org/asyncbox/-/asyncbox-6.2.0.tgz",
132
+ "integrity": "sha512-z1XpHkoT3y+1aXfazEY5d7HN2eOi50fLq7ZTxG0H4WegLxrtEAI5Vsc6OR9dOwoC3SJQLXyV0ZVnPEh6GIgMKQ==",
143
133
  "license": "Apache-2.0",
144
134
  "dependencies": {
145
- "lodash": "^4.17.21",
146
- "shell-quote": "^1.8.1"
135
+ "p-limit": "^7.2.0"
147
136
  },
148
137
  "engines": {
149
138
  "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
150
139
  "npm": ">=10"
151
140
  }
152
141
  },
142
+ "node_modules/@appium/support/node_modules/semver": {
143
+ "version": "7.7.4",
144
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
145
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
146
+ "license": "ISC",
147
+ "bin": {
148
+ "semver": "bin/semver.js"
149
+ },
150
+ "engines": {
151
+ "node": ">=10"
152
+ }
153
+ },
153
154
  "node_modules/@appium/tsconfig": {
154
155
  "version": "1.1.2",
155
156
  "resolved": "https://registry.npmjs.org/@appium/tsconfig/-/tsconfig-1.1.2.tgz",
@@ -164,13 +165,13 @@
164
165
  }
165
166
  },
166
167
  "node_modules/@appium/types": {
167
- "version": "1.3.1",
168
- "resolved": "https://registry.npmjs.org/@appium/types/-/types-1.3.1.tgz",
169
- "integrity": "sha512-SWTntQ8EAI1m6P2LWqcqASGkRLk5HiKv2V2x7DSfknS8AsiF2ymr6T6oPJ7hUrTkEUA/3ncTSZji5Oq4h5TjzA==",
168
+ "version": "1.4.0",
169
+ "resolved": "https://registry.npmjs.org/@appium/types/-/types-1.4.0.tgz",
170
+ "integrity": "sha512-GeYnDMj1yOIFA8ujOHv0/ZKoZe42F9ldCVSlnEOheYnxqA5ueHGwRI11ifZoIfMBsq7hpU77MAzmu+v9NV1vig==",
170
171
  "license": "Apache-2.0",
171
172
  "dependencies": {
172
173
  "@appium/logger": "2.0.7",
173
- "@appium/schema": "1.1.0",
174
+ "@appium/schema": "1.1.1",
174
175
  "@appium/tsconfig": "1.1.2",
175
176
  "type-fest": "5.6.0"
176
177
  },
@@ -388,12 +389,12 @@
388
389
  "license": "MIT"
389
390
  },
390
391
  "node_modules/@xmldom/xmldom": {
391
- "version": "0.8.13",
392
- "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz",
393
- "integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==",
392
+ "version": "0.9.10",
393
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz",
394
+ "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==",
394
395
  "license": "MIT",
395
396
  "engines": {
396
- "node": ">=10.0.0"
397
+ "node": ">=14.6"
397
398
  }
398
399
  },
399
400
  "node_modules/abort-controller": {
@@ -436,17 +437,15 @@
436
437
  }
437
438
  },
438
439
  "node_modules/appium-adb": {
439
- "version": "14.3.3",
440
- "resolved": "https://registry.npmjs.org/appium-adb/-/appium-adb-14.3.3.tgz",
441
- "integrity": "sha512-prK1cwmhjdPvsObArul4k/5eW6STpvGJUVmuf41qxbv1JXbmV2GZmds0OhORXjOXaELsqKRqf86+mRS2PEBEFA==",
440
+ "version": "14.5.0",
441
+ "resolved": "https://registry.npmjs.org/appium-adb/-/appium-adb-14.5.0.tgz",
442
+ "integrity": "sha512-7o+zmfSqODMH98YrCd1ryaJGv5KTr7mmLLalPp8DJzbtuncuuTrFI5R+WfSWs10WEWxxsT3Kqfv7s8f/OmB8sQ==",
442
443
  "license": "Apache-2.0",
443
444
  "dependencies": {
444
- "@appium/support": "^7.0.0-rc.1",
445
+ "@appium/support": "^7.2.2",
445
446
  "async-lock": "^1.0.0",
446
447
  "asyncbox": "^6.0.1",
447
- "bluebird": "^3.4.7",
448
448
  "ini": "^6.0.0",
449
- "lodash": "^4.0.0",
450
449
  "lru-cache": "^11.1.0",
451
450
  "semver": "^7.0.0",
452
451
  "teen_process": "^4.0.4"
@@ -492,6 +491,12 @@
492
491
  "node": ">= 14"
493
492
  }
494
493
  },
494
+ "node_modules/archiver-utils/node_modules/balanced-match": {
495
+ "version": "1.0.2",
496
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
497
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
498
+ "license": "MIT"
499
+ },
495
500
  "node_modules/archiver-utils/node_modules/brace-expansion": {
496
501
  "version": "2.1.0",
497
502
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
@@ -579,9 +584,9 @@
579
584
  "license": "MIT"
580
585
  },
581
586
  "node_modules/asyncbox": {
582
- "version": "6.1.0",
583
- "resolved": "https://registry.npmjs.org/asyncbox/-/asyncbox-6.1.0.tgz",
584
- "integrity": "sha512-KZwKNVnDdDe0ubN+fFMuHhSljZNHnbjdJABImoqFzQP61oIg6sMlhXIqOIu3WRd7YwW89q+eVj2Ty/Ax5dbh2Q==",
587
+ "version": "6.3.0",
588
+ "resolved": "https://registry.npmjs.org/asyncbox/-/asyncbox-6.3.0.tgz",
589
+ "integrity": "sha512-7IFpnQDltd5rYQjhIJIpyismJtdWmw/pOABZKJfv2WVo0a6iYh2ZzUuCJJclae5mBtK0H/EychxXg91GB7rGdQ==",
585
590
  "license": "Apache-2.0",
586
591
  "dependencies": {
587
592
  "p-limit": "^7.2.0"
@@ -598,12 +603,12 @@
598
603
  "license": "MIT"
599
604
  },
600
605
  "node_modules/axios": {
601
- "version": "1.15.2",
602
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.2.tgz",
603
- "integrity": "sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A==",
606
+ "version": "1.16.0",
607
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz",
608
+ "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==",
604
609
  "license": "MIT",
605
610
  "dependencies": {
606
- "follow-redirects": "^1.15.11",
611
+ "follow-redirects": "^1.16.0",
607
612
  "form-data": "^4.0.5",
608
613
  "proxy-from-env": "^2.1.0"
609
614
  }
@@ -623,10 +628,13 @@
623
628
  }
624
629
  },
625
630
  "node_modules/balanced-match": {
626
- "version": "1.0.2",
627
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
628
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
629
- "license": "MIT"
631
+ "version": "4.0.4",
632
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
633
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
634
+ "license": "MIT",
635
+ "engines": {
636
+ "node": "18 || 20 || >=22"
637
+ }
630
638
  },
631
639
  "node_modules/bare-events": {
632
640
  "version": "2.8.2",
@@ -667,9 +675,9 @@
667
675
  }
668
676
  },
669
677
  "node_modules/bare-os": {
670
- "version": "3.9.0",
671
- "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.0.tgz",
672
- "integrity": "sha512-JTjuZyNIDpw+GytMO4a6TK1VXdVKKJr6DRxEHasyuYyShV2deuiHJK/ahGZlebc+SG0/wJCB9XK8gprBGDFi/Q==",
678
+ "version": "3.9.1",
679
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.1.tgz",
680
+ "integrity": "sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ==",
673
681
  "license": "Apache-2.0",
674
682
  "engines": {
675
683
  "bare": ">=1.14.0"
@@ -711,9 +719,9 @@
711
719
  }
712
720
  },
713
721
  "node_modules/bare-url": {
714
- "version": "2.4.2",
715
- "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.2.tgz",
716
- "integrity": "sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A==",
722
+ "version": "2.4.3",
723
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.3.tgz",
724
+ "integrity": "sha512-Kccpc7ACfXaxfeInfqKcZtW4pT5YBn1mesc4sCsun6sRwtbJ4h+sNOaksUpYEJUKfN65YWC6Bw2OJEFiKxq8nQ==",
717
725
  "license": "Apache-2.0",
718
726
  "dependencies": {
719
727
  "bare-path": "^3.0.0"
@@ -781,6 +789,18 @@
781
789
  "node": ">= 5.10.0"
782
790
  }
783
791
  },
792
+ "node_modules/brace-expansion": {
793
+ "version": "5.0.6",
794
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
795
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
796
+ "license": "MIT",
797
+ "dependencies": {
798
+ "balanced-match": "^4.0.2"
799
+ },
800
+ "engines": {
801
+ "node": "18 || 20 || >=22"
802
+ }
803
+ },
784
804
  "node_modules/buffer-crc32": {
785
805
  "version": "1.0.0",
786
806
  "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz",
@@ -1326,9 +1346,9 @@
1326
1346
  }
1327
1347
  },
1328
1348
  "node_modules/get-east-asian-width": {
1329
- "version": "1.5.0",
1330
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
1331
- "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
1349
+ "version": "1.6.0",
1350
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz",
1351
+ "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==",
1332
1352
  "extraneous": true,
1333
1353
  "license": "MIT",
1334
1354
  "engines": {
@@ -1404,53 +1424,17 @@
1404
1424
  }
1405
1425
  },
1406
1426
  "node_modules/glob": {
1407
- "version": "13.0.6",
1408
- "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
1409
- "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
1427
+ "version": "13.0.5",
1428
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.5.tgz",
1429
+ "integrity": "sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw==",
1410
1430
  "license": "BlueOak-1.0.0",
1411
1431
  "dependencies": {
1412
- "minimatch": "^10.2.2",
1413
- "minipass": "^7.1.3",
1414
- "path-scurry": "^2.0.2"
1415
- },
1416
- "engines": {
1417
- "node": "18 || 20 || >=22"
1418
- },
1419
- "funding": {
1420
- "url": "https://github.com/sponsors/isaacs"
1421
- }
1422
- },
1423
- "node_modules/glob/node_modules/balanced-match": {
1424
- "version": "4.0.4",
1425
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
1426
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
1427
- "license": "MIT",
1428
- "engines": {
1429
- "node": "18 || 20 || >=22"
1430
- }
1431
- },
1432
- "node_modules/glob/node_modules/brace-expansion": {
1433
- "version": "5.0.5",
1434
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
1435
- "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
1436
- "license": "MIT",
1437
- "dependencies": {
1438
- "balanced-match": "^4.0.2"
1439
- },
1440
- "engines": {
1441
- "node": "18 || 20 || >=22"
1442
- }
1443
- },
1444
- "node_modules/glob/node_modules/minimatch": {
1445
- "version": "10.2.5",
1446
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
1447
- "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
1448
- "license": "BlueOak-1.0.0",
1449
- "dependencies": {
1450
- "brace-expansion": "^5.0.5"
1432
+ "minimatch": "^10.2.1",
1433
+ "minipass": "^7.1.2",
1434
+ "path-scurry": "^2.0.0"
1451
1435
  },
1452
1436
  "engines": {
1453
- "node": "18 || 20 || >=22"
1437
+ "node": "20 || >=22"
1454
1438
  },
1455
1439
  "funding": {
1456
1440
  "url": "https://github.com/sponsors/isaacs"
@@ -1524,9 +1508,9 @@
1524
1508
  }
1525
1509
  },
1526
1510
  "node_modules/hosted-git-info": {
1527
- "version": "9.0.2",
1528
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz",
1529
- "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==",
1511
+ "version": "9.0.3",
1512
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz",
1513
+ "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==",
1530
1514
  "license": "ISC",
1531
1515
  "dependencies": {
1532
1516
  "lru-cache": "^11.1.0"
@@ -1802,6 +1786,21 @@
1802
1786
  "node": ">=6"
1803
1787
  }
1804
1788
  },
1789
+ "node_modules/minimatch": {
1790
+ "version": "10.2.5",
1791
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
1792
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
1793
+ "license": "BlueOak-1.0.0",
1794
+ "dependencies": {
1795
+ "brace-expansion": "^5.0.5"
1796
+ },
1797
+ "engines": {
1798
+ "node": "18 || 20 || >=22"
1799
+ },
1800
+ "funding": {
1801
+ "url": "https://github.com/sponsors/isaacs"
1802
+ }
1803
+ },
1805
1804
  "node_modules/minipass": {
1806
1805
  "version": "7.1.3",
1807
1806
  "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
@@ -1985,17 +1984,16 @@
1985
1984
  "license": "ISC"
1986
1985
  },
1987
1986
  "node_modules/plist": {
1988
- "version": "3.1.0",
1989
- "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
1990
- "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==",
1987
+ "version": "4.0.0",
1988
+ "resolved": "https://registry.npmjs.org/plist/-/plist-4.0.0.tgz",
1989
+ "integrity": "sha512-4dOqNo0Y2NpfSf9q4+zr4bh7pzNWeckIam34Z0KYJhg8qtNNfh59VbD+Yna5SjwcxawVvLKx5w5FtuCijpEF4Q==",
1991
1990
  "license": "MIT",
1992
1991
  "dependencies": {
1993
- "@xmldom/xmldom": "^0.8.8",
1994
- "base64-js": "^1.5.1",
1992
+ "@xmldom/xmldom": "^0.9.10",
1995
1993
  "xmlbuilder": "^15.1.1"
1996
1994
  },
1997
1995
  "engines": {
1998
- "node": ">=10.4.0"
1996
+ "node": ">=18"
1999
1997
  }
2000
1998
  },
2001
1999
  "node_modules/pluralize": {
@@ -2122,6 +2120,12 @@
2122
2120
  "minimatch": "^5.1.0"
2123
2121
  }
2124
2122
  },
2123
+ "node_modules/readdir-glob/node_modules/balanced-match": {
2124
+ "version": "1.0.2",
2125
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
2126
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
2127
+ "license": "MIT"
2128
+ },
2125
2129
  "node_modules/readdir-glob/node_modules/brace-expansion": {
2126
2130
  "version": "2.1.0",
2127
2131
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
@@ -2175,9 +2179,9 @@
2175
2179
  }
2176
2180
  },
2177
2181
  "node_modules/semver": {
2178
- "version": "7.7.4",
2179
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
2180
- "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
2182
+ "version": "7.8.0",
2183
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz",
2184
+ "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==",
2181
2185
  "license": "ISC",
2182
2186
  "bin": {
2183
2187
  "semver": "bin/semver.js"
@@ -2476,12 +2480,11 @@
2476
2480
  }
2477
2481
  },
2478
2482
  "node_modules/teen_process": {
2479
- "version": "4.1.2",
2480
- "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-4.1.2.tgz",
2481
- "integrity": "sha512-MLmWBU1vLjzYuz0BMWtEnriZl9ikFiCQWUKTmVIhnOErJ7jlHOIUEaqrPFGr0lCMxN6hhUl5pPGc3ya7Huj3jA==",
2483
+ "version": "4.1.3",
2484
+ "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-4.1.3.tgz",
2485
+ "integrity": "sha512-8W7Xp7WtJ5ZXjv0iHMsCgPPKzUt6ACfG/rDWX0tMIlMJaYcTYsPw3ZQQ9+hG7YsY+gm+DUATiyah3AraJ9JYpg==",
2482
2486
  "license": "Apache-2.0",
2483
2487
  "dependencies": {
2484
- "lodash": "^4.17.21",
2485
2488
  "shell-quote": "^1.8.1"
2486
2489
  },
2487
2490
  "engines": {
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "seamonkey",
8
8
  "firefox"
9
9
  ],
10
- "version": "2.2.2",
10
+ "version": "2.2.4",
11
11
  "author": "Appium Contributors",
12
12
  "license": "Apache-2.0",
13
13
  "repository": {
@@ -62,7 +62,6 @@
62
62
  "asyncbox": "^6.0.1",
63
63
  "axios": "^1.7.7",
64
64
  "bluebird": "^3.5.1",
65
- "lodash": "^4.17.4",
66
65
  "portscanner": "2.2.0",
67
66
  "semver": "^7.6.3",
68
67
  "tar-stream": "^3.1.7",
@@ -88,9 +87,12 @@
88
87
  "@semantic-release/changelog": "^6.0.1",
89
88
  "@semantic-release/git": "^10.0.1",
90
89
  "@types/bluebird": "^3.5.38",
91
- "@types/lodash": "^4.14.196",
90
+ "@types/chai": "^5.2.3",
91
+ "@types/chai-as-promised": "^8.0.2",
92
92
  "@types/mocha": "^10.0.1",
93
93
  "@types/node": "^25.0.0",
94
+ "@types/portscanner": "^2.1.4",
95
+ "@types/tar-stream": "^3.1.4",
94
96
  "chai": "^6.0.0",
95
97
  "chai-as-promised": "^8.0.0",
96
98
  "conventional-changelog-conventionalcommits": "^9.1.0",
@@ -1,6 +1,5 @@
1
1
  import axios from 'axios';
2
2
  import * as semver from 'semver';
3
- import _ from 'lodash';
4
3
  import path from 'node:path';
5
4
  import { tmpdir } from 'node:os';
6
5
  import { log } from '../build/lib/logger.js';
@@ -21,7 +20,8 @@ const API_TIMEOUT_MS = 45 * 1000;
21
20
  const STABLE_VERSION = 'stable';
22
21
  const EXT_TAR_GZ = '.tar.gz';
23
22
  const EXT_ZIP = '.zip';
24
- const EXT_REGEXP = new RegExp(`(${_.escapeRegExp(EXT_TAR_GZ)}|${_.escapeRegExp(EXT_ZIP)})$`);
23
+ const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
24
+ const EXT_REGEXP = new RegExp(`(${escapeRegExp(EXT_TAR_GZ)}|${escapeRegExp(EXT_ZIP)})$`);
25
25
  const ARCHIVE_NAME_PREFIX = 'geckodriver-v';
26
26
  const ARCH_MAPPING = Object.freeze({
27
27
  ia32: '32',
@@ -56,7 +56,7 @@ function parseNextPageUrl(headers) {
56
56
  }
57
57
 
58
58
  for (const part of headers.link.split(';')) {
59
- const [rel, pageUrl] = part.split(',').map(_.trim);
59
+ const [rel, pageUrl] = part.split(',').map((item) => item.trim());
60
60
  if (rel === 'rel="next"' && pageUrl) {
61
61
  return pageUrl.replace(/^<|>$/g, '');
62
62
  }
@@ -123,8 +123,8 @@ async function listReleases() {
123
123
  const assetName = asset?.name;
124
124
  const downloadUrl = asset?.browser_download_url;
125
125
  if (
126
- !_.startsWith(assetName, ARCHIVE_NAME_PREFIX)
127
- || !(_.endsWith(assetName, EXT_TAR_GZ) || _.endsWith(assetName, EXT_ZIP))
126
+ !assetName?.startsWith(ARCHIVE_NAME_PREFIX)
127
+ || !(assetName?.endsWith(EXT_TAR_GZ) || assetName?.endsWith(EXT_ZIP))
128
128
  || !downloadUrl
129
129
  ) {
130
130
  continue;
@@ -154,7 +154,7 @@ function selectRelease(releases, version) {
154
154
  const stableReleasesAsc = releases
155
155
  .filter(({isDraft, isPrerelease}) => !isDraft && !isPrerelease)
156
156
  .toSorted((a, b) => a.version.compare(b.version));
157
- const dstRelease = _.last(stableReleasesAsc);
157
+ const dstRelease = stableReleasesAsc.at(-1);
158
158
  if (!dstRelease) {
159
159
  throw new Error(`Cannot find any stable GeckoDriver release: ${JSON.stringify(releases)}`);
160
160
  }
@@ -180,7 +180,7 @@ function selectRelease(releases, version) {
180
180
  * @returns {ReleaseAsset}
181
181
  */
182
182
  function selectAsset(release) {
183
- if (_.isEmpty(release.assets)) {
183
+ if (release.assets.length === 0) {
184
184
  throw new Error(`GeckoDriver v${release.version} does not contain any matching releases`);
185
185
  }
186
186
  const dstPlatform = PLATFORM_MAPPING[process.platform];
@@ -189,7 +189,7 @@ function selectAsset(release) {
189
189
  /** @type {(filterFunc: (string) => boolean) => null|ReleaseAsset} */
190
190
  const findAssetMatch = (filterFunc) => {
191
191
  for (const asset of release.assets) {
192
- if (!dstPlatform || !_.includes(asset.name, `-${dstPlatform}`)) {
192
+ if (!dstPlatform || !asset.name.includes(`-${dstPlatform}`)) {
193
193
  continue;
194
194
  }
195
195
  const nameWoExt = asset.name.replace(EXT_REGEXP, '');
@@ -203,8 +203,8 @@ function selectAsset(release) {
203
203
  // Try to find an exact match
204
204
  const exactMatch = findAssetMatch(
205
205
  (nameWoExt) =>
206
- (dstArch === 'aarch64' && _.endsWith(nameWoExt, `-${dstArch}`))
207
- || (['64', '32'].includes(dstArch) && _.endsWith(nameWoExt, `-${dstPlatform}${dstArch}`))
206
+ (dstArch === 'aarch64' && nameWoExt.endsWith(`-${dstArch}`))
207
+ || (['64', '32'].includes(dstArch) && nameWoExt.endsWith(`-${dstPlatform}${dstArch}`))
208
208
  );
209
209
  if (exactMatch) {
210
210
  return exactMatch;
@@ -212,8 +212,8 @@ function selectAsset(release) {
212
212
  // If no exact match has been been found then try a loose one
213
213
  const looseMatch = findAssetMatch(
214
214
  (nameWoExt) =>
215
- _.endsWith(nameWoExt, `-${dstPlatform}`)
216
- || (dstArch === '64' && _.endsWith(nameWoExt, `-${dstPlatform}32`))
215
+ nameWoExt.endsWith(`-${dstPlatform}`)
216
+ || (dstArch === '64' && nameWoExt.endsWith(`-${dstPlatform}32`))
217
217
  );
218
218
  if (looseMatch) {
219
219
  return looseMatch;