sf-decomposer 7.1.1 → 7.3.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +201 -87
  3. package/lib/action/decompose.d.ts +1 -0
  4. package/lib/action/decompose.js +57 -0
  5. package/lib/action/decompose.js.map +1 -0
  6. package/lib/action/index.d.ts +1 -0
  7. package/lib/action/index.js +4 -0
  8. package/lib/action/index.js.map +1 -0
  9. package/lib/action/inputs.d.ts +3 -0
  10. package/lib/action/inputs.js +19 -0
  11. package/lib/action/inputs.js.map +1 -0
  12. package/lib/action/main.d.ts +1 -0
  13. package/lib/action/main.js +26 -0
  14. package/lib/action/main.js.map +1 -0
  15. package/lib/action/recompose.d.ts +1 -0
  16. package/lib/action/recompose.js +36 -0
  17. package/lib/action/recompose.js.map +1 -0
  18. package/lib/action/verify.d.ts +1 -0
  19. package/lib/action/verify.js +53 -0
  20. package/lib/action/verify.js.map +1 -0
  21. package/lib/helpers/types.d.ts +9 -2
  22. package/lib/metadata/getRegistryValuesBySuffix.d.ts +1 -1
  23. package/lib/metadata/getRegistryValuesBySuffix.js +10 -3
  24. package/lib/metadata/getRegistryValuesBySuffix.js.map +1 -1
  25. package/lib/metadata/parseManifest.js +28 -12
  26. package/lib/metadata/parseManifest.js.map +1 -1
  27. package/lib/metadata/registry/manifestXml.d.ts +13 -0
  28. package/lib/metadata/registry/manifestXml.js +74 -0
  29. package/lib/metadata/registry/manifestXml.js.map +1 -0
  30. package/lib/metadata/registry/metadataRegistry.json +5417 -0
  31. package/lib/metadata/registry/registryAccess.d.ts +14 -0
  32. package/lib/metadata/registry/registryAccess.js +52 -0
  33. package/lib/metadata/registry/registryAccess.js.map +1 -0
  34. package/lib/metadata/registry/resolveManifestComponents.d.ts +13 -0
  35. package/lib/metadata/registry/resolveManifestComponents.js +60 -0
  36. package/lib/metadata/registry/resolveManifestComponents.js.map +1 -0
  37. package/lib/metadata/registry/types.d.ts +23 -0
  38. package/lib/metadata/registry/types.js +3 -0
  39. package/lib/metadata/registry/types.js.map +1 -0
  40. package/lib/metadata/registry/xmlParser.d.ts +5 -0
  41. package/lib/metadata/registry/xmlParser.js +177 -0
  42. package/lib/metadata/registry/xmlParser.js.map +1 -0
  43. package/oclif.manifest.json +1 -1
  44. package/package.json +60 -6
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+ import * as core from '@actions/core';
3
+ import { verifyMetadataTypes } from '../core/verifyMetadataTypes.js';
4
+ import { loadConfigFile, parseConfigSuffixes, resolveDefaultConfigPath, validateConfigManifest, } from '../helpers/configOverrides.js';
5
+ import { multilineInput, optionalInput, requireMetadataTypesOrManifest } from './inputs.js';
6
+ export async function runVerify() {
7
+ let metadataTypes = multilineInput('metadata-type');
8
+ let manifest = optionalInput('manifest');
9
+ let ignoreDirs = multilineInput('ignore-package-directory');
10
+ let format = optionalInput('format') ?? 'xml';
11
+ let strategy = optionalInput('strategy') ?? 'unique-id';
12
+ let decomposeNestedPerms = core.getBooleanInput('decompose-nested-permissions');
13
+ let overrides;
14
+ if (core.getBooleanInput('config')) {
15
+ const config = await loadConfigFile(await resolveDefaultConfigPath());
16
+ metadataTypes ??= parseConfigSuffixes(config.metadataSuffixes);
17
+ const configManifest = !manifest ? config.manifest : undefined;
18
+ manifest ??= config.manifest;
19
+ ignoreDirs ??= parseConfigSuffixes(config.ignorePackageDirectories);
20
+ format = optionalInput('format') ?? config.decomposedFormat ?? 'xml';
21
+ strategy = optionalInput('strategy') ?? config.strategy ?? 'unique-id';
22
+ decomposeNestedPerms = decomposeNestedPerms || (config.decomposeNestedPermissions ?? false);
23
+ overrides = config.overrides;
24
+ manifest = await validateConfigManifest({
25
+ configManifest,
26
+ metadataTypes,
27
+ manifest,
28
+ warn: (msg) => core.warning(msg),
29
+ });
30
+ }
31
+ requireMetadataTypesOrManifest(metadataTypes, manifest);
32
+ const result = await verifyMetadataTypes({
33
+ metadataTypes,
34
+ format,
35
+ ignoreDirs,
36
+ strategy,
37
+ decomposeNestedPerms,
38
+ manifest,
39
+ overrides,
40
+ log: (msg) => core.info(msg),
41
+ });
42
+ core.setOutput('metadata', result.metadata.join('\n'));
43
+ core.setOutput('types-count', result.metadata.length);
44
+ core.setOutput('drift-count', result.drift.length);
45
+ core.setOutput('reordered-count', result.reordered.length);
46
+ if (result.drift.length > 0) {
47
+ for (const { path, reason } of result.drift) {
48
+ core.error(`${path}: ${reason}`);
49
+ }
50
+ core.setFailed(`Round-trip verify failed: ${result.drift.length} file(s) drifted between the original tree and the round-tripped output. See the log above for the offending paths.`);
51
+ }
52
+ }
53
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/action/verify.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { Command, Config } from '@oclif/core';
2
- import { ScopedPostRetrieve } from '@salesforce/source-deploy-retrieve';
3
2
  export type DecomposerResult = {
4
3
  metadata: string[];
5
4
  };
