sf-decomposer 7.1.1 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +149 -87
- package/lib/helpers/types.d.ts +9 -2
- package/lib/metadata/getRegistryValuesBySuffix.d.ts +1 -1
- package/lib/metadata/getRegistryValuesBySuffix.js +10 -3
- package/lib/metadata/getRegistryValuesBySuffix.js.map +1 -1
- package/lib/metadata/parseManifest.js +28 -12
- package/lib/metadata/parseManifest.js.map +1 -1
- package/lib/metadata/registry/manifestXml.d.ts +13 -0
- package/lib/metadata/registry/manifestXml.js +74 -0
- package/lib/metadata/registry/manifestXml.js.map +1 -0
- package/lib/metadata/registry/metadataRegistry.json +5417 -0
- package/lib/metadata/registry/registryAccess.d.ts +14 -0
- package/lib/metadata/registry/registryAccess.js +52 -0
- package/lib/metadata/registry/registryAccess.js.map +1 -0
- package/lib/metadata/registry/resolveManifestComponents.d.ts +13 -0
- package/lib/metadata/registry/resolveManifestComponents.js +60 -0
- package/lib/metadata/registry/resolveManifestComponents.js.map +1 -0
- package/lib/metadata/registry/types.d.ts +23 -0
- package/lib/metadata/registry/types.js +3 -0
- package/lib/metadata/registry/types.js.map +1 -0
- package/lib/metadata/registry/xmlParser.d.ts +5 -0
- package/lib/metadata/registry/xmlParser.js +177 -0
- package/lib/metadata/registry/xmlParser.js.map +1 -0
- package/oclif.manifest.json +1 -1
- package/package.json +59 -6
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// The syntactic layer that turns package.xml text into { name, members } pairs.
|
|
3
|
+
// Registry-aware resolution (parent/child/folder types) is layered on top in
|
|
4
|
+
// resolveManifestComponents.ts, mirroring how SDR's ManifestResolver separates
|
|
5
|
+
// manifest parsing from registry lookups.
|
|
6
|
+
import { parseXml } from './xmlParser.js';
|
|
7
|
+
function isElement(node) {
|
|
8
|
+
return typeof node !== 'string';
|
|
9
|
+
}
|
|
10
|
+
function getText(node) {
|
|
11
|
+
return node.children
|
|
12
|
+
.filter((child) => typeof child === 'string')
|
|
13
|
+
.join('')
|
|
14
|
+
.trim();
|
|
15
|
+
}
|
|
16
|
+
function parseTypesElement(typesEl) {
|
|
17
|
+
const children = typesEl.children.filter(isElement);
|
|
18
|
+
const nameEls = children.filter((el) => el.tagName === 'name');
|
|
19
|
+
const memberEls = children.filter((el) => el.tagName === 'members');
|
|
20
|
+
const otherEl = children.find((el) => el.tagName !== 'name' && el.tagName !== 'members');
|
|
21
|
+
if (otherEl) {
|
|
22
|
+
throw new Error(`unexpected element <${otherEl.tagName}> inside <types>`);
|
|
23
|
+
}
|
|
24
|
+
if (nameEls.length !== 1) {
|
|
25
|
+
throw new Error(`<types> must contain exactly one <name> element, found ${nameEls.length}`);
|
|
26
|
+
}
|
|
27
|
+
const name = getText(nameEls[0]);
|
|
28
|
+
if (!name) {
|
|
29
|
+
throw new Error('<types><name> element must not be empty');
|
|
30
|
+
}
|
|
31
|
+
if (memberEls.length === 0) {
|
|
32
|
+
throw new Error(`<types> for "${name}" must contain at least one <members> element`);
|
|
33
|
+
}
|
|
34
|
+
const members = memberEls.map((memberEl) => {
|
|
35
|
+
const member = getText(memberEl);
|
|
36
|
+
if (!member) {
|
|
37
|
+
throw new Error(`<types> for "${name}" contains an empty <members> element`);
|
|
38
|
+
}
|
|
39
|
+
return member;
|
|
40
|
+
});
|
|
41
|
+
return { name, members };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Parses a package.xml manifest's raw text into its declared types/members. Validates only that
|
|
45
|
+
* the document follows the Metadata API manifest structure (a single <Package> root containing
|
|
46
|
+
* <types>/<version> elements) -- metadata type names are not checked against the registry here.
|
|
47
|
+
*/
|
|
48
|
+
export function parseManifestXml(xml) {
|
|
49
|
+
const roots = parseXml(xml);
|
|
50
|
+
if (roots.length !== 1 || roots[0].tagName !== 'Package') {
|
|
51
|
+
throw new Error('manifest must have a single <Package> root element');
|
|
52
|
+
}
|
|
53
|
+
const types = [];
|
|
54
|
+
let versionSeen = false;
|
|
55
|
+
for (const child of roots[0].children.filter(isElement)) {
|
|
56
|
+
if (child.tagName === 'types') {
|
|
57
|
+
types.push(parseTypesElement(child));
|
|
58
|
+
}
|
|
59
|
+
else if (child.tagName === 'version') {
|
|
60
|
+
if (versionSeen) {
|
|
61
|
+
throw new Error('<Package> must not contain more than one <version> element');
|
|
62
|
+
}
|
|
63
|
+
versionSeen = true;
|
|
64
|
+
if (!getText(child)) {
|
|
65
|
+
throw new Error('<Package><version> element must not be empty');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
throw new Error(`unexpected element <${child.tagName}> inside <Package>`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return { types };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=manifestXml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifestXml.js","sourceRoot":"","sources":["../../../src/metadata/registry/manifestXml.ts"],"names":[],"mappings":"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"}
|