@appium/universal-xml-plugin 1.0.0-beta.15 → 1.0.0-beta.16

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.
@@ -1,224 +1,184 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
5
17
  });
6
- exports.IDX_PREFIX = exports.IDX_PATH_PREFIX = exports.ATTR_PREFIX = void 0;
7
- exports.getUniversalAttrName = getUniversalAttrName;
8
- exports.getUniversalNodeName = getUniversalNodeName;
9
- exports.transformAttrs = transformAttrs;
10
- exports.transformChildNodes = transformChildNodes;
11
- exports.transformNode = transformNode;
12
- exports.transformSourceXml = transformSourceXml;
13
-
14
- require("source-map-support/register");
15
-
16
- var _lodash = _interopRequireDefault(require("lodash"));
17
-
18
- var _fastXmlParser = _interopRequireWildcard(require("fast-xml-parser"));
19
-
20
- var _nodeMap = _interopRequireDefault(require("./node-map"));
21
-
22
- var _attrMap = require("./attr-map");
23
-
24
- var _transformers = _interopRequireDefault(require("./transformers"));
25
-
26
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
-
28
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
-
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
-
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.transformAttrs = exports.transformChildNodes = exports.transformNode = exports.getUniversalAttrName = exports.getUniversalNodeName = exports.transformSourceXml = exports.IDX_PREFIX = exports.IDX_PATH_PREFIX = exports.ATTR_PREFIX = void 0;
30
+ const lodash_1 = __importDefault(require("lodash"));
31
+ const fast_xml_parser_1 = __importStar(require("fast-xml-parser"));
32
+ const node_map_1 = __importDefault(require("./node-map"));
33
+ const attr_map_1 = require("./attr-map");
34
+ const transformers_1 = __importDefault(require("./transformers"));
32
35
  const PARSE_OPTS = {
33
- ignoreAttributes: false,
34
- arrayMode: true
36
+ ignoreAttributes: false,
37
+ arrayMode: true,
35
38
  };
36
39
  const GEN_OPTS = {
37
- ignoreAttributes: false,
38
- arrayMode: true,
39
- format: true
40
+ ignoreAttributes: false,
41
+ arrayMode: true,
42
+ format: true,
40
43
  };
