@jterrats/smart-deployment 1.2.6 → 1.4.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 (171) hide show
  1. package/README.md +69 -1
  2. package/lib/analysis/metadata-capability-definitions.d.ts +2 -0
  3. package/lib/analysis/metadata-capability-definitions.js +260 -0
  4. package/lib/analysis/metadata-capability-definitions.js.map +1 -0
  5. package/lib/analysis/metadata-capability-registry.d.ts +11 -0
  6. package/lib/analysis/metadata-capability-registry.js +142 -0
  7. package/lib/analysis/metadata-capability-registry.js.map +1 -0
  8. package/lib/analysis/metadata-gap-analysis-service.d.ts +51 -0
  9. package/lib/analysis/metadata-gap-analysis-service.js +277 -0
  10. package/lib/analysis/metadata-gap-analysis-service.js.map +1 -0
  11. package/lib/analysis/project-analysis-service.d.ts +5 -0
  12. package/lib/analysis/project-analysis-service.js +18 -0
  13. package/lib/analysis/project-analysis-service.js.map +1 -1
  14. package/lib/commands/ci/preset.d.ts +25 -0
  15. package/lib/commands/ci/preset.js +125 -0
  16. package/lib/commands/ci/preset.js.map +1 -0
  17. package/lib/commands/ci-publish.d.ts +6 -2
  18. package/lib/commands/ci-publish.js +23 -8
  19. package/lib/commands/ci-publish.js.map +1 -1
  20. package/lib/commands/graph/export.d.ts +20 -0
  21. package/lib/commands/graph/export.js +107 -0
  22. package/lib/commands/graph/export.js.map +1 -0
  23. package/lib/commands/impact.d.ts +18 -0
  24. package/lib/commands/impact.js +105 -0
  25. package/lib/commands/impact.js.map +1 -0
  26. package/lib/commands/init.d.ts +19 -0
  27. package/lib/commands/init.js +83 -0
  28. package/lib/commands/init.js.map +1 -0
  29. package/lib/commands/metadata/gaps.d.ts +15 -0
  30. package/lib/commands/metadata/gaps.js +84 -0
  31. package/lib/commands/metadata/gaps.js.map +1 -0
  32. package/lib/commands/plan/explain.d.ts +14 -0
  33. package/lib/commands/plan/explain.js +134 -0
  34. package/lib/commands/plan/explain.js.map +1 -0
  35. package/lib/commands/resume.d.ts +1 -0
  36. package/lib/commands/resume.js +19 -4
  37. package/lib/commands/resume.js.map +1 -1
  38. package/lib/commands/retrieve.d.ts +20 -0
  39. package/lib/commands/retrieve.js +111 -0
  40. package/lib/commands/retrieve.js.map +1 -0
  41. package/lib/commands/start.d.ts +27 -0
  42. package/lib/commands/start.js +159 -20
  43. package/lib/commands/start.js.map +1 -1
  44. package/lib/commands/status.d.ts +1 -0
  45. package/lib/commands/status.js +19 -4
  46. package/lib/commands/status.js.map +1 -1
  47. package/lib/commands/validate.d.ts +15 -0
  48. package/lib/commands/validate.js +37 -1
  49. package/lib/commands/validate.js.map +1 -1
  50. package/lib/config/init-config-generation-service.d.ts +27 -0
  51. package/lib/config/init-config-generation-service.js +88 -0
  52. package/lib/config/init-config-generation-service.js.map +1 -0
  53. package/lib/config/repo-config.d.ts +25 -0
  54. package/lib/config/repo-config.js.map +1 -1
  55. package/lib/constants/deployment-order.js +1 -0
  56. package/lib/constants/deployment-order.js.map +1 -1
  57. package/lib/dependencies/impact-analysis-service.d.ts +77 -0
  58. package/lib/dependencies/impact-analysis-service.js +234 -0
  59. package/lib/dependencies/impact-analysis-service.js.map +1 -0
  60. package/lib/deployment/ci-preset-service.d.ts +44 -0
  61. package/lib/deployment/ci-preset-service.js +65 -0
  62. package/lib/deployment/ci-preset-service.js.map +1 -0
  63. package/lib/deployment/commit-scope-service.d.ts +50 -0
  64. package/lib/deployment/commit-scope-service.js +292 -0
  65. package/lib/deployment/commit-scope-service.js.map +1 -0
  66. package/lib/deployment/deployment-context-service.d.ts +3 -0
  67. package/lib/deployment/deployment-context-service.js +1 -0
  68. package/lib/deployment/deployment-context-service.js.map +1 -1
  69. package/lib/deployment/deployment-error-diagnostics.d.ts +11 -0
  70. package/lib/deployment/deployment-error-diagnostics.js +187 -0
  71. package/lib/deployment/deployment-error-diagnostics.js.map +1 -0
  72. package/lib/deployment/deployment-runner.d.ts +1 -0
  73. package/lib/deployment/deployment-runner.js +37 -16
  74. package/lib/deployment/deployment-runner.js.map +1 -1
  75. package/lib/deployment/deployment-status-service.d.ts +10 -2
  76. package/lib/deployment/deployment-status-service.js +74 -3
  77. package/lib/deployment/deployment-status-service.js.map +1 -1
  78. package/lib/deployment/deployment-validation-service.d.ts +5 -0
  79. package/lib/deployment/deployment-validation-service.js +34 -4
  80. package/lib/deployment/deployment-validation-service.js.map +1 -1
  81. package/lib/deployment/plan-explain-service.d.ts +88 -0
  82. package/lib/deployment/plan-explain-service.js +171 -0
  83. package/lib/deployment/plan-explain-service.js.map +1 -0
  84. package/lib/deployment/resume-deployment-service.d.ts +7 -2
  85. package/lib/deployment/resume-deployment-service.js +24 -3
  86. package/lib/deployment/resume-deployment-service.js.map +1 -1
  87. package/lib/deployment/retrieve-forceignore-service.d.ts +51 -0
  88. package/lib/deployment/retrieve-forceignore-service.js +139 -0
  89. package/lib/deployment/retrieve-forceignore-service.js.map +1 -0
  90. package/lib/deployment/rollback-planning-service.d.ts +49 -0
  91. package/lib/deployment/rollback-planning-service.js +178 -0
  92. package/lib/deployment/rollback-planning-service.js.map +1 -0
  93. package/lib/deployment/sf-cli-integration.d.ts +7 -0
  94. package/lib/deployment/sf-cli-integration.js +35 -3
  95. package/lib/deployment/sf-cli-integration.js.map +1 -1
  96. package/lib/deployment/special-deployment-plan.js +36 -49
  97. package/lib/deployment/special-deployment-plan.js.map +1 -1
  98. package/lib/deployment/start-execution-service.d.ts +1 -0
  99. package/lib/deployment/start-execution-service.js +14 -8
  100. package/lib/deployment/start-execution-service.js.map +1 -1
  101. package/lib/deployment/wave-manifest-service.d.ts +8 -0
  102. package/lib/deployment/wave-manifest-service.js +39 -20
  103. package/lib/deployment/wave-manifest-service.js.map +1 -1
  104. package/lib/presentation/plan-explain-presenter.d.ts +9 -0
  105. package/lib/presentation/plan-explain-presenter.js +40 -0
  106. package/lib/presentation/plan-explain-presenter.js.map +1 -0
  107. package/lib/presentation/release-report-presenter.d.ts +10 -0
  108. package/lib/presentation/release-report-presenter.js +35 -0
  109. package/lib/presentation/release-report-presenter.js.map +1 -0
  110. package/lib/presentation/start-command-presenter.d.ts +4 -0
  111. package/lib/presentation/start-command-presenter.js +4 -0
  112. package/lib/presentation/start-command-presenter.js.map +1 -1
  113. package/lib/presentation/validate-command-presenter.js +13 -0
  114. package/lib/presentation/validate-command-presenter.js.map +1 -1
  115. package/lib/reports/deployment-plan-report-service.d.ts +76 -0
  116. package/lib/reports/deployment-plan-report-service.js +234 -0
  117. package/lib/reports/deployment-plan-report-service.js.map +1 -0
  118. package/lib/reports/graph-export-service.d.ts +85 -0
  119. package/lib/reports/graph-export-service.js +296 -0
  120. package/lib/reports/graph-export-service.js.map +1 -0
  121. package/lib/reports/release-report-builder.d.ts +6 -0
  122. package/lib/reports/release-report-builder.js +115 -0
  123. package/lib/reports/release-report-builder.js.map +1 -0
  124. package/lib/reports/release-report-command-adapter.d.ts +14 -0
  125. package/lib/reports/release-report-command-adapter.js +28 -0
  126. package/lib/reports/release-report-command-adapter.js.map +1 -0
  127. package/lib/reports/release-report-facts-factory.d.ts +14 -0
  128. package/lib/reports/release-report-facts-factory.js +140 -0
  129. package/lib/reports/release-report-facts-factory.js.map +1 -0
  130. package/lib/reports/release-report-sanitizer.d.ts +5 -0
  131. package/lib/reports/release-report-sanitizer.js +120 -0
  132. package/lib/reports/release-report-sanitizer.js.map +1 -0
  133. package/lib/reports/release-report-service.d.ts +43 -0
  134. package/lib/reports/release-report-service.js +80 -0
  135. package/lib/reports/release-report-service.js.map +1 -0
  136. package/lib/reports/release-report-store.d.ts +30 -0
  137. package/lib/reports/release-report-store.js +57 -0
  138. package/lib/reports/release-report-store.js.map +1 -0
  139. package/lib/reports/start-release-report-coordinator.d.ts +15 -0
  140. package/lib/reports/start-release-report-coordinator.js +23 -0
  141. package/lib/reports/start-release-report-coordinator.js.map +1 -0
  142. package/lib/services/metadata-scanner-service.js +14 -2
  143. package/lib/services/metadata-scanner-service.js.map +1 -1
  144. package/lib/services/scanners/automation-ai-metadata-scanner.d.ts +3 -1
  145. package/lib/services/scanners/automation-ai-metadata-scanner.js +87 -0
  146. package/lib/services/scanners/automation-ai-metadata-scanner.js.map +1 -1
  147. package/lib/types/index.d.ts +2 -0
  148. package/lib/types/index.js +2 -0
  149. package/lib/types/index.js.map +1 -1
  150. package/lib/types/metadata-capability.d.ts +39 -0
  151. package/lib/types/metadata-capability.js +2 -0
  152. package/lib/types/metadata-capability.js.map +1 -0
  153. package/lib/types/metadata.d.ts +7 -1
  154. package/lib/types/release-report.d.ts +89 -0
  155. package/lib/types/release-report.js +42 -0
  156. package/lib/types/release-report.js.map +1 -0
  157. package/messages/ci.preset.json +22 -0
  158. package/messages/graph.export.json +20 -0
  159. package/messages/impact.json +18 -0
  160. package/messages/init.json +16 -0
  161. package/messages/metadata.gaps.json +12 -0
  162. package/messages/plan.explain.json +20 -0
  163. package/messages/resume.json +1 -0
  164. package/messages/retrieve.json +26 -0
  165. package/messages/start.json +18 -2
  166. package/messages/status.json +1 -0
  167. package/messages/validate.json +5 -1
  168. package/npm-shrinkwrap.json +436 -945
  169. package/oclif.lock +446 -746
  170. package/oclif.manifest.json +975 -116
  171. package/package.json +26 -21
