@jayree/sfdx-plugin-manifest 3.2.19 → 3.2.21

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## [3.2.21](https://github.com/jayree/sfdx-plugin-manifest/compare/3.2.20...3.2.21) (2024-05-31)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **gitdiff:** optimize componentset filter ([7990cb3](https://github.com/jayree/sfdx-plugin-manifest/commit/7990cb3b795a81187fd9c4649ab85349e4cb0a14))
7
+
8
+
9
+
10
+ ## [3.2.20](https://github.com/jayree/sfdx-plugin-manifest/compare/3.2.19...3.2.20) (2024-05-25)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **deps:** bump @salesforce/source-deploy-retrieve from 11.4.4 to 11.6.2 ([#1316](https://github.com/jayree/sfdx-plugin-manifest/issues/1316)) ([e7d01e2](https://github.com/jayree/sfdx-plugin-manifest/commit/e7d01e2eecd8282d480f33927bc6e83ed46141b2))
16
+
17
+
18
+
1
19
  ## [3.2.19](https://github.com/jayree/sfdx-plugin-manifest/compare/3.2.18...3.2.19) (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.19/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.21/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.19/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.21/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.19/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.21/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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"}