appium-mac2-driver 1.19.0 → 1.20.0

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,17 @@
1
+ ## [1.20.0](https://github.com/appium/appium-mac2-driver/compare/v1.19.1...v1.20.0) (2024-10-13)
2
+
3
+
4
+ ### Features
5
+
6
+ * Switch the XML-related stuff to use NSXMLDocument ([#314](https://github.com/appium/appium-mac2-driver/issues/314)) ([5ef3581](https://github.com/appium/appium-mac2-driver/commit/5ef35813eb1c66b5e9231f70f1dfb8a2c89e0642))
7
+
8
+ ## [1.19.1](https://github.com/appium/appium-mac2-driver/compare/v1.19.0...v1.19.1) (2024-08-02)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * Update script import ([22ee3f5](https://github.com/appium/appium-mac2-driver/commit/22ee3f5613022e8a0f4fac3b81510308cb275be0))
14
+
1
15
  ## [1.19.0](https://github.com/appium/appium-mac2-driver/compare/v1.18.2...v1.19.0) (2024-08-01)
2
16
 
3
17
 
package/README.md CHANGED
@@ -739,6 +739,17 @@ The Mac2 driver supports the following scripts:
739
739
  Run `appium driver run mac2 open-wda` to open the bundled WebDriverAgentMac source in Xcode and to print the path to the main .xcodeproj file into the Terminal.
740
740
 
741
741
 
742
+ ## Troubleshooting
743
+
744
+ ### "WebDriverAgentRunner-Runner is from unidentified developer" system alert is shown on session startup
745
+
746
+ This is a macOS security feature and it cannot be disabled.
747
+ The only way to workaround this behavior is to configure digital signing for WDA.
748
+ Check [the Stackoverlow thread](https://stackoverflow.com/questions/41062607/osx-complains-that-app-is-from-unidentified-developer-although-it-passes-all-va)
749
+ for more details on how to do it. Use the [open-wda driver script](#open-wda) to quickly
750
+ open WebDriverAgent sources in Xcode.
751
+
752
+
742
753
  ## Examples
743
754
 
744
755
  ```python
@@ -95,6 +95,16 @@
95
95
  XCTAssertEqualObjects([matches objectAtIndex:2].identifier, @"_XCUI:MinimizeWindow");
96
96
  }
97
97
 
98
+ - (void)testMultipleDescendantsWithXPath2
99
+ {
100
+ NSString *query = @"*//XCUIElementTypeButton[matches(@identifier, \"_xcui:\", \"i\")]";
101
+ NSArray<XCUIElement *> *matches = [self.testedApplication fb_descendantsMatchingXPathQuery:query
102
+ shouldReturnAfterFirstMatch:NO];
103
+ XCTAssertTrue(matches.count >= 3);
104
+ XCTAssertEqualObjects(matches.firstObject.identifier, @"_XCUI:CloseWindow");
105
+ XCTAssertEqualObjects([matches objectAtIndex:2].identifier, @"_XCUI:MinimizeWindow");
106
+ }
107
+
98
108
  - (void)testSingleDescendantWithClassChain
99
109
  {
100
110
  NSString *query = @"**/XCUIElementTypeButton[`identifier == '_XCUI:CloseWindow'`]";
@@ -19,22 +19,6 @@
19
19
  #import "NSString+FBXMLSafeString.h"
20
20
  #import "XCUIElementQuery+AMHelpers.h"
21
21
 
22
- #ifdef __clang__
23
- #pragma clang diagnostic push
24
- #pragma clang diagnostic ignored "-Wpadded"
25
- #endif
26
-
27
- #import <libxml/tree.h>
28
- #import <libxml/parser.h>
29
- #import <libxml/xpath.h>
30
- #import <libxml/xpathInternals.h>
31
- #import <libxml/encoding.h>
32
- #import <libxml/xmlwriter.h>
33
-
34
- #ifdef __clang__
35
- #pragma clang diagnostic pop
36
- #endif
37
-
38
22
 
39
23
  @interface FBElementAttribute : NSObject
40
24
 
@@ -43,7 +27,7 @@
43
27
  + (nonnull NSString *)name;
44
28
  + (nullable NSString *)valueForElement:(id<XCUIElementSnapshot>)element;
45
29
 
46
- + (int)recordWithWriter:(xmlTextWriterPtr)writer forElement:(id<XCUIElementSnapshot>)element;
30
+ + (void)recordWithNode:(NSXMLElement *)node forElement:(id<XCUIElementSnapshot>)element;
47
31
 
48
32
  + (NSArray<Class> *)supportedAttributes;
49
33
 
@@ -105,12 +89,10 @@
105
89
 
106
90
  @property (nonatomic, nonnull, readonly) NSString* indexValue;
107
91
 
108
- + (int)recordWithWriter:(xmlTextWriterPtr)writer forValue:(NSString *)value;
92
+ + (void)recordWithNode:(NSXMLElement *)node forValue:(NSString *)value;
109
93
 
110
94
  @end
111
95
 
112
- const static char *_UTF8Encoding = "UTF-8";
113
-
114
96
  static NSString *const kXMLIndexPathKey = @"private_indexPath";
115
97
 
116
98
 
@@ -131,25 +113,8 @@ static NSString *const kXMLIndexPathKey = @"private_indexPath";
131
113
  [FBLogger logFmt:@"The snapshot of %@ cannot be taken. Original error: %@", root.description, error.description];
132
114
  return nil;
133
115
  }
134
-
135
- xmlDocPtr doc;
136
- xmlTextWriterPtr writer = xmlNewTextWriterDoc(&doc, 0);
137
- int rc = [self xmlRepresentationWithRootElement:snapshot
138
- writer:writer
139
- query:nil];
140
- if (rc < 0) {
141
- xmlFreeTextWriter(writer);
142
- xmlFreeDoc(doc);
143
- return nil;
144
- }
145
- int buffersize;
146
- xmlChar *xmlbuff;
147
- xmlDocDumpFormatMemory(doc, &xmlbuff, &buffersize, 1);
148
- xmlFreeTextWriter(writer);
149
- xmlFreeDoc(doc);
150
- NSString *result = [NSString stringWithCString:(const char *)xmlbuff encoding:NSUTF8StringEncoding];
151
- xmlFree(xmlbuff);
152
- return result;
116
+
117
+ return [self xmlRepresentationWithRootElement:snapshot].XMLString;
153
118
  }
154
119
 
155
120
  + (NSArray<XCUIElement *> *)matchesWithRootElement:(XCUIElement *)root
@@ -165,64 +130,44 @@ static NSString *const kXMLIndexPathKey = @"private_indexPath";
165
130
  userInfo:@{}];
166
131
  }
167
132
 
168
- xmlDocPtr doc;
169
- xmlTextWriterPtr writer = xmlNewTextWriterDoc(&doc, 0);
170
- if (NULL == writer) {
171
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlNewTextWriterDoc for XPath query \"%@\"", xpathQuery];
172
- return [self throwException:FBXPathQueryEvaluationException forQuery:xpathQuery];
173
- }
174
- int rc = [self xmlRepresentationWithRootElement:snapshot
175
- writer:writer
176
- query:xpathQuery];
177
- if (rc < 0) {
178
- xmlFreeTextWriter(writer);
179
- xmlFreeDoc(doc);
180
- return [self throwException:FBXPathQueryEvaluationException forQuery:xpathQuery];
181
- }
182
-
183
- xmlXPathObjectPtr queryResult = [self evaluate:xpathQuery document:doc];
184
- if (NULL == queryResult) {
185
- xmlFreeTextWriter(writer);
186
- xmlFreeDoc(doc);
187
- return [self throwException:FBInvalidXPathException forQuery:xpathQuery];
133
+ NSXMLElement *rootElement = [self writeXmlWithRootSnapshot:snapshot
134
+ indexPath:[AMSnapshotUtils hashWithSnapshot:snapshot]];
135
+ NSArray<__kindof NSXMLNode *> *matches = [rootElement nodesForXPath:xpathQuery error:&error];
136
+ if (nil == matches) {
137
+ @throw [NSException exceptionWithName:FBInvalidXPathException
138
+ reason:error.description
139
+ userInfo:@{}];
188
140
  }
189
141
 
190
- NSArray *matchingElements = [self collectMatchingElementsWithNodeSet:queryResult->nodesetval
191
- rootElement:root
192
- rootSnapshot:snapshot
193
- includeOnlyFirstMatch:firstMatch];
194
- xmlXPathFreeObject(queryResult);
195
- xmlFreeTextWriter(writer);
196
- xmlFreeDoc(doc);
142
+ NSArray *matchingElements = [self collectMatchingElementsWithNodes:matches
143
+ rootElement:root
144
+ rootSnapshot:snapshot
145
+ includeOnlyFirstMatch:firstMatch];
197
146
  if (nil == matchingElements) {
198
147
  return [self throwException:FBXPathQueryEvaluationException forQuery:xpathQuery];
199
148
  }
200
149
  return matchingElements;
201
150
  }
202
151
 
203
- + (NSArray *)collectMatchingElementsWithNodeSet:(xmlNodeSetPtr)nodeSet
204
- rootElement:(XCUIElement *)rootElement
205
- rootSnapshot:(id<XCUIElementSnapshot>)rootSnapshot
206
- includeOnlyFirstMatch:(BOOL)firstMatch
152
+ + (NSArray *)collectMatchingElementsWithNodes:(NSArray<__kindof NSXMLNode *> *)nodes
153
+ rootElement:(XCUIElement *)rootElement
154
+ rootSnapshot:(id<XCUIElementSnapshot>)rootSnapshot
155
+ includeOnlyFirstMatch:(BOOL)firstMatch
207
156
  {
208
- if (xmlXPathNodeSetIsEmpty(nodeSet)) {
157
+ if (0 == nodes.count) {
209
158
  return @[];
210
159
  }
211
160
 
212
- const xmlChar *indexPathKeyName = (xmlChar *)[kXMLIndexPathKey UTF8String];
213
161
  NSMutableArray<NSString *> *hashes = [NSMutableArray array];
214
- for (NSInteger i = 0; i < nodeSet->nodeNr; i++) {
215
- xmlNodePtr currentNode = nodeSet->nodeTab[i];
216
- xmlChar *attrValue = xmlGetProp(currentNode, indexPathKeyName);
217
- if (NULL == attrValue) {
218
- [FBLogger log:@"Failed to invoke libxml2>xmlGetProp"];
219
- return nil;
162
+ for (NSXMLNode *node in nodes) {
163
+ if (![node isKindOfClass:NSXMLElement.class]) {
164
+ continue;
220
165
  }
221
-
222
- NSString *hash = [NSString stringWithCString:(const char *)attrValue
223
- encoding:NSUTF8StringEncoding];
224
- [hashes addObject:hash];
225
- xmlFree(attrValue);
166
+ NSString *attrValue = [[(NSXMLElement *)node attributeForName:kXMLIndexPathKey] stringValue];
167
+ if (nil == attrValue) {
168
+ continue;
169
+ }
170
+ [hashes addObject:attrValue];
226
171
  }
227
172
  NSMutableArray<XCUIElement *> *matchingElements = [NSMutableArray array];
228
173
  NSString *selfHash = [AMSnapshotUtils hashWithSnapshot:rootSnapshot];
@@ -241,49 +186,13 @@ static NSString *const kXMLIndexPathKey = @"private_indexPath";
241
186
  : matchingElements.copy;
242
187
  }
243
188
 
244
- + (int)xmlRepresentationWithRootElement:(id<XCUIElementSnapshot>)root
245
- writer:(xmlTextWriterPtr)writer
246
- query:(nullable NSString*)query
189
+ + (NSXMLDocument *)xmlRepresentationWithRootElement:(id<XCUIElementSnapshot>)root
247
190
  {
248
- int rc = xmlTextWriterStartDocument(writer, NULL, _UTF8Encoding, NULL);
249
- if (rc < 0) {
250
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterStartDocument. Error code: %d", rc];
251
- return rc;
252
- }
253
-
254
- NSString *index = [AMSnapshotUtils hashWithSnapshot:root];
255
- rc = [self writeXmlWithRootElement:root
256
- indexPath:(query != nil ? index : nil)
257
- writer:writer];
258
- if (rc < 0) {
259
- [FBLogger log:@"Failed to generate XML presentation of a screen element"];
260
- return rc;
261
- }
262
- rc = xmlTextWriterEndDocument(writer);
263
- if (rc < 0) {
264
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlXPathNewContext. Error code: %d", rc];
265
- return rc;
266
- }
267
- return 0;
268
- }
269
-
270
- + (xmlXPathObjectPtr)evaluate:(NSString *)xpathQuery document:(xmlDocPtr)doc
271
- {
272
- xmlXPathContextPtr xpathCtx = xmlXPathNewContext(doc);
273
- if (NULL == xpathCtx) {
274
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlXPathNewContext for XPath query \"%@\"", xpathQuery];
275
- return NULL;
276
- }
277
- xpathCtx->node = doc->children;
278
-
279
- xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression((xmlChar *)[xpathQuery UTF8String], xpathCtx);
280
- if (NULL == xpathObj) {
281
- xmlXPathFreeContext(xpathCtx);
282
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlXPathEvalExpression for XPath query \"%@\"", xpathQuery];
283
- return NULL;
284
- }
285
- xmlXPathFreeContext(xpathCtx);
286
- return xpathObj;
191
+ NSXMLElement *rootElement = [self writeXmlWithRootSnapshot:root indexPath:nil];
192
+ NSXMLDocument *xmlDoc = [[NSXMLDocument alloc] initWithRootElement:rootElement];
193
+ [xmlDoc setVersion:@"1.0"];
194
+ [xmlDoc setCharacterEncoding:@"UTF-8"];
195
+ return xmlDoc;
287
196
  }
288
197
 
289
198
  + (nullable NSString *)safeXmlStringWithString:(nullable NSString *)str
@@ -291,64 +200,39 @@ static NSString *const kXMLIndexPathKey = @"private_indexPath";
291
200
  return [str fb_xmlSafeStringWithReplacement:@""];
292
201
  }
293
202
 
294
- + (int)recordElementAttributes:(xmlTextWriterPtr)writer
295
- forElement:(id<XCUIElementSnapshot>)element
296
- indexPath:(nullable NSString *)indexPath
203
+ + (void)recordElementAttributes:(NSXMLElement *)node
204
+ forSnapshot:(id<XCUIElementSnapshot>)snapshot
205
+ indexPath:(nullable NSString *)indexPath
297
206
  {
298
207
  for (Class attributeCls in FBElementAttribute.supportedAttributes) {
299
- int rc = [attributeCls recordWithWriter:writer forElement:element];
300
- if (rc < 0) {
301
- return rc;
302
- }
208
+ [attributeCls recordWithNode:node forElement:snapshot];
303
209
  }
304
210
 
305
211
  if (nil != indexPath) {
306
212
  // index path is the special case
307
- return [FBInternalIndexAttribute recordWithWriter:writer forValue:indexPath];
213
+ [FBInternalIndexAttribute recordWithNode:node forValue:indexPath];
308
214
  }
309
- return 0;
310
215
  }
311
216
 
312
- + (int)writeXmlWithRootElement:(id<XCUIElementSnapshot>)root
313
- indexPath:(nullable NSString *)indexPath
314
- writer:(xmlTextWriterPtr)writer
217
+ + (NSXMLElement *)writeXmlWithRootSnapshot:(id<XCUIElementSnapshot>)root
218
+ indexPath:(nullable NSString *)indexPath
315
219
  {
316
- id<XCUIElementSnapshot> currentSnapshot = root;
317
- NSArray<id<XCUIElementSnapshot>> *children = root.children;
220
+ NSString *type = [FBElementTypeTransformer stringWithElementType:root.elementType];
221
+ NSXMLElement *rootElement = [NSXMLElement elementWithName:type];
222
+ [self recordElementAttributes:rootElement
223
+ forSnapshot:root
224
+ indexPath:indexPath];
318
225
 
319
- NSString *type = [FBElementTypeTransformer stringWithElementType:currentSnapshot.elementType];
320
- int rc = xmlTextWriterStartElement(writer, (xmlChar *)[type UTF8String]);
321
- if (rc < 0) {
322
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterStartElement for the tag value '%@'. Error code: %d", type, rc];
323
- return rc;
324
- }
325
-
326
- rc = [self recordElementAttributes:writer
327
- forElement:currentSnapshot
328
- indexPath:indexPath];
329
- if (rc < 0) {
330
- return rc;
331
- }
332
-
333
- for (NSUInteger i = 0; i < [children count]; i++) {
334
- id<XCUIElementSnapshot> childSnapshot = [children objectAtIndex:i];
226
+ NSArray<id<XCUIElementSnapshot>> *children = root.children;
227
+ for (id<XCUIElementSnapshot> childSnapshot in children) {
335
228
  NSString *newIndexPath = (indexPath != nil)
336
229
  ? [AMSnapshotUtils hashWithSnapshot:childSnapshot]
337
230
  : nil;
338
- rc = [self writeXmlWithRootElement:childSnapshot
339
- indexPath:newIndexPath
340
- writer:writer];
341
- if (rc < 0) {
342
- return rc;
343
- }
344
- }
345
-
346
- rc = xmlTextWriterEndElement(writer);
347
- if (rc < 0) {
348
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterEndElement. Error code: %d", rc];
349
- return rc;
231
+ NSXMLElement *childElement = [self writeXmlWithRootSnapshot:childSnapshot
232
+ indexPath:newIndexPath];
233
+ [rootElement addChild:childElement];
350
234
  }
351
- return 0;
235
+ return rootElement;
352
236
  }
353
237
 
354
238
  @end
@@ -379,20 +263,17 @@ static NSString *const FBAbstractMethodInvocationException = @"AbstractMethodInv
379
263
  @throw [NSException exceptionWithName:FBAbstractMethodInvocationException reason:errMsg userInfo:nil];
380
264
  }
381
265
 
382
- + (int)recordWithWriter:(xmlTextWriterPtr)writer forElement:(id<XCUIElementSnapshot>)element
266
+ + (void)recordWithNode:(NSXMLElement *)node forElement:(id<XCUIElementSnapshot>)element
383
267
  {
384
268
  NSString *value = [self valueForElement:element];
385
269
  if (nil == value) {
386
270
  // Skip the attribute if the value equals to nil
387
- return 0;
271
+ return;
388
272
  }
389
- int rc = xmlTextWriterWriteAttribute(writer,
390
- (xmlChar *)[[FBXPath safeXmlStringWithString:self.name] UTF8String],
391
- (xmlChar *)[[FBXPath safeXmlStringWithString:value] UTF8String]);
392
- if (rc < 0) {
393
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterWriteAttribute(%@='%@'). Error code: %d", self.name, value, rc];
394
- }
395
- return rc;
273
+
274
+ NSString *attrName = [FBXPath safeXmlStringWithString:self.name];
275
+ NSString *attrValue = [FBXPath safeXmlStringWithString:value];
276
+ [node addAttribute:[NSXMLNode attributeWithName:attrName stringValue:attrValue]];
396
277
  }
397
278
 
398
279
  + (NSArray<Class> *)supportedAttributes
@@ -579,26 +460,23 @@ static NSString *const FBAbstractMethodInvocationException = @"AbstractMethodInv
579
460
 
580
461
  @end
581
462
 
582
- @implementation FBInternalIndexAttribute
463
+ @implementation FBInternalIndexAttribute: FBElementAttribute
583
464
 
584
465
  + (NSString *)name
585
466
  {
586
467
  return kXMLIndexPathKey;
587
468
  }
588
469
 
589
- + (int)recordWithWriter:(xmlTextWriterPtr)writer forValue:(NSString *)value
470
+ + (void)recordWithNode:(NSXMLElement *)node forValue:(NSString *)value
590
471
  {
591
472
  if (nil == value) {
592
473
  // Skip the attribute if the value equals to nil
593
- return 0;
474
+ return;
594
475
  }
595
- int rc = xmlTextWriterWriteAttribute(writer,
596
- (xmlChar *)[[FBXPath safeXmlStringWithString:[self name]] UTF8String],
597
- (xmlChar *)[[FBXPath safeXmlStringWithString:value] UTF8String]);
598
- if (rc < 0) {
599
- [FBLogger logFmt:@"Failed to invoke libxml2>xmlTextWriterWriteAttribute(%@='%@'). Error code: %d", [self name], value, rc];
600
- }
601
- return rc;
476
+
477
+ NSString *attrName = [FBXPath safeXmlStringWithString:self.name];
478
+ NSString *attrValue = [FBXPath safeXmlStringWithString:value];
479
+ [node addAttribute:[NSXMLNode attributeWithName:attrName stringValue:attrValue]];
602
480
  }
603
481
 
604
482
  @end
@@ -125,7 +125,6 @@
125
125
  714CA7022566475200353B27 /* XCUIApplication+AMSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 714CA7002566475200353B27 /* XCUIApplication+AMSource.m */; };
126
126
  714CA7062566487B00353B27 /* FBXPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 714CA7042566487B00353B27 /* FBXPath.h */; };
127
127
  714CA7072566487B00353B27 /* FBXPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 714CA7052566487B00353B27 /* FBXPath.m */; };
128
- 714CA70A256648B200353B27 /* libxml2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 714CA709256648A100353B27 /* libxml2.tbd */; };
129
128
  71688A98256461ED0007F55B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 71688A97256461ED0007F55B /* AppDelegate.m */; };
130
129
  71688A9B256461ED0007F55B /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71688A9A256461ED0007F55B /* ViewController.m */; };
131
130
  71688A9D256461F00007F55B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 71688A9C256461F00007F55B /* Assets.xcassets */; };
@@ -455,7 +454,6 @@
455
454
  isa = PBXFrameworksBuildPhase;
456
455
  buildActionMask = 2147483647;
457
456
  files = (
458
- 714CA70A256648B200353B27 /* libxml2.tbd in Frameworks */,
459
457
  7199B3CD2565B1CD000B5C51 /* XCTest.framework in Frameworks */,
460
458
  );
461
459
  runOnlyForDeploymentPostprocessing = 0;
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "appium-mac2-driver",
3
- "version": "1.19.0",
3
+ "version": "1.20.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-mac2-driver",
9
- "version": "1.19.0",
9
+ "version": "1.20.0",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@appium/strongbox": "^0.x",
@@ -50,14 +50,14 @@
50
50
  }
51
51
  },
52
52
  "node_modules/@appium/logger": {
53
- "version": "1.6.0",
54
- "resolved": "https://registry.npmjs.org/@appium/logger/-/logger-1.6.0.tgz",
55
- "integrity": "sha512-zUIeVUWmIDyInSHYUa4+TK6Bd/dL3kBJHVDZhAAKGsqzNLaaRESCSVmKVOYNGqZVqNe/wPKa+aRW9Z3iRTGE5Q==",
53
+ "version": "1.6.1",
54
+ "resolved": "https://registry.npmjs.org/@appium/logger/-/logger-1.6.1.tgz",
55
+ "integrity": "sha512-3TWpLR1qVQ0usLJ6R49iN4TV9Zs0nog1oL3hakCglwP0g4ZllwwEbp+2b1ovJfX6oOv1wXNREyokq2uxU5gB/Q==",
56
56
  "license": "ISC",
57
57
  "dependencies": {
58
58
  "console-control-strings": "1.1.0",
59
59
  "lodash": "4.17.21",
60
- "lru-cache": "10.3.0",
60
+ "lru-cache": "10.4.3",
61
61
  "set-blocking": "2.0.0"
62
62
  },
63
63
  "engines": {
@@ -95,14 +95,14 @@
95
95
  }
96
96
  },
97
97
  "node_modules/@appium/support": {
98
- "version": "5.1.2",
99
- "resolved": "https://registry.npmjs.org/@appium/support/-/support-5.1.2.tgz",
100
- "integrity": "sha512-KwaCiwKOLaAPLpZYWbWFnoFjUwRiFMXgtLE9a7lWC0a7fZfT59HTu78HNoDu7WvgMaiGVyDxOYjrkI+MeONKiw==",
98
+ "version": "5.1.4",
99
+ "resolved": "https://registry.npmjs.org/@appium/support/-/support-5.1.4.tgz",
100
+ "integrity": "sha512-0jNhtOfSD3gYkSxcSOP3SuTZVUFouq1fTa4ajb91/pNPkvv32IAXdNI8Lg0hz4fjMohw6R/5c2Y6NYjqWQJRwQ==",
101
101
  "license": "Apache-2.0",
102
102
  "dependencies": {
103
- "@appium/logger": "^1.6.0",
103
+ "@appium/logger": "^1.6.1",
104
104
  "@appium/tsconfig": "^0.3.3",
105
- "@appium/types": "^0.21.1",
105
+ "@appium/types": "^0.21.3",
106
106
  "@colors/colors": "1.6.0",
107
107
  "@types/archiver": "6.0.2",
108
108
  "@types/base64-stream": "1.0.5",
@@ -120,14 +120,14 @@
120
120
  "@types/uuid": "10.0.0",
121
121
  "@types/which": "3.0.4",
122
122
  "archiver": "7.0.1",
123
- "axios": "1.7.2",
123
+ "axios": "1.7.7",
124
124
  "base64-stream": "1.0.0",
125
125
  "bluebird": "3.7.2",
126
126
  "bplist-creator": "0.1.1",
127
127
  "bplist-parser": "0.3.2",
128
128
  "form-data": "4.0.0",
129
129
  "get-stream": "6.0.1",
130
- "glob": "10.4.2",
130
+ "glob": "10.4.5",
131
131
  "jsftp": "2.1.3",
132
132
  "klaw": "4.1.0",
133
133
  "lockfile": "1.0.4",
@@ -143,12 +143,12 @@
143
143
  "read-pkg": "5.2.0",
144
144
  "resolve-from": "5.0.0",
145
145
  "sanitize-filename": "1.6.3",
146
- "semver": "7.6.2",
146
+ "semver": "7.6.3",
147
147
  "shell-quote": "1.8.1",
148
148
  "source-map-support": "0.5.21",
149
149
  "supports-color": "8.1.1",
150
150
  "teen_process": "2.2.0",
151
- "type-fest": "4.21.0",
151
+ "type-fest": "4.26.1",
152
152
  "uuid": "10.0.0",
153
153
  "which": "4.0.0",
154
154
  "yauzl": "3.1.3"
@@ -158,30 +158,7 @@
158
158
  "npm": ">=8"
159
159
  },
160
160
  "optionalDependencies": {
161
- "sharp": "0.33.4"
162
- }
163
- },
164
- "node_modules/@appium/support/node_modules/axios": {
165
- "version": "1.7.2",
166
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
167
- "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
168
- "license": "MIT",
169
- "dependencies": {
170
- "follow-redirects": "^1.15.6",
171
- "form-data": "^4.0.0",
172
- "proxy-from-env": "^1.1.0"
173
- }
174
- },
175
- "node_modules/@appium/support/node_modules/semver": {
176
- "version": "7.6.2",
177
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
178
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
179
- "license": "ISC",
180
- "bin": {
181
- "semver": "bin/semver.js"
182
- },
183
- "engines": {
184
- "node": ">=10"
161
+ "sharp": "0.33.5"
185
162
  }
186
163
  },
187
164
  "node_modules/@appium/tsconfig": {
@@ -198,17 +175,17 @@
198
175
  }
199
176
  },
200
177
  "node_modules/@appium/types": {
201
- "version": "0.21.1",
202
- "resolved": "https://registry.npmjs.org/@appium/types/-/types-0.21.1.tgz",
203
- "integrity": "sha512-xQRIWEYOe5ldItXhYiIxNT+0tt00p0g76YPgzOtFNDj73MWSuKGZfjfM3sl7RcK2wwLvVXc4aixK0QcLwN+UUA==",
178
+ "version": "0.21.3",
179
+ "resolved": "https://registry.npmjs.org/@appium/types/-/types-0.21.3.tgz",
180
+ "integrity": "sha512-jjAv7uWnS9AzV5u2/m63whNQsPvjuyJGXsl/NPy4CQ7z6/wt+BG7GwXP64hmRpwNvA29va7T0DIPQ0kpAa9Dzw==",
204
181
  "license": "Apache-2.0",
205
182
  "dependencies": {
206
- "@appium/logger": "^1.6.0",
183
+ "@appium/logger": "^1.6.1",
207
184
  "@appium/schema": "^0.6.1",
208
185
  "@appium/tsconfig": "^0.3.3",
209
186
  "@types/express": "4.17.21",
210
- "@types/ws": "8.5.10",
211
- "type-fest": "4.21.0"
187
+ "@types/ws": "8.5.12",
188
+ "type-fest": "4.26.1"
212
189
  },
213
190
  "engines": {
214
191
  "node": "^14.17.0 || ^16.13.0 || >=18.0.0",
@@ -216,12 +193,12 @@
216
193
  }
217
194
  },
218
195
  "node_modules/@babel/code-frame": {
219
- "version": "7.24.7",
220
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
221
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
196
+ "version": "7.25.7",
197
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz",
198
+ "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==",
222
199
  "license": "MIT",
223
200
  "dependencies": {
224
- "@babel/highlight": "^7.24.7",
201
+ "@babel/highlight": "^7.25.7",
225
202
  "picocolors": "^1.0.0"
226
203
  },
227
204
  "engines": {
@@ -229,21 +206,21 @@
229
206
  }
230
207
  },
231
208
  "node_modules/@babel/helper-validator-identifier": {
232
- "version": "7.24.7",
233
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
234
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
209
+ "version": "7.25.7",
210
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz",
211
+ "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==",
235
212
  "license": "MIT",
236
213
  "engines": {
237
214
  "node": ">=6.9.0"
238
215
  }
239
216
  },
240
217
  "node_modules/@babel/highlight": {
241
- "version": "7.24.7",
242
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
243
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
218
+ "version": "7.25.7",
219
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz",
220
+ "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==",
244
221
  "license": "MIT",
245
222
  "dependencies": {
246
- "@babel/helper-validator-identifier": "^7.24.7",
223
+ "@babel/helper-validator-identifier": "^7.25.7",
247
224
  "chalk": "^2.4.2",
248
225
  "js-tokens": "^4.0.0",
249
226
  "picocolors": "^1.0.0"
@@ -333,9 +310,9 @@
333
310
  }
334
311
  },
335
312
  "node_modules/@img/sharp-darwin-arm64": {
336
- "version": "0.33.4",
337
- "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz",
338
- "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==",
313
+ "version": "0.33.5",
314
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
315
+ "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
339
316
  "cpu": [
340
317
  "arm64"
341
318
  ],
@@ -345,23 +322,19 @@
345
322
  "darwin"
346
323
  ],
347
324
  "engines": {
348
- "glibc": ">=2.26",
349
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
350
- "npm": ">=9.6.5",
351
- "pnpm": ">=7.1.0",
352
- "yarn": ">=3.2.0"
325
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
353
326
  },
354
327
  "funding": {
355
328
  "url": "https://opencollective.com/libvips"
356
329
  },
357
330
  "optionalDependencies": {
358
- "@img/sharp-libvips-darwin-arm64": "1.0.2"
331
+ "@img/sharp-libvips-darwin-arm64": "1.0.4"
359
332
  }
360
333
  },
361
334
  "node_modules/@img/sharp-libvips-darwin-arm64": {
362
- "version": "1.0.2",
363
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz",
364
- "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==",
335
+ "version": "1.0.4",
336
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
337
+ "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
365
338
  "cpu": [
366
339
  "arm64"
367
340
  ],
@@ -370,12 +343,6 @@
370
343
  "os": [
371
344
  "darwin"
372
345
  ],
373
- "engines": {
374
- "macos": ">=11",
375
- "npm": ">=9.6.5",
376
- "pnpm": ">=7.1.0",
377
- "yarn": ">=3.2.0"
378
- },
379
346
  "funding": {
380
347
  "url": "https://opencollective.com/libvips"
381
348
  }
@@ -398,9 +365,9 @@
398
365
  }
399
366
  },
400
367
  "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
401
- "version": "6.0.1",
402
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
403
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
368
+ "version": "6.1.0",
369
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
370
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
404
371
  "license": "MIT",
405
372
  "engines": {
406
373
  "node": ">=12"
@@ -525,9 +492,9 @@
525
492
  }
526
493
  },
527
494
  "node_modules/@types/express-serve-static-core": {
528
- "version": "4.19.5",
529
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz",
530
- "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==",
495
+ "version": "4.19.6",
496
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
497
+ "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
531
498
  "license": "MIT",
532
499
  "dependencies": {
533
500
  "@types/node": "*",
@@ -579,9 +546,9 @@
579
546
  "license": "MIT"
580
547
  },
581
548
  "node_modules/@types/lodash": {
582
- "version": "4.17.7",
583
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz",
584
- "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==",
549
+ "version": "4.17.10",
550
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz",
551
+ "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==",
585
552
  "license": "MIT"
586
553
  },
587
554
  "node_modules/@types/mime": {
@@ -606,12 +573,12 @@
606
573
  }
607
574
  },
608
575
  "node_modules/@types/node": {
609
- "version": "20.14.13",
610
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.13.tgz",
611
- "integrity": "sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==",
576
+ "version": "20.16.11",
577
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz",
578
+ "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==",
612
579
  "license": "MIT",
613
580
  "dependencies": {
614
- "undici-types": "~5.26.4"
581
+ "undici-types": "~6.19.2"
615
582
  }
616
583
  },
617
584
  "node_modules/@types/normalize-package-data": {
@@ -627,9 +594,9 @@
627
594
  "license": "MIT"
628
595
  },
629
596
  "node_modules/@types/qs": {
630
- "version": "6.9.15",
631
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz",
632
- "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==",
597
+ "version": "6.9.16",
598
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz",
599
+ "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==",
633
600
  "license": "MIT"
634
601
  },
635
602
  "node_modules/@types/range-parser": {
@@ -708,9 +675,9 @@
708
675
  "license": "MIT"
709
676
  },
710
677
  "node_modules/@types/ws": {
711
- "version": "8.5.10",
712
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
713
- "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
678
+ "version": "8.5.12",
679
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
680
+ "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
714
681
  "license": "MIT",
715
682
  "dependencies": {
716
683
  "@types/node": "*"
@@ -834,9 +801,9 @@
834
801
  "license": "Python-2.0"
835
802
  },
836
803
  "node_modules/async": {
837
- "version": "3.2.5",
838
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
839
- "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
804
+ "version": "3.2.6",
805
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
806
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
840
807
  "license": "MIT"
841
808
  },
842
809
  "node_modules/asyncbox": {
@@ -860,9 +827,9 @@
860
827
  "license": "MIT"
861
828
  },
862
829
  "node_modules/axios": {
863
- "version": "1.7.3",
864
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz",
865
- "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==",
830
+ "version": "1.7.7",
831
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
832
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
866
833
  "license": "MIT",
867
834
  "dependencies": {
868
835
  "follow-redirects": "^1.15.6",
@@ -871,9 +838,9 @@
871
838
  }
872
839
  },
873
840
  "node_modules/b4a": {
874
- "version": "1.6.6",
875
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
876
- "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
841
+ "version": "1.6.7",
842
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
843
+ "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
877
844
  "license": "Apache-2.0"
878
845
  },
879
846
  "node_modules/balanced-match": {
@@ -883,9 +850,9 @@
883
850
  "license": "MIT"
884
851
  },
885
852
  "node_modules/bare-events": {
886
- "version": "2.4.2",
887
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz",
888
- "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==",
853
+ "version": "2.5.0",
854
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz",
855
+ "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==",
889
856
  "license": "Apache-2.0",
890
857
  "optional": true
891
858
  },
@@ -1221,13 +1188,13 @@
1221
1188
  }
1222
1189
  },
1223
1190
  "node_modules/debug": {
1224
- "version": "4.3.6",
1225
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
1226
- "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
1191
+ "version": "4.3.7",
1192
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
1193
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
1227
1194
  "extraneous": true,
1228
1195
  "license": "MIT",
1229
1196
  "dependencies": {
1230
- "ms": "2.1.2"
1197
+ "ms": "^2.1.3"
1231
1198
  },
1232
1199
  "engines": {
1233
1200
  "node": ">=6.0"
@@ -1257,16 +1224,6 @@
1257
1224
  "node": ">=8"
1258
1225
  }
1259
1226
  },
1260
- "node_modules/diff": {
1261
- "version": "5.2.0",
1262
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
1263
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
1264
- "extraneous": true,
1265
- "license": "BSD-3-Clause",
1266
- "engines": {
1267
- "node": ">=0.3.1"
1268
- }
1269
- },
1270
1227
  "node_modules/duplexer": {
1271
1228
  "version": "0.1.2",
1272
1229
  "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
@@ -1304,9 +1261,9 @@
1304
1261
  }
1305
1262
  },
1306
1263
  "node_modules/escalade": {
1307
- "version": "3.1.2",
1308
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
1309
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
1264
+ "version": "3.2.0",
1265
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
1266
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
1310
1267
  "extraneous": true,
1311
1268
  "license": "MIT",
1312
1269
  "engines": {
@@ -1354,9 +1311,9 @@
1354
1311
  }
1355
1312
  },
1356
1313
  "node_modules/follow-redirects": {
1357
- "version": "1.15.6",
1358
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
1359
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
1314
+ "version": "1.15.9",
1315
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
1316
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
1360
1317
  "funding": [
1361
1318
  {
1362
1319
  "type": "individual",
@@ -1374,9 +1331,9 @@
1374
1331
  }
1375
1332
  },
1376
1333
  "node_modules/foreground-child": {
1377
- "version": "3.2.1",
1378
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",
1379
- "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
1334
+ "version": "3.3.0",
1335
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
1336
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
1380
1337
  "license": "ISC",
1381
1338
  "dependencies": {
1382
1339
  "cross-spawn": "^7.0.0",
@@ -1482,9 +1439,9 @@
1482
1439
  }
1483
1440
  },
1484
1441
  "node_modules/glob": {
1485
- "version": "10.4.2",
1486
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz",
1487
- "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==",
1442
+ "version": "10.4.5",
1443
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
1444
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
1488
1445
  "license": "ISC",
1489
1446
  "dependencies": {
1490
1447
  "foreground-child": "^3.1.0",
@@ -1497,9 +1454,6 @@
1497
1454
  "bin": {
1498
1455
  "glob": "dist/esm/bin.mjs"
1499
1456
  },
1500
- "engines": {
1501
- "node": ">=16 || 14 >=14.18"
1502
- },
1503
1457
  "funding": {
1504
1458
  "url": "https://github.com/sponsors/isaacs"
1505
1459
  }
@@ -1581,9 +1535,9 @@
1581
1535
  "license": "MIT"
1582
1536
  },
1583
1537
  "node_modules/is-core-module": {
1584
- "version": "2.15.0",
1585
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz",
1586
- "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==",
1538
+ "version": "2.15.1",
1539
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
1540
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
1587
1541
  "license": "MIT",
1588
1542
  "dependencies": {
1589
1543
  "hasown": "^2.0.2"
@@ -1828,13 +1782,10 @@
1828
1782
  }
1829
1783
  },
1830
1784
  "node_modules/lru-cache": {
1831
- "version": "10.3.0",
1832
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz",
1833
- "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==",
1834
- "license": "ISC",
1835
- "engines": {
1836
- "node": "14 || >=16.14"
1837
- }
1785
+ "version": "10.4.3",
1786
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
1787
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
1788
+ "license": "ISC"
1838
1789
  },
1839
1790
  "node_modules/make-error": {
1840
1791
  "version": "1.3.6",
@@ -1929,9 +1880,9 @@
1929
1880
  }
1930
1881
  },
1931
1882
  "node_modules/ms": {
1932
- "version": "2.1.2",
1933
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1934
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1883
+ "version": "2.1.3",
1884
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1885
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1935
1886
  "license": "MIT"
1936
1887
  },
1937
1888
  "node_modules/mv": {
@@ -2101,9 +2052,9 @@
2101
2052
  }
2102
2053
  },
2103
2054
  "node_modules/package-json-from-dist": {
2104
- "version": "1.0.0",
2105
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
2106
- "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
2055
+ "version": "1.0.1",
2056
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
2057
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
2107
2058
  "license": "BlueOak-1.0.0"
2108
2059
  },
2109
2060
  "node_modules/parse-json": {
@@ -2188,9 +2139,9 @@
2188
2139
  "license": "MIT"
2189
2140
  },
2190
2141
  "node_modules/picocolors": {
2191
- "version": "1.0.1",
2192
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
2193
- "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
2142
+ "version": "1.1.0",
2143
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
2144
+ "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
2194
2145
  "license": "ISC"
2195
2146
  },
2196
2147
  "node_modules/pkg-dir": {
@@ -2447,44 +2398,43 @@
2447
2398
  "license": "ISC"
2448
2399
  },
2449
2400
  "node_modules/sharp": {
2450
- "version": "0.33.4",
2451
- "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.4.tgz",
2452
- "integrity": "sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==",
2401
+ "version": "0.33.5",
2402
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
2403
+ "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
2453
2404
  "hasInstallScript": true,
2454
2405
  "license": "Apache-2.0",
2455
2406
  "optional": true,
2456
2407
  "dependencies": {
2457
2408
  "color": "^4.2.3",
2458
2409
  "detect-libc": "^2.0.3",
2459
- "semver": "^7.6.0"
2410
+ "semver": "^7.6.3"
2460
2411
  },
2461
2412
  "engines": {
2462
- "libvips": ">=8.15.2",
2463
2413
  "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
2464
2414
  },
2465
2415
  "funding": {
2466
2416
  "url": "https://opencollective.com/libvips"
2467
2417
  },
2468
2418
  "optionalDependencies": {
2469
- "@img/sharp-darwin-arm64": "0.33.4",
2470
- "@img/sharp-darwin-x64": "0.33.4",
2471
- "@img/sharp-libvips-darwin-arm64": "1.0.2",
2472
- "@img/sharp-libvips-darwin-x64": "1.0.2",
2473
- "@img/sharp-libvips-linux-arm": "1.0.2",
2474
- "@img/sharp-libvips-linux-arm64": "1.0.2",
2475
- "@img/sharp-libvips-linux-s390x": "1.0.2",
2476
- "@img/sharp-libvips-linux-x64": "1.0.2",
2477
- "@img/sharp-libvips-linuxmusl-arm64": "1.0.2",
2478
- "@img/sharp-libvips-linuxmusl-x64": "1.0.2",
2479
- "@img/sharp-linux-arm": "0.33.4",
2480
- "@img/sharp-linux-arm64": "0.33.4",
2481
- "@img/sharp-linux-s390x": "0.33.4",
2482
- "@img/sharp-linux-x64": "0.33.4",
2483
- "@img/sharp-linuxmusl-arm64": "0.33.4",
2484
- "@img/sharp-linuxmusl-x64": "0.33.4",
2485
- "@img/sharp-wasm32": "0.33.4",
2486
- "@img/sharp-win32-ia32": "0.33.4",
2487
- "@img/sharp-win32-x64": "0.33.4"
2419
+ "@img/sharp-darwin-arm64": "0.33.5",
2420
+ "@img/sharp-darwin-x64": "0.33.5",
2421
+ "@img/sharp-libvips-darwin-arm64": "1.0.4",
2422
+ "@img/sharp-libvips-darwin-x64": "1.0.4",
2423
+ "@img/sharp-libvips-linux-arm": "1.0.5",
2424
+ "@img/sharp-libvips-linux-arm64": "1.0.4",
2425
+ "@img/sharp-libvips-linux-s390x": "1.0.4",
2426
+ "@img/sharp-libvips-linux-x64": "1.0.4",
2427
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
2428
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
2429
+ "@img/sharp-linux-arm": "0.33.5",
2430
+ "@img/sharp-linux-arm64": "0.33.5",
2431
+ "@img/sharp-linux-s390x": "0.33.5",
2432
+ "@img/sharp-linux-x64": "0.33.5",
2433
+ "@img/sharp-linuxmusl-arm64": "0.33.5",
2434
+ "@img/sharp-linuxmusl-x64": "0.33.5",
2435
+ "@img/sharp-wasm32": "0.33.5",
2436
+ "@img/sharp-win32-ia32": "0.33.5",
2437
+ "@img/sharp-win32-x64": "0.33.5"
2488
2438
  }
2489
2439
  },
2490
2440
  "node_modules/shebang-command": {
@@ -2593,9 +2543,9 @@
2593
2543
  }
2594
2544
  },
2595
2545
  "node_modules/spdx-license-ids": {
2596
- "version": "3.0.18",
2597
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
2598
- "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
2546
+ "version": "3.0.20",
2547
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
2548
+ "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
2599
2549
  "license": "CC0-1.0"
2600
2550
  },
2601
2551
  "node_modules/stream-buffers": {
@@ -2618,9 +2568,9 @@
2618
2568
  }
2619
2569
  },
2620
2570
  "node_modules/streamx": {
2621
- "version": "2.18.0",
2622
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz",
2623
- "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==",
2571
+ "version": "2.20.1",
2572
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz",
2573
+ "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==",
2624
2574
  "license": "MIT",
2625
2575
  "dependencies": {
2626
2576
  "fast-fifo": "^1.3.2",
@@ -2679,9 +2629,9 @@
2679
2629
  "license": "MIT"
2680
2630
  },
2681
2631
  "node_modules/string-width/node_modules/ansi-regex": {
2682
- "version": "6.0.1",
2683
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
2684
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
2632
+ "version": "6.1.0",
2633
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
2634
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
2685
2635
  "license": "MIT",
2686
2636
  "engines": {
2687
2637
  "node": ">=12"
@@ -2785,9 +2735,9 @@
2785
2735
  }
2786
2736
  },
2787
2737
  "node_modules/text-decoder": {
2788
- "version": "1.1.1",
2789
- "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz",
2790
- "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==",
2738
+ "version": "1.2.0",
2739
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz",
2740
+ "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==",
2791
2741
  "license": "Apache-2.0",
2792
2742
  "dependencies": {
2793
2743
  "b4a": "^1.6.4"
@@ -2809,16 +2759,16 @@
2809
2759
  }
2810
2760
  },
2811
2761
  "node_modules/tslib": {
2812
- "version": "2.6.3",
2813
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
2814
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
2762
+ "version": "2.7.0",
2763
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
2764
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
2815
2765
  "extraneous": true,
2816
2766
  "license": "0BSD"
2817
2767
  },
2818
2768
  "node_modules/type-fest": {
2819
- "version": "4.21.0",
2820
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz",
2821
- "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==",
2769
+ "version": "4.26.1",
2770
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz",
2771
+ "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==",
2822
2772
  "license": "(MIT OR CC0-1.0)",
2823
2773
  "engines": {
2824
2774
  "node": ">=16"
@@ -2828,9 +2778,9 @@
2828
2778
  }
2829
2779
  },
2830
2780
  "node_modules/typescript": {
2831
- "version": "5.5.4",
2832
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
2833
- "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
2781
+ "version": "5.6.3",
2782
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
2783
+ "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
2834
2784
  "license": "Apache-2.0",
2835
2785
  "bin": {
2836
2786
  "tsc": "bin/tsc",
@@ -2841,9 +2791,9 @@
2841
2791
  }
2842
2792
  },
2843
2793
  "node_modules/undici-types": {
2844
- "version": "5.26.5",
2845
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
2846
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
2794
+ "version": "6.19.8",
2795
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
2796
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
2847
2797
  "license": "MIT"
2848
2798
  },
2849
2799
  "node_modules/unorm": {
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "mac",
7
7
  "XCTest"
8
8
  ],
9
- "version": "1.19.0",
9
+ "version": "1.20.0",
10
10
  "author": "Appium Contributors",
11
11
  "license": "Apache-2.0",
12
12
  "repository": {
@@ -1,6 +1,6 @@
1
1
  const path = require('node:path');
2
2
  const {exec} = require('teen_process');
3
- const {logger} = require('@appium/support');
3
+ const {logger} = require('appium/support');
4
4
  const XCODEPROJ_NAME = 'WebDriverAgentMac.xcodeproj';
5
5
 
6
6
  const log = logger.getLogger('WDA');