@jterrats/smart-deployment 1.0.3 → 1.0.4
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/LICENSE +29 -0
- package/README.md +6 -0
- package/lib/ai/wave-validation-service.d.ts +21 -0
- package/lib/ai/wave-validation-service.js +189 -114
- package/lib/ai/wave-validation-service.js.map +1 -1
- package/lib/analysis/analysis-reporter.d.ts +12 -0
- package/lib/analysis/analysis-reporter.js +61 -0
- package/lib/analysis/analysis-reporter.js.map +1 -1
- package/lib/analysis/analyze-artifact-service.d.ts +25 -0
- package/lib/analysis/analyze-artifact-service.js +50 -0
- package/lib/analysis/analyze-artifact-service.js.map +1 -0
- package/lib/analysis/analyze-context-service.d.ts +25 -0
- package/lib/analysis/analyze-context-service.js +28 -0
- package/lib/analysis/analyze-context-service.js.map +1 -0
- package/lib/analysis/project-analysis-service.d.ts +48 -0
- package/lib/analysis/project-analysis-service.js +134 -0
- package/lib/analysis/project-analysis-service.js.map +1 -0
- package/lib/commands/analyze.d.ts +0 -2
- package/lib/commands/analyze.js +31 -162
- package/lib/commands/analyze.js.map +1 -1
- package/lib/commands/config.d.ts +0 -4
- package/lib/commands/config.js +25 -95
- package/lib/commands/config.js.map +1 -1
- package/lib/commands/resume.js +6 -16
- package/lib/commands/resume.js.map +1 -1
- package/lib/commands/start.d.ts +0 -11
- package/lib/commands/start.js +38 -550
- package/lib/commands/start.js.map +1 -1
- package/lib/commands/status.js +36 -12
- package/lib/commands/status.js.map +1 -1
- package/lib/commands/validate.d.ts +3 -0
- package/lib/commands/validate.js +5 -7
- package/lib/commands/validate.js.map +1 -1
- package/lib/config/config-mutation-service.d.ts +21 -0
- package/lib/config/config-mutation-service.js +61 -0
- package/lib/config/config-mutation-service.js.map +1 -0
- package/lib/dependencies/circular-dependency-detector.d.ts +5 -0
- package/lib/dependencies/circular-dependency-detector.js +67 -72
- package/lib/dependencies/circular-dependency-detector.js.map +1 -1
- package/lib/dependencies/dependency-depth-calculator.d.ts +28 -0
- package/lib/dependencies/dependency-depth-calculator.js +86 -39
- package/lib/dependencies/dependency-depth-calculator.js.map +1 -1
- package/lib/dependencies/dependency-graph-builder.d.ts +45 -13
- package/lib/dependencies/dependency-graph-builder.js +228 -123
- package/lib/dependencies/dependency-graph-builder.js.map +1 -1
- package/lib/dependencies/dependency-impact-analyzer.d.ts +13 -0
- package/lib/dependencies/dependency-impact-analyzer.js +146 -102
- package/lib/dependencies/dependency-impact-analyzer.js.map +1 -1
- package/lib/dependencies/dependency-merger.d.ts +10 -0
- package/lib/dependencies/dependency-merger.js +123 -61
- package/lib/dependencies/dependency-merger.js.map +1 -1
- package/lib/dependencies/dependency-resolver.d.ts +34 -9
- package/lib/dependencies/dependency-resolver.js +181 -112
- package/lib/dependencies/dependency-resolver.js.map +1 -1
- package/lib/dependencies/dependency-semantics.d.ts +20 -0
- package/lib/dependencies/dependency-semantics.js +55 -0
- package/lib/dependencies/dependency-semantics.js.map +1 -0
- package/lib/dependencies/graph-visualizer.d.ts +6 -1
- package/lib/dependencies/graph-visualizer.js +38 -4
- package/lib/dependencies/graph-visualizer.js.map +1 -1
- package/lib/dependencies/heuristic-inference.d.ts +2 -53
- package/lib/dependencies/heuristic-inference.js +8 -317
- package/lib/dependencies/heuristic-inference.js.map +1 -1
- package/lib/dependencies/heuristic-patterns.d.ts +14 -0
- package/lib/dependencies/heuristic-patterns.js +247 -0
- package/lib/dependencies/heuristic-patterns.js.map +1 -0
- package/lib/deployment/cycle-remediation-runner.d.ts +36 -0
- package/lib/deployment/cycle-remediation-runner.js +262 -0
- package/lib/deployment/cycle-remediation-runner.js.map +1 -0
- package/lib/deployment/deployment-context-service.d.ts +24 -0
- package/lib/deployment/deployment-context-service.js +17 -0
- package/lib/deployment/deployment-context-service.js.map +1 -0
- package/lib/deployment/deployment-runner.d.ts +37 -0
- package/lib/deployment/deployment-runner.js +94 -0
- package/lib/deployment/deployment-runner.js.map +1 -0
- package/lib/deployment/deployment-status-service.d.ts +5 -0
- package/lib/deployment/deployment-status-service.js +39 -18
- package/lib/deployment/deployment-status-service.js.map +1 -1
- package/lib/deployment/deployment-validation-service.d.ts +5 -2
- package/lib/deployment/deployment-validation-service.js +48 -45
- package/lib/deployment/deployment-validation-service.js.map +1 -1
- package/lib/deployment/resume-deployment-service.d.ts +14 -0
- package/lib/deployment/resume-deployment-service.js +25 -0
- package/lib/deployment/resume-deployment-service.js.map +1 -0
- package/lib/deployment/start-execution-service.d.ts +44 -0
- package/lib/deployment/start-execution-service.js +94 -0
- package/lib/deployment/start-execution-service.js.map +1 -0
- package/lib/deployment/test-executor.d.ts +60 -1
- package/lib/deployment/test-executor.js +180 -12
- package/lib/deployment/test-executor.js.map +1 -1
- package/lib/deployment/test-plan-service.d.ts +8 -0
- package/lib/deployment/test-plan-service.js +26 -0
- package/lib/deployment/test-plan-service.js.map +1 -0
- package/lib/deployment/wave-manifest-service.d.ts +11 -0
- package/lib/deployment/wave-manifest-service.js +41 -0
- package/lib/deployment/wave-manifest-service.js.map +1 -0
- package/lib/parsers/apex-class-parser.js +180 -98
- package/lib/parsers/apex-class-parser.js.map +1 -1
- package/lib/parsers/apex-trigger-parser.js +56 -7
- package/lib/parsers/apex-trigger-parser.js.map +1 -1
- package/lib/parsers/aura-parser.js +2 -2
- package/lib/parsers/aura-parser.js.map +1 -1
- package/lib/parsers/bot-parser.js +31 -4
- package/lib/parsers/bot-parser.js.map +1 -1
- package/lib/parsers/custom-metadata-parser.js +37 -3
- package/lib/parsers/custom-metadata-parser.js.map +1 -1
- package/lib/parsers/custom-object-parser.js +284 -150
- package/lib/parsers/custom-object-parser.js.map +1 -1
- package/lib/parsers/email-template-parser.js +115 -58
- package/lib/parsers/email-template-parser.js.map +1 -1
- package/lib/parsers/flexipage-parser.js +41 -16
- package/lib/parsers/flexipage-parser.js.map +1 -1
- package/lib/parsers/flow-parser.js +73 -63
- package/lib/parsers/flow-parser.js.map +1 -1
- package/lib/parsers/genai-prompt-parser.js +16 -4
- package/lib/parsers/genai-prompt-parser.js.map +1 -1
- package/lib/parsers/layout-parser.d.ts +11 -0
- package/lib/parsers/layout-parser.js +143 -68
- package/lib/parsers/layout-parser.js.map +1 -1
- package/lib/parsers/lwc-parser.d.ts +0 -9
- package/lib/parsers/lwc-parser.js +245 -100
- package/lib/parsers/lwc-parser.js.map +1 -1
- package/lib/parsers/parser-utils.d.ts +3 -0
- package/lib/parsers/parser-utils.js +16 -0
- package/lib/parsers/parser-utils.js.map +1 -0
- package/lib/parsers/permission-set-parser.d.ts +6 -0
- package/lib/parsers/permission-set-parser.js +31 -40
- package/lib/parsers/permission-set-parser.js.map +1 -1
- package/lib/parsers/profile-parser.d.ts +13 -0
- package/lib/parsers/profile-parser.js +39 -34
- package/lib/parsers/profile-parser.js.map +1 -1
- package/lib/parsers/visualforce-parser.js +2 -1
- package/lib/parsers/visualforce-parser.js.map +1 -1
- package/lib/presentation/analyze-command-presenter.d.ts +10 -0
- package/lib/presentation/analyze-command-presenter.js +30 -0
- package/lib/presentation/analyze-command-presenter.js.map +1 -0
- package/lib/presentation/config-command-presenter.d.ts +15 -0
- package/lib/presentation/config-command-presenter.js +50 -0
- package/lib/presentation/config-command-presenter.js.map +1 -0
- package/lib/presentation/project-analysis-presenter.d.ts +9 -0
- package/lib/presentation/project-analysis-presenter.js +9 -0
- package/lib/presentation/project-analysis-presenter.js.map +1 -0
- package/lib/presentation/resume-command-presenter.d.ts +7 -0
- package/lib/presentation/resume-command-presenter.js +12 -0
- package/lib/presentation/resume-command-presenter.js.map +1 -0
- package/lib/presentation/start-command-presenter.d.ts +15 -0
- package/lib/presentation/start-command-presenter.js +29 -0
- package/lib/presentation/start-command-presenter.js.map +1 -0
- package/lib/presentation/status-command-presenter.d.ts +7 -0
- package/lib/presentation/status-command-presenter.js +16 -0
- package/lib/presentation/status-command-presenter.js.map +1 -0
- package/lib/presentation/validate-command-presenter.d.ts +9 -0
- package/lib/presentation/validate-command-presenter.js +50 -0
- package/lib/presentation/validate-command-presenter.js.map +1 -0
- package/lib/services/metadata-scanner-service.d.ts +8 -12
- package/lib/services/metadata-scanner-service.js +55 -533
- package/lib/services/metadata-scanner-service.js.map +1 -1
- package/lib/services/scanners/automation-ai-metadata-scanner.d.ts +4 -0
- package/lib/services/scanners/automation-ai-metadata-scanner.js +61 -0
- package/lib/services/scanners/automation-ai-metadata-scanner.js.map +1 -0
- package/lib/services/scanners/code-metadata-scanner.d.ts +23 -0
- package/lib/services/scanners/code-metadata-scanner.js +149 -0
- package/lib/services/scanners/code-metadata-scanner.js.map +1 -0
- package/lib/services/scanners/data-metadata-scanner.d.ts +3 -0
- package/lib/services/scanners/data-metadata-scanner.js +82 -0
- package/lib/services/scanners/data-metadata-scanner.js.map +1 -0
- package/lib/services/scanners/experience-metadata-scanner.d.ts +5 -0
- package/lib/services/scanners/experience-metadata-scanner.js +123 -0
- package/lib/services/scanners/experience-metadata-scanner.js.map +1 -0
- package/lib/services/scanners/scanner-runtime.d.ts +11 -0
- package/lib/services/scanners/scanner-runtime.js +115 -0
- package/lib/services/scanners/scanner-runtime.js.map +1 -0
- package/lib/services/scanners/security-metadata-scanner.d.ts +3 -0
- package/lib/services/scanners/security-metadata-scanner.js +71 -0
- package/lib/services/scanners/security-metadata-scanner.js.map +1 -0
- package/lib/types/dependency.d.ts +11 -1
- package/lib/types/metadata.d.ts +17 -0
- package/lib/types/salesforce/flow/actions.d.ts +108 -0
- package/lib/types/salesforce/flow/actions.js +2 -0
- package/lib/types/salesforce/flow/actions.js.map +1 -0
- package/lib/types/salesforce/flow/common.d.ts +36 -0
- package/lib/types/salesforce/flow/common.js +5 -0
- package/lib/types/salesforce/flow/common.js.map +1 -0
- package/lib/types/salesforce/flow/metadata.d.ts +37 -0
- package/lib/types/salesforce/flow/metadata.js +2 -0
- package/lib/types/salesforce/flow/metadata.js.map +1 -0
- package/lib/types/salesforce/flow/records.d.ts +38 -0
- package/lib/types/salesforce/flow/records.js +2 -0
- package/lib/types/salesforce/flow/records.js.map +1 -0
- package/lib/types/salesforce/flow/resources.d.ts +44 -0
- package/lib/types/salesforce/flow/resources.js +2 -0
- package/lib/types/salesforce/flow/resources.js.map +1 -0
- package/lib/types/salesforce/flow/screens.d.ts +56 -0
- package/lib/types/salesforce/flow/screens.js +2 -0
- package/lib/types/salesforce/flow/screens.js.map +1 -0
- package/lib/types/salesforce/flow/start.d.ts +24 -0
- package/lib/types/salesforce/flow/start.js +2 -0
- package/lib/types/salesforce/flow/start.js.map +1 -0
- package/lib/types/salesforce/flow.d.ts +9 -514
- package/lib/types/salesforce/flow.js +1 -1
- package/lib/types/salesforce/object/core.d.ts +68 -0
- package/lib/types/salesforce/object/core.js +5 -0
- package/lib/types/salesforce/object/core.js.map +1 -0
- package/lib/types/salesforce/object/field.d.ts +155 -0
- package/lib/types/salesforce/object/field.js +5 -0
- package/lib/types/salesforce/object/field.js.map +1 -0
- package/lib/types/salesforce/object/filter.d.ts +16 -0
- package/lib/types/salesforce/object/filter.js +5 -0
- package/lib/types/salesforce/object/filter.js.map +1 -0
- package/lib/types/salesforce/object/policy.d.ts +27 -0
- package/lib/types/salesforce/object/policy.js +5 -0
- package/lib/types/salesforce/object/policy.js.map +1 -0
- package/lib/types/salesforce/object/record.d.ts +44 -0
- package/lib/types/salesforce/object/record.js +5 -0
- package/lib/types/salesforce/object/record.js.map +1 -0
- package/lib/types/salesforce/object/view.d.ts +71 -0
- package/lib/types/salesforce/object/view.js +5 -0
- package/lib/types/salesforce/object/view.js.map +1 -0
- package/lib/types/salesforce/object/weblink.d.ts +70 -0
- package/lib/types/salesforce/object/weblink.js +5 -0
- package/lib/types/salesforce/object/weblink.js.map +1 -0
- package/lib/types/salesforce/object.d.ts +7 -423
- package/lib/types/salesforce/object.js +7 -1
- package/lib/types/salesforce/object.js.map +1 -1
- package/lib/utils/cache-manager.d.ts +16 -15
- package/lib/utils/cache-manager.js +290 -188
- package/lib/utils/cache-manager.js.map +1 -1
- package/lib/utils/logger.d.ts +8 -0
- package/lib/utils/logger.js +82 -69
- package/lib/utils/logger.js.map +1 -1
- package/lib/validators/xml/xml-reference-rules.d.ts +3 -0
- package/lib/validators/xml/xml-reference-rules.js +173 -0
- package/lib/validators/xml/xml-reference-rules.js.map +1 -0
- package/lib/validators/xml/xml-report-formatter.d.ts +2 -0
- package/lib/validators/xml/xml-report-formatter.js +47 -0
- package/lib/validators/xml/xml-report-formatter.js.map +1 -0
- package/lib/validators/xml/xml-schema-rules.d.ts +3 -0
- package/lib/validators/xml/xml-schema-rules.js +75 -0
- package/lib/validators/xml/xml-schema-rules.js.map +1 -0
- package/lib/validators/xml/xml-validation-types.d.ts +25 -0
- package/lib/validators/xml/xml-validation-types.js +2 -0
- package/lib/validators/xml/xml-validation-types.js.map +1 -0
- package/lib/validators/xml-metadata-validator.d.ts +2 -63
- package/lib/validators/xml-metadata-validator.js +7 -338
- package/lib/validators/xml-metadata-validator.js.map +1 -1
- package/lib/waves/test-optimizer.d.ts +13 -0
- package/lib/waves/test-optimizer.js +124 -63
- package/lib/waves/test-optimizer.js.map +1 -1
- package/lib/waves/wave-builder.d.ts +17 -21
- package/lib/waves/wave-builder.js +199 -135
- package/lib/waves/wave-builder.js.map +1 -1
- package/lib/waves/wave-splitter.d.ts +12 -8
- package/lib/waves/wave-splitter.js +156 -115
- package/lib/waves/wave-splitter.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
|
@@ -37,6 +37,23 @@ function extractMergeFields(content) {
|
|
|
37
37
|
}
|
|
38
38
|
return mergeFields;
|
|
39
39
|
}
|
|
40
|
+
function remapMergeFieldObjects(mergeFields, aliases) {
|
|
41
|
+
return mergeFields.map((mergeField) => {
|
|
42
|
+
if (mergeField.objectName === 'recipient' && aliases.recipient) {
|
|
43
|
+
return {
|
|
44
|
+
...mergeField,
|
|
45
|
+
objectName: aliases.recipient,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (mergeField.objectName === 'relatedTo' && aliases.relatedTo) {
|
|
49
|
+
return {
|
|
50
|
+
...mergeField,
|
|
51
|
+
objectName: aliases.relatedTo,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return mergeField;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
40
57
|
/**
|
|
41
58
|
* Extract custom label references
|
|
42
59
|
*
|
|
@@ -57,6 +74,80 @@ function extractCustomLabels(content) {
|
|
|
57
74
|
}
|
|
58
75
|
return labels;
|
|
59
76
|
}
|
|
77
|
+
function extractVisualforceEmailAttributes(content) {
|
|
78
|
+
const emailTemplateTag = content.match(/<messaging:emailTemplate\b[^>]*>/i)?.[0];
|
|
79
|
+
if (!emailTemplateTag) {
|
|
80
|
+
return {};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
recipient: emailTemplateTag.match(/\brecipientType="([^"]+)"/i)?.[1],
|
|
84
|
+
relatedTo: emailTemplateTag.match(/\brelatedToType="([^"]+)"/i)?.[1],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function collectAttachments(metadata) {
|
|
88
|
+
const attachmentNames = metadata.attachments?.map((attachment) => attachment.name) ?? [];
|
|
89
|
+
const allAttachments = [...attachmentNames, ...(metadata.attachedContentDocuments ?? [])];
|
|
90
|
+
return allAttachments.length > 0 ? allAttachments : undefined;
|
|
91
|
+
}
|
|
92
|
+
function buildDependencies(params) {
|
|
93
|
+
const { mergeFields, customLabels, relatedEntityType, visualforcePage, metadata } = params;
|
|
94
|
+
const dependencies = [];
|
|
95
|
+
if (relatedEntityType) {
|
|
96
|
+
dependencies.push({
|
|
97
|
+
type: 'related_entity',
|
|
98
|
+
name: relatedEntityType,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (metadata.type === 'visualforce' && visualforcePage) {
|
|
102
|
+
dependencies.push({
|
|
103
|
+
type: 'visualforce_page',
|
|
104
|
+
name: visualforcePage,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
for (const mergeField of mergeFields) {
|
|
108
|
+
dependencies.push({
|
|
109
|
+
type: 'merge_field',
|
|
110
|
+
name: mergeField.fullReference,
|
|
111
|
+
objectName: mergeField.objectName,
|
|
112
|
+
fieldName: mergeField.fieldName,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
for (const label of customLabels) {
|
|
116
|
+
dependencies.push({
|
|
117
|
+
type: 'custom_label',
|
|
118
|
+
name: label,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
if (metadata.attachments) {
|
|
122
|
+
for (const attachment of metadata.attachments) {
|
|
123
|
+
dependencies.push({
|
|
124
|
+
type: 'attachment',
|
|
125
|
+
name: attachment.name,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (metadata.attachedContentDocuments) {
|
|
130
|
+
for (const documentName of metadata.attachedContentDocuments) {
|
|
131
|
+
dependencies.push({
|
|
132
|
+
type: 'attachment',
|
|
133
|
+
name: documentName,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return dependencies;
|
|
138
|
+
}
|
|
139
|
+
function buildParseResult(params) {
|
|
140
|
+
const { metadata, relatedEntityType, mergeFields, customLabels, dependencies, visualforcePage } = params;
|
|
141
|
+
return {
|
|
142
|
+
...metadata,
|
|
143
|
+
relatedEntityType,
|
|
144
|
+
attachments: collectAttachments(metadata),
|
|
145
|
+
mergeFields,
|
|
146
|
+
customLabels,
|
|
147
|
+
dependencies,
|
|
148
|
+
visualforcePage,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
60
151
|
/**
|
|
61
152
|
* Parse email template metadata XML
|
|
62
153
|
*
|
|
@@ -147,77 +238,43 @@ export async function parseEmailTemplate(templateName, templateContent, metadata
|
|
|
147
238
|
logger.debug(`Parsing email template: ${templateName}`);
|
|
148
239
|
// Parse metadata XML using Salesforce types
|
|
149
240
|
const metadata = await parseMetadataXml(metadataContent);
|
|
241
|
+
const visualforceAttributes = extractVisualforceEmailAttributes(templateContent);
|
|
150
242
|
// Extract merge fields from content and subject
|
|
151
|
-
const contentMergeFields = extractMergeFields(templateContent);
|
|
152
|
-
const subjectMergeFields = metadata.subject
|
|
243
|
+
const contentMergeFields = remapMergeFieldObjects(extractMergeFields(templateContent), visualforceAttributes);
|
|
244
|
+
const subjectMergeFields = metadata.subject
|
|
245
|
+
? remapMergeFieldObjects(extractMergeFields(metadata.subject), visualforceAttributes)
|
|
246
|
+
: [];
|
|
153
247
|
const mergeFields = [...contentMergeFields, ...subjectMergeFields];
|
|
154
248
|
// Extract custom labels
|
|
155
|
-
const customLabels =
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
name: metadata.relatedEntityType,
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
// Add Visualforce page as dependency (for visualforce template type)
|
|
249
|
+
const customLabels = [
|
|
250
|
+
...new Set([
|
|
251
|
+
...extractCustomLabels(templateContent),
|
|
252
|
+
...(metadata.subject ? extractCustomLabels(metadata.subject) : []),
|
|
253
|
+
]),
|
|
254
|
+
];
|
|
255
|
+
const relatedEntityType = metadata.relatedEntityType ?? visualforceAttributes.relatedTo;
|
|
166
256
|
let visualforcePage;
|
|
167
257
|
if (metadata.type === 'visualforce' && metadata.visualforcePage) {
|
|
168
258
|
visualforcePage = metadata.visualforcePage;
|
|
169
|
-
dependencies.push({
|
|
170
|
-
type: 'visualforce_page',
|
|
171
|
-
name: visualforcePage,
|
|
172
|
-
});
|
|
173
259
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
for (const label of customLabels) {
|
|
185
|
-
dependencies.push({
|
|
186
|
-
type: 'custom_label',
|
|
187
|
-
name: label,
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
// Add attachments as dependencies
|
|
191
|
-
if (metadata.attachments) {
|
|
192
|
-
for (const attachment of metadata.attachments) {
|
|
193
|
-
dependencies.push({
|
|
194
|
-
type: 'attachment',
|
|
195
|
-
name: attachment.name,
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
if (metadata.attachedContentDocuments) {
|
|
200
|
-
for (const doc of metadata.attachedContentDocuments) {
|
|
201
|
-
dependencies.push({
|
|
202
|
-
type: 'attachment',
|
|
203
|
-
name: doc,
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
// Map attachments to string array (just names) and include attachedContentDocuments
|
|
208
|
-
const attachmentNames = metadata.attachments?.map((att) => att.name) ?? [];
|
|
209
|
-
const allAttachments = [...attachmentNames, ...(metadata.attachedContentDocuments ?? [])];
|
|
210
|
-
const result = {
|
|
211
|
-
...metadata,
|
|
212
|
-
attachments: allAttachments.length > 0 ? allAttachments : undefined,
|
|
260
|
+
const dependencies = buildDependencies({
|
|
261
|
+
mergeFields,
|
|
262
|
+
customLabels,
|
|
263
|
+
relatedEntityType,
|
|
264
|
+
visualforcePage,
|
|
265
|
+
metadata,
|
|
266
|
+
});
|
|
267
|
+
const result = buildParseResult({
|
|
268
|
+
metadata,
|
|
269
|
+
relatedEntityType,
|
|
213
270
|
mergeFields,
|
|
214
271
|
customLabels,
|
|
215
272
|
dependencies,
|
|
216
273
|
visualforcePage,
|
|
217
|
-
};
|
|
274
|
+
});
|
|
218
275
|
logger.debug(`Parsed email template: ${templateName}`, {
|
|
219
276
|
templateType: metadata.type,
|
|
220
|
-
relatedEntityType: !!
|
|
277
|
+
relatedEntityType: !!relatedEntityType,
|
|
221
278
|
mergeFieldsCount: mergeFields.length,
|
|
222
279
|
customLabelsCount: customLabels.length,
|
|
223
280
|
attachmentsCount: (metadata.attachments?.length ?? 0) + (metadata.attachedContentDocuments?.length ?? 0),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-template-parser.js","sourceRoot":"","sources":["../../src/parsers/email-template-parser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"email-template-parser.js","sourceRoot":"","sources":["../../src/parsers/email-template-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,12 +21,36 @@ function normalizeArray(value) {
|
|
|
21
21
|
return [];
|
|
22
22
|
return Array.isArray(value) ? value : [value];
|
|
23
23
|
}
|
|
24
|
+
function extractRecordTypesFromVisibilityRule(visibilityRule) {
|
|
25
|
+
if (!visibilityRule) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
const recordTypes = [];
|
|
29
|
+
const criteria = normalizeArray(visibilityRule.criteria);
|
|
30
|
+
for (const criterion of criteria) {
|
|
31
|
+
if (criterion.leftValue?.includes('RecordType') || criterion.rightValue?.includes('RecordType')) {
|
|
32
|
+
const candidate = criterion.rightValue?.includes('RecordType') ? criterion.leftValue : criterion.rightValue;
|
|
33
|
+
if (candidate && !candidate.includes('RecordType')) {
|
|
34
|
+
recordTypes.push(candidate);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return recordTypes;
|
|
39
|
+
}
|
|
40
|
+
function extractObjectName(value) {
|
|
41
|
+
if (!value.includes('.')) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const [objectName] = value.split('.');
|
|
45
|
+
return objectName || undefined;
|
|
46
|
+
}
|
|
24
47
|
/**
|
|
25
48
|
* Extract components from item instances
|
|
26
49
|
*/
|
|
27
50
|
function extractComponentsFromItems(items) {
|
|
28
51
|
const lwcComponents = [];
|
|
29
52
|
const auraComponents = [];
|
|
53
|
+
const objects = [];
|
|
30
54
|
const recordTypes = [];
|
|
31
55
|
for (const item of items) {
|
|
32
56
|
if (item.componentInstance) {
|
|
@@ -60,24 +84,20 @@ function extractComponentsFromItems(items) {
|
|
|
60
84
|
else {
|
|
61
85
|
lwcComponents.push(componentName);
|
|
62
86
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const rtValue = criterion.rightValue ?? criterion.leftValue;
|
|
70
|
-
if (rtValue && !rtValue.includes('RecordType')) {
|
|
71
|
-
recordTypes.push(rtValue);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
87
|
+
recordTypes.push(...extractRecordTypesFromVisibilityRule(item.componentInstance.visibilityRule));
|
|
88
|
+
}
|
|
89
|
+
if (item.fieldInstance?.fieldItem) {
|
|
90
|
+
const objectName = extractObjectName(item.fieldInstance.fieldItem);
|
|
91
|
+
if (objectName) {
|
|
92
|
+
objects.push(objectName);
|
|
75
93
|
}
|
|
94
|
+
recordTypes.push(...extractRecordTypesFromVisibilityRule(item.fieldInstance.visibilityRule));
|
|
76
95
|
}
|
|
77
96
|
}
|
|
78
97
|
return {
|
|
79
98
|
lwc: lwcComponents,
|
|
80
99
|
aura: auraComponents,
|
|
100
|
+
objects,
|
|
81
101
|
recordTypes,
|
|
82
102
|
};
|
|
83
103
|
}
|
|
@@ -87,17 +107,20 @@ function extractComponentsFromItems(items) {
|
|
|
87
107
|
function extractComponents(regions) {
|
|
88
108
|
const allLwc = [];
|
|
89
109
|
const allAura = [];
|
|
110
|
+
const allObjects = [];
|
|
90
111
|
const allRecordTypes = [];
|
|
91
112
|
for (const region of regions) {
|
|
92
113
|
const items = normalizeArray(region.itemInstances);
|
|
93
|
-
const { lwc, aura, recordTypes } = extractComponentsFromItems(items);
|
|
114
|
+
const { lwc, aura, objects, recordTypes } = extractComponentsFromItems(items);
|
|
94
115
|
allLwc.push(...lwc);
|
|
95
116
|
allAura.push(...aura);
|
|
117
|
+
allObjects.push(...objects);
|
|
96
118
|
allRecordTypes.push(...recordTypes);
|
|
97
119
|
}
|
|
98
120
|
return {
|
|
99
121
|
lwc: [...new Set(allLwc)],
|
|
100
122
|
aura: [...new Set(allAura)],
|
|
123
|
+
objects: [...new Set(allObjects)],
|
|
101
124
|
recordTypes: [...new Set(allRecordTypes)],
|
|
102
125
|
};
|
|
103
126
|
}
|
|
@@ -163,14 +186,16 @@ export async function parseFlexiPage(filePath, flexiPageName) {
|
|
|
163
186
|
const regions = normalizeArray(metadata.flexiPageRegions);
|
|
164
187
|
const regionNames = regions.map((region) => region.name);
|
|
165
188
|
// Extract components
|
|
166
|
-
const { lwc, aura, recordTypes } = extractComponents(regions);
|
|
189
|
+
const { lwc, aura, objects: regionObjects, recordTypes } = extractComponents(regions);
|
|
167
190
|
// Extract objects
|
|
168
191
|
const objects = [];
|
|
169
192
|
if (metadata.sobjectType) {
|
|
170
193
|
objects.push(metadata.sobjectType);
|
|
171
194
|
}
|
|
195
|
+
objects.push(...regionObjects);
|
|
172
196
|
// Extract quick actions
|
|
173
197
|
const quickActions = extractQuickActions(metadata);
|
|
198
|
+
const uniqueObjects = [...new Set(objects)];
|
|
174
199
|
// Build result
|
|
175
200
|
return {
|
|
176
201
|
name: flexiPageName,
|
|
@@ -179,14 +204,14 @@ export async function parseFlexiPage(filePath, flexiPageName) {
|
|
|
179
204
|
sobjectType: metadata.sobjectType,
|
|
180
205
|
lwcComponents: lwc,
|
|
181
206
|
auraComponents: aura,
|
|
182
|
-
objects,
|
|
207
|
+
objects: uniqueObjects,
|
|
183
208
|
recordTypeFilters: recordTypes,
|
|
184
209
|
regions: regionNames,
|
|
185
210
|
quickActions,
|
|
186
211
|
dependencies: {
|
|
187
212
|
lwcComponents: lwc,
|
|
188
213
|
auraComponents: aura,
|
|
189
|
-
objects,
|
|
214
|
+
objects: uniqueObjects,
|
|
190
215
|
recordTypes,
|
|
191
216
|
regions: regionNames,
|
|
192
217
|
quickActions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flexipage-parser.js","sourceRoot":"","sources":["../../src/parsers/flexipage-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"flexipage-parser.js","sourceRoot":"","sources":["../../src/parsers/flexipage-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,29 @@ import { parseXml } from '../utils/xml.js';
|
|
|
5
5
|
import { getLogger } from '../utils/logger.js';
|
|
6
6
|
import { ParsingError } from '../errors/parsing-error.js';
|
|
7
7
|
const logger = getLogger('FlowParser');
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
+
function normalizeArray(value) {
|
|
10
|
+
if (!value) {
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
return Array.isArray(value) ? value : [value];
|
|
14
|
+
}
|
|
15
|
+
function deduplicate(values) {
|
|
16
|
+
return [...new Set(values.filter((value) => value.trim().length > 0))];
|
|
17
|
+
}
|
|
18
|
+
function extractStringValue(value) {
|
|
19
|
+
if (typeof value === 'string') {
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
const valueRecord = typeof value === 'object' && value !== null ? value : undefined;
|
|
23
|
+
if (typeof valueRecord?.stringValue === 'string') {
|
|
24
|
+
return valueRecord.stringValue;
|
|
25
|
+
}
|
|
26
|
+
if (typeof valueRecord?.elementReference === 'string') {
|
|
27
|
+
return valueRecord.elementReference;
|
|
28
|
+
}
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
8
31
|
/**
|
|
9
32
|
* Extract Apex action references from Flow XML
|
|
10
33
|
*
|
|
@@ -13,19 +36,25 @@ const logger = getLogger('FlowParser');
|
|
|
13
36
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
37
|
function extractApexActions(flowData) {
|
|
15
38
|
const actions = [];
|
|
16
|
-
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
18
|
-
const actionCalls = Array.isArray(flowData.actionCalls)
|
|
19
|
-
? flowData.actionCalls
|
|
20
|
-
: flowData.actionCalls
|
|
21
|
-
? [flowData.actionCalls]
|
|
22
|
-
: [];
|
|
39
|
+
const actionCalls = normalizeArray(flowData.actionCalls);
|
|
23
40
|
for (const action of actionCalls) {
|
|
24
41
|
if (action.actionType === 'apex' && action.actionName) {
|
|
25
42
|
actions.push(action.actionName);
|
|
26
43
|
}
|
|
27
44
|
}
|
|
28
|
-
|
|
45
|
+
const apexPluginCalls = normalizeArray(flowData.apexPluginCalls);
|
|
46
|
+
for (const pluginCall of apexPluginCalls) {
|
|
47
|
+
if (pluginCall.apexClass) {
|
|
48
|
+
actions.push(pluginCall.apexClass);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const transforms = normalizeArray(flowData.transforms);
|
|
52
|
+
for (const transform of transforms) {
|
|
53
|
+
if (transform.apexClass) {
|
|
54
|
+
actions.push(transform.apexClass);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return deduplicate(actions);
|
|
29
58
|
}
|
|
30
59
|
/**
|
|
31
60
|
* Extract subflow references from Flow XML
|
|
@@ -35,18 +64,13 @@ function extractApexActions(flowData) {
|
|
|
35
64
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
65
|
function extractSubflows(flowData) {
|
|
37
66
|
const subflows = [];
|
|
38
|
-
|
|
39
|
-
const subflowCalls = Array.isArray(flowData.subflows)
|
|
40
|
-
? flowData.subflows
|
|
41
|
-
: flowData.subflows
|
|
42
|
-
? [flowData.subflows]
|
|
43
|
-
: [];
|
|
67
|
+
const subflowCalls = normalizeArray(flowData.subflows);
|
|
44
68
|
for (const subflow of subflowCalls) {
|
|
45
69
|
if (subflow.flowName) {
|
|
46
70
|
subflows.push(subflow.flowName);
|
|
47
71
|
}
|
|
48
72
|
}
|
|
49
|
-
return subflows;
|
|
73
|
+
return deduplicate(subflows);
|
|
50
74
|
}
|
|
51
75
|
/**
|
|
52
76
|
* Extract record references (SObject types) from Flow XML
|
|
@@ -56,45 +80,25 @@ function extractSubflows(flowData) {
|
|
|
56
80
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity
|
|
57
81
|
function extractRecordReferences(flowData) {
|
|
58
82
|
const records = new Set();
|
|
59
|
-
|
|
60
|
-
const recordLookups = Array.isArray(flowData.recordLookups)
|
|
61
|
-
? flowData.recordLookups
|
|
62
|
-
: flowData.recordLookups
|
|
63
|
-
? [flowData.recordLookups]
|
|
64
|
-
: [];
|
|
83
|
+
const recordLookups = normalizeArray(flowData.recordLookups);
|
|
65
84
|
for (const lookup of recordLookups) {
|
|
66
85
|
if (lookup.object) {
|
|
67
86
|
records.add(lookup.object);
|
|
68
87
|
}
|
|
69
88
|
}
|
|
70
|
-
|
|
71
|
-
const recordCreates = Array.isArray(flowData.recordCreates)
|
|
72
|
-
? flowData.recordCreates
|
|
73
|
-
: flowData.recordCreates
|
|
74
|
-
? [flowData.recordCreates]
|
|
75
|
-
: [];
|
|
89
|
+
const recordCreates = normalizeArray(flowData.recordCreates);
|
|
76
90
|
for (const create of recordCreates) {
|
|
77
91
|
if (create.object) {
|
|
78
92
|
records.add(create.object);
|
|
79
93
|
}
|
|
80
94
|
}
|
|
81
|
-
|
|
82
|
-
const recordUpdates = Array.isArray(flowData.recordUpdates)
|
|
83
|
-
? flowData.recordUpdates
|
|
84
|
-
: flowData.recordUpdates
|
|
85
|
-
? [flowData.recordUpdates]
|
|
86
|
-
: [];
|
|
95
|
+
const recordUpdates = normalizeArray(flowData.recordUpdates);
|
|
87
96
|
for (const update of recordUpdates) {
|
|
88
97
|
if (update.object) {
|
|
89
98
|
records.add(update.object);
|
|
90
99
|
}
|
|
91
100
|
}
|
|
92
|
-
|
|
93
|
-
const recordDeletes = Array.isArray(flowData.recordDeletes)
|
|
94
|
-
? flowData.recordDeletes
|
|
95
|
-
: flowData.recordDeletes
|
|
96
|
-
? [flowData.recordDeletes]
|
|
97
|
-
: [];
|
|
101
|
+
const recordDeletes = normalizeArray(flowData.recordDeletes);
|
|
98
102
|
for (const deleteOp of recordDeletes) {
|
|
99
103
|
if (deleteOp.object) {
|
|
100
104
|
records.add(deleteOp.object);
|
|
@@ -105,16 +109,21 @@ function extractRecordReferences(flowData) {
|
|
|
105
109
|
records.add(flowData.start.object);
|
|
106
110
|
}
|
|
107
111
|
// Record variables
|
|
108
|
-
const variables =
|
|
109
|
-
? flowData.variables
|
|
110
|
-
: flowData.variables
|
|
111
|
-
? [flowData.variables]
|
|
112
|
-
: [];
|
|
112
|
+
const variables = normalizeArray(flowData.variables);
|
|
113
113
|
for (const variable of variables) {
|
|
114
114
|
if (variable.dataType === 'SObject' && variable.objectType) {
|
|
115
115
|
records.add(variable.objectType);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
+
const dynamicChoiceSets = normalizeArray(flowData.dynamicChoiceSets);
|
|
119
|
+
for (const choiceSet of dynamicChoiceSets) {
|
|
120
|
+
if (choiceSet.object) {
|
|
121
|
+
records.add(choiceSet.object);
|
|
122
|
+
}
|
|
123
|
+
if (choiceSet.picklistObject) {
|
|
124
|
+
records.add(choiceSet.picklistObject);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
118
127
|
return Array.from(records);
|
|
119
128
|
}
|
|
120
129
|
/**
|
|
@@ -125,23 +134,28 @@ function extractRecordReferences(flowData) {
|
|
|
125
134
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
126
135
|
function extractGenAIPrompts(flowData) {
|
|
127
136
|
const prompts = [];
|
|
128
|
-
const actionCalls =
|
|
129
|
-
? flowData.actionCalls
|
|
130
|
-
: flowData.actionCalls
|
|
131
|
-
? [flowData.actionCalls]
|
|
132
|
-
: [];
|
|
137
|
+
const actionCalls = normalizeArray(flowData.actionCalls);
|
|
133
138
|
for (const action of actionCalls) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if (actionType && (actionType.includes('genai') || actionType.includes('GenAi')) && action.actionName) {
|
|
139
|
+
const actionType = String(action.actionType || '').toLowerCase();
|
|
140
|
+
if (actionType && (actionType.includes('genai') || actionType.includes('prompt')) && action.actionName) {
|
|
137
141
|
prompts.push(action.actionName);
|
|
138
142
|
}
|
|
139
|
-
// Also check for prompt template references
|
|
140
143
|
if (action.promptTemplateApiName) {
|
|
141
144
|
prompts.push(action.promptTemplateApiName);
|
|
142
145
|
}
|
|
146
|
+
const inputParameters = normalizeArray(action.inputParameters);
|
|
147
|
+
for (const parameter of inputParameters) {
|
|
148
|
+
if (parameter.name === 'promptTemplateApiName' ||
|
|
149
|
+
parameter.name === 'promptTemplateName' ||
|
|
150
|
+
parameter.name === 'promptTemplateDeveloperName') {
|
|
151
|
+
const value = extractStringValue(parameter.value);
|
|
152
|
+
if (value) {
|
|
153
|
+
prompts.push(value);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
143
157
|
}
|
|
144
|
-
return prompts;
|
|
158
|
+
return deduplicate(prompts);
|
|
145
159
|
}
|
|
146
160
|
/**
|
|
147
161
|
* Extract screen flow fields from Flow XML
|
|
@@ -151,10 +165,10 @@ function extractGenAIPrompts(flowData) {
|
|
|
151
165
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
152
166
|
function extractScreenFields(flowData) {
|
|
153
167
|
const fields = [];
|
|
154
|
-
const screens =
|
|
168
|
+
const screens = normalizeArray(flowData.screens);
|
|
155
169
|
for (const screen of screens) {
|
|
156
170
|
if (screen.fields) {
|
|
157
|
-
const screenFields =
|
|
171
|
+
const screenFields = normalizeArray(screen.fields);
|
|
158
172
|
for (const field of screenFields) {
|
|
159
173
|
if (field.name) {
|
|
160
174
|
fields.push(field.name);
|
|
@@ -162,7 +176,7 @@ function extractScreenFields(flowData) {
|
|
|
162
176
|
}
|
|
163
177
|
}
|
|
164
178
|
}
|
|
165
|
-
return fields;
|
|
179
|
+
return deduplicate(fields);
|
|
166
180
|
}
|
|
167
181
|
/**
|
|
168
182
|
* Extract decision logic from Flow XML
|
|
@@ -172,17 +186,13 @@ function extractScreenFields(flowData) {
|
|
|
172
186
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
173
187
|
function extractDecisions(flowData) {
|
|
174
188
|
const decisions = [];
|
|
175
|
-
const decisionNodes =
|
|
176
|
-
? flowData.decisions
|
|
177
|
-
: flowData.decisions
|
|
178
|
-
? [flowData.decisions]
|
|
179
|
-
: [];
|
|
189
|
+
const decisionNodes = normalizeArray(flowData.decisions);
|
|
180
190
|
for (const decision of decisionNodes) {
|
|
181
191
|
if (decision.name) {
|
|
182
192
|
decisions.push(decision.name);
|
|
183
193
|
}
|
|
184
194
|
}
|
|
185
|
-
return decisions;
|
|
195
|
+
return deduplicate(decisions);
|
|
186
196
|
}
|
|
187
197
|
/**
|
|
188
198
|
* Parse a Flow file and extract dependencies
|