@@ -75,11 +74,18 @@ export type MetaAttributes = {
75
74
  metadataPaths: string[];
76
75
  uniqueIdElements: string;
77
76
  };
77
+ type RetrieveHookResult = {
78
+ retrieveResult: {
79
+ response: {
80
+ status?: string;
81
+ };
82
+ };
83
+ };
78
84
  export type PostRetrieveHookOptions = {
79
85
  Command: Command;
80
86
  argv: string[];
81
87
  commandId: string;
82
- result?: ScopedPostRetrieve;
88
+ result?: RetrieveHookResult;
83
89
  config: Config;
84
90
  };
85
91
  export type DecomposeOptions = {
@@ -132,3 +138,4 @@ export type VerifyResult = {
132
138
  */
133
139
  reordered: string[];
134
140
  };
141
+ export {};
@@ -1,5 +1,5 @@
1
- import { MetadataType } from '@salesforce/source-deploy-retrieve';
2
1
  import { MetaAttributes } from '../helpers/types.js';
2
+ import { MetadataType } from './registry/types.js';
3
3
  /**
4
4
  * Resolves and validates the SDR registry entry for a metadata suffix (rejects `object`, unknown
5
5
  * suffixes, and unsupported adapter strategies). Synchronous and side-effect free, so callers can
@@ -1,26 +1,33 @@
1
1
  'use strict';
2
- import { RegistryAccess } from '@salesforce/source-deploy-retrieve';
3
2
  import { DEFAULT_UNIQUE_ID_ELEMENTS, UNSUPPORTED_ADAPTERS } from '../helpers/constants.js';
4
3
  import { getPackageDirectories } from './getPackageDirectories.js';
5
4
  import { getUniqueIdElements } from './getUniqueIdElements.js';
5
+ import { RegistryAccess } from './registry/registryAccess.js';
6
6
  // Singleton instance for RegistryAccess to avoid repeated instantiation
7
7
  let registryAccessInstance = null;
8
8
  // Lazy-built reverse map: suffix → child MetadataType (for child types whose suffix differs from xmlName)
9
9
  let childSuffixMap = null;
10
10
  function getRegistryAccessInstance() {
11
+ // Stryker disable next-line ConditionalExpression -- caching is a pure perf optimization here;
12
+ // RegistryAccess itself is a stateless wrapper around registryAccess.ts's own module-level
13
+ // (and therefore already-singleton) registry data, so a "recreated" instance behaves identically.
11
14
  if (!registryAccessInstance) {
12
15
  registryAccessInstance = new RegistryAccess();
13
16
  }
14
17
  return registryAccessInstance;
15
18
  }
16
19
  function getChildSuffixMap(registryAccess) {
20
+ // Stryker disable next-line ConditionalExpression -- same reasoning as getRegistryAccessInstance above.
17
21
  if (!childSuffixMap) {
18
22
  childSuffixMap = new Map();
19
- const reg = registryAccess.registry;
20
- for (const childXmlNameLower of Object.keys(reg.childTypes)) {
23
+ for (const childXmlNameLower of Object.keys(registryAccess.childTypes)) {
21
24
  const parentType = registryAccess.getParentType(childXmlNameLower);
25
+ // Stryker disable next-line OptionalChaining -- defensive guard; every key in childTypes
26
+ // is guaranteed (by the vendored registry's own invariants) to resolve to a real parentType
27
+ // with a children.types entry for that key.
22
28
  const childEntry = parentType?.children?.types[childXmlNameLower];
23
29
  /* v8 ignore next -- defensive guard; SDR registry always provides a suffix for child types */
30
+ // Stryker disable next-line ConditionalExpression, OptionalChaining -- same registry invariant.
24
31
  if (childEntry?.suffix) {
25
32
  childSuffixMap.set(childEntry.suffix, childEntry);
26
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getRegistryValuesBySuffix.js","sourceRoot":"","sources":["../../src/metadata/getRegistryValuesBySuffix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getRegistryValuesBySuffix.js","sourceRoot":"","sources":["../../src/metadata/getRegistryValuesBySuffix.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,29 @@
1
1
  'use strict';
2
- import { readdir, stat } from 'node:fs/promises';
2
+ import { readdir, readFile, stat } from 'node:fs/promises';
3
3
  import { join, resolve } from 'node:path';
4
- import { ManifestResolver, RegistryAccess } from '@salesforce/source-deploy-retrieve';
5
4
  import { getRepoRoot } from '../service/core/getRepoRoot.js';
6
5
  import { buildPackageDirectoryIndex } from './getPackageDirectories.js';
6
+ import { RegistryAccess } from './registry/registryAccess.js';
7
+ import { resolveManifestComponents } from './registry/resolveManifestComponents.js';
7
8
  export async function parseManifest(manifestPath, ignoreDirs, repoRootOverride) {
8
9
  const { repoRoot } = repoRootOverride
9
10
  ? { repoRoot: repoRootOverride }
10
11
  : (await getRepoRoot());
11
12
  const absManifestPath = resolve(repoRoot, manifestPath);
12
13
  const registry = new RegistryAccess();
13
- const resolver = new ManifestResolver(undefined, registry);
14
- const { components } = await resolver.resolve(absManifestPath);
14
+ const manifestContents = await readFile(absManifestPath, 'utf-8');
15
+ const components = resolveManifestComponents(manifestContents, registry);
15
16
  // Group declared manifest entries by their effective parent metadata type.
16
17
  const byParentType = new Map();
17
18
  for (const component of components) {
18
19
  const parentType = registry.getParentType(component.type.name) ?? component.type;
19
20
  const parentMember = component.fullName.split('.')[0];
20
- const isWildcard = component.fullName === '*' || parentMember === '*';
21
+ // Stryker disable next-line ConditionalExpression, StringLiteral -- whenever fullName === '*'
22
+ // exactly, parentMember (= fullName.split('.')[0]) is provably also '*' ('*'.split('.')[0] is
23
+ // '*'), so this disjunct can never independently change isWildcard's result below -- the
24
+ // parentMember check already covers that case.
25
+ const isFullNameWildcard = component.fullName === '*';
26
+ const isWildcard = isFullNameWildcard || parentMember === '*';
21
27
  let entry = byParentType.get(parentType.name);
22
28
  if (!entry) {
23
29
  entry = { parentType, parentMembers: new Set(), wildcard: false };
@@ -41,7 +47,8 @@ export async function parseManifest(manifestPath, ignoreDirs, repoRootOverride)
41
47
  const { index: directoryPathsByName } = directoryIndex;
42
48
  const resolvedPerGroup = await Promise.all(groupedEntries.map(async ({ parentType, parentMembers, wildcard }) => {
43
49
  const suffix = parentType.suffix;
44
- /* istanbul ignore next -- @preserve: parent metadata types always declare a suffix in SDR's registry. Stryker disable next-line all */
50
+ /* istanbul ignore next -- @preserve: parent metadata types always declare a suffix in SDR's registry. */
51
+ // Stryker disable next-line all
45
52
  if (!suffix)
46
53
  return undefined;
47
54
  const typeDirs = directoryPathsByName.get(`${parentType.directoryName}`) ?? [];
@@ -76,7 +83,8 @@ export async function parseManifest(manifestPath, ignoreDirs, repoRootOverride)
76
83
  }));
77
84
  const unresolvedComponents = [];
78
85
  for (const entry of resolvedPerGroup) {
79
- /* istanbul ignore next -- @preserve: undefined only reachable via the suffix-less branch already ignored above. Stryker disable next-line ConditionalExpression */
86
+ /* istanbul ignore next -- @preserve: undefined only reachable via the suffix-less branch already ignored above. */
87
+ // Stryker disable next-line ConditionalExpression
80
88
  if (!entry)
81
89
  continue;
82
90
  const { suffix, xmlPaths, unresolvedMembers } = entry;
@@ -85,7 +93,8 @@ export async function parseManifest(manifestPath, ignoreDirs, repoRootOverride)
85
93
  }
86
94
  if (xmlPaths.size === 0)
87
95
  continue;
88
- /* istanbul ignore else -- @preserve: multiple parent types sharing a suffix is not produced by SDR's registry. Stryker disable next-line ConditionalExpression: */
96
+ /* istanbul ignore else -- @preserve: multiple parent types sharing a suffix is not produced by SDR's registry. */
97
+ // Stryker disable next-line ConditionalExpression
89
98
  if (!parentXmlsBySuffix.has(suffix)) {
90
99
  parentXmlsBySuffix.set(suffix, xmlPaths);
91
100
  orderedSuffixes.push(suffix);
@@ -135,7 +144,8 @@ export async function resolveEffectiveMetadataTypes(metadataTypes, manifest, ign
135
144
  }
136
145
  async function resolveMemberXml(typeDir, parentType, member) {
137
146
  const { suffix, strictDirectoryName, folderType } = parentType;
138
- /* istanbul ignore next -- @preserve: types reaching this point always have a suffix Stryker disable next-line all: paired with the istanbul-ignore above. */
147
+ /* istanbul ignore next -- @preserve: types reaching this point always have a suffix. */
148
+ // Stryker disable next-line all
139
149
  if (!suffix)
140
150
  return undefined;
141
151
  // Labels type has a single file regardless of member name.
@@ -160,13 +170,19 @@ async function resolveMemberXml(typeDir, parentType, member) {
160
170
  }
161
171
  async function listParentXmlPaths(typeDir, parentType) {
162
172
  const { suffix, strictDirectoryName } = parentType;
163
- /* istanbul ignore next -- @preserve: types reaching this point always have a suffix Stryker disable next-line all: paired with the istanbul-ignore above. */
173
+ /* istanbul ignore next -- @preserve: types reaching this point always have a suffix. */
174
+ // Stryker disable next-line all
164
175
  if (!suffix)
165
176
  return [];
166
177
  const metaEnding = `.${suffix}-meta.xml`;
167
178
  if (strictDirectoryName) {
168
179
  const entries = await readdir(typeDir, { withFileTypes: true });
169
- const results = await Promise.all(entries
180
+ const results = await Promise.all(
181
+ // Stryker disable next-line MethodExpression -- defensive guard, not provably killable: a
182
+ // filesystem can't have a file and a directory sharing the same name under the same parent,
183
+ // so `join(typeDir, entry.name, ...)` can never resolve to a real file for a non-directory
184
+ // entry regardless of this filter -- exists() below would reject it either way.
185
+ entries
170
186
  .filter((entry) => entry.isDirectory())
171
187
  .map(async (entry) => {
172
188
  const candidate = join(typeDir, entry.name, `${entry.name}${metaEnding}`);
@@ -187,9 +203,9 @@ async function exists(path) {
187
203
  try {
188
204
  await stat(path);
189
205
  return true;
206
+ // Stryker disable next-line BlockStatement
190
207
  }
191
208
  catch {
192
- // Stryker disable next-line BlockStatement
193
209
  return false;
194
210
  }
195
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parseManifest.js","sourceRoot":"","sources":["../../src/metadata/parseManifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parseManifest.js","sourceRoot":"","sources":["../../src/metadata/parseManifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type ParsedManifestType = {
2
+ name: string;
3
+ members: string[];
4
+ };
5
+ export type ParsedManifest = {
6
+ types: ParsedManifestType[];
7
+ };
8
+ /**
9
+ * Parses a package.xml manifest's raw text into its declared types/members. Validates only that
10
+ * the document follows the Metadata API manifest structure (a single <Package> root containing
11
+ * <types>/<version> elements) -- metadata type names are not checked against the registry here.
12
+ */
13
+ export declare function parseManifestXml(xml: string): ParsedManifest;
@@ -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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"}