@jayree/sfdx-plugin-manifest 3.2.20 → 3.2.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## [3.2.22](https://github.com/jayree/sfdx-plugin-manifest/compare/3.2.21...3.2.22) (2024-06-01)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **deps:** bump @salesforce/source-deploy-retrieve from 11.6.2 to 11.6.4 ([#1321](https://github.com/jayree/sfdx-plugin-manifest/issues/1321)) ([4ed4c18](https://github.com/jayree/sfdx-plugin-manifest/commit/4ed4c18205315137e1aa19f2feaa3ce81c1e13f0))
7
+
8
+
9
+
10
+ ## [3.2.21](https://github.com/jayree/sfdx-plugin-manifest/compare/3.2.20...3.2.21) (2024-05-31)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **gitdiff:** optimize componentset filter ([7990cb3](https://github.com/jayree/sfdx-plugin-manifest/commit/7990cb3b795a81187fd9c4649ab85349e4cb0a14))
16
+
17
+
18
+
1
19
  ## [3.2.20](https://github.com/jayree/sfdx-plugin-manifest/compare/3.2.19...3.2.20) (2024-05-25)
2
20
 
3
21
 
package/README.md CHANGED
@@ -47,7 +47,7 @@ EXAMPLES
47
47
  $ sf jayree manifest cleanup --manifest=package.xml --file=packageignore.xml
48
48
  ```
49
49
 
50
- _See code: [src/commands/jayree/manifest/cleanup.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/3.2.20/src/commands/jayree/manifest/cleanup.ts)_
50
+ _See code: [src/commands/jayree/manifest/cleanup.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/3.2.22/src/commands/jayree/manifest/cleanup.ts)_
51
51
 
52
52
  ### `sf jayree manifest generate`
53
53
 
@@ -85,7 +85,7 @@ EXAMPLES
85
85
  <Package xmlns='http://soap.sforce.com/2006/04/metadata'>...</Package>
86
86
  ```
87
87
 
88
- _See code: [src/commands/jayree/manifest/generate.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/3.2.20/src/commands/jayree/manifest/generate.ts)_
88
+ _See code: [src/commands/jayree/manifest/generate.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/3.2.22/src/commands/jayree/manifest/generate.ts)_
89
89
 
90
90
  ### `sf jayree manifest git diff REF1 [REF2]`
91
91
 
@@ -168,5 +168,5 @@ FLAG DESCRIPTIONS
168
168
  The location can be an absolute path or relative to the current working directory.
169
169
  ```
170
170
 
171
- _See code: [src/commands/jayree/manifest/git/diff.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/3.2.20/src/commands/jayree/manifest/git/diff.ts)_
171
+ _See code: [src/commands/jayree/manifest/git/diff.ts](https://github.com/jayree/sfdx-plugin-manifest/blob/3.2.22/src/commands/jayree/manifest/git/diff.ts)_
172
172
  <!-- commandsstop -->
@@ -5,7 +5,7 @@
5
5
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
6
  */
7
7
  import path from 'node:path';
8
- import { ComponentSet, DestructiveChangesType, RegistryAccess, } from '@salesforce/source-deploy-retrieve';
8
+ import { ComponentSet, RegistryAccess, } from '@salesforce/source-deploy-retrieve';
9
9
  import { SfProject, Lifecycle } from '@salesforce/core';
10
10
  import Debug from 'debug';
11
11
  import fs from 'graceful-fs';
@@ -39,46 +39,45 @@ export class ComponentSetExtra extends ComponentSet {
39
39
  }
40
40
  const project = await SfProject.resolve();
41
41
  const gitDiffResolver = new GitDiffResolver(project, registry);
42
- const inclusiveFilter = await gitDiffResolver.resolve(ref1, ref2, fsPaths);
42
+ const gitDiffResult = await gitDiffResolver.resolve(ref1, ref2, fsPaths);
43
+ const include = new ComponentSet([], registry);
44
+ const markedForDelete = new ComponentSet([], registry);
43
45
  const childsTobeReplacedByParent = [
44
46
  ...Object.keys(registry.getTypeByName('workflow').children?.types ?? {}),
45
47
  ...Object.keys(registry.getTypeByName('sharingrules').children?.types ?? {}),
46
48
  ...Object.keys(registry.getTypeByName('bot').children?.types ?? {}),
47
49
  ];
48
- for (const component of inclusiveFilter.getSourceComponents()) {
49
- if (!component.isMarkedForDelete() &&
50
- component.parent &&
51
- childsTobeReplacedByParent.includes(component.type.id)) {
52
- debug(`add parent ${component.parent.type.name}:${component.parent.fullName} of ${component.type.name}:${component.fullName} to manifest`);
53
- inclusiveFilter.add(component.parent);
50
+ for (const component of gitDiffResult.getSourceComponents()) {
51
+ if (!component.isMarkedForDelete()) {
52
+ if (component.parent && childsTobeReplacedByParent.includes(component.type.id)) {
53
+ debug(`add parent ${component.parent.type.name}:${component.parent.fullName} of ${component.type.name}:${component.fullName} to manifest`);
54
+ include.add(component.parent);
55
+ }
56
+ include.add(component);
57
+ }
58
+ else {
59
+ markedForDelete.add(component, component.getDestructiveChangesType());
54
60
  }
55
61
  }
56
62
  fsPaths =
57
63
  fsPaths?.map((filepath) => path.resolve(filepath)).filter((filepath) => fs.existsSync(filepath)) ??
58
64
  project.getUniquePackageDirectories().map((pDir) => pDir.fullPath);
59
65
  debug({ fsPaths });
60
- let components = ComponentSet.fromSource({
66
+ const components = ComponentSet.fromSource({
61
67
  fsPaths,
62
- include: inclusiveFilter,
68
+ include,
63
69
  tree,
64
70
  registry,
65
71
  });
66
- const isMarkedForDelete = new Set(inclusiveFilter
67
- .getSourceComponents()
68
- .filter((c) => c.isMarkedForDelete())
69
- .map((c) => `${c.fullName}:${c.type.name}`));
70
- components = components.filter(({ fullName, type }) => !isMarkedForDelete.has(`${fullName}:${type.name}`));
71
- for (const component of inclusiveFilter.getSourceComponents()) {
72
- if (component.isMarkedForDelete()) {
73
- components.add(component, DestructiveChangesType.POST);
74
- }
72
+ for (const component of markedForDelete.getSourceComponents()) {
73
+ components.add(component, component.getDestructiveChangesType());
75
74
  }
76
75
  let localSourceComponents = [];
77
76
  for (const localComponent of components.getSourceComponents()) {
78
77
  localSourceComponents = localSourceComponents.concat(localComponent.getChildren());
79
78
  localSourceComponents = localSourceComponents.concat(localComponent);
80
79
  }
81
- for await (const component of inclusiveFilter.getSourceComponents()) {
80
+ for await (const component of include.getSourceComponents()) {
82
81
  if (!localSourceComponents.find((localComponent) => component.type.name === localComponent.type.name && component.fullName === localComponent.fullName)) {
83
82
  await Lifecycle.getInstance().emitWarning(`The component "${component.type.name}:${component.fullName}" was not found locally.`);
84
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"componentSetExtra.js","sourceRoot":"","sources":["../../../src/SDR-extra/collections/componentSetExtra.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"componentSetExtra.js","sourceRoot":"","sources":["../../../src/SDR-extra/collections/componentSetExtra.ts"],"names":[],"mappings":"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"}