@mcp-consultant-tools/powerplatform-core 26.0.0-beta.2
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/build/auth/index.d.ts +64 -0
- package/build/auth/index.d.ts.map +1 -0
- package/build/auth/index.js +39 -0
- package/build/auth/index.js.map +1 -0
- package/build/auth/interactive-auth.d.ts +60 -0
- package/build/auth/interactive-auth.d.ts.map +1 -0
- package/build/auth/interactive-auth.js +429 -0
- package/build/auth/interactive-auth.js.map +1 -0
- package/build/auth/service-principal-auth.d.ts +26 -0
- package/build/auth/service-principal-auth.d.ts.map +1 -0
- package/build/auth/service-principal-auth.js +60 -0
- package/build/auth/service-principal-auth.js.map +1 -0
- package/build/auth/token-cache.d.ts +40 -0
- package/build/auth/token-cache.d.ts.map +1 -0
- package/build/auth/token-cache.js +108 -0
- package/build/auth/token-cache.js.map +1 -0
- package/build/client/PowerPlatformClient.d.ts +78 -0
- package/build/client/PowerPlatformClient.d.ts.map +1 -0
- package/build/client/PowerPlatformClient.js +198 -0
- package/build/client/PowerPlatformClient.js.map +1 -0
- package/build/client/index.d.ts +6 -0
- package/build/client/index.d.ts.map +1 -0
- package/build/client/index.js +6 -0
- package/build/client/index.js.map +1 -0
- package/build/client/types.d.ts +300 -0
- package/build/client/types.d.ts.map +1 -0
- package/build/client/types.js +5 -0
- package/build/client/types.js.map +1 -0
- package/build/index.d.ts +36 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +55 -0
- package/build/index.js.map +1 -0
- package/build/services/AppManagementService.d.ts +95 -0
- package/build/services/AppManagementService.d.ts.map +1 -0
- package/build/services/AppManagementService.js +322 -0
- package/build/services/AppManagementService.js.map +1 -0
- package/build/services/AppService.d.ts +39 -0
- package/build/services/AppService.d.ts.map +1 -0
- package/build/services/AppService.js +173 -0
- package/build/services/AppService.js.map +1 -0
- package/build/services/AttributeService.d.ts +28 -0
- package/build/services/AttributeService.d.ts.map +1 -0
- package/build/services/AttributeService.js +86 -0
- package/build/services/AttributeService.js.map +1 -0
- package/build/services/BusinessRuleService.d.ts +22 -0
- package/build/services/BusinessRuleService.d.ts.map +1 -0
- package/build/services/BusinessRuleService.js +85 -0
- package/build/services/BusinessRuleService.js.map +1 -0
- package/build/services/DataService.d.ts +53 -0
- package/build/services/DataService.d.ts.map +1 -0
- package/build/services/DataService.js +204 -0
- package/build/services/DataService.js.map +1 -0
- package/build/services/DependencyService.d.ts +27 -0
- package/build/services/DependencyService.d.ts.map +1 -0
- package/build/services/DependencyService.js +47 -0
- package/build/services/DependencyService.js.map +1 -0
- package/build/services/EntityService.d.ts +42 -0
- package/build/services/EntityService.d.ts.map +1 -0
- package/build/services/EntityService.js +132 -0
- package/build/services/EntityService.js.map +1 -0
- package/build/services/FlowService.d.ts +55 -0
- package/build/services/FlowService.d.ts.map +1 -0
- package/build/services/FlowService.js +608 -0
- package/build/services/FlowService.js.map +1 -0
- package/build/services/FormService.d.ts +36 -0
- package/build/services/FormService.d.ts.map +1 -0
- package/build/services/FormService.js +55 -0
- package/build/services/FormService.js.map +1 -0
- package/build/services/MetadataService.d.ts +63 -0
- package/build/services/MetadataService.d.ts.map +1 -0
- package/build/services/MetadataService.js +176 -0
- package/build/services/MetadataService.js.map +1 -0
- package/build/services/OptionSetService.d.ts +40 -0
- package/build/services/OptionSetService.d.ts.map +1 -0
- package/build/services/OptionSetService.js +91 -0
- package/build/services/OptionSetService.js.map +1 -0
- package/build/services/PluginDeploymentService.d.ts +102 -0
- package/build/services/PluginDeploymentService.d.ts.map +1 -0
- package/build/services/PluginDeploymentService.js +412 -0
- package/build/services/PluginDeploymentService.js.map +1 -0
- package/build/services/PluginService.d.ts +61 -0
- package/build/services/PluginService.d.ts.map +1 -0
- package/build/services/PluginService.js +289 -0
- package/build/services/PluginService.js.map +1 -0
- package/build/services/PublishingService.d.ts +37 -0
- package/build/services/PublishingService.d.ts.map +1 -0
- package/build/services/PublishingService.js +65 -0
- package/build/services/PublishingService.js.map +1 -0
- package/build/services/RelationshipService.d.ts +29 -0
- package/build/services/RelationshipService.d.ts.map +1 -0
- package/build/services/RelationshipService.js +46 -0
- package/build/services/RelationshipService.js.map +1 -0
- package/build/services/SolutionService.d.ts +60 -0
- package/build/services/SolutionService.d.ts.map +1 -0
- package/build/services/SolutionService.js +125 -0
- package/build/services/SolutionService.js.map +1 -0
- package/build/services/ValidationService.d.ts +31 -0
- package/build/services/ValidationService.d.ts.map +1 -0
- package/build/services/ValidationService.js +391 -0
- package/build/services/ValidationService.js.map +1 -0
- package/build/services/ViewService.d.ts +36 -0
- package/build/services/ViewService.d.ts.map +1 -0
- package/build/services/ViewService.js +55 -0
- package/build/services/ViewService.js.map +1 -0
- package/build/services/WebResourceService.d.ts +40 -0
- package/build/services/WebResourceService.d.ts.map +1 -0
- package/build/services/WebResourceService.js +64 -0
- package/build/services/WebResourceService.js.map +1 -0
- package/build/services/WorkflowManagementService.d.ts +157 -0
- package/build/services/WorkflowManagementService.d.ts.map +1 -0
- package/build/services/WorkflowManagementService.js +567 -0
- package/build/services/WorkflowManagementService.js.map +1 -0
- package/build/services/WorkflowService.d.ts +28 -0
- package/build/services/WorkflowService.d.ts.map +1 -0
- package/build/services/WorkflowService.js +285 -0
- package/build/services/WorkflowService.js.map +1 -0
- package/build/services/index.d.ts +29 -0
- package/build/services/index.d.ts.map +1 -0
- package/build/services/index.js +31 -0
- package/build/services/index.js.map +1 -0
- package/build/utils/auditLogger.d.ts +76 -0
- package/build/utils/auditLogger.d.ts.map +1 -0
- package/build/utils/auditLogger.js +110 -0
- package/build/utils/auditLogger.js.map +1 -0
- package/build/utils/best-practices-formatters.d.ts +26 -0
- package/build/utils/best-practices-formatters.d.ts.map +1 -0
- package/build/utils/best-practices-formatters.js +238 -0
- package/build/utils/best-practices-formatters.js.map +1 -0
- package/build/utils/bestPractices.d.ts +150 -0
- package/build/utils/bestPractices.d.ts.map +1 -0
- package/build/utils/bestPractices.js +324 -0
- package/build/utils/bestPractices.js.map +1 -0
- package/build/utils/iconManager.d.ts +84 -0
- package/build/utils/iconManager.d.ts.map +1 -0
- package/build/utils/iconManager.js +338 -0
- package/build/utils/iconManager.js.map +1 -0
- package/build/utils/index.d.ts +11 -0
- package/build/utils/index.d.ts.map +1 -0
- package/build/utils/index.js +18 -0
- package/build/utils/index.js.map +1 -0
- package/build/utils/prompt-templates.d.ts +9 -0
- package/build/utils/prompt-templates.d.ts.map +1 -0
- package/build/utils/prompt-templates.js +31 -0
- package/build/utils/prompt-templates.js.map +1 -0
- package/build/utils/publisherConfig.d.ts +33 -0
- package/build/utils/publisherConfig.d.ts.map +1 -0
- package/build/utils/publisherConfig.js +54 -0
- package/build/utils/publisherConfig.js.map +1 -0
- package/build/utils/rate-limiter.d.ts +108 -0
- package/build/utils/rate-limiter.d.ts.map +1 -0
- package/build/utils/rate-limiter.js +242 -0
- package/build/utils/rate-limiter.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatting utilities for best practices validation reports
|
|
3
|
+
* Transforms validation results into human-readable markdown reports
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format complete best practices validation report as markdown
|
|
7
|
+
*/
|
|
8
|
+
export function formatBestPracticesReport(result) {
|
|
9
|
+
const sections = [];
|
|
10
|
+
// Header
|
|
11
|
+
sections.push('# Dataverse Best Practice Validation Report\n');
|
|
12
|
+
if (result.metadata.solutionName) {
|
|
13
|
+
sections.push(`**Solution**: ${result.metadata.solutionName} (\`${result.metadata.solutionUniqueName}\`)`);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
sections.push(`**Entities**: Custom entity validation`);
|
|
17
|
+
}
|
|
18
|
+
sections.push(`**Generated**: ${new Date(result.metadata.generatedAt).toLocaleString()}`);
|
|
19
|
+
sections.push(`**Publisher Prefix**: \`${result.metadata.publisherPrefix}\``);
|
|
20
|
+
sections.push(`**Time Filter**: Columns created in last ${result.metadata.recentDays} days`);
|
|
21
|
+
sections.push('');
|
|
22
|
+
sections.push('---\n');
|
|
23
|
+
// Summary
|
|
24
|
+
sections.push('## Summary\n');
|
|
25
|
+
sections.push('| Metric | Count |');
|
|
26
|
+
sections.push('|--------|-------|');
|
|
27
|
+
sections.push(`| Entities Checked | ${result.summary.entitiesChecked} |`);
|
|
28
|
+
sections.push(`| Attributes Checked | ${result.summary.attributesChecked} |`);
|
|
29
|
+
sections.push(`| **Total Violations** | **${result.summary.totalViolations}** |`);
|
|
30
|
+
sections.push(`| Critical (MUST) | ${result.summary.criticalViolations} |`);
|
|
31
|
+
sections.push(`| Warnings (SHOULD) | ${result.summary.warnings} |`);
|
|
32
|
+
sections.push(`| Compliant Entities | ${result.summary.compliantEntities} |`);
|
|
33
|
+
sections.push('');
|
|
34
|
+
if (result.summary.totalViolations > 0) {
|
|
35
|
+
sections.push('**Overall Status**: ⚠️ Issues Found\n');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
sections.push('**Overall Status**: ✅ All Compliant\n');
|
|
39
|
+
}
|
|
40
|
+
sections.push('---\n');
|
|
41
|
+
// Violations Summary - Complete Lists of Affected Items
|
|
42
|
+
if (result.summary.totalViolations > 0) {
|
|
43
|
+
sections.push('## 📋 Violations Summary (Complete Lists)\n');
|
|
44
|
+
sections.push('_This section provides complete lists of ALL affected tables and columns grouped by violation type._\n');
|
|
45
|
+
// Use pre-computed violations summary from the result
|
|
46
|
+
for (const ruleSummary of result.violationsSummary) {
|
|
47
|
+
const severityIcon = ruleSummary.severity === 'MUST' ? '🔴' : '⚠️';
|
|
48
|
+
sections.push(`### ${severityIcon} ${ruleSummary.rule} (${ruleSummary.severity})\n`);
|
|
49
|
+
sections.push(`**Affected Items**: ${ruleSummary.totalCount}\n`);
|
|
50
|
+
// Show affected tables (entity-level violations)
|
|
51
|
+
if (ruleSummary.affectedEntities.length > 0) {
|
|
52
|
+
sections.push(`**Affected Tables**:`);
|
|
53
|
+
const tableList = ruleSummary.affectedEntities.map((e) => `\`${e}\``).join(', ');
|
|
54
|
+
sections.push(tableList);
|
|
55
|
+
sections.push('');
|
|
56
|
+
}
|
|
57
|
+
// Show affected columns (column-level violations)
|
|
58
|
+
if (ruleSummary.affectedColumns.length > 0) {
|
|
59
|
+
sections.push(`**Affected Columns**:`);
|
|
60
|
+
const columnList = ruleSummary.affectedColumns.map((c) => `\`${c}\``).join(', ');
|
|
61
|
+
sections.push(columnList);
|
|
62
|
+
sections.push('');
|
|
63
|
+
}
|
|
64
|
+
// Add recommended action and recommendation
|
|
65
|
+
sections.push(`**Recommended Action**: ${ruleSummary.action}`);
|
|
66
|
+
if (ruleSummary.recommendation) {
|
|
67
|
+
sections.push(`**Why**: ${ruleSummary.recommendation}`);
|
|
68
|
+
}
|
|
69
|
+
sections.push('');
|
|
70
|
+
}
|
|
71
|
+
sections.push('---\n');
|
|
72
|
+
}
|
|
73
|
+
// Critical Violations (MUST Fix)
|
|
74
|
+
if (result.summary.criticalViolations > 0) {
|
|
75
|
+
sections.push('## 🔴 Critical Violations (MUST Fix)\n');
|
|
76
|
+
for (const entity of result.entities) {
|
|
77
|
+
const criticalViolations = entity.violations.filter((v) => v.severity === 'MUST');
|
|
78
|
+
if (criticalViolations.length > 0) {
|
|
79
|
+
sections.push(`### Entity: ${entity.displayName} (\`${entity.logicalName}\`)\n`);
|
|
80
|
+
for (const violation of criticalViolations) {
|
|
81
|
+
if (violation.attributeLogicalName) {
|
|
82
|
+
sections.push(`#### Column: ${violation.attributeLogicalName}${violation.createdOn ? ` (Created: ${new Date(violation.createdOn).toLocaleDateString()})` : ''}\n`);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
sections.push(`#### Entity-Level Issue\n`);
|
|
86
|
+
}
|
|
87
|
+
sections.push(`- **Rule**: ${violation.rule}`);
|
|
88
|
+
sections.push(`- **Issue**: ${violation.message}`);
|
|
89
|
+
sections.push(`- **Current**: \`${violation.currentValue}\``);
|
|
90
|
+
sections.push(`- **Expected**: \`${violation.expectedValue}\``);
|
|
91
|
+
sections.push(`- **Action**: ${violation.action}`);
|
|
92
|
+
if (violation.recommendation) {
|
|
93
|
+
sections.push(`- **Recommendation**: ${violation.recommendation}`);
|
|
94
|
+
}
|
|
95
|
+
sections.push('');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
sections.push('---\n');
|
|
100
|
+
}
|
|
101
|
+
// Warnings (SHOULD Fix)
|
|
102
|
+
if (result.summary.warnings > 0) {
|
|
103
|
+
sections.push('## ⚠️ Warnings (SHOULD Fix)\n');
|
|
104
|
+
for (const entity of result.entities) {
|
|
105
|
+
const warnings = entity.violations.filter((v) => v.severity === 'SHOULD');
|
|
106
|
+
if (warnings.length > 0) {
|
|
107
|
+
sections.push(`### Entity: ${entity.displayName} (\`${entity.logicalName}\`)\n`);
|
|
108
|
+
for (const violation of warnings) {
|
|
109
|
+
if (violation.attributeLogicalName) {
|
|
110
|
+
sections.push(`#### Column: ${violation.attributeLogicalName}${violation.createdOn ? ` (Created: ${new Date(violation.createdOn).toLocaleDateString()})` : ''}\n`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
sections.push(`#### Entity-Level Issue\n`);
|
|
114
|
+
}
|
|
115
|
+
sections.push(`- **Rule**: ${violation.rule}`);
|
|
116
|
+
sections.push(`- **Issue**: ${violation.message}`);
|
|
117
|
+
sections.push(`- **Current**: \`${violation.currentValue}\``);
|
|
118
|
+
sections.push(`- **Expected**: \`${violation.expectedValue}\``);
|
|
119
|
+
sections.push(`- **Recommendation**: ${violation.recommendation || violation.action}`);
|
|
120
|
+
sections.push('');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
sections.push('---\n');
|
|
125
|
+
}
|
|
126
|
+
// Compliant Entities
|
|
127
|
+
sections.push('## ✅ Compliant Entities\n');
|
|
128
|
+
const compliantEntities = result.entities.filter((e) => e.isCompliant);
|
|
129
|
+
if (compliantEntities.length > 0) {
|
|
130
|
+
sections.push('The following entities have no violations:\n');
|
|
131
|
+
for (const entity of compliantEntities) {
|
|
132
|
+
sections.push(`- **${entity.displayName}** (\`${entity.logicalName}\`) - ${entity.attributesChecked} columns checked${entity.isRefData ? ' (RefData table)' : ''}`);
|
|
133
|
+
}
|
|
134
|
+
sections.push('');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
sections.push('No fully compliant entities found.\n');
|
|
138
|
+
}
|
|
139
|
+
sections.push('---\n');
|
|
140
|
+
// Exclusions and Statistics
|
|
141
|
+
sections.push('## Exclusions\n');
|
|
142
|
+
sections.push(`- System columns excluded: ${result.statistics.systemColumnsExcluded}`);
|
|
143
|
+
sections.push(`- Columns older than ${result.metadata.recentDays} days: ${result.statistics.oldColumnsExcluded}`);
|
|
144
|
+
sections.push(`- RefData tables (updatedbyprocess check skipped): ${result.statistics.refDataTablesSkipped}`);
|
|
145
|
+
sections.push('');
|
|
146
|
+
sections.push('---\n');
|
|
147
|
+
// Footer
|
|
148
|
+
sections.push(`**Execution Time**: ${result.metadata.executionTimeMs}ms`);
|
|
149
|
+
return sections.join('\n');
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Format violations grouped by severity
|
|
153
|
+
*/
|
|
154
|
+
export function formatViolationsBySeverity(violations) {
|
|
155
|
+
const sections = [];
|
|
156
|
+
const critical = violations.filter((v) => v.severity === 'MUST');
|
|
157
|
+
const warnings = violations.filter((v) => v.severity === 'SHOULD');
|
|
158
|
+
sections.push(`### Violations by Severity\n`);
|
|
159
|
+
sections.push(`- **Critical (MUST)**: ${critical.length}`);
|
|
160
|
+
sections.push(`- **Warnings (SHOULD)**: ${warnings.length}`);
|
|
161
|
+
sections.push(`- **Total**: ${violations.length}\n`);
|
|
162
|
+
if (critical.length > 0) {
|
|
163
|
+
sections.push('#### Critical Issues\n');
|
|
164
|
+
for (const violation of critical) {
|
|
165
|
+
sections.push(`- ${violation.rule}: ${violation.message}`);
|
|
166
|
+
}
|
|
167
|
+
sections.push('');
|
|
168
|
+
}
|
|
169
|
+
if (warnings.length > 0) {
|
|
170
|
+
sections.push('#### Warnings\n');
|
|
171
|
+
for (const violation of warnings) {
|
|
172
|
+
sections.push(`- ${violation.rule}: ${violation.message}`);
|
|
173
|
+
}
|
|
174
|
+
sections.push('');
|
|
175
|
+
}
|
|
176
|
+
return sections.join('\n');
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Format compliant entities list
|
|
180
|
+
*/
|
|
181
|
+
export function formatCompliantEntities(entities) {
|
|
182
|
+
const sections = [];
|
|
183
|
+
const compliant = entities.filter((e) => e.isCompliant);
|
|
184
|
+
sections.push('### Compliant Entities\n');
|
|
185
|
+
if (compliant.length > 0) {
|
|
186
|
+
for (const entity of compliant) {
|
|
187
|
+
sections.push(`- **${entity.displayName}** (\`${entity.logicalName}\`)`);
|
|
188
|
+
sections.push(` - Attributes checked: ${entity.attributesChecked}`);
|
|
189
|
+
sections.push(` - Status: ✅ No violations`);
|
|
190
|
+
if (entity.isRefData) {
|
|
191
|
+
sections.push(` - Type: RefData table`);
|
|
192
|
+
}
|
|
193
|
+
sections.push('');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
sections.push('No compliant entities found.');
|
|
198
|
+
}
|
|
199
|
+
return sections.join('\n');
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Format execution statistics
|
|
203
|
+
*/
|
|
204
|
+
export function formatExecutionStats(result) {
|
|
205
|
+
const sections = [];
|
|
206
|
+
sections.push('### Execution Statistics\n');
|
|
207
|
+
sections.push('| Metric | Value |');
|
|
208
|
+
sections.push('|--------|-------|');
|
|
209
|
+
sections.push(`| Execution Time | ${result.metadata.executionTimeMs}ms |`);
|
|
210
|
+
sections.push(`| Entities Processed | ${result.summary.entitiesChecked} |`);
|
|
211
|
+
sections.push(`| Attributes Analyzed | ${result.summary.attributesChecked} |`);
|
|
212
|
+
sections.push(`| System Columns Excluded | ${result.statistics.systemColumnsExcluded} |`);
|
|
213
|
+
sections.push(`| Old Columns Excluded | ${result.statistics.oldColumnsExcluded} |`);
|
|
214
|
+
sections.push(`| RefData Tables | ${result.statistics.refDataTablesSkipped} |`);
|
|
215
|
+
sections.push('');
|
|
216
|
+
// Performance metrics
|
|
217
|
+
if (result.summary.entitiesChecked > 0) {
|
|
218
|
+
const avgTimePerEntity = Math.round(result.metadata.executionTimeMs / result.summary.entitiesChecked);
|
|
219
|
+
sections.push(`**Average time per entity**: ${avgTimePerEntity}ms`);
|
|
220
|
+
}
|
|
221
|
+
if (result.summary.attributesChecked > 0) {
|
|
222
|
+
const avgTimePerAttribute = Math.round(result.metadata.executionTimeMs / result.summary.attributesChecked);
|
|
223
|
+
sections.push(`**Average time per attribute**: ${avgTimePerAttribute}ms`);
|
|
224
|
+
}
|
|
225
|
+
return sections.join('\n');
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Generate quick summary for CLI output
|
|
229
|
+
*/
|
|
230
|
+
export function formatQuickSummary(result) {
|
|
231
|
+
const lines = [];
|
|
232
|
+
lines.push(`Validation Complete: ${result.summary.entitiesChecked} entities checked`);
|
|
233
|
+
lines.push(`Total Violations: ${result.summary.totalViolations} (${result.summary.criticalViolations} critical, ${result.summary.warnings} warnings)`);
|
|
234
|
+
lines.push(`Compliant Entities: ${result.summary.compliantEntities}/${result.summary.entitiesChecked}`);
|
|
235
|
+
lines.push(`Execution Time: ${result.metadata.executionTimeMs}ms`);
|
|
236
|
+
return lines.join('\n');
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=best-practices-formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"best-practices-formatters.js","sourceRoot":"","sources":["../../src/utils/best-practices-formatters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best Practices Validation Module
|
|
3
|
+
*
|
|
4
|
+
* Hard-coded SmartImpact CRM best practices for entity and attribute customization.
|
|
5
|
+
* These rules are enforced during entity and attribute creation/update operations.
|
|
6
|
+
*/
|
|
7
|
+
export interface ValidationResult {
|
|
8
|
+
isValid: boolean;
|
|
9
|
+
issues: string[];
|
|
10
|
+
warnings: string[];
|
|
11
|
+
missingColumns?: RequiredColumn[];
|
|
12
|
+
}
|
|
13
|
+
export interface RequiredColumn {
|
|
14
|
+
schemaName: string;
|
|
15
|
+
displayName: string;
|
|
16
|
+
description: string;
|
|
17
|
+
type: string;
|
|
18
|
+
maxLength?: number;
|
|
19
|
+
format?: string;
|
|
20
|
+
behavior?: string;
|
|
21
|
+
[key: string]: unknown;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Hard-coded best practices rules for SmartImpact CRM customizations
|
|
25
|
+
*/
|
|
26
|
+
export declare const BEST_PRACTICES: {
|
|
27
|
+
publisher: {
|
|
28
|
+
prefix: string;
|
|
29
|
+
name: string;
|
|
30
|
+
optionValuePrefix: number;
|
|
31
|
+
};
|
|
32
|
+
entity: {
|
|
33
|
+
ownershipType: {
|
|
34
|
+
allowed: string[];
|
|
35
|
+
forbidden: string[];
|
|
36
|
+
default: string;
|
|
37
|
+
};
|
|
38
|
+
prefix: string;
|
|
39
|
+
refDataInfix: string;
|
|
40
|
+
caseRule: string;
|
|
41
|
+
};
|
|
42
|
+
attribute: {
|
|
43
|
+
lookupSuffix: string;
|
|
44
|
+
caseRule: string;
|
|
45
|
+
avoidBooleans: boolean;
|
|
46
|
+
dateTimeDefaultBehavior: string;
|
|
47
|
+
};
|
|
48
|
+
requiredColumns: {
|
|
49
|
+
allTables: {
|
|
50
|
+
schemaName: string;
|
|
51
|
+
displayName: string;
|
|
52
|
+
description: string;
|
|
53
|
+
type: string;
|
|
54
|
+
maxLength: number;
|
|
55
|
+
}[];
|
|
56
|
+
refDataTables: ({
|
|
57
|
+
schemaName: string;
|
|
58
|
+
displayName: string;
|
|
59
|
+
description: string;
|
|
60
|
+
type: string;
|
|
61
|
+
format: string;
|
|
62
|
+
behavior: string;
|
|
63
|
+
maxLength?: undefined;
|
|
64
|
+
} | {
|
|
65
|
+
schemaName: string;
|
|
66
|
+
displayName: string;
|
|
67
|
+
description: string;
|
|
68
|
+
type: string;
|
|
69
|
+
maxLength: number;
|
|
70
|
+
format?: undefined;
|
|
71
|
+
behavior?: undefined;
|
|
72
|
+
})[];
|
|
73
|
+
};
|
|
74
|
+
form: {
|
|
75
|
+
firstColumnMustBeName: boolean;
|
|
76
|
+
standardColumnOrder: string[];
|
|
77
|
+
colorPalette: {
|
|
78
|
+
amber: string;
|
|
79
|
+
green: string;
|
|
80
|
+
red: string;
|
|
81
|
+
grey: string;
|
|
82
|
+
};
|
|
83
|
+
timelineActivityLimit: number;
|
|
84
|
+
};
|
|
85
|
+
status: {
|
|
86
|
+
preferGlobalOptionSets: boolean;
|
|
87
|
+
avoidOOTBStateStatus: boolean;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Best Practices Validator Class
|
|
92
|
+
*/
|
|
93
|
+
export declare class BestPracticesValidator {
|
|
94
|
+
/**
|
|
95
|
+
* Validate entity naming conventions
|
|
96
|
+
*/
|
|
97
|
+
validateEntityName(schemaName: string, isRefData: boolean): ValidationResult;
|
|
98
|
+
/**
|
|
99
|
+
* Validate attribute naming conventions
|
|
100
|
+
*/
|
|
101
|
+
validateAttributeName(schemaName: string, isLookup: boolean): ValidationResult;
|
|
102
|
+
/**
|
|
103
|
+
* Validate entity ownership type
|
|
104
|
+
*/
|
|
105
|
+
validateOwnershipType(ownershipType: string): ValidationResult;
|
|
106
|
+
/**
|
|
107
|
+
* Check if required columns are present
|
|
108
|
+
*/
|
|
109
|
+
validateRequiredColumns(existingColumns: string[], isRefData: boolean): ValidationResult;
|
|
110
|
+
/**
|
|
111
|
+
* Validate boolean usage (discouraged)
|
|
112
|
+
*/
|
|
113
|
+
validateBooleanUsage(attributeType: string, schemaName: string): ValidationResult;
|
|
114
|
+
/**
|
|
115
|
+
* Validate DateTime behavior
|
|
116
|
+
*/
|
|
117
|
+
validateDateTimeBehavior(behavior: string | undefined): ValidationResult;
|
|
118
|
+
/**
|
|
119
|
+
* Get required columns for entity type
|
|
120
|
+
*/
|
|
121
|
+
getRequiredColumns(isRefData: boolean): RequiredColumn[];
|
|
122
|
+
/**
|
|
123
|
+
* Validate option set value prefix
|
|
124
|
+
*/
|
|
125
|
+
validateOptionSetValuePrefix(value: number): ValidationResult;
|
|
126
|
+
/**
|
|
127
|
+
* Generate next option set value with proper prefix
|
|
128
|
+
*/
|
|
129
|
+
getNextOptionSetValue(existingValues: number[]): number;
|
|
130
|
+
/**
|
|
131
|
+
* Comprehensive entity validation
|
|
132
|
+
*/
|
|
133
|
+
validateEntity(params: {
|
|
134
|
+
schemaName: string;
|
|
135
|
+
displayName: string;
|
|
136
|
+
ownershipType: string;
|
|
137
|
+
isRefData: boolean;
|
|
138
|
+
existingColumns?: string[];
|
|
139
|
+
}): ValidationResult;
|
|
140
|
+
/**
|
|
141
|
+
* Comprehensive attribute validation
|
|
142
|
+
*/
|
|
143
|
+
validateAttribute(params: {
|
|
144
|
+
schemaName: string;
|
|
145
|
+
attributeType: string;
|
|
146
|
+
dateTimeBehavior?: string;
|
|
147
|
+
}): ValidationResult;
|
|
148
|
+
}
|
|
149
|
+
export declare const bestPracticesValidator: BestPracticesValidator;
|
|
150
|
+
//# sourceMappingURL=bestPractices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bestPractices.d.ts","sourceRoot":"","sources":["../../src/utils/bestPractices.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6F1B,CAAC;AAEF;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,gBAAgB;IA8B5E;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB;IA4B9E;;OAEG;IACH,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,gBAAgB;IAuB9D;;OAEG;IACH,uBAAuB,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,GAAG,gBAAgB;IA+BxF;;OAEG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAkBjF;;OAEG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB;IAmBxE;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,cAAc,EAAE;IAQxD;;OAEG;IACH,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB;IAsB7D;;OAEG;IACH,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM;IAevD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,GAAG,gBAAgB;IA4BpB;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,gBAAgB;CAuBrB;AAGD,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}
|