@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.
- package/build/lib/attr-map.js +32 -47
- package/build/lib/attr-map.js.map +1 -1
- package/build/lib/index.js +23 -46
- package/build/lib/index.js.map +1 -1
- package/build/lib/logger.js +5 -15
- package/build/lib/logger.js.map +1 -1
- package/build/lib/node-map.js +225 -146
- package/build/lib/node-map.js.map +1 -1
- package/build/lib/plugin.js +79 -91
- package/build/lib/plugin.js.map +1 -1
- package/build/lib/source.js +162 -202
- package/build/lib/source.js.map +1 -1
- package/build/lib/transformers.js +26 -35
- package/build/lib/transformers.js.map +1 -1
- package/build/lib/xpath.js +41 -46
- package/build/lib/xpath.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/xpath.js +1 -1
- package/package.json +4 -9
package/build/lib/source.js
CHANGED
|
@@ -1,224 +1,184 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
34
|
-
|
|
36
|
+
ignoreAttributes: false,
|
|
37
|
+
arrayMode: true,
|
|
35
38
|
};
|
|
36
39
|
const GEN_OPTS = {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
ignoreAttributes: false,
|
|
41
|
+
arrayMode: true,
|
|
42
|
+
format: true,
|
|
40
43
|
};
|
|
41
|
-
|
|
42
|
-
exports.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
78
|
+
return getUniversalName(node_map_1.default, nodeName, platform);
|
|
94
79
|
}
|
|
95
|
-
|
|
80
|
+
exports.getUniversalNodeName = getUniversalNodeName;
|
|
96
81
|
function getUniversalAttrName(attrName, platform) {
|
|
97
|
-
|
|
82
|
+
return getUniversalName(attr_map_1.ATTR_MAP, attrName, platform);
|
|
98
83
|
}
|
|
99
|
-
|
|
100
|
-
function transformNode(nodeObj, platform, {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
150
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
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
|
package/build/lib/source.js.map
CHANGED
|
@@ -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
|
-
|
|
4
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
android
|
|
27
|
+
exports.default = {
|
|
28
|
+
ios,
|
|
29
|
+
android,
|
|
38
30
|
};
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpb3MiLCJub2RlT2JqIiwiYW5kcm9pZCIsIm1ldGFkYXRhIiwicmVzSWQiLCJBVFRSX1BSRUZJWCIsImFwcFBhY2thZ2UiLCJyZXBsYWNlIiwiYm91bmRzQXJyYXkiLCJzcGxpdCIsImZpbHRlciIsInN0ciIsIngiLCJ5IiwieDIiLCJ5MiIsIndpZHRoIiwiaGVpZ2h0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3RyYW5zZm9ybWVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FUVFJfUFJFRklYfSBmcm9tICcuL3NvdXJjZSc7XG5cbmZ1bmN0aW9uIGlvcyhub2RlT2JqIC8qLCBtZXRhZGF0YSovKSB7XG4gIHJldHVybiBub2RlT2JqO1xufVxuXG5mdW5jdGlvbiBhbmRyb2lkKG5vZGVPYmosIG1ldGFkYXRhKSB7XG4gIC8vIHN0cmlwIGFuZHJvaWQ6aWQgZnJvbSBmcm9udCBvZiBpZFxuICBjb25zdCByZXNJZCA9IG5vZGVPYmpbYCR7QVRUUl9QUkVGSVh9cmVzb3VyY2UtaWRgXTtcbiAgaWYgKHJlc0lkICYmIG1ldGFkYXRhLmFwcFBhY2thZ2UpIHtcbiAgICBub2RlT2JqW2Ake0FUVFJfUFJFRklYfXJlc291cmNlLWlkYF0gPSByZXNJZC5yZXBsYWNlKGAke21ldGFkYXRhLmFwcFBhY2thZ2V9OmlkL2AsICcnKTtcbiAgfVxuXG4gIC8vIHR1cm4gYm91bmRzIGF0dHIgaW50byByZWN0LWJhc2VkIGF0dHJzXG4gIGlmIChub2RlT2JqW2Ake0FUVFJfUFJFRklYfWJvdW5kc2BdKSB7XG4gICAgY29uc3QgYm91bmRzQXJyYXkgPSBub2RlT2JqW2Ake0FUVFJfUFJFRklYfWJvdW5kc2BdXG4gICAgICAuc3BsaXQoL1xcW3xcXF18LC8pXG4gICAgICAuZmlsdGVyKChzdHIpID0+IHN0ciAhPT0gJycpO1xuICAgIGNvbnN0IFt4LCB5LCB4MiwgeTJdID0gYm91bmRzQXJyYXk7XG4gICAgY29uc3Qgd2lkdGggPSB4MiAtIHg7XG4gICAgY29uc3QgaGVpZ2h0ID0geTIgLSB5O1xuICAgIG5vZGVPYmpbYCR7QVRUUl9QUkVGSVh9eGBdID0geDtcbiAgICBub2RlT2JqW2Ake0FUVFJfUFJFRklYfXlgXSA9IHk7XG4gICAgbm9kZU9ialtgJHtBVFRSX1BSRUZJWH13aWR0aGBdID0gd2lkdGg7XG4gICAgbm9kZU9ialtgJHtBVFRSX1BSRUZJWH1oZWlnaHRgXSA9IGhlaWdodDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlvcyxcbiAgYW5kcm9pZCxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLFNBQVNBLEdBQVQsQ0FBYUMsT0FBYixFQUFxQztFQUNuQyxPQUFPQSxPQUFQO0FBQ0Q7O0FBRUQsU0FBU0MsT0FBVCxDQUFpQkQsT0FBakIsRUFBMEJFLFFBQTFCLEVBQW9DO0VBRWxDLE1BQU1DLEtBQUssR0FBR0gsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLGFBQWhCLENBQXJCOztFQUNBLElBQUlELEtBQUssSUFBSUQsUUFBUSxDQUFDRyxVQUF0QixFQUFrQztJQUNoQ0wsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLGFBQWhCLENBQVAsR0FBdUNELEtBQUssQ0FBQ0csT0FBTixDQUFlLEdBQUVKLFFBQVEsQ0FBQ0csVUFBVyxNQUFyQyxFQUE0QyxFQUE1QyxDQUF2QztFQUNEOztFQUdELElBQUlMLE9BQU8sQ0FBRSxHQUFFSSxtQkFBWSxRQUFoQixDQUFYLEVBQXFDO0lBQ25DLE1BQU1HLFdBQVcsR0FBR1AsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLFFBQWhCLENBQVAsQ0FDakJJLEtBRGlCLENBQ1gsU0FEVyxFQUVqQkMsTUFGaUIsQ0FFVEMsR0FBRCxJQUFTQSxHQUFHLEtBQUssRUFGUCxDQUFwQjtJQUdBLE1BQU0sQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLEVBQU9DLEVBQVAsRUFBV0MsRUFBWCxJQUFpQlAsV0FBdkI7SUFDQSxNQUFNUSxLQUFLLEdBQUdGLEVBQUUsR0FBR0YsQ0FBbkI7SUFDQSxNQUFNSyxNQUFNLEdBQUdGLEVBQUUsR0FBR0YsQ0FBcEI7SUFDQVosT0FBTyxDQUFFLEdBQUVJLG1CQUFZLEdBQWhCLENBQVAsR0FBNkJPLENBQTdCO0lBQ0FYLE9BQU8sQ0FBRSxHQUFFSSxtQkFBWSxHQUFoQixDQUFQLEdBQTZCUSxDQUE3QjtJQUNBWixPQUFPLENBQUUsR0FBRUksbUJBQVksT0FBaEIsQ0FBUCxHQUFpQ1csS0FBakM7SUFDQWYsT0FBTyxDQUFFLEdBQUVJLG1CQUFZLFFBQWhCLENBQVAsR0FBa0NZLE1BQWxDO0VBQ0Q7QUFDRjs7ZUFFYztFQUNiakIsR0FEYTtFQUViRTtBQUZhLEMifQ==
|
|
31
|
+
//# sourceMappingURL=transformers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers.js","
|
|
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"}
|