@@ -0,0 +1,292 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
3
+ import * as path from 'node:path';
4
+ import { promisify } from 'node:util';
5
+ import { DependencyGraphBuilder } from '../dependencies/dependency-graph-builder.js';
6
+ const execFileAsync = promisify(execFile);
7
+ export class CommitScopeService {
8
+ gitChangeProvider;
9
+ constructor(dependencies = {}) {
10
+ this.gitChangeProvider = dependencies.gitChangeProvider ?? new CliCommitScopeGitChangeProvider();
11
+ }
12
+ async apply(scanResult, options = {}) {
13
+ const manifest = options.manifestPath
14
+ ? await this.readManifest(scanResult.projectRoot, options.manifestPath)
15
+ : undefined;
16
+ const commits = this.resolveCommits(options, manifest);
17
+ const manifestScope = manifest ? this.resolveManifestScope(manifest) : undefined;
18
+ if (commits.length === 0 && (manifestScope?.includedComponents.length ?? 0) === 0) {
19
+ return {
20
+ scanResult,
21
+ summary: createDisabledSummary(),
22
+ };
23
+ }
24
+ const commitScope = manifestScope?.hasIncludedComponentContract === true
25
+ ? {
26
+ changedFiles: manifest?.changes ?? [],
27
+ changedNodeIds: manifestScope.changedComponents,
28
+ dependencyNodeIds: manifestScope.dependencyComponents,
29
+ explicitNodeIds: manifestScope.explicitComponents,
30
+ includedNodeIds: manifestScope.includedComponents,
31
+ }
32
+ : await this.resolveScopeFromCommits(scanResult, commits, manifestScope?.explicitComponents ?? []);
33
+ const includedNodeIds = this.deduplicate(commitScope.includedNodeIds);
34
+ const included = new Set(includedNodeIds);
35
+ const scopedComponents = scanResult.components
36
+ .filter((component) => included.has(toNodeId(component)))
37
+ .map((component) => cloneComponentForScope(component, included));
38
+ const graphBuilder = new DependencyGraphBuilder();
39
+ graphBuilder.addComponents(scopedComponents);
40
+ const scopedDependencyResult = graphBuilder.build();
41
+ const ignoredComponents = scanResult.components
42
+ .map((component) => toNodeId(component))
43
+ .filter((nodeId) => !included.has(nodeId))
44
+ .sort();
45
+ const summary = {
46
+ enabled: true,
47
+ commits,
48
+ manifestPath: options.outputManifestPath ?? options.manifestPath,
49
+ changedFiles: commitScope.changedFiles,
50
+ changedComponents: commitScope.changedNodeIds,
51
+ dependencyComponents: commitScope.dependencyNodeIds,
52
+ explicitComponents: commitScope.explicitNodeIds,
53
+ includedComponents: includedNodeIds,
54
+ ignoredComponents,
55
+ };
56
+ if (options.outputManifestPath) {
57
+ await this.writeManifest(scanResult.projectRoot, options.outputManifestPath, summary);
58
+ }
59
+ return {
60
+ scanResult: {
61
+ ...scanResult,
62
+ components: scopedComponents,
63
+ dependencyResult: scopedDependencyResult,
64
+ },
65
+ summary,
66
+ };
67
+ }
68
+ resolveCommits(options, manifest) {
69
+ const directCommits = parseCommitList(options.commits ?? []);
70
+ const manifestCommits = manifest ? parseCommitList(extractManifestCommits(manifest)) : [];
71
+ return this.deduplicate([...directCommits, ...manifestCommits]);
72
+ }
73
+ async readManifest(projectRoot, manifestPath) {
74
+ const resolvedPath = path.isAbsolute(manifestPath) ? manifestPath : path.join(projectRoot, manifestPath);
75
+ const raw = await readFile(resolvedPath, 'utf8');
76
+ const parsed = JSON.parse(raw);
77
+ if (!parsed || typeof parsed !== 'object') {
78
+ throw new Error(`Commit scope manifest must be a JSON object: ${resolvedPath}`);
79
+ }
80
+ return parsed;
81
+ }
82
+ async writeManifest(projectRoot, manifestPath, summary) {
83
+ const resolvedPath = path.isAbsolute(manifestPath) ? manifestPath : path.join(projectRoot, manifestPath);
84
+ await mkdir(path.dirname(resolvedPath), { recursive: true });
85
+ await writeFile(resolvedPath, `${JSON.stringify(toManifest(summary), null, 2)}\n`, 'utf8');
86
+ }
87
+ resolveManifestScope(manifest) {
88
+ const changedComponents = parseNodeIdList(manifest.scope?.changedComponents ?? []);
89
+ const dependencyComponents = parseNodeIdList(manifest.scope?.dependencyComponents ?? []);
90
+ const explicitComponents = parseNodeIdList([
91
+ ...(manifest.scope?.explicitComponents ?? []),
92
+ ...(manifest.includeComponents ?? []),
93
+ ...(manifest.stories?.flatMap((story) => story.includeComponents ?? []) ?? []),
94
+ ]);
95
+ const contractComponents = parseNodeIdList(manifest.scope?.includedComponents ?? []);
96
+ const includedComponents = parseNodeIdList([
97
+ ...contractComponents,
98
+ ...changedComponents,
99
+ ...dependencyComponents,
100
+ ...explicitComponents,
101
+ ]);
102
+ if (changedComponents.length === 0 &&
103
+ dependencyComponents.length === 0 &&
104
+ explicitComponents.length === 0 &&
105
+ includedComponents.length === 0) {
106
+ return undefined;
107
+ }
108
+ return {
109
+ changedComponents,
110
+ dependencyComponents,
111
+ explicitComponents,
112
+ includedComponents,
113
+ hasIncludedComponentContract: contractComponents.length > 0,
114
+ };
115
+ }
116
+ async resolveScopeFromCommits(scanResult, commits, explicitNodeIds) {
117
+ const changedFiles = await this.gitChangeProvider.listCommitChanges(scanResult.projectRoot, commits);
118
+ const changedComponents = this.resolveChangedComponents(scanResult, changedFiles);
119
+ const changedNodeIds = this.deduplicate(changedComponents.map((component) => toNodeId(component)));
120
+ const dependencyNodeIds = this.collectDependencyClosure(scanResult, changedNodeIds);
121
+ const knownExplicitNodeIds = this.filterKnownNodeIds(scanResult, explicitNodeIds);
122
+ const includedNodeIds = this.deduplicate([...changedNodeIds, ...dependencyNodeIds, ...knownExplicitNodeIds]);
123
+ return {
124
+ changedFiles,
125
+ changedNodeIds,
126
+ dependencyNodeIds,
127
+ explicitNodeIds: knownExplicitNodeIds,
128
+ includedNodeIds,
129
+ };
130
+ }
131
+ resolveChangedComponents(scanResult, changes) {
132
+ const components = [];
133
+ for (const change of changes) {
134
+ if (change.status === 'deleted') {
135
+ continue;
136
+ }
137
+ const component = scanResult.components.find((candidate) => isComponentPathMatch(scanResult.projectRoot, candidate, change.path));
138
+ if (component) {
139
+ components.push(component);
140
+ }
141
+ }
142
+ return this.deduplicateComponents(components);
143
+ }
144
+ collectDependencyClosure(scanResult, changedNodeIds) {
145
+ const knownComponents = scanResult.dependencyResult.components;
146
+ const dependencies = new Set();
147
+ const visited = new Set(changedNodeIds);
148
+ const queue = [...changedNodeIds];
149
+ while (queue.length > 0) {
150
+ const nodeId = queue.shift();
151
+ for (const dependency of scanResult.dependencyResult.graph.get(nodeId) ?? []) {
152
+ if (!knownComponents.has(dependency) || visited.has(dependency)) {
153
+ continue;
154
+ }
155
+ visited.add(dependency);
156
+ dependencies.add(dependency);
157
+ queue.push(dependency);
158
+ }
159
+ }
160
+ return [...dependencies].sort();
161
+ }
162
+ deduplicate(values) {
163
+ return [...new Set(values.filter(Boolean))].sort();
164
+ }
165
+ deduplicateComponents(components) {
166
+ const byNodeId = new Map();
167
+ for (const component of components) {
168
+ byNodeId.set(toNodeId(component), component);
169
+ }
170
+ return [...byNodeId.values()].sort((left, right) => toNodeId(left).localeCompare(toNodeId(right)));
171
+ }
172
+ filterKnownNodeIds(scanResult, nodeIds) {
173
+ return this.deduplicate(nodeIds.filter((nodeId) => scanResult.dependencyResult.components.has(nodeId)));
174
+ }
175
+ }
176
+ class CliCommitScopeGitChangeProvider {
177
+ async listCommitChanges(projectRoot, commits) {
178
+ const changesByCommit = await Promise.all(commits.map(async (commit) => {
179
+ const { stdout } = await execFileAsync('git', ['diff-tree', '--no-commit-id', '--name-status', '--no-renames', '-r', '--root', commit], { cwd: projectRoot });
180
+ return parseNameStatus(stdout, commit);
181
+ }));
182
+ return deduplicateChanges(changesByCommit.flat());
183
+ }
184
+ }
185
+ function parseNameStatus(output, commit) {
186
+ return output
187
+ .split('\n')
188
+ .map((line) => line.trim())
189
+ .filter(Boolean)
190
+ .map((line) => {
191
+ const [statusCode, filePath] = line.split(/\t+/);
192
+ return {
193
+ commit,
194
+ status: toChangeStatus(statusCode),
195
+ path: normalizePath(filePath),
196
+ };
197
+ });
198
+ }
199
+ function parseCommitList(values) {
200
+ return values
201
+ .flatMap((value) => value.split(','))
202
+ .map((value) => value.trim())
203
+ .filter(Boolean);
204
+ }
205
+ function parseNodeIdList(values) {
206
+ return [...new Set(values.map((value) => value.trim()).filter((value) => value.includes(':')))].sort();
207
+ }
208
+ function extractManifestCommits(manifest) {
209
+ return [
210
+ ...(Array.isArray(manifest.commits) ? manifest.commits : []),
211
+ ...(Array.isArray(manifest.stories) ? manifest.stories.flatMap((story) => story.commits ?? []) : []),
212
+ ];
213
+ }
214
+ function cloneComponentForScope(component, included) {
215
+ const dependencies = filterNodeSet(component.dependencies, included);
216
+ const optionalDependencies = component.optionalDependencies
217
+ ? filterNodeSet(component.optionalDependencies, included)
218
+ : undefined;
219
+ return {
220
+ ...component,
221
+ dependencies,
222
+ optionalDependencies,
223
+ dependencyDetails: component.dependencyDetails?.filter((dependency) => included.has(dependency.nodeId)),
224
+ dependents: filterNodeSet(component.dependents, included),
225
+ };
226
+ }
227
+ function filterNodeSet(values, allowed) {
228
+ return new Set([...values].filter((value) => allowed.has(value)));
229
+ }
230
+ function isComponentPathMatch(projectRoot, component, changedPath) {
231
+ const relativeComponentPath = path.isAbsolute(component.filePath)
232
+ ? path.relative(projectRoot, component.filePath)
233
+ : component.filePath;
234
+ const componentPath = normalizePath(relativeComponentPath);
235
+ if (changedPath === componentPath || changedPath === `${componentPath}-meta.xml`) {
236
+ return true;
237
+ }
238
+ if (component.type !== 'LightningComponentBundle' && component.type !== 'AuraDefinitionBundle') {
239
+ return false;
240
+ }
241
+ const componentDirectory = normalizePath(path.dirname(componentPath));
242
+ return changedPath.startsWith(`${componentDirectory}/`);
243
+ }
244
+ function toChangeStatus(statusCode) {
245
+ if (statusCode.includes('D')) {
246
+ return 'deleted';
247
+ }
248
+ if (statusCode.includes('A')) {
249
+ return 'added';
250
+ }
251
+ return 'changed';
252
+ }
253
+ function deduplicateChanges(changes) {
254
+ const byCommitAndPath = new Map();
255
+ for (const change of changes) {
256
+ byCommitAndPath.set(`${change.commit}:${change.path}`, change);
257
+ }
258
+ return [...byCommitAndPath.values()].sort((left, right) => left.commit.localeCompare(right.commit) || left.path.localeCompare(right.path));
259
+ }
260
+ function normalizePath(filePath) {
261
+ return filePath.split(path.sep).join('/');
262
+ }
263
+ function toNodeId(component) {
264
+ return `${component.type}:${component.name}`;
265
+ }
266
+ function toManifest(summary) {
267
+ return {
268
+ schemaVersion: 1,
269
+ commits: summary.commits,
270
+ changes: summary.changedFiles,
271
+ scope: {
272
+ changedComponents: summary.changedComponents,
273
+ dependencyComponents: summary.dependencyComponents,
274
+ explicitComponents: summary.explicitComponents,
275
+ includedComponents: summary.includedComponents,
276
+ ignoredComponents: summary.ignoredComponents,
277
+ },
278
+ };
279
+ }
280
+ function createDisabledSummary() {
281
+ return {
282
+ enabled: false,
283
+ commits: [],
284
+ changedFiles: [],
285
+ changedComponents: [],
286
+ dependencyComponents: [],
287
+ explicitComponents: [],
288
+ includedComponents: [],
289
+ ignoredComponents: [],
290
+ };
291
+ }
292
+ //# sourceMappingURL=commit-scope-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-scope-service.js","sourceRoot":"","sources":["../../src/deployment/commit-scope-service.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { ProjectAnalysisService, type ProjectAnalysisAIContext, type ProjectAnalysisMessages } from '../analysis/project-analysis-service.js';
2
2
  import type { ScanResult } from '../services/metadata-scanner-service.js';
