appium-ios-remotexpc 5.14.4 → 5.14.5

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,9 @@
1
+ ## [5.14.5](https://github.com/appium/appium-ios-remotexpc/compare/v5.14.4...v5.14.5) (2026-08-20)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **plist:** only read direct-child keys when parsing a dict ([#295](https://github.com/appium/appium-ios-remotexpc/issues/295)) ([7d8c5c3](https://github.com/appium/appium-ios-remotexpc/commit/7d8c5c3a22f4f8197b0634cd1253108523717b7b))
6
+
1
7
  ## [5.14.4](https://github.com/appium/appium-ios-remotexpc/compare/v5.14.3...v5.14.4) (2026-08-12)
2
8
 
3
9
  ### Bug Fixes
@@ -1 +1 @@
1
- {"version":3,"file":"plist-parser.d.ts","sourceRoot":"","sources":["../../../../src/lib/plist/plist-parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,eAAe,EAAa,MAAM,aAAa,CAAC;AAezE;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,CA8HpE"}
1
+ {"version":3,"file":"plist-parser.d.ts","sourceRoot":"","sources":["../../../../src/lib/plist/plist-parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,eAAe,EAAa,MAAM,aAAa,CAAC;AAezE;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,CAyIpE"}
@@ -85,18 +85,27 @@ export function parsePlist(xmlData) {
85
85
  }
86
86
  /**
87
87
  * Parse a plist `<dict>` element into a JavaScript object.
88
+ * Only direct-child `<key>` elements are considered: getElementsByTagName
89
+ * is recursive and would flatten keys of nested dicts into the parent.
88
90
  */
89
91
  function parseDict(dictNode) {
90
92
  const obj = {};
91
- const keys = dictNode.getElementsByTagName('key');
92
- for (let i = 0; i < keys.length; i++) {
93
- const keyName = keys[i].textContent || '';
94
- let valueNode = keys[i].nextSibling;
93
+ let childNode = dictNode.firstChild;
94
+ while (childNode) {
95
+ const keyNode = childNode;
96
+ childNode = childNode.nextSibling;
97
+ if (keyNode.nodeType !== Node.ELEMENT_NODE || keyNode.nodeName !== 'key') {
98
+ continue;
99
+ }
100
+ const keyName = keyNode.textContent || '';
101
+ let valueNode = keyNode.nextSibling;
95
102
  while (valueNode && valueNode.nodeType !== Node.ELEMENT_NODE) {
96
103
  valueNode = valueNode.nextSibling;
97
104
  }
98
105
  if (valueNode) {
99
106
  obj[keyName] = parseNode(valueNode);
107
+ // Skip ahead of the parsed value so the loop doesn't re-visit it
108
+ childNode = valueNode.nextSibling;
100
109
  }
101
110
  }
102
111
  return obj;
@@ -1 +1 @@
1
- {"version":3,"file":"plist-parser.js","sourceRoot":"","sources":["../../../../src/lib/plist/plist-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plist-parser.js","sourceRoot":"","sources":["../../../../src/lib/plist/plist-parser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-ios-remotexpc",
3
- "version": "5.14.4",
3
+ "version": "5.14.5",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "bugs": {
@@ -111,14 +111,23 @@ export function parsePlist(xmlData: string | Buffer): PlistDictionary {
111
111
 
112
112
  /**
113
113
  * Parse a plist `<dict>` element into a JavaScript object.
114
+ * Only direct-child `<key>` elements are considered: getElementsByTagName
115
+ * is recursive and would flatten keys of nested dicts into the parent.
114
116
  */
115
117
  function parseDict(dictNode: Element): PlistDictionary {
116
118
  const obj: PlistDictionary = {};
117
- const keys = dictNode.getElementsByTagName('key');
119
+ let childNode = dictNode.firstChild;
118
120
 
119
- for (let i = 0; i < keys.length; i++) {
120
- const keyName = keys[i].textContent || '';
121
- let valueNode = keys[i].nextSibling;
121
+ while (childNode) {
122
+ const keyNode = childNode;
123
+ childNode = childNode.nextSibling;
124
+
125
+ if (keyNode.nodeType !== Node.ELEMENT_NODE || keyNode.nodeName !== 'key') {
126
+ continue;
127
+ }
128
+
129
+ const keyName = keyNode.textContent || '';
130
+ let valueNode = keyNode.nextSibling;
122
131
 
123
132
  while (valueNode && valueNode.nodeType !== Node.ELEMENT_NODE) {
124
133
  valueNode = valueNode.nextSibling;
@@ -126,6 +135,8 @@ export function parsePlist(xmlData: string | Buffer): PlistDictionary {
126
135
 
127
136
  if (valueNode) {
128
137
  obj[keyName] = parseNode(valueNode as Element);
138
+ // Skip ahead of the parsed value so the loop doesn't re-visit it
139
+ childNode = valueNode.nextSibling;
129
140
  }
130
141
  }
131
142