41
- const ATTR_PREFIX = '@_';
42
- exports.ATTR_PREFIX = ATTR_PREFIX;
43
- const IDX_PATH_PREFIX = `${ATTR_PREFIX}indexPath`;
44
- exports.IDX_PATH_PREFIX = IDX_PATH_PREFIX;
45
- const IDX_PREFIX = `${ATTR_PREFIX}index`;
46
- exports.IDX_PREFIX = IDX_PREFIX;
47
-
48
- const isAttr = k => k.substring(0, 2) === ATTR_PREFIX;
49
-
50
- const isNode = k => !isAttr(k);
51
-
52
- function transformSourceXml(xmlStr, platform, {
53
- metadata = {},
54
- addIndexPath = false
55
- } = {}) {
56
- xmlStr = xmlStr.replace('<AppiumAUT>', '<AppiumAUT index="0">');
57
-
58
- const xmlObj = _fastXmlParser.default.parse(xmlStr, PARSE_OPTS);
59
-
60
- const unknowns = transformNode(xmlObj, platform, {
61
- metadata,
62
- addIndexPath,
63
- parentPath: ''
64
- });
65
- const jParser = new _fastXmlParser.j2xParser(GEN_OPTS);
66
- let transformedXml = jParser.parse(xmlObj).trim();
67
- transformedXml = `<?xml version="1.0" encoding="UTF-8"?>\n${transformedXml}`;
68
- return {
69
- xml: transformedXml,
70
- unknowns
71
- };
44
+ exports.ATTR_PREFIX = '@_';
45
+ exports.IDX_PATH_PREFIX = `${exports.ATTR_PREFIX}indexPath`;
46
+ exports.IDX_PREFIX = `${exports.ATTR_PREFIX}index`;
47
+ const isAttr = (k) => k.substring(0, 2) === exports.ATTR_PREFIX;
48
+ const isNode = (k) => !isAttr(k);
49
+ function transformSourceXml(xmlStr, platform, { metadata = {}, addIndexPath = false } = {}) {
50
+ // first thing we want to do is modify the ios source root node, because it doesn't include the
51
+ // necessary index attribute, so we add it if it's not there
52
+ xmlStr = xmlStr.replace('<AppiumAUT>', '<AppiumAUT index="0">');
53
+ const xmlObj = fast_xml_parser_1.default.parse(xmlStr, PARSE_OPTS);
54
+ const unknowns = transformNode(xmlObj, platform, {
55
+ metadata,
56
+ addIndexPath,
57
+ parentPath: '',
58
+ });
59
+ const jParser = new fast_xml_parser_1.j2xParser(GEN_OPTS);
60
+ let transformedXml = jParser.parse(xmlObj).trim();
61
+ transformedXml = `<?xml version="1.0" encoding="UTF-8"?>\n${transformedXml}`;
62
+ return { xml: transformedXml, unknowns };
72
63
  }
73
-
64
+ exports.transformSourceXml = transformSourceXml;
74
65
  function getUniversalName(nameMap, name, platform) {
75
- for (const translatedName of Object.keys(nameMap)) {
76
- var _nameMap$translatedNa;
77
-
78
- const sourceNodes = (_nameMap$translatedNa = nameMap[translatedName]) === null || _nameMap$translatedNa === void 0 ? void 0 : _nameMap$translatedNa[platform];
79
-
80
- if (_lodash.default.isArray(sourceNodes) && sourceNodes.includes(name)) {
81
- return translatedName;
66
+ for (const translatedName of Object.keys(nameMap)) {
67
+ const sourceNodes = nameMap[translatedName]?.[platform];
68
+ if (lodash_1.default.isArray(sourceNodes) && sourceNodes.includes(name)) {
69
+ return translatedName;
70
+ }
71
+ if (sourceNodes === name) {
72
+ return translatedName;
73
+ }
82
74
  }
83
-
84
- if (sourceNodes === name) {
85
- return translatedName;
86
- }
87
- }
88
-
89
- return null;
75
+ return null;
90
76
  }
91
-
92
77
  function getUniversalNodeName(nodeName, platform) {
93
- return getUniversalName(_nodeMap.default, nodeName, platform);
78
+ return getUniversalName(node_map_1.default, nodeName, platform);
94
79
  }
95
-
80
+ exports.getUniversalNodeName = getUniversalNodeName;
96
81
  function getUniversalAttrName(attrName, platform) {
97
- return getUniversalName(_attrMap.ATTR_MAP, attrName, platform);
82
+ return getUniversalName(attr_map_1.ATTR_MAP, attrName, platform);
98
83
  }
99
-
100
- function transformNode(nodeObj, platform, {
101
- metadata,
102
- addIndexPath,
103
- parentPath
104
- }) {
105
- const unknownNodes = [];
106
- const unknownAttrs = [];
107
-
108
- if (_lodash.default.isPlainObject(nodeObj)) {
109
- var _TRANSFORMS$platform;
110
-
111
- const keys = Object.keys(nodeObj);
112
- const childNodeNames = keys.filter(isNode);
113
- const attrs = keys.filter(isAttr);
114
- let thisIndexPath = parentPath;
115
-
116
- if (attrs.length && addIndexPath) {
117
- if (!attrs.includes(IDX_PREFIX)) {
118
- throw new Error(`Index path is required but node found with no 'index' attribute`);
119
- }
120
-
121
- thisIndexPath = `${parentPath}/${nodeObj[IDX_PREFIX]}`;
122
- nodeObj[IDX_PATH_PREFIX] = thisIndexPath;
84
+ exports.getUniversalAttrName = getUniversalAttrName;
85
+ function transformNode(nodeObj, platform, { metadata, addIndexPath, parentPath }) {
86
+ const unknownNodes = [];
87
+ const unknownAttrs = [];
88
+ if (lodash_1.default.isPlainObject(nodeObj)) {
89
+ const keys = Object.keys(nodeObj);
90
+ const childNodeNames = keys.filter(isNode);
91
+ const attrs = keys.filter(isAttr);
92
+ let thisIndexPath = parentPath;
93
+ if (attrs.length && addIndexPath) {
94
+ if (!attrs.includes(exports.IDX_PREFIX)) {
95
+ throw new Error(`Index path is required but node found with no 'index' attribute`);
96
+ }
97
+ thisIndexPath = `${parentPath}/${nodeObj[exports.IDX_PREFIX]}`;
98
+ nodeObj[exports.IDX_PATH_PREFIX] = thisIndexPath;
99
+ }
100
+ transformers_1.default[platform]?.(nodeObj, metadata);
101
+ unknownAttrs.push(...transformAttrs(nodeObj, attrs, platform));
102
+ const unknowns = transformChildNodes(nodeObj, childNodeNames, platform, {
103
+ metadata,
104
+ addIndexPath,
105
+ parentPath: thisIndexPath,
106
+ });
107
+ unknownAttrs.push(...unknowns.attrs);
108
+ unknownNodes.push(...unknowns.nodes);
123
109
  }
124
-
125
- (_TRANSFORMS$platform = _transformers.default[platform]) === null || _TRANSFORMS$platform === void 0 ? void 0 : _TRANSFORMS$platform.call(_transformers.default, nodeObj, metadata);
126
- unknownAttrs.push(...transformAttrs(nodeObj, attrs, platform));
127
- const unknowns = transformChildNodes(nodeObj, childNodeNames, platform, {
128
- metadata,
129
- addIndexPath,
130
- parentPath: thisIndexPath
131
- });
132
- unknownAttrs.push(...unknowns.attrs);
133
- unknownNodes.push(...unknowns.nodes);
134
- } else if (_lodash.default.isArray(nodeObj)) {
135
- for (const childObj of nodeObj) {
136
- const {
137
- nodes,
138
- attrs
139
- } = transformNode(childObj, platform, {
140
- metadata,
141
- addIndexPath,
142
- parentPath
143
- });
144
- unknownNodes.push(...nodes);
145
- unknownAttrs.push(...attrs);
110
+ else if (lodash_1.default.isArray(nodeObj)) {
111
+ for (const childObj of nodeObj) {
112
+ const { nodes, attrs } = transformNode(childObj, platform, {
113
+ metadata,
114
+ addIndexPath,
115
+ parentPath,
116
+ });
117
+ unknownNodes.push(...nodes);
118
+ unknownAttrs.push(...attrs);
119
+ }
146
120
  }
147
- }
148
-
149
- return {
150
- nodes: _lodash.default.uniq(unknownNodes),
151
- attrs: _lodash.default.uniq(unknownAttrs)
152
- };
121
+ return {
122
+ nodes: lodash_1.default.uniq(unknownNodes),
123
+ attrs: lodash_1.default.uniq(unknownAttrs),
124
+ };
153
125
  }
154
-
155
- function transformChildNodes(nodeObj, childNodeNames, platform, {
156
- metadata,
157
- addIndexPath,
158
- parentPath
159
- }) {
160
- const unknownNodes = [];
161
- const unknownAttrs = [];
162
-
163
- for (const nodeName of childNodeNames) {
164
- const {
165
- nodes,
166
- attrs
167
- } = transformNode(nodeObj[nodeName], platform, {
168
- metadata,
169
- addIndexPath,
170
- parentPath
171
- });
172
- unknownNodes.push(...nodes);
173
- unknownAttrs.push(...attrs);
174
- const universalName = getUniversalNodeName(nodeName, platform);
175
-
176
- if (universalName === null) {
177
- unknownNodes.push(nodeName);
178
- continue;
179
- }
180
-
181
- if (nodeObj[universalName]) {
182
- nodeObj[universalName].push(...nodeObj[nodeName]);
183
- } else {
184
- nodeObj[universalName] = nodeObj[nodeName];
126
+ exports.transformNode = transformNode;
127
+ function transformChildNodes(nodeObj, childNodeNames, platform, { metadata, addIndexPath, parentPath }) {
128
+ const unknownNodes = [];
129
+ const unknownAttrs = [];
130
+ for (const nodeName of childNodeNames) {
131
+ // before modifying the name of this child node, recurse down and modify the subtree
132
+ const { nodes, attrs } = transformNode(nodeObj[nodeName], platform, {
133
+ metadata,
134
+ addIndexPath,
135
+ parentPath,
136
+ });
137
+ unknownNodes.push(...nodes);
138
+ unknownAttrs.push(...attrs);
139
+ // now translate the node name and replace the subtree with this node
140
+ const universalName = getUniversalNodeName(nodeName, platform);
141
+ if (universalName === null) {
142
+ unknownNodes.push(nodeName);
143
+ continue;
144
+ }
145
+ // since multiple child node names could map to the same new transformed node name, we can't
146
+ // simply assign nodeObj[universalName] = nodeObj[nodeName]; we need to be sensitive to the
147
+ // situation where the end result is an array of children having the same node name
148
+ if (nodeObj[universalName]) {
149
+ // if we already have a node with the universal name, that means we are mapping a second
150
+ // original node name to the same universal node name, so we just push all its children into
151
+ // the list
152
+ nodeObj[universalName].push(...nodeObj[nodeName]);
153
+ }
154
+ else {
155
+ nodeObj[universalName] = nodeObj[nodeName];
156
+ }
157
+ delete nodeObj[nodeName];
185
158
  }
186
-
187
- delete nodeObj[nodeName];
188
- }
189
-
190
- return {
191
- nodes: unknownNodes,
192
- attrs: unknownAttrs
193
- };
159
+ return { nodes: unknownNodes, attrs: unknownAttrs };
194
160
  }
195
-
161
+ exports.transformChildNodes = transformChildNodes;
196
162
  function transformAttrs(nodeObj, attrs, platform) {
197
- const unknownAttrs = [];
198
-
199
- for (const attr of attrs) {
200
- const cleanAttr = attr.substring(2);
201
-
202
- if (_attrMap.REMOVE_ATTRS.includes(cleanAttr)) {
203
- delete nodeObj[attr];
204
- continue;
163
+ const unknownAttrs = [];
164
+ for (const attr of attrs) {
165
+ const cleanAttr = attr.substring(2);
166
+ if (attr_map_1.REMOVE_ATTRS.includes(cleanAttr)) {
167
+ delete nodeObj[attr];
168
+ continue;
169
+ }
170
+ const universalAttr = getUniversalAttrName(cleanAttr, platform);
171
+ if (universalAttr === null) {
172
+ unknownAttrs.push(cleanAttr);
173
+ continue;
174
+ }
175
+ const newAttr = `${exports.ATTR_PREFIX}${universalAttr}`;
176
+ if (newAttr !== attr) {
177
+ nodeObj[newAttr] = nodeObj[attr];
178
+ delete nodeObj[attr];
179
+ }
205
180
  }
206
-
207
- const universalAttr = getUniversalAttrName(cleanAttr, platform);
208
-
209
- if (universalAttr === null) {
210
- unknownAttrs.push(cleanAttr);
211
- continue;
212
- }
213
-
214
- const newAttr = `${ATTR_PREFIX}${universalAttr}`;
215
-
216
- if (newAttr !== attr) {
217
- nodeObj[newAttr] = nodeObj[attr];
218
- delete nodeObj[attr];
219
- }
220
- }
221
-
222
- return unknownAttrs;
181
+ return unknownAttrs;
223
182
  }
224
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQQVJTRV9PUFRTIiwiaWdub3JlQXR0cmlidXRlcyIsImFycmF5TW9kZSIsIkdFTl9PUFRTIiwiZm9ybWF0IiwiQVRUUl9QUkVGSVgiLCJJRFhfUEFUSF9QUkVGSVgiLCJJRFhfUFJFRklYIiwiaXNBdHRyIiwiayIsInN1YnN0cmluZyIsImlzTm9kZSIsInRyYW5zZm9ybVNvdXJjZVhtbCIsInhtbFN0ciIsInBsYXRmb3JtIiwibWV0YWRhdGEiLCJhZGRJbmRleFBhdGgiLCJyZXBsYWNlIiwieG1sT2JqIiwicGFyc2VyIiwicGFyc2UiLCJ1bmtub3ducyIsInRyYW5zZm9ybU5vZGUiLCJwYXJlbnRQYXRoIiwialBhcnNlciIsImoyeFBhcnNlciIsInRyYW5zZm9ybWVkWG1sIiwidHJpbSIsInhtbCIsImdldFVuaXZlcnNhbE5hbWUiLCJuYW1lTWFwIiwibmFtZSIsInRyYW5zbGF0ZWROYW1lIiwiT2JqZWN0Iiwia2V5cyIsInNvdXJjZU5vZGVzIiwiXyIsImlzQXJyYXkiLCJpbmNsdWRlcyIsImdldFVuaXZlcnNhbE5vZGVOYW1lIiwibm9kZU5hbWUiLCJOT0RFX01BUCIsImdldFVuaXZlcnNhbEF0dHJOYW1lIiwiYXR0ck5hbWUiLCJBVFRSX01BUCIsIm5vZGVPYmoiLCJ1bmtub3duTm9kZXMiLCJ1bmtub3duQXR0cnMiLCJpc1BsYWluT2JqZWN0IiwiY2hpbGROb2RlTmFtZXMiLCJmaWx0ZXIiLCJhdHRycyIsInRoaXNJbmRleFBhdGgiLCJsZW5ndGgiLCJFcnJvciIsIlRSQU5TRk9STVMiLCJwdXNoIiwidHJhbnNmb3JtQXR0cnMiLCJ0cmFuc2Zvcm1DaGlsZE5vZGVzIiwibm9kZXMiLCJjaGlsZE9iaiIsInVuaXEiLCJ1bml2ZXJzYWxOYW1lIiwiYXR0ciIsImNsZWFuQXR0ciIsIlJFTU9WRV9BVFRSUyIsInVuaXZlcnNhbEF0dHIiLCJuZXdBdHRyIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3NvdXJjZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhcnNlciwge2oyeFBhcnNlcn0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJztcbmltcG9ydCBOT0RFX01BUCBmcm9tICcuL25vZGUtbWFwJztcbmltcG9ydCB7QVRUUl9NQVAsIFJFTU9WRV9BVFRSU30gZnJvbSAnLi9hdHRyLW1hcCc7XG5pbXBvcnQgVFJBTlNGT1JNUyBmcm9tICcuL3RyYW5zZm9ybWVycyc7XG5cbmNvbnN0IFBBUlNFX09QVFMgPSB7XG4gIGlnbm9yZUF0dHJpYnV0ZXM6IGZhbHNlLFxuICBhcnJheU1vZGU6IHRydWUsXG59O1xuXG5jb25zdCBHRU5fT1BUUyA9IHtcbiAgaWdub3JlQXR0cmlidXRlczogZmFsc2UsXG4gIGFycmF5TW9kZTogdHJ1ZSxcbiAgZm9ybWF0OiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IEFUVFJfUFJFRklYID0gJ0BfJztcbmV4cG9ydCBjb25zdCBJRFhfUEFUSF9QUkVGSVggPSBgJHtBVFRSX1BSRUZJWH1pbmRleFBhdGhgO1xuZXhwb3J0IGNvbnN0IElEWF9QUkVGSVggPSBgJHtBVFRSX1BSRUZJWH1pbmRleGA7XG5cbmNvbnN0IGlzQXR0ciA9IChrKSA9PiBrLnN1YnN0cmluZygwLCAyKSA9PT0gQVRUUl9QUkVGSVg7XG5jb25zdCBpc05vZGUgPSAoaykgPT4gIWlzQXR0cihrKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVNvdXJjZVhtbCh4bWxTdHIsIHBsYXRmb3JtLCB7bWV0YWRhdGEgPSB7fSwgYWRkSW5kZXhQYXRoID0gZmFsc2V9ID0ge30pIHtcbiAgLy8gZmlyc3QgdGhpbmcgd2Ugd2FudCB0byBkbyBpcyBtb2RpZnkgdGhlIGlvcyBzb3VyY2Ugcm9vdCBub2RlLCBiZWNhdXNlIGl0IGRvZXNuJ3QgaW5jbHVkZSB0aGVcbiAgLy8gbmVjZXNzYXJ5IGluZGV4IGF0dHJpYnV0ZSwgc28gd2UgYWRkIGl0IGlmIGl0J3Mgbm90IHRoZXJlXG4gIHhtbFN0ciA9IHhtbFN0ci5yZXBsYWNlKCc8QXBwaXVtQVVUPicsICc8QXBwaXVtQVVUIGluZGV4PVwiMFwiPicpO1xuICBjb25zdCB4bWxPYmogPSBwYXJzZXIucGFyc2UoeG1sU3RyLCBQQVJTRV9PUFRTKTtcbiAgY29uc3QgdW5rbm93bnMgPSB0cmFuc2Zvcm1Ob2RlKHhtbE9iaiwgcGxhdGZvcm0sIHtcbiAgICBtZXRhZGF0YSxcbiAgICBhZGRJbmRleFBhdGgsXG4gICAgcGFyZW50UGF0aDogJycsXG4gIH0pO1xuICBjb25zdCBqUGFyc2VyID0gbmV3IGoyeFBhcnNlcihHRU5fT1BUUyk7XG4gIGxldCB0cmFuc2Zvcm1lZFhtbCA9IGpQYXJzZXIucGFyc2UoeG1sT2JqKS50cmltKCk7XG4gIHRyYW5zZm9ybWVkWG1sID0gYDw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxcbiR7dHJhbnNmb3JtZWRYbWx9YDtcbiAgcmV0dXJuIHt4bWw6IHRyYW5zZm9ybWVkWG1sLCB1bmtub3duc307XG59XG5cbmZ1bmN0aW9uIGdldFVuaXZlcnNhbE5hbWUobmFtZU1hcCwgbmFtZSwgcGxhdGZvcm0pIHtcbiAgZm9yIChjb25zdCB0cmFuc2xhdGVkTmFtZSBvZiBPYmplY3Qua2V5cyhuYW1lTWFwKSkge1xuICAgIGNvbnN0IHNvdXJjZU5vZGVzID0gbmFtZU1hcFt0cmFuc2xhdGVkTmFtZV0/LltwbGF0Zm9ybV07XG4gICAgaWYgKF8uaXNBcnJheShzb3VyY2VOb2RlcykgJiYgc291cmNlTm9kZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIHJldHVybiB0cmFuc2xhdGVkTmFtZTtcbiAgICB9XG4gICAgaWYgKHNvdXJjZU5vZGVzID09PSBuYW1lKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZE5hbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pdmVyc2FsTm9kZU5hbWUobm9kZU5hbWUsIHBsYXRmb3JtKSB7XG4gIHJldHVybiBnZXRVbml2ZXJzYWxOYW1lKE5PREVfTUFQLCBub2RlTmFtZSwgcGxhdGZvcm0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pdmVyc2FsQXR0ck5hbWUoYXR0ck5hbWUsIHBsYXRmb3JtKSB7XG4gIHJldHVybiBnZXRVbml2ZXJzYWxOYW1lKEFUVFJfTUFQLCBhdHRyTmFtZSwgcGxhdGZvcm0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTm9kZShub2RlT2JqLCBwbGF0Zm9ybSwge21ldGFkYXRhLCBhZGRJbmRleFBhdGgsIHBhcmVudFBhdGh9KSB7XG4gIGNvbnN0IHVua25vd25Ob2RlcyA9IFtdO1xuICBjb25zdCB1bmtub3duQXR0cnMgPSBbXTtcbiAgaWYgKF8uaXNQbGFpbk9iamVjdChub2RlT2JqKSkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhub2RlT2JqKTtcbiAgICBjb25zdCBjaGlsZE5vZGVOYW1lcyA9IGtleXMuZmlsdGVyKGlzTm9kZSk7XG4gICAgY29uc3QgYXR0cnMgPSBrZXlzLmZpbHRlcihpc0F0dHIpO1xuICAgIGxldCB0aGlzSW5kZXhQYXRoID0gcGFyZW50UGF0aDtcblxuICAgIGlmIChhdHRycy5sZW5ndGggJiYgYWRkSW5kZXhQYXRoKSB7XG4gICAgICBpZiAoIWF0dHJzLmluY2x1ZGVzKElEWF9QUkVGSVgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5kZXggcGF0aCBpcyByZXF1aXJlZCBidXQgbm9kZSBmb3VuZCB3aXRoIG5vICdpbmRleCcgYXR0cmlidXRlYCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXNJbmRleFBhdGggPSBgJHtwYXJlbnRQYXRofS8ke25vZGVPYmpbSURYX1BSRUZJWF19YDtcbiAgICAgIG5vZGVPYmpbSURYX1BBVEhfUFJFRklYXSA9IHRoaXNJbmRleFBhdGg7XG4gICAgfVxuXG4gICAgVFJBTlNGT1JNU1twbGF0Zm9ybV0/Lihub2RlT2JqLCBtZXRhZGF0YSk7XG4gICAgdW5rbm93bkF0dHJzLnB1c2goLi4udHJhbnNmb3JtQXR0cnMobm9kZU9iaiwgYXR0cnMsIHBsYXRmb3JtKSk7XG4gICAgY29uc3QgdW5rbm93bnMgPSB0cmFuc2Zvcm1DaGlsZE5vZGVzKG5vZGVPYmosIGNoaWxkTm9kZU5hbWVzLCBwbGF0Zm9ybSwge1xuICAgICAgbWV0YWRhdGEsXG4gICAgICBhZGRJbmRleFBhdGgsXG4gICAgICBwYXJlbnRQYXRoOiB0aGlzSW5kZXhQYXRoLFxuICAgIH0pO1xuICAgIHVua25vd25BdHRycy5wdXNoKC4uLnVua25vd25zLmF0dHJzKTtcbiAgICB1bmtub3duTm9kZXMucHVzaCguLi51bmtub3ducy5ub2Rlcyk7XG4gIH0gZWxzZSBpZiAoXy5pc0FycmF5KG5vZGVPYmopKSB7XG4gICAgZm9yIChjb25zdCBjaGlsZE9iaiBvZiBub2RlT2JqKSB7XG4gICAgICBjb25zdCB7bm9kZXMsIGF0dHJzfSA9IHRyYW5zZm9ybU5vZGUoY2hpbGRPYmosIHBsYXRmb3JtLCB7XG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICBhZGRJbmRleFBhdGgsXG4gICAgICAgIHBhcmVudFBhdGgsXG4gICAgICB9KTtcbiAgICAgIHVua25vd25Ob2Rlcy5wdXNoKC4uLm5vZGVzKTtcbiAgICAgIHVua25vd25BdHRycy5wdXNoKC4uLmF0dHJzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBub2RlczogXy51bmlxKHVua25vd25Ob2RlcyksXG4gICAgYXR0cnM6IF8udW5pcSh1bmtub3duQXR0cnMpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtQ2hpbGROb2RlcyhcbiAgbm9kZU9iaixcbiAgY2hpbGROb2RlTmFtZXMsXG4gIHBsYXRmb3JtLFxuICB7bWV0YWRhdGEsIGFkZEluZGV4UGF0aCwgcGFyZW50UGF0aH1cbikge1xuICBjb25zdCB1bmtub3duTm9kZXMgPSBbXTtcbiAgY29uc3QgdW5rbm93bkF0dHJzID0gW107XG4gIGZvciAoY29uc3Qgbm9kZU5hbWUgb2YgY2hpbGROb2RlTmFtZXMpIHtcbiAgICAvLyBiZWZvcmUgbW9kaWZ5aW5nIHRoZSBuYW1lIG9mIHRoaXMgY2hpbGQgbm9kZSwgcmVjdXJzZSBkb3duIGFuZCBtb2RpZnkgdGhlIHN1YnRyZWVcbiAgICBjb25zdCB7bm9kZXMsIGF0dHJzfSA9IHRyYW5zZm9ybU5vZGUobm9kZU9ialtub2RlTmFtZV0sIHBsYXRmb3JtLCB7XG4gICAgICBtZXRhZGF0YSxcbiAgICAgIGFkZEluZGV4UGF0aCxcbiAgICAgIHBhcmVudFBhdGgsXG4gICAgfSk7XG4gICAgdW5rbm93bk5vZGVzLnB1c2goLi4ubm9kZXMpO1xuICAgIHVua25vd25BdHRycy5wdXNoKC4uLmF0dHJzKTtcblxuICAgIC8vIG5vdyB0cmFuc2xhdGUgdGhlIG5vZGUgbmFtZSBhbmQgcmVwbGFjZSB0aGUgc3VidHJlZSB3aXRoIHRoaXMgbm9kZVxuICAgIGNvbnN0IHVuaXZlcnNhbE5hbWUgPSBnZXRVbml2ZXJzYWxOb2RlTmFtZShub2RlTmFtZSwgcGxhdGZvcm0pO1xuICAgIGlmICh1bml2ZXJzYWxOYW1lID09PSBudWxsKSB7XG4gICAgICB1bmtub3duTm9kZXMucHVzaChub2RlTmFtZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBzaW5jZSBtdWx0aXBsZSBjaGlsZCBub2RlIG5hbWVzIGNvdWxkIG1hcCB0byB0aGUgc2FtZSBuZXcgdHJhbnNmb3JtZWQgbm9kZSBuYW1lLCB3ZSBjYW4ndFxuICAgIC8vIHNpbXBseSBhc3NpZ24gbm9kZU9ialt1bml2ZXJzYWxOYW1lXSA9IG5vZGVPYmpbbm9kZU5hbWVdOyB3ZSBuZWVkIHRvIGJlIHNlbnNpdGl2ZSB0byB0aGVcbiAgICAvLyBzaXR1YXRpb24gd2hlcmUgdGhlIGVuZCByZXN1bHQgaXMgYW4gYXJyYXkgb2YgY2hpbGRyZW4gaGF2aW5nIHRoZSBzYW1lIG5vZGUgbmFtZVxuICAgIGlmIChub2RlT2JqW3VuaXZlcnNhbE5hbWVdKSB7XG4gICAgICAvLyBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBub2RlIHdpdGggdGhlIHVuaXZlcnNhbCBuYW1lLCB0aGF0IG1lYW5zIHdlIGFyZSBtYXBwaW5nIGEgc2Vjb25kXG4gICAgICAvLyBvcmlnaW5hbCBub2RlIG5hbWUgdG8gdGhlIHNhbWUgdW5pdmVyc2FsIG5vZGUgbmFtZSwgc28gd2UganVzdCBwdXNoIGFsbCBpdHMgY2hpbGRyZW4gaW50b1xuICAgICAgLy8gdGhlIGxpc3RcbiAgICAgIG5vZGVPYmpbdW5pdmVyc2FsTmFtZV0ucHVzaCguLi5ub2RlT2JqW25vZGVOYW1lXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVPYmpbdW5pdmVyc2FsTmFtZV0gPSBub2RlT2JqW25vZGVOYW1lXTtcbiAgICB9XG4gICAgZGVsZXRlIG5vZGVPYmpbbm9kZU5hbWVdO1xuICB9XG4gIHJldHVybiB7bm9kZXM6IHVua25vd25Ob2RlcywgYXR0cnM6IHVua25vd25BdHRyc307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1BdHRycyhub2RlT2JqLCBhdHRycywgcGxhdGZvcm0pIHtcbiAgY29uc3QgdW5rbm93bkF0dHJzID0gW107XG4gIGZvciAoY29uc3QgYXR0ciBvZiBhdHRycykge1xuICAgIGNvbnN0IGNsZWFuQXR0ciA9IGF0dHIuc3Vic3RyaW5nKDIpO1xuICAgIGlmIChSRU1PVkVfQVRUUlMuaW5jbHVkZXMoY2xlYW5BdHRyKSkge1xuICAgICAgZGVsZXRlIG5vZGVPYmpbYXR0cl07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdW5pdmVyc2FsQXR0ciA9IGdldFVuaXZlcnNhbEF0dHJOYW1lKGNsZWFuQXR0ciwgcGxhdGZvcm0pO1xuICAgIGlmICh1bml2ZXJzYWxBdHRyID09PSBudWxsKSB7XG4gICAgICB1bmtub3duQXR0cnMucHVzaChjbGVhbkF0dHIpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5ld0F0dHIgPSBgJHtBVFRSX1BSRUZJWH0ke3VuaXZlcnNhbEF0dHJ9YDtcbiAgICBpZiAobmV3QXR0ciAhPT0gYXR0cikge1xuICAgICAgbm9kZU9ialtuZXdBdHRyXSA9IG5vZGVPYmpbYXR0cl07XG4gICAgICBkZWxldGUgbm9kZU9ialthdHRyXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVua25vd25BdHRycztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsTUFBTUEsVUFBVSxHQUFHO0VBQ2pCQyxnQkFBZ0IsRUFBRSxLQUREO0VBRWpCQyxTQUFTLEVBQUU7QUFGTSxDQUFuQjtBQUtBLE1BQU1DLFFBQVEsR0FBRztFQUNmRixnQkFBZ0IsRUFBRSxLQURIO0VBRWZDLFNBQVMsRUFBRSxJQUZJO0VBR2ZFLE1BQU0sRUFBRTtBQUhPLENBQWpCO0FBTU8sTUFBTUMsV0FBVyxHQUFHLElBQXBCOztBQUNBLE1BQU1DLGVBQWUsR0FBSSxHQUFFRCxXQUFZLFdBQXZDOztBQUNBLE1BQU1FLFVBQVUsR0FBSSxHQUFFRixXQUFZLE9BQWxDOzs7QUFFUCxNQUFNRyxNQUFNLEdBQUlDLENBQUQsSUFBT0EsQ0FBQyxDQUFDQyxTQUFGLENBQVksQ0FBWixFQUFlLENBQWYsTUFBc0JMLFdBQTVDOztBQUNBLE1BQU1NLE1BQU0sR0FBSUYsQ0FBRCxJQUFPLENBQUNELE1BQU0sQ0FBQ0MsQ0FBRCxDQUE3Qjs7QUFFTyxTQUFTRyxrQkFBVCxDQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0VBQUNDLFFBQVEsR0FBRyxFQUFaO0VBQWdCQyxZQUFZLEdBQUc7QUFBL0IsSUFBd0MsRUFBdEYsRUFBMEY7RUFHL0ZILE1BQU0sR0FBR0EsTUFBTSxDQUFDSSxPQUFQLENBQWUsYUFBZixFQUE4Qix1QkFBOUIsQ0FBVDs7RUFDQSxNQUFNQyxNQUFNLEdBQUdDLHNCQUFBLENBQU9DLEtBQVAsQ0FBYVAsTUFBYixFQUFxQmIsVUFBckIsQ0FBZjs7RUFDQSxNQUFNcUIsUUFBUSxHQUFHQyxhQUFhLENBQUNKLE1BQUQsRUFBU0osUUFBVCxFQUFtQjtJQUMv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
183
+ exports.transformAttrs = transformAttrs;
184
+ //# sourceMappingURL=source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","names":["PARSE_OPTS","ignoreAttributes","arrayMode","GEN_OPTS","format","ATTR_PREFIX","IDX_PATH_PREFIX","IDX_PREFIX","isAttr","k","substring","isNode","transformSourceXml","xmlStr","platform","metadata","addIndexPath","replace","xmlObj","parser","parse","unknowns","transformNode","parentPath","jParser","j2xParser","transformedXml","trim","xml","getUniversalName","nameMap","name","translatedName","Object","keys","sourceNodes","_","isArray","includes","getUniversalNodeName","nodeName","NODE_MAP","getUniversalAttrName","attrName","ATTR_MAP","nodeObj","unknownNodes","unknownAttrs","isPlainObject","childNodeNames","filter","attrs","thisIndexPath","length","Error","TRANSFORMS","push","transformAttrs","transformChildNodes","nodes","childObj","uniq","universalName","attr","cleanAttr","REMOVE_ATTRS","universalAttr","newAttr"],"sources":["../../lib/source.js"],"sourcesContent":["import _ from 'lodash';\nimport parser, {j2xParser} from 'fast-xml-parser';\nimport NODE_MAP from './node-map';\nimport {ATTR_MAP, REMOVE_ATTRS} from './attr-map';\nimport TRANSFORMS from './transformers';\n\nconst PARSE_OPTS = {\n ignoreAttributes: false,\n arrayMode: true,\n};\n\nconst GEN_OPTS = {\n ignoreAttributes: false,\n arrayMode: true,\n format: true,\n};\n\nexport const ATTR_PREFIX = '@_';\nexport const IDX_PATH_PREFIX = `${ATTR_PREFIX}indexPath`;\nexport const IDX_PREFIX = `${ATTR_PREFIX}index`;\n\nconst isAttr = (k) => k.substring(0, 2) === ATTR_PREFIX;\nconst isNode = (k) => !isAttr(k);\n\nexport function transformSourceXml(xmlStr, platform, {metadata = {}, addIndexPath = false} = {}) {\n // first thing we want to do is modify the ios source root node, because it doesn't include the\n // necessary index attribute, so we add it if it's not there\n xmlStr = xmlStr.replace('<AppiumAUT>', '<AppiumAUT index=\"0\">');\n const xmlObj = parser.parse(xmlStr, PARSE_OPTS);\n const unknowns = transformNode(xmlObj, platform, {\n metadata,\n addIndexPath,\n parentPath: '',\n });\n const jParser = new j2xParser(GEN_OPTS);\n let transformedXml = jParser.parse(xmlObj).trim();\n transformedXml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n${transformedXml}`;\n return {xml: transformedXml, unknowns};\n}\n\nfunction getUniversalName(nameMap, name, platform) {\n for (const translatedName of Object.keys(nameMap)) {\n const sourceNodes = nameMap[translatedName]?.[platform];\n if (_.isArray(sourceNodes) && sourceNodes.includes(name)) {\n return translatedName;\n }\n if (sourceNodes === name) {\n return translatedName;\n }\n }\n return null;\n}\n\nexport function getUniversalNodeName(nodeName, platform) {\n return getUniversalName(NODE_MAP, nodeName, platform);\n}\n\nexport function getUniversalAttrName(attrName, platform) {\n return getUniversalName(ATTR_MAP, attrName, platform);\n}\n\nexport function transformNode(nodeObj, platform, {metadata, addIndexPath, parentPath}) {\n const unknownNodes = [];\n const unknownAttrs = [];\n if (_.isPlainObject(nodeObj)) {\n const keys = Object.keys(nodeObj);\n const childNodeNames = keys.filter(isNode);\n const attrs = keys.filter(isAttr);\n let thisIndexPath = parentPath;\n\n if (attrs.length && addIndexPath) {\n if (!attrs.includes(IDX_PREFIX)) {\n throw new Error(`Index path is required but node found with no 'index' attribute`);\n }\n\n thisIndexPath = `${parentPath}/${nodeObj[IDX_PREFIX]}`;\n nodeObj[IDX_PATH_PREFIX] = thisIndexPath;\n }\n\n TRANSFORMS[platform]?.(nodeObj, metadata);\n unknownAttrs.push(...transformAttrs(nodeObj, attrs, platform));\n const unknowns = transformChildNodes(nodeObj, childNodeNames, platform, {\n metadata,\n addIndexPath,\n parentPath: thisIndexPath,\n });\n unknownAttrs.push(...unknowns.attrs);\n unknownNodes.push(...unknowns.nodes);\n } else if (_.isArray(nodeObj)) {\n for (const childObj of nodeObj) {\n const {nodes, attrs} = transformNode(childObj, platform, {\n metadata,\n addIndexPath,\n parentPath,\n });\n unknownNodes.push(...nodes);\n unknownAttrs.push(...attrs);\n }\n }\n return {\n nodes: _.uniq(unknownNodes),\n attrs: _.uniq(unknownAttrs),\n };\n}\n\nexport function transformChildNodes(\n nodeObj,\n childNodeNames,\n platform,\n {metadata, addIndexPath, parentPath}\n) {\n const unknownNodes = [];\n const unknownAttrs = [];\n for (const nodeName of childNodeNames) {\n // before modifying the name of this child node, recurse down and modify the subtree\n const {nodes, attrs} = transformNode(nodeObj[nodeName], platform, {\n metadata,\n addIndexPath,\n parentPath,\n });\n unknownNodes.push(...nodes);\n unknownAttrs.push(...attrs);\n\n // now translate the node name and replace the subtree with this node\n const universalName = getUniversalNodeName(nodeName, platform);\n if (universalName === null) {\n unknownNodes.push(nodeName);\n continue;\n }\n\n // since multiple child node names could map to the same new transformed node name, we can't\n // simply assign nodeObj[universalName] = nodeObj[nodeName]; we need to be sensitive to the\n // situation where the end result is an array of children having the same node name\n if (nodeObj[universalName]) {\n // if we already have a node with the universal name, that means we are mapping a second\n // original node name to the same universal node name, so we just push all its children into\n // the list\n nodeObj[universalName].push(...nodeObj[nodeName]);\n } else {\n nodeObj[universalName] = nodeObj[nodeName];\n }\n delete nodeObj[nodeName];\n }\n return {nodes: unknownNodes, attrs: unknownAttrs};\n}\n\nexport function transformAttrs(nodeObj, attrs, platform) {\n const unknownAttrs = [];\n for (const attr of attrs) {\n const cleanAttr = attr.substring(2);\n if (REMOVE_ATTRS.includes(cleanAttr)) {\n delete nodeObj[attr];\n continue;\n }\n const universalAttr = getUniversalAttrName(cleanAttr, platform);\n if (universalAttr === null) {\n unknownAttrs.push(cleanAttr);\n continue;\n }\n const newAttr = `${ATTR_PREFIX}${universalAttr}`;\n if (newAttr !== attr) {\n nodeObj[newAttr] = nodeObj[attr];\n delete nodeObj[attr];\n }\n }\n return unknownAttrs;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../lib/source.js"],"names":[],"mappings":"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"}
@@ -1,40 +1,31 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- require("source-map-support/register");
9
-
10
- var _source = require("./source");
11
-
12
- function ios(nodeObj) {
13
- return nodeObj;
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const source_1 = require("./source");
4
+ function ios(nodeObj /*, metadata*/) {
5
+ return nodeObj;
14
6
  }
15
-
16
7
  function android(nodeObj, metadata) {
17
- const resId = nodeObj[`${_source.ATTR_PREFIX}resource-id`];
18
-
19
- if (resId && metadata.appPackage) {
20
- nodeObj[`${_source.ATTR_PREFIX}resource-id`] = resId.replace(`${metadata.appPackage}:id/`, '');
21
- }
22
-
23
- if (nodeObj[`${_source.ATTR_PREFIX}bounds`]) {
24
- const boundsArray = nodeObj[`${_source.ATTR_PREFIX}bounds`].split(/\[|\]|,/).filter(str => str !== '');
25
- const [x, y, x2, y2] = boundsArray;
26
- const width = x2 - x;
27
- const height = y2 - y;
28
- nodeObj[`${_source.ATTR_PREFIX}x`] = x;
29
- nodeObj[`${_source.ATTR_PREFIX}y`] = y;
30
- nodeObj[`${_source.ATTR_PREFIX}width`] = width;
31
- nodeObj[`${_source.ATTR_PREFIX}height`] = height;
32
- }
8
+ // strip android:id from front of id
9
+ const resId = nodeObj[`${source_1.ATTR_PREFIX}resource-id`];
10
+ if (resId && metadata.appPackage) {
11
+ nodeObj[`${source_1.ATTR_PREFIX}resource-id`] = resId.replace(`${metadata.appPackage}:id/`, '');
12
+ }
13
+ // turn bounds attr into rect-based attrs
14
+ if (nodeObj[`${source_1.ATTR_PREFIX}bounds`]) {
15
+ const boundsArray = nodeObj[`${source_1.ATTR_PREFIX}bounds`]
16
+ .split(/\[|\]|,/)
17
+ .filter((str) => str !== '');
18
+ const [x, y, x2, y2] = boundsArray;
19
+ const width = x2 - x;
20
+ const height = y2 - y;
21
+ nodeObj[`${source_1.ATTR_PREFIX}x`] = x;
22
+ nodeObj[`${source_1.ATTR_PREFIX}y`] = y;
23
+ nodeObj[`${source_1.ATTR_PREFIX}width`] = width;
24
+ nodeObj[`${source_1.ATTR_PREFIX}height`] = height;
25
+ }
33
26
  }
34
-
35
- var _default = {
36
- ios,
37
- android
27
+ exports.default = {
28
+ ios,
29
+ android,
38
30
  };
39
- exports.default = _default;
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpb3MiLCJub2RlT2JqIiwiYW5kcm9pZCIsIm1ldGFkYXRhIiwicmVzSWQiLCJBVFRSX1BSRUZJWCIsImFwcFBhY2thZ2UiLCJyZXBsYWNlIiwiYm91bmRzQXJyYXkiLCJzcGxpdCIsImZpbHRlciIsInN0ciIsIngiLCJ5IiwieDIiLCJ5MiIsIndpZHRoIiwiaGVpZ2h0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3RyYW5zZm9ybWVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FUVFJfUFJFRklYfSBmcm9tICcuL3NvdXJjZSc7XG5cbmZ1bmN0aW9uIGlvcyhub2RlT2JqIC8qLCBtZXRhZGF0YSovKSB7XG4gIHJldHVybiBub2RlT2JqO1xufVxuXG5mdW5jdGlvbiBhbmRyb2lkKG5vZGVPYmosIG1ldGFkYXRhKSB7XG4gIC8vIHN0cmlwIGFuZHJvaWQ6aWQgZnJvbSBmcm9udCBvZiBpZFxuICBjb25zdCByZXNJZCA9IG5vZGVPYmpbYCR7QVRUUl9QUkVGSVh9cmVzb3VyY2UtaWRgXTtcbiAgaWYgKHJlc0lkICYmIG1ldGFkYXRhLmFwcFBhY2thZ2UpIHtcbiAgICBub2RlT2JqW2Ake0FUVFJfUFJFRklYfXJlc291cmNlLWlkYF0gPSByZXNJZC5yZXBsYWNlKGAke21ldGFkYXRhLmFwcFBhY2thZ2V9OmlkL2AsICcnKTtcbiAgfVxuXG4gIC8vIHR1cm4gYm91bmRzIGF0dHIgaW50byByZWN0LWJhc2VkIGF0dHJzXG4gIGlmIChub2RlT2JqW2Ake0FUVFJfUFJFRklYfWJvdW5kc2BdKSB7XG4gICAgY29uc3QgYm91bmRzQXJyYXkgPSBub2RlT2JqW2Ake0FUVFJfUFJFRklYfWJvdW5kc2BdXG4gICAgICAuc3BsaXQoL1xcW3xcXF18LC8pXG4gICAgICAuZmlsdGVyKChzdHIpID0+IHN0ciAhPT0gJycpO1xuICAgIGNvbnN0IFt4LCB5LCB4MiwgeTJdID0gYm91bmRzQXJyYXk7XG4gICAgY29uc3Qgd2lkdGggPSB4MiAtIHg7XG4gICAgY29uc3QgaGVpZ2h0ID0geTIgLSB5O1xuICAgIG5vZGVPYmpbYCR7QVRUUl9QUkVGSVh9eGBdID0geDtcbiAgICBub2RlT2JqW2Ake0FUVFJfUFJFRklYfXlgXSA9IHk7XG4gICAgbm9kZU9ialtgJHtBVFRSX1BSRUZJWH13aWR0aGBdID0gd2lkdGg7XG4gICAgbm9kZU9ialtgJHtBVFRSX1BSRUZJWH1oZWlnaHRgXSA9IGhlaWdodDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlvcyxcbiAgYW5kcm9pZCxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLFNBQVNBLEdBQVQsQ0FBYUMsT0FBYixFQUFxQztFQUNuQyxPQUFPQSxPQUFQO0FBQ0Q7O0FBRUQsU0FBU0MsT0FBVCxDQUFpQkQsT0FBakIsRUFBMEJFLFFBQTFCLEVBQW9DO0VBRWxDLE1BQU1DLEtBQUssR0FBR0gsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLGFBQWhCLENBQXJCOztFQUNBLElBQUlELEtBQUssSUFBSUQsUUFBUSxDQUFDRyxVQUF0QixFQUFrQztJQUNoQ0wsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLGFBQWhCLENBQVAsR0FBdUNELEtBQUssQ0FBQ0csT0FBTixDQUFlLEdBQUVKLFFBQVEsQ0FBQ0csVUFBVyxNQUFyQyxFQUE0QyxFQUE1QyxDQUF2QztFQUNEOztFQUdELElBQUlMLE9BQU8sQ0FBRSxHQUFFSSxtQkFBWSxRQUFoQixDQUFYLEVBQXFDO0lBQ25DLE1BQU1HLFdBQVcsR0FBR1AsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLFFBQWhCLENBQVAsQ0FDakJJLEtBRGlCLENBQ1gsU0FEVyxFQUVqQkMsTUFGaUIsQ0FFVEMsR0FBRCxJQUFTQSxHQUFHLEtBQUssRUFGUCxDQUFwQjtJQUdBLE1BQU0sQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLEVBQU9DLEVBQVAsRUFBV0MsRUFBWCxJQUFpQlAsV0FBdkI7SUFDQSxNQUFNUSxLQUFLLEdBQUdGLEVBQUUsR0FBR0YsQ0FBbkI7SUFDQSxNQUFNSyxNQUFNLEdBQUdGLEVBQUUsR0FBR0YsQ0FBcEI7SUFDQVosT0FBTyxDQUFFLEdBQUVJLG1CQUFZLEdBQWhCLENBQVAsR0FBNkJPLENBQTdCO0lBQ0FYLE9BQU8sQ0FBRSxHQUFFSSxtQkFBWSxHQUFoQixDQUFQLEdBQTZCUSxDQUE3QjtJQUNBWixPQUFPLENBQUUsR0FBRUksbUJBQVksT0FBaEIsQ0FBUCxHQUFpQ1csS0FBakM7SUFDQWYsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLFFBQWhCLENBQVAsR0FBa0NZLE1BQWxDO0VBQ0Q7QUFDRjs7ZUFFYztFQUNiakIsR0FEYTtFQUViRTtBQUZhLEMifQ==
31
+ //# sourceMappingURL=transformers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.js","names":["ios","nodeObj","android","metadata","resId","ATTR_PREFIX","appPackage","replace","boundsArray","split","filter","str","x","y","x2","y2","width","height"],"sources":["../../lib/transformers.js"],"sourcesContent":["import {ATTR_PREFIX} from './source';\n\nfunction ios(nodeObj /*, metadata*/) {\n return nodeObj;\n}\n\nfunction android(nodeObj, metadata) {\n // strip android:id from front of id\n const resId = nodeObj[`${ATTR_PREFIX}resource-id`];\n if (resId && metadata.appPackage) {\n nodeObj[`${ATTR_PREFIX}resource-id`] = resId.replace(`${metadata.appPackage}:id/`, '');\n }\n\n // turn bounds attr into rect-based attrs\n if (nodeObj[`${ATTR_PREFIX}bounds`]) {\n const boundsArray = nodeObj[`${ATTR_PREFIX}bounds`]\n .split(/\\[|\\]|,/)\n .filter((str) => str !== '');\n const [x, y, x2, y2] = boundsArray;\n const width = x2 - x;\n const height = y2 - y;\n nodeObj[`${ATTR_PREFIX}x`] = x;\n nodeObj[`${ATTR_PREFIX}y`] = y;\n nodeObj[`${ATTR_PREFIX}width`] = width;\n nodeObj[`${ATTR_PREFIX}height`] = height;\n }\n}\n\nexport default {\n ios,\n android,\n};\n"],"mappings":";;;;;;;;;AAAA;;AAEA,SAASA,GAAT,CAAaC,OAAb,EAAqC;EACnC,OAAOA,OAAP;AACD;;AAED,SAASC,OAAT,CAAiBD,OAAjB,EAA0BE,QAA1B,EAAoC;EAElC,MAAMC,KAAK,GAAGH,OAAO,CAAE,GAAEI,mBAAY,aAAhB,CAArB;;EACA,IAAID,KAAK,IAAID,QAAQ,CAACG,UAAtB,EAAkC;IAChCL,OAAO,CAAE,GAAEI,mBAAY,aAAhB,CAAP,GAAuCD,KAAK,CAACG,OAAN,CAAe,GAAEJ,QAAQ,CAACG,UAAW,MAArC,EAA4C,EAA5C,CAAvC;EACD;;EAGD,IAAIL,OAAO,CAAE,GAAEI,mBAAY,QAAhB,CAAX,EAAqC;IACnC,MAAMG,WAAW,GAAGP,OAAO,CAAE,GAAEI,mBAAY,QAAhB,CAAP,CACjBI,KADiB,CACX,SADW,EAEjBC,MAFiB,CAETC,GAAD,IAASA,GAAG,KAAK,EAFP,CAApB;IAGA,MAAM,CAACC,CAAD,EAAIC,CAAJ,EAAOC,EAAP,EAAWC,EAAX,IAAiBP,WAAvB;IACA,MAAMQ,KAAK,GAAGF,EAAE,GAAGF,CAAnB;IACA,MAAMK,MAAM,GAAGF,EAAE,GAAGF,CAApB;IACAZ,OAAO,CAAE,GAAEI,mBAAY,GAAhB,CAAP,GAA6BO,CAA7B;IACAX,OAAO,CAAE,GAAEI,mBAAY,GAAhB,CAAP,GAA6BQ,CAA7B;IACAZ,OAAO,CAAE,GAAEI,mBAAY,OAAhB,CAAP,GAAiCW,KAAjC;IACAf,OAAO,CAAE,GAAEI,mBAAY,QAAhB,CAAP,GAAkCY,MAAlC;EACD;AACF;;eAEc;EACbjB,GADa;EAEbE;AAFa,C"}
1
+ {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../../lib/transformers.js"],"names":[],"mappings":";;AAAA,qCAAqC;AAErC,SAAS,GAAG,CAAC,OAAO,CAAC,cAAc;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,QAAQ;IAChC,oCAAoC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,oBAAW,aAAa,CAAC,CAAC;IACnD,IAAI,KAAK,IAAI,QAAQ,CAAC,UAAU,EAAE;QAChC,OAAO,CAAC,GAAG,oBAAW,aAAa,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,UAAU,MAAM,EAAE,EAAE,CAAC,CAAC;KACxF;IAED,yCAAyC;IACzC,IAAI,OAAO,CAAC,GAAG,oBAAW,QAAQ,CAAC,EAAE;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,oBAAW,QAAQ,CAAC;aAChD,KAAK,CAAC,SAAS,CAAC;aAChB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC;QACnC,MAAM,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,oBAAW,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,oBAAW,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,oBAAW,OAAO,CAAC,GAAG,KAAK,CAAC;QACvC,OAAO,CAAC,GAAG,oBAAW,QAAQ,CAAC,GAAG,MAAM,CAAC;KAC1C;AACH,CAAC;AAED,kBAAe;IACb,GAAG;IACH,OAAO;CACR,CAAC"}