3
3
  import type { Wave } from '../waves/wave-builder.js';
4
+ import type { CommitScopeOptions, CommitScopeSummary } from './commit-scope-service.js';
4
5
  export type DeploymentAIContext = ProjectAnalysisAIContext;
5
6
  export type DeploymentContextMessages = ProjectAnalysisMessages;
6
7
  export type DeploymentContext = {
7
8
  scanResult: ScanResult;
8
9
  orderedWaves: Wave[];
9
10
  aiContext?: DeploymentAIContext;
11
+ commitScope?: CommitScopeSummary;
10
12
  messages: DeploymentContextMessages;
11
13
  };
12
14
  export type DeploymentContextBuildOptions = {
@@ -14,6 +16,7 @@ export type DeploymentContextBuildOptions = {
14
16
  useAI?: boolean;
15
17
  orgType?: string;
16
18
  industry?: string;
19
+ commitScope?: CommitScopeOptions;
17
20
  };
18
21
  type DeploymentContextServiceDependencies = ConstructorParameters<typeof ProjectAnalysisService>[0];
19
22
  export declare class DeploymentContextService {
@@ -10,6 +10,7 @@ export class DeploymentContextService {
10
10
  scanResult: analysis.scanResult,
11
11
  orderedWaves: analysis.orderedWaves,
12
12
  aiContext: analysis.aiContext,
13
+ commitScope: analysis.commitScope,
13
14
  messages: analysis.messages,
14
15
  };
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deployment-context-service.js","sourceRoot":"","sources":["../../src/deployment/deployment-context-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAGvB,MAAM,yCAAyC,CAAC;AAwBjD,MAAM,OAAO,wBAAwB;IAClB,sBAAsB,CAAyB;IAEhE,YAAmB,eAAqD,EAAE;QACxE,IAAI,CAAC,sBAAsB,GAAG,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACzE,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,UAAyC,EAAE;QACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1E,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"deployment-context-service.js","sourceRoot":"","sources":["../../src/deployment/deployment-context-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAGvB,MAAM,yCAAyC,CAAC;AA2BjD,MAAM,OAAO,wBAAwB;IAClB,sBAAsB,CAAyB;IAEhE,YAAmB,eAAqD,EAAE;QACxE,IAAI,CAAC,sBAAsB,GAAG,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACzE,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,UAAyC,EAAE;QACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1E,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export type DeploymentDiagnosticCategory = 'missing-field' | 'missing-object' | 'duplicate-metadata' | 'permission' | 'invalid-reference' | 'source-tracking-conflict' | 'unknown';
2
+ export type DeploymentDiagnostic = {
3
+ component: string;
4
+ problem: string;
5
+ probableCause: string;
6
+ remediation: string;
7
+ rawDetails: string;
8
+ category: DeploymentDiagnosticCategory;
9
+ };
10
+ export declare function normalizeDeploymentDiagnostics(output: string): DeploymentDiagnostic[];
11
+ export declare function formatDeploymentDiagnostics(diagnostics: readonly DeploymentDiagnostic[]): string;
@@ -0,0 +1,187 @@
1
+ const UNKNOWN_COMPONENT = 'Unknown component';
2
+ const UNKNOWN_NEXT_STEP = 'Review the raw Salesforce deploy output, confirm the metadata exists in the target org, and retry with a focused validation for the affected component.';
3
+ export function normalizeDeploymentDiagnostics(output) {
4
+ const records = extractFailureRecords(output);
5
+ const sourceRecords = records.length > 0
6
+ ? records
7
+ : [
8
+ {
9
+ component: UNKNOWN_COMPONENT,
10
+ problem: output.trim() || 'Salesforce deployment failed without a detailed error message.',
11
+ rawDetails: output,
12
+ },
13
+ ];
14
+ return sourceRecords.map((record) => classifyFailure(record));
15
+ }
16
+ export function formatDeploymentDiagnostics(diagnostics) {
17
+ if (diagnostics.length === 0) {
18
+ return '';
19
+ }
20
+ return diagnostics
21
+ .map((item, index) => [
22
+ `Diagnostic ${index + 1}: ${item.component}`,
23
+ `Problem: ${item.problem}`,
24
+ `Probable cause: ${item.probableCause}`,
25
+ `Remediation: ${item.remediation}`,
26
+ ].join('\n'))
27
+ .join('\n\n');
28
+ }
29
+ function extractFailureRecords(output) {
30
+ const parsed = parseJsonObject(output);
31
+ if (parsed === undefined) {
32
+ return extractTextFailureRecords(output);
33
+ }
34
+ const failures = [
35
+ ...asArray(readPath(parsed, ['result', 'details', 'componentFailures'])),
36
+ ...asArray(readPath(parsed, ['result', 'details', 'runTestResult', 'failures'])),
37
+ ...asArray(readPath(parsed, ['result', 'componentFailures'])),
38
+ ];
39
+ return failures
40
+ .map((failure) => buildFailureRecord(failure))
41
+ .filter((record) => record !== undefined);
42
+ }
43
+ function parseJsonObject(output) {
44
+ const jsonMatch = output.match(/\{[\s\S]*\}/);
45
+ if (!jsonMatch) {
46
+ return undefined;
47
+ }
48
+ try {
49
+ const parsed = JSON.parse(jsonMatch[0]);
50
+ return isRecord(parsed) ? parsed : undefined;
51
+ }
52
+ catch {
53
+ return undefined;
54
+ }
55
+ }
56
+ function readPath(value, path) {
57
+ return path.reduce((current, key) => (isRecord(current) ? current[key] : undefined), value);
58
+ }
59
+ function asArray(value) {
60
+ if (Array.isArray(value)) {
61
+ return value;
62
+ }
63
+ return value === undefined || value === null ? [] : [value];
64
+ }
65
+ function buildFailureRecord(value) {
66
+ if (!isRecord(value)) {
67
+ return undefined;
68
+ }
69
+ const failure = value;
70
+ const problem = stringValue(failure.problem);
71
+ if (problem === undefined) {
72
+ return undefined;
73
+ }
74
+ const componentParts = [
75
+ stringValue(failure.componentType),
76
+ stringValue(failure.fullName),
77
+ stringValue(failure.fileName),
78
+ ].filter((part) => part !== undefined && part.length > 0);
79
+ const location = [numberValue(failure.lineNumber), numberValue(failure.columnNumber)]
80
+ .filter((part) => part !== undefined)
81
+ .join(':');
82
+ return {
83
+ component: componentParts.length > 0 ? componentParts.join(':') : UNKNOWN_COMPONENT,
84
+ problem,
85
+ rawDetails: JSON.stringify({ ...value, location: location || undefined }),
86
+ };
87
+ }
88
+ function extractTextFailureRecords(output) {
89
+ const trimmed = output.trim();
90
+ if (trimmed.length === 0) {
91
+ return [];
92
+ }
93
+ return trimmed
94
+ .split(/\r?\n/)
95
+ .map((line) => line.trim())
96
+ .filter((line) => line.length > 0)
97
+ .map((line) => ({
98
+ component: inferComponentFromText(line),
99
+ problem: line,
100
+ rawDetails: line,
101
+ }));
102
+ }
103
+ function classifyFailure(record) {
104
+ const normalized = record.problem.toLowerCase();
105
+ if (matchesMissingField(normalized)) {
106
+ return diagnostic(record, 'missing-field', {
107
+ probableCause: 'A referenced field is not present in the target org or is deployed in a later wave.',
108
+ remediation: 'Deploy the missing CustomField before this component, add it to the same or earlier wave, or remove the stale field reference.',
109
+ });
110
+ }
111
+ if (matchesMissingObject(normalized)) {
112
+ return diagnostic(record, 'missing-object', {
113
+ probableCause: 'A referenced object is not present in the target org or the object metadata is missing from the package.',
114
+ remediation: 'Deploy the CustomObject before dependent metadata, include the object in the manifest, or correct the object API name.',
115
+ });
116
+ }
117
+ if (matchesDuplicateMetadata(normalized)) {
118
+ return diagnostic(record, 'duplicate-metadata', {
119
+ probableCause: 'The package contains duplicate metadata members or a component conflicts with metadata already owned elsewhere.',
120
+ remediation: 'Remove duplicate package entries, consolidate the metadata source, then rerun validation with one authoritative component path.',
121
+ });
122
+ }
123
+ if (matchesPermission(normalized)) {
124
+ return diagnostic(record, 'permission', {
125
+ probableCause: 'The deployment user lacks metadata, object, field, Apex, or setup permissions required for this change.',
126
+ remediation: 'Grant the deployment user the required permission set or org permission, then validate again with the same target org.',
127
+ });
128
+ }
129
+ if (matchesSourceTrackingConflict(normalized)) {
130
+ return diagnostic(record, 'source-tracking-conflict', {
131
+ probableCause: 'Local source tracking is out of sync with the target org or conflicts with remote changes.',
132
+ remediation: 'Pull or reset source tracking for the org, reconcile conflicts, then rerun the deployment validation.',
133
+ });
134
+ }
135
+ if (matchesInvalidReference(normalized)) {
136
+ return diagnostic(record, 'invalid-reference', {
137
+ probableCause: 'The metadata references a component, value, label, class, flow, layout, or relationship that cannot be resolved.',
138
+ remediation: 'Deploy the referenced component first, correct the API name, or remove the stale reference from this metadata.',
139
+ });
140
+ }
141
+ return diagnostic(record, 'unknown', {
142
+ probableCause: 'Salesforce returned an error that does not match a known smart-deployment diagnostic pattern.',
143
+ remediation: UNKNOWN_NEXT_STEP,
144
+ });
145
+ }
146
+ function diagnostic(record, category, details) {
147
+ return {
148
+ component: record.component ?? UNKNOWN_COMPONENT,
149
+ problem: record.problem,
150
+ rawDetails: record.rawDetails,
151
+ category,
152
+ ...details,
153
+ };
154
+ }
155
+ function matchesMissingField(problem) {
156
+ return (/no such column|invalid field|field .* does not exist|unknown field|could not resolve standard field/i.test(problem) || /in field: field - no customfield named/i.test(problem));
157
+ }
158
+ function matchesMissingObject(problem) {
159
+ return (/entity is not org-accessible|invalid type|sobject type .* is not supported|no customobject named/i.test(problem) ||
160
+ /reference to undefined object|object .* does not exist/i.test(problem));
161
+ }
162
+ function matchesDuplicateMetadata(problem) {
163
+ return /duplicate value|duplicate name|duplicate full name|already exists|more than one/i.test(problem);
164
+ }
165
+ function matchesPermission(problem) {
166
+ return /insufficient access|insufficient privileges|not authorized|required permission|permission denied|invalid cross reference id/i.test(problem);
167
+ }
168
+ function matchesInvalidReference(problem) {
169
+ return /invalid reference|invalid relationship|invalid definition|not found|does not exist|unknown user permission|invalid value/i.test(problem);
170
+ }
171
+ function matchesSourceTrackingConflict(problem) {
172
+ return /source tracking|conflict|sync.*source|source.*out of sync|tracking.*reset/i.test(problem);
173
+ }
174
+ function inferComponentFromText(line) {
175
+ const match = line.match(/(?:component|file|entity|object|field)\s+['"]?([A-Za-z0-9_.:-]+)['"]?/i);
176
+ return match?.[1] ?? UNKNOWN_COMPONENT;
177
+ }
178
+ function stringValue(value) {
179
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
180
+ }
181
+ function numberValue(value) {
182
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
183
+ }
184
+ function isRecord(value) {
185
+ return typeof value === 'object' && value !== null;
186
+ }
187
+ //# sourceMappingURL=deployment-error-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-error-diagnostics.js","sourceRoot":"","sources":["../../src/deployment/deployment-error-diagnostics.ts"],"names":[],"mappings":"AAkCA,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,MAAM,iBAAiB,GACrB,yJAAyJ,CAAC;AAE5J,MAAM,UAAU,8BAA8B,CAAC,MAAc;IAC3D,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,aAAa,GACjB,OAAO,CAAC,MAAM,GAAG,CAAC;QAChB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC;YACE;gBACE,SAAS,EAAE,iBAAiB;gBAC5B,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,gEAAgE;gBAC1F,UAAU,EAAE,MAAM;aACnB;SACF,CAAC;IAER,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAA4C;IACtF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,WAAW;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACnB;QACE,cAAc,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;QAC5C,YAAY,IAAI,CAAC,OAAO,EAAE;QAC1B,mBAAmB,IAAI,CAAC,aAAa,EAAE;QACvC,gBAAgB,IAAI,CAAC,WAAW,EAAE;KACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb;SACA,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc;IAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACxE,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;QAChF,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;KAC9D,CAAC;IAEF,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,MAAM,EAAqC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAY,CAAC;QACnD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,IAAuB;IACvD,OAAO,IAAI,CAAC,MAAM,CAAU,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,KAAsB,CAAC;IACvC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;QAClC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7B,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SAClF,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;SACpD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO;QACL,SAAS,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB;QACnF,OAAO;QACP,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO;SACX,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC;QACvC,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,eAAe,CAAC,MAA+B;IACtD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAEhD,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE;YACzC,aAAa,EAAE,qFAAqF;YACpG,WAAW,EACT,gIAAgI;SACnI,CAAC,CAAC;IACL,CAAC;IAED,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE;YAC1C,aAAa,EACX,0GAA0G;YAC5G,WAAW,EACT,wHAAwH;SAC3H,CAAC,CAAC;IACL,CAAC;IAED,IAAI,wBAAwB,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,OAAO,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE;YAC9C,aAAa,EACX,iHAAiH;YACnH,WAAW,EACT,iIAAiI;SACpI,CAAC,CAAC;IACL,CAAC;IAED,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE;YACtC,aAAa,EACX,yGAAyG;YAC3G,WAAW,EACT,wHAAwH;SAC3H,CAAC,CAAC;IACL,CAAC;IAED,IAAI,6BAA6B,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,OAAO,UAAU,CAAC,MAAM,EAAE,0BAA0B,EAAE;YACpD,aAAa,EAAE,4FAA4F;YAC3G,WAAW,EACT,uGAAuG;SAC1G,CAAC,CAAC;IACL,CAAC;IAED,IAAI,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,OAAO,UAAU,CAAC,MAAM,EAAE,mBAAmB,EAAE;YAC7C,aAAa,EACX,kHAAkH;YACpH,WAAW,EACT,gHAAgH;SACnH,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE;QACnC,aAAa,EAAE,+FAA+F;QAC9G,WAAW,EAAE,iBAAiB;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CACjB,MAA+B,EAC/B,QAAsC,EACtC,OAAoE;IAEpE,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,iBAAiB;QAChD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ;QACR,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,CACL,sGAAsG,CAAC,IAAI,CACzG,OAAO,CACR,IAAI,yCAAyC,CAAC,IAAI,CAAC,OAAO,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,CACL,mGAAmG,CAAC,IAAI,CAAC,OAAO,CAAC;QACjH,yDAAyD,CAAC,IAAI,CAAC,OAAO,CAAC,CACxE,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe;IAC/C,OAAO,kFAAkF,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1G,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,8HAA8H,CAAC,IAAI,CACxI,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,OAAO,2HAA2H,CAAC,IAAI,CACrI,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAe;IACpD,OAAO,4EAA4E,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;IACnG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC"}
@@ -18,6 +18,7 @@ export type DeploymentRunnerParams = {
18
18
  componentMap: ReadonlyMap<NodeId, MetadataComponent>;
19
19
  apiVersion?: string;
20
20
  skipTests: boolean;
21
+ destructive: boolean;
21
22
  testExecutor: TestExecutor;
22
23
  tracker: DeploymentTracker;
23
24
  stateManager: StateManager;