appium-mcp 1.72.6 → 1.72.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/locators/locator-generation.js +11 -11
- package/dist/locators/locator-generation.js.map +1 -1
- package/dist/locators/source-parsing.d.ts.map +1 -1
- package/dist/locators/source-parsing.js +2 -5
- package/dist/locators/source-parsing.js.map +1 -1
- package/dist/tests/utils/collection.test.d.ts +2 -0
- package/dist/tests/utils/collection.test.d.ts.map +1 -0
- package/dist/tests/utils/collection.test.js +87 -0
- package/dist/tests/utils/collection.test.js.map +1 -0
- package/dist/tools/ai/handlers/find-element.d.ts.map +1 -1
- package/dist/tools/ai/handlers/find-element.js +6 -6
- package/dist/tools/ai/handlers/find-element.js.map +1 -1
- package/dist/utils/collection.d.ts +4 -0
- package/dist/utils/collection.d.ts.map +1 -0
- package/dist/utils/collection.js +58 -0
- package/dist/utils/collection.js.map +1 -0
- package/package.json +2 -4
- package/server.json +2 -2
- package/src/locators/locator-generation.ts +11 -11
- package/src/locators/source-parsing.ts +5 -5
- package/src/resources/submodules.zip +0 -0
- package/src/tools/ai/handlers/find-element.ts +7 -7
- package/src/utils/collection.ts +77 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [1.72.7](https://github.com/appium/appium-mcp/compare/v1.72.6...v1.72.7) (2026-05-05)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* remove lodash ([#320](https://github.com/appium/appium-mcp/issues/320)) ([9a82237](https://github.com/appium/appium-mcp/commit/9a822379d333cf94d47b2f1f9dc9e1b83e03b982))
|
|
6
|
+
|
|
1
7
|
## [1.72.6](https://github.com/appium/appium-mcp/compare/v1.72.5...v1.72.6) (2026-05-04)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
1
|
import * as XPath from 'xpath';
|
|
3
2
|
const xpathSelect = XPath.select;
|
|
4
3
|
import log from '../logger.js';
|
|
4
|
+
import { isEmpty, omitNilValues } from '../utils/collection.js';
|
|
5
5
|
import { childNodesOf, domToXML, findDOMNodeByPath, xmlToDOM, } from './source-parsing.js';
|
|
6
6
|
// Attributes on nodes that are likely to be unique to the node so we should consider first when
|
|
7
7
|
// suggesting xpath locators. These are considered IN ORDER.
|
|
@@ -39,7 +39,7 @@ const SIMPLE_STRATEGY_MAPPINGS = [
|
|
|
39
39
|
*/
|
|
40
40
|
export function areAttrAndValueUnique(attrName, attrValue, sourceDoc) {
|
|
41
41
|
// If no sourceDoc provided, assume it's unique
|
|
42
|
-
if (!sourceDoc ||
|
|
42
|
+
if (!sourceDoc || isEmpty(sourceDoc)) {
|
|
43
43
|
return true;
|
|
44
44
|
}
|
|
45
45
|
const result = xpathSelect(`//*[@${attrName}="${attrValue.replace(/"/g, '')}"]`, sourceDoc);
|
|
@@ -86,7 +86,7 @@ export function getComplexSuggestedLocators(path, sourceDoc, isNative, automatio
|
|
|
86
86
|
}
|
|
87
87
|
complexLocators.xpath = getOptimalXPath(sourceDoc, domNode);
|
|
88
88
|
// Remove entries for locators where the optimal selector could not be found
|
|
89
|
-
return
|
|
89
|
+
return omitNilValues(complexLocators);
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
92
|
* Get suggested selectors for all locator strategies
|
|
@@ -133,7 +133,7 @@ export function getSuggestedLocators(selectedElement, sourceXML, isNative, autom
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
// Add any remaining locators that weren't in the priority list (like 'id' for native contexts)
|
|
136
|
-
for (const [strategy, value] of
|
|
136
|
+
for (const [strategy, value] of Object.entries(allLocators)) {
|
|
137
137
|
if (!priorityOrder.includes(strategy)) {
|
|
138
138
|
sortedLocators.push([strategy, value]);
|
|
139
139
|
}
|
|
@@ -239,7 +239,7 @@ export function getOptimalClassChain(doc, domNode) {
|
|
|
239
239
|
let classChain, othersWithAttr;
|
|
240
240
|
for (const attrName of CHECKED_CLASS_CHAIN_ATTRIBUTES) {
|
|
241
241
|
const attrValue = domNode.getAttribute?.(attrName);
|
|
242
|
-
if (
|
|
242
|
+
if (isEmpty(attrValue)) {
|
|
243
243
|
continue;
|
|
244
244
|
}
|
|
245
245
|
const xpath = `//${domNode.nodeName || '*'}[@${attrName}="${attrValue}"]`;
|
|
@@ -301,7 +301,7 @@ export function getOptimalPredicateString(doc, domNode) {
|
|
|
301
301
|
let othersWithAttr;
|
|
302
302
|
for (const attrName of CHECKED_PREDICATE_ATTRIBUTES) {
|
|
303
303
|
const attrValue = domNode.getAttribute?.(attrName);
|
|
304
|
-
if (
|
|
304
|
+
if (isEmpty(attrValue)) {
|
|
305
305
|
continue;
|
|
306
306
|
}
|
|
307
307
|
xpathAttributes.push(`@${attrName}="${attrValue}"`);
|
|
@@ -344,10 +344,10 @@ export function getOptimalUiAutomatorSelector(doc, domNode, path) {
|
|
|
344
344
|
// hierarchy is the child of doc (which is <xml/>), so need to get the children of its child
|
|
345
345
|
// BASE CASE #2: If there is no hierarchy or its children, return null
|
|
346
346
|
const docChildren = childNodesOf(doc);
|
|
347
|
-
const hierarchyChildren =
|
|
347
|
+
const hierarchyChildren = isEmpty(docChildren)
|
|
348
348
|
? []
|
|
349
349
|
: childNodesOf(docChildren[0]);
|
|
350
|
-
if (
|
|
350
|
+
if (isEmpty(hierarchyChildren)) {
|
|
351
351
|
return null;
|
|
352
352
|
}
|
|
353
353
|
// BASE CASE #3: If looking for an element that is not inside
|
|
@@ -373,7 +373,7 @@ export function getOptimalUiAutomatorSelector(doc, domNode, path) {
|
|
|
373
373
|
let uiSelector, othersWithAttr, othersWithAttrMinCount, mostUniqueSelector;
|
|
374
374
|
for (const [attrName, attrTranslation] of CHECKED_UIAUTOMATOR_ATTRIBUTES) {
|
|
375
375
|
const attrValue = newDomNode.getAttribute?.(attrName);
|
|
376
|
-
if (
|
|
376
|
+
if (isEmpty(attrValue)) {
|
|
377
377
|
continue;
|
|
378
378
|
}
|
|
379
379
|
const xpath = `//${newDomNode.nodeName}[@${attrName}="${attrValue}"]`;
|
|
@@ -439,7 +439,7 @@ function determineXpathUniqueness(xpath, doc, domNode) {
|
|
|
439
439
|
function getUniqueXPath(doc, domNode, attrs) {
|
|
440
440
|
let uniqueXpath, semiUniqueXpath;
|
|
441
441
|
const tagForXpath = domNode.nodeName || '*';
|
|
442
|
-
const isPairs = attrs.length > 0 &&
|
|
442
|
+
const isPairs = attrs.length > 0 && Array.isArray(attrs[0]);
|
|
443
443
|
const isNodeName = attrs.length === 0;
|
|
444
444
|
// If we're looking for a unique //<nodetype>, return it only if it's actually unique. No
|
|
445
445
|
// semi-uniqueness here!
|
|
@@ -483,7 +483,7 @@ function getUniqueXPath(doc, domNode, attrs) {
|
|
|
483
483
|
// if the xpath wasn't totally unique it might still be our best bet. Store a less unique
|
|
484
484
|
// version qualified by an index for later in semiUniqueXpath. If we can't find a better
|
|
485
485
|
// unique option down the road, we'll fall back to this
|
|
486
|
-
if (!semiUniqueXpath &&
|
|
486
|
+
if (!semiUniqueXpath && indexIfNotUnique !== undefined) {
|
|
487
487
|
semiUniqueXpath = `(${xpath})[${indexIfNotUnique + 1}]`;
|
|
488
488
|
}
|
|
489
489
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator-generation.js","sourceRoot":"","sources":["../../src/locators/locator-generation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"locator-generation.js","sourceRoot":"","sources":["../../src/locators/locator-generation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-parsing.d.ts","sourceRoot":"","sources":["../../src/locators/source-parsing.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,QAAQ,IAAI,WAAW,EACvB,IAAI,IAAI,OAAO,EAEhB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"source-parsing.d.ts","sourceRoot":"","sources":["../../src/locators/source-parsing.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,QAAQ,IAAI,WAAW,EACvB,IAAI,IAAI,OAAO,EAEhB,MAAM,gBAAgB,CAAC;AAKxB,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,KAAG,WACa,CAAC;AACxD,eAAO,MAAM,QAAQ,GAAI,KAAK,OAAO,KAAG,MACF,CAAC;AAEvC,UAAU,iBAAiB;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,UAAU,WAAW;IACnB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,CAOxD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,GACrB,OAAO,CAaT;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,WAAW,GACtB,WAAW,CAMb;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAsDxD;AAED,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DOMParser, MIME_TYPE, XMLSerializer, } from '@xmldom/xmldom';
|
|
2
|
-
import _ from 'lodash';
|
|
3
2
|
const domParser = new DOMParser();
|
|
4
3
|
const xmlSerializer = new XMLSerializer();
|
|
5
4
|
export const xmlToDOM = (string) => domParser.parseFromString(string, MIME_TYPE.XML_TEXT);
|
|
@@ -14,7 +13,7 @@ export function childNodesOf(domNode) {
|
|
|
14
13
|
if (!domNode?.hasChildNodes()) {
|
|
15
14
|
return [];
|
|
16
15
|
}
|
|
17
|
-
return
|
|
16
|
+
return Array.from(domNode.childNodes).filter((childNode) => childNode.nodeType === domNode.ELEMENT_NODE);
|
|
18
17
|
}
|
|
19
18
|
/**
|
|
20
19
|
* Look up an element in the Document source using the provided path
|
|
@@ -70,9 +69,7 @@ export function xmlToJSON(sourceXML) {
|
|
|
70
69
|
}
|
|
71
70
|
}
|
|
72
71
|
// Dot Separated path of indices
|
|
73
|
-
const path =
|
|
74
|
-
? ''
|
|
75
|
-
: `${!parentPath ? '' : parentPath + '.'}${index}`;
|
|
72
|
+
const path = index == null ? '' : `${!parentPath ? '' : parentPath + '.'}${index}`;
|
|
76
73
|
return {
|
|
77
74
|
children: childNodesOf(domNode).map((childNode, childIndex) => translateRecursively(childNode, path, childIndex)),
|
|
78
75
|
tagName: domNode.nodeName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-parsing.js","sourceRoot":"","sources":["../../src/locators/source-parsing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,SAAS,EACT,aAAa,GAId,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"source-parsing.js","sourceRoot":"","sources":["../../src/locators/source-parsing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.test.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/collection.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { describe, expect, test } from '@jest/globals';
|
|
2
|
+
import { isEmpty, isNil, omitNilValues } from '../../utils/collection.js';
|
|
3
|
+
function createArgumentsObject(arg0) {
|
|
4
|
+
if (arguments.length === 0) {
|
|
5
|
+
return (function () {
|
|
6
|
+
// eslint-disable-next-line prefer-rest-params
|
|
7
|
+
return arguments;
|
|
8
|
+
})();
|
|
9
|
+
}
|
|
10
|
+
return (function (_arg0) {
|
|
11
|
+
// eslint-disable-next-line prefer-rest-params
|
|
12
|
+
return arguments;
|
|
13
|
+
})(arg0);
|
|
14
|
+
}
|
|
15
|
+
describe('collection utilities', () => {
|
|
16
|
+
describe('isNil', () => {
|
|
17
|
+
test('returns true for null and undefined', () => {
|
|
18
|
+
expect(isNil(null)).toBe(true);
|
|
19
|
+
expect(isNil(undefined)).toBe(true);
|
|
20
|
+
});
|
|
21
|
+
test('returns false for non-nil values', () => {
|
|
22
|
+
expect(isNil('')).toBe(false);
|
|
23
|
+
expect(isNil(0)).toBe(false);
|
|
24
|
+
expect(isNil(false)).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('isEmpty', () => {
|
|
28
|
+
test('returns true for nullish values', () => {
|
|
29
|
+
expect(isEmpty(null)).toBe(true);
|
|
30
|
+
expect(isEmpty(undefined)).toBe(true);
|
|
31
|
+
});
|
|
32
|
+
test('handles strings and arrays', () => {
|
|
33
|
+
expect(isEmpty('')).toBe(true);
|
|
34
|
+
expect(isEmpty('a')).toBe(false);
|
|
35
|
+
expect(isEmpty([])).toBe(true);
|
|
36
|
+
expect(isEmpty([1])).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
test('handles objects and plain objects with length', () => {
|
|
39
|
+
expect(isEmpty({})).toBe(true);
|
|
40
|
+
expect(isEmpty({ a: 1 })).toBe(false);
|
|
41
|
+
expect(isEmpty({ length: 0 })).toBe(false);
|
|
42
|
+
expect(isEmpty({ length: 2, 0: 'x' })).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
test('handles known array-like collections', () => {
|
|
45
|
+
expect(isEmpty(new Uint8Array())).toBe(true);
|
|
46
|
+
expect(isEmpty(new Uint8Array([1]))).toBe(false);
|
|
47
|
+
const emptyArgs = createArgumentsObject();
|
|
48
|
+
const nonEmptyArgs = createArgumentsObject(1);
|
|
49
|
+
expect(isEmpty(emptyArgs)).toBe(true);
|
|
50
|
+
expect(isEmpty(nonEmptyArgs)).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
test('handles maps and sets by size', () => {
|
|
53
|
+
expect(isEmpty(new Map())).toBe(true);
|
|
54
|
+
expect(isEmpty(new Map([['k', 'v']]))).toBe(false);
|
|
55
|
+
expect(isEmpty(new Set())).toBe(true);
|
|
56
|
+
expect(isEmpty(new Set([1]))).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
test('treats primitives and functions as empty', () => {
|
|
59
|
+
expect(isEmpty(true)).toBe(true);
|
|
60
|
+
expect(isEmpty(false)).toBe(true);
|
|
61
|
+
expect(isEmpty(1)).toBe(true);
|
|
62
|
+
expect(isEmpty(Symbol('x'))).toBe(true);
|
|
63
|
+
expect(isEmpty(() => { })).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('omitNilValues', () => {
|
|
67
|
+
test('omits null and undefined while preserving other values', () => {
|
|
68
|
+
const result = omitNilValues({
|
|
69
|
+
a: 'x',
|
|
70
|
+
b: null,
|
|
71
|
+
c: undefined,
|
|
72
|
+
d: '',
|
|
73
|
+
});
|
|
74
|
+
expect(result).toEqual({ a: 'x', d: '' });
|
|
75
|
+
});
|
|
76
|
+
test('works with non-string value types', () => {
|
|
77
|
+
const result = omitNilValues({
|
|
78
|
+
count: 1,
|
|
79
|
+
optionalCount: undefined,
|
|
80
|
+
enabled: false,
|
|
81
|
+
maybeEnabled: null,
|
|
82
|
+
});
|
|
83
|
+
expect(result).toEqual({ count: 1, enabled: false });
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=collection.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.test.js","sourceRoot":"","sources":["../../../src/tests/utils/collection.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-element.d.ts","sourceRoot":"","sources":["../../../../src/tools/ai/handlers/find-element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAShE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"find-element.d.ts","sourceRoot":"","sources":["../../../../src/tools/ai/handlers/find-element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAShE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,CA+CxB"}
|
|
@@ -6,12 +6,6 @@ import { errorResult, textResultWithPrimaryElementId, toolErrorMessage, } from '
|
|
|
6
6
|
// Module-level singleton: ensures the LRU cache persists across tool calls.
|
|
7
7
|
// Creating a new AIVisionFinder() on every call would reset the cache each time.
|
|
8
8
|
let _finderInstance = null;
|
|
9
|
-
function getAIVisionFinder() {
|
|
10
|
-
if (!_finderInstance) {
|
|
11
|
-
_finderInstance = new AIVisionFinder();
|
|
12
|
-
}
|
|
13
|
-
return _finderInstance;
|
|
14
|
-
}
|
|
15
9
|
export async function handleFindElement(driver, args) {
|
|
16
10
|
if (!args.instruction) {
|
|
17
11
|
return errorResult('instruction is required for action=find_element. ' +
|
|
@@ -43,4 +37,10 @@ export async function handleFindElement(driver, args) {
|
|
|
43
37
|
return errorResult(`AI find_element failed. Error: ${errorMessage}`);
|
|
44
38
|
}
|
|
45
39
|
}
|
|
40
|
+
function getAIVisionFinder() {
|
|
41
|
+
if (!_finderInstance) {
|
|
42
|
+
_finderInstance = new AIVisionFinder();
|
|
43
|
+
}
|
|
44
|
+
return _finderInstance;
|
|
45
|
+
}
|
|
46
46
|
//# sourceMappingURL=find-element.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-element.js","sourceRoot":"","sources":["../../../../src/tools/ai/handlers/find-element.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,4EAA4E;AAC5E,iFAAiF;AACjF,IAAI,eAAe,GAA0B,IAAI,CAAC;AAClD,
|
|
1
|
+
{"version":3,"file":"find-element.js","sourceRoot":"","sources":["../../../../src/tools/ai/handlers/find-element.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,4EAA4E;AAC5E,iFAAiF;AACjF,IAAI,eAAe,GAA0B,IAAI,CAAC;AAClD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAsB,EACtB,IAAY;IAEZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,WAAW,CAChB,mDAAmD;YACjD,oFAAoF,CACvF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,IAAI,CACN,+CAA+C,IAAI,CAAC,WAAW,GAAG,CACnE,CAAC;QAEF,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;QAErD,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAEnC,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CACrC,gBAAgB,EAChB,IAAI,CAAC,WAAW,EAChB,KAAK,EACL,MAAM,CACP,CAAC;QAEF,6EAA6E;QAC7E,MAAM,WAAW,GAAG,cAAc,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAEhG,IAAI,MAAM,GAAG,uBAAuB,MAAM,CAAC,MAAM,qBAAqB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC;QAC9H,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9B,MAAM,IAAI,kBAAkB,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC1D,CAAC;QAED,OAAO,8BAA8B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,cAAc,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function isNil(value: unknown): value is null | undefined;
|
|
2
|
+
export declare function isEmpty(value: unknown): boolean;
|
|
3
|
+
export declare function omitNilValues<T>(values: Record<string, T | null | undefined>): Record<string, T>;
|
|
4
|
+
//# sourceMappingURL=collection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/utils/collection.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,SAAS,CAE/D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqC/C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC3C,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAUnB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export function isNil(value) {
|
|
2
|
+
return value == null;
|
|
3
|
+
}
|
|
4
|
+
export function isEmpty(value) {
|
|
5
|
+
if (value == null) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
// Keep behavior aligned with lodash: primitives/functions are treated as empty.
|
|
9
|
+
if (typeof value === 'boolean' ||
|
|
10
|
+
typeof value === 'number' ||
|
|
11
|
+
typeof value === 'bigint' ||
|
|
12
|
+
typeof value === 'symbol' ||
|
|
13
|
+
typeof value === 'function') {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
if (typeof value === 'string') {
|
|
17
|
+
return value.length === 0;
|
|
18
|
+
}
|
|
19
|
+
if (Array.isArray(value)) {
|
|
20
|
+
return value.length === 0;
|
|
21
|
+
}
|
|
22
|
+
if (isArguments(value) || isTypedArrayLike(value)) {
|
|
23
|
+
return value.length === 0;
|
|
24
|
+
}
|
|
25
|
+
if (value instanceof Map || value instanceof Set) {
|
|
26
|
+
return value.size === 0;
|
|
27
|
+
}
|
|
28
|
+
if (typeof value === 'object') {
|
|
29
|
+
return Object.keys(value).length === 0;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
export function omitNilValues(values) {
|
|
34
|
+
const filteredValues = {};
|
|
35
|
+
for (const [key, value] of Object.entries(values)) {
|
|
36
|
+
if (!isNil(value)) {
|
|
37
|
+
filteredValues[key] = value;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return filteredValues;
|
|
41
|
+
}
|
|
42
|
+
function isLength(value) {
|
|
43
|
+
return (typeof value === 'number' &&
|
|
44
|
+
value >= 0 &&
|
|
45
|
+
value % 1 === 0 &&
|
|
46
|
+
value <= Number.MAX_SAFE_INTEGER);
|
|
47
|
+
}
|
|
48
|
+
function isArguments(value) {
|
|
49
|
+
return Object.prototype.toString.call(value) === '[object Arguments]';
|
|
50
|
+
}
|
|
51
|
+
function isTypedArrayLike(value) {
|
|
52
|
+
if (!ArrayBuffer.isView(value)) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const maybeLength = value.length;
|
|
56
|
+
return isLength(maybeLength);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=collection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/utils/collection.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,KAAc;IAClC,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gFAAgF;IAChF,IACE,OAAO,KAAK,KAAK,SAAS;QAC1B,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,UAAU,EAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,YAAY,GAAG,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,MAA4C;IAE5C,MAAM,cAAc,GAAsB,EAAE,CAAC;IAE7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClB,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,IAAI,CAAC;QACV,KAAK,GAAG,CAAC,KAAK,CAAC;QACf,KAAK,IAAI,MAAM,CAAC,gBAAgB,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,oBAAoB,CAAC;AACxE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,WAAW,GAAI,KAA8B,CAAC,MAAM,CAAC;IAC3D,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-mcp",
|
|
3
3
|
"mcpName": "io.github.appium/appium-mcp",
|
|
4
|
-
"version": "1.72.
|
|
4
|
+
"version": "1.72.7",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -59,10 +59,9 @@
|
|
|
59
59
|
"appium-xcuitest-driver": "^11.0.0",
|
|
60
60
|
"applesign": "^5.0.0",
|
|
61
61
|
"fast-xml-parser": "^5.2.3",
|
|
62
|
-
"ios-mobileprovision-finder": "^1.2.1",
|
|
63
62
|
"fastmcp": "^4.0.0",
|
|
63
|
+
"ios-mobileprovision-finder": "^1.2.1",
|
|
64
64
|
"langchain": "^1.1.6",
|
|
65
|
-
"lodash": "^4.17.21",
|
|
66
65
|
"node-simctl": "^8.0.4",
|
|
67
66
|
"rimraf": "^6.0.1",
|
|
68
67
|
"webdriver": "^9.23.0",
|
|
@@ -75,7 +74,6 @@
|
|
|
75
74
|
"@semantic-release/changelog": "^6.0.3",
|
|
76
75
|
"@semantic-release/git": "^10.0.1",
|
|
77
76
|
"@types/jest": "^30.0.0",
|
|
78
|
-
"@types/lodash": "^4.17.17",
|
|
79
77
|
"@types/node": "^25.0.9",
|
|
80
78
|
"conventional-changelog-conventionalcommits": "^9.1.0",
|
|
81
79
|
"husky": "^9.1.7",
|
package/server.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"name": "io.github.appium/appium-mcp",
|
|
4
4
|
"title": "MCP Appium - Mobile Development and Automation Server",
|
|
5
5
|
"description": "MCP server for Appium mobile automation on iOS and Android devices with test creation tools.",
|
|
6
|
-
"version": "1.72.
|
|
6
|
+
"version": "1.72.7",
|
|
7
7
|
"packages": [
|
|
8
8
|
{
|
|
9
9
|
"registryType": "npm",
|
|
10
10
|
"identifier": "appium-mcp",
|
|
11
|
-
"version": "1.72.
|
|
11
|
+
"version": "1.72.7",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
1
|
import * as XPath from 'xpath';
|
|
3
2
|
const xpathSelect = XPath.select;
|
|
4
3
|
|
|
5
4
|
import log from '../logger.js';
|
|
5
|
+
import { isEmpty, omitNilValues } from '../utils/collection.js';
|
|
6
6
|
import {
|
|
7
7
|
childNodesOf,
|
|
8
8
|
domToXML,
|
|
@@ -63,7 +63,7 @@ export function areAttrAndValueUnique(
|
|
|
63
63
|
sourceDoc: XMLDocument
|
|
64
64
|
): boolean {
|
|
65
65
|
// If no sourceDoc provided, assume it's unique
|
|
66
|
-
if (!sourceDoc ||
|
|
66
|
+
if (!sourceDoc || isEmpty(sourceDoc)) {
|
|
67
67
|
return true;
|
|
68
68
|
}
|
|
69
69
|
const result = xpathSelect(
|
|
@@ -132,7 +132,7 @@ export function getComplexSuggestedLocators(
|
|
|
132
132
|
complexLocators.xpath = getOptimalXPath(sourceDoc, domNode);
|
|
133
133
|
|
|
134
134
|
// Remove entries for locators where the optimal selector could not be found
|
|
135
|
-
return
|
|
135
|
+
return omitNilValues(complexLocators);
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
/**
|
|
@@ -200,7 +200,7 @@ export function getSuggestedLocators(
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
// Add any remaining locators that weren't in the priority list (like 'id' for native contexts)
|
|
203
|
-
for (const [strategy, value] of
|
|
203
|
+
for (const [strategy, value] of Object.entries(allLocators)) {
|
|
204
204
|
if (!priorityOrder.includes(strategy)) {
|
|
205
205
|
sortedLocators.push([strategy, value]);
|
|
206
206
|
}
|
|
@@ -338,7 +338,7 @@ export function getOptimalClassChain(
|
|
|
338
338
|
|
|
339
339
|
for (const attrName of CHECKED_CLASS_CHAIN_ATTRIBUTES) {
|
|
340
340
|
const attrValue = (domNode as XMLElement).getAttribute?.(attrName);
|
|
341
|
-
if (
|
|
341
|
+
if (isEmpty(attrValue)) {
|
|
342
342
|
continue;
|
|
343
343
|
}
|
|
344
344
|
const xpath = `//${domNode.nodeName || '*'}[@${attrName}="${attrValue}"]`;
|
|
@@ -415,7 +415,7 @@ export function getOptimalPredicateString(
|
|
|
415
415
|
|
|
416
416
|
for (const attrName of CHECKED_PREDICATE_ATTRIBUTES) {
|
|
417
417
|
const attrValue = (domNode as XMLElement).getAttribute?.(attrName);
|
|
418
|
-
if (
|
|
418
|
+
if (isEmpty(attrValue)) {
|
|
419
419
|
continue;
|
|
420
420
|
}
|
|
421
421
|
|
|
@@ -465,10 +465,10 @@ export function getOptimalUiAutomatorSelector(
|
|
|
465
465
|
// hierarchy is the child of doc (which is <xml/>), so need to get the children of its child
|
|
466
466
|
// BASE CASE #2: If there is no hierarchy or its children, return null
|
|
467
467
|
const docChildren = childNodesOf(doc);
|
|
468
|
-
const hierarchyChildren =
|
|
468
|
+
const hierarchyChildren = isEmpty(docChildren)
|
|
469
469
|
? []
|
|
470
470
|
: childNodesOf(docChildren[0]);
|
|
471
|
-
if (
|
|
471
|
+
if (isEmpty(hierarchyChildren)) {
|
|
472
472
|
return null;
|
|
473
473
|
}
|
|
474
474
|
|
|
@@ -502,7 +502,7 @@ export function getOptimalUiAutomatorSelector(
|
|
|
502
502
|
|
|
503
503
|
for (const [attrName, attrTranslation] of CHECKED_UIAUTOMATOR_ATTRIBUTES) {
|
|
504
504
|
const attrValue = (newDomNode as XMLElement).getAttribute?.(attrName);
|
|
505
|
-
if (
|
|
505
|
+
if (isEmpty(attrValue)) {
|
|
506
506
|
continue;
|
|
507
507
|
}
|
|
508
508
|
|
|
@@ -585,7 +585,7 @@ function getUniqueXPath(
|
|
|
585
585
|
): [string | undefined, boolean | undefined] {
|
|
586
586
|
let uniqueXpath: string | undefined, semiUniqueXpath: string | undefined;
|
|
587
587
|
const tagForXpath = domNode.nodeName || '*';
|
|
588
|
-
const isPairs = attrs.length > 0 &&
|
|
588
|
+
const isPairs = attrs.length > 0 && Array.isArray(attrs[0]);
|
|
589
589
|
const isNodeName = attrs.length === 0;
|
|
590
590
|
|
|
591
591
|
// If we're looking for a unique //<nodetype>, return it only if it's actually unique. No
|
|
@@ -637,7 +637,7 @@ function getUniqueXPath(
|
|
|
637
637
|
// if the xpath wasn't totally unique it might still be our best bet. Store a less unique
|
|
638
638
|
// version qualified by an index for later in semiUniqueXpath. If we can't find a better
|
|
639
639
|
// unique option down the road, we'll fall back to this
|
|
640
|
-
if (!semiUniqueXpath &&
|
|
640
|
+
if (!semiUniqueXpath && indexIfNotUnique !== undefined) {
|
|
641
641
|
semiUniqueXpath = `(${xpath})[${indexIfNotUnique + 1}]`;
|
|
642
642
|
}
|
|
643
643
|
}
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
Node as XMLNode,
|
|
7
7
|
Element as XMLElement,
|
|
8
8
|
} from '@xmldom/xmldom';
|
|
9
|
-
import _ from 'lodash';
|
|
10
9
|
|
|
11
10
|
const domParser = new DOMParser();
|
|
12
11
|
const xmlSerializer = new XMLSerializer();
|
|
@@ -37,7 +36,9 @@ export function childNodesOf(domNode: XMLNode): XMLNode[] {
|
|
|
37
36
|
if (!domNode?.hasChildNodes()) {
|
|
38
37
|
return [];
|
|
39
38
|
}
|
|
40
|
-
return
|
|
39
|
+
return Array.from(domNode.childNodes).filter(
|
|
40
|
+
(childNode) => childNode.nodeType === domNode.ELEMENT_NODE
|
|
41
|
+
);
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
/**
|
|
@@ -112,9 +113,8 @@ export function xmlToJSON(sourceXML: string): JSONElement {
|
|
|
112
113
|
}
|
|
113
114
|
|
|
114
115
|
// Dot Separated path of indices
|
|
115
|
-
const path =
|
|
116
|
-
? ''
|
|
117
|
-
: `${!parentPath ? '' : parentPath + '.'}${index}`;
|
|
116
|
+
const path =
|
|
117
|
+
index == null ? '' : `${!parentPath ? '' : parentPath + '.'}${index}`;
|
|
118
118
|
|
|
119
119
|
return {
|
|
120
120
|
children: childNodesOf(domNode).map((childNode, childIndex) =>
|
|
Binary file
|
|
@@ -14,13 +14,6 @@ import type { AIArgs } from '../schema.js';
|
|
|
14
14
|
// Module-level singleton: ensures the LRU cache persists across tool calls.
|
|
15
15
|
// Creating a new AIVisionFinder() on every call would reset the cache each time.
|
|
16
16
|
let _finderInstance: AIVisionFinder | null = null;
|
|
17
|
-
function getAIVisionFinder(): AIVisionFinder {
|
|
18
|
-
if (!_finderInstance) {
|
|
19
|
-
_finderInstance = new AIVisionFinder();
|
|
20
|
-
}
|
|
21
|
-
return _finderInstance;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
17
|
export async function handleFindElement(
|
|
25
18
|
driver: DriverInstance,
|
|
26
19
|
args: AIArgs
|
|
@@ -72,3 +65,10 @@ export async function handleFindElement(
|
|
|
72
65
|
return errorResult(`AI find_element failed. Error: ${errorMessage}`);
|
|
73
66
|
}
|
|
74
67
|
}
|
|
68
|
+
|
|
69
|
+
function getAIVisionFinder(): AIVisionFinder {
|
|
70
|
+
if (!_finderInstance) {
|
|
71
|
+
_finderInstance = new AIVisionFinder();
|
|
72
|
+
}
|
|
73
|
+
return _finderInstance;
|
|
74
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export function isNil(value: unknown): value is null | undefined {
|
|
2
|
+
return value == null;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function isEmpty(value: unknown): boolean {
|
|
6
|
+
if (value == null) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// Keep behavior aligned with lodash: primitives/functions are treated as empty.
|
|
11
|
+
if (
|
|
12
|
+
typeof value === 'boolean' ||
|
|
13
|
+
typeof value === 'number' ||
|
|
14
|
+
typeof value === 'bigint' ||
|
|
15
|
+
typeof value === 'symbol' ||
|
|
16
|
+
typeof value === 'function'
|
|
17
|
+
) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (typeof value === 'string') {
|
|
22
|
+
return value.length === 0;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (Array.isArray(value)) {
|
|
26
|
+
return value.length === 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (isArguments(value) || isTypedArrayLike(value)) {
|
|
30
|
+
return value.length === 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (value instanceof Map || value instanceof Set) {
|
|
34
|
+
return value.size === 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (typeof value === 'object') {
|
|
38
|
+
return Object.keys(value).length === 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function omitNilValues<T>(
|
|
45
|
+
values: Record<string, T | null | undefined>
|
|
46
|
+
): Record<string, T> {
|
|
47
|
+
const filteredValues: Record<string, T> = {};
|
|
48
|
+
|
|
49
|
+
for (const [key, value] of Object.entries(values)) {
|
|
50
|
+
if (!isNil(value)) {
|
|
51
|
+
filteredValues[key] = value;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return filteredValues;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function isLength(value: unknown): value is number {
|
|
59
|
+
return (
|
|
60
|
+
typeof value === 'number' &&
|
|
61
|
+
value >= 0 &&
|
|
62
|
+
value % 1 === 0 &&
|
|
63
|
+
value <= Number.MAX_SAFE_INTEGER
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function isArguments(value: unknown): value is IArguments {
|
|
68
|
+
return Object.prototype.toString.call(value) === '[object Arguments]';
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function isTypedArrayLike(value: unknown): value is { length: number } {
|
|
72
|
+
if (!ArrayBuffer.isView(value)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
const maybeLength = (value as { length?: unknown }).length;
|
|
76
|
+
return isLength(maybeLength);
|
|
77
|
+
}
|