@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.
Files changed (153) hide show
  1. package/build/auth/index.d.ts +64 -0
  2. package/build/auth/index.d.ts.map +1 -0
  3. package/build/auth/index.js +39 -0
  4. package/build/auth/index.js.map +1 -0
  5. package/build/auth/interactive-auth.d.ts +60 -0
  6. package/build/auth/interactive-auth.d.ts.map +1 -0
  7. package/build/auth/interactive-auth.js +429 -0
  8. package/build/auth/interactive-auth.js.map +1 -0
  9. package/build/auth/service-principal-auth.d.ts +26 -0
  10. package/build/auth/service-principal-auth.d.ts.map +1 -0
  11. package/build/auth/service-principal-auth.js +60 -0
  12. package/build/auth/service-principal-auth.js.map +1 -0
  13. package/build/auth/token-cache.d.ts +40 -0
  14. package/build/auth/token-cache.d.ts.map +1 -0
  15. package/build/auth/token-cache.js +108 -0
  16. package/build/auth/token-cache.js.map +1 -0
  17. package/build/client/PowerPlatformClient.d.ts +78 -0
  18. package/build/client/PowerPlatformClient.d.ts.map +1 -0
  19. package/build/client/PowerPlatformClient.js +198 -0
  20. package/build/client/PowerPlatformClient.js.map +1 -0
  21. package/build/client/index.d.ts +6 -0
  22. package/build/client/index.d.ts.map +1 -0
  23. package/build/client/index.js +6 -0
  24. package/build/client/index.js.map +1 -0
  25. package/build/client/types.d.ts +300 -0
  26. package/build/client/types.d.ts.map +1 -0
  27. package/build/client/types.js +5 -0
  28. package/build/client/types.js.map +1 -0
  29. package/build/index.d.ts +36 -0
  30. package/build/index.d.ts.map +1 -0
  31. package/build/index.js +55 -0
  32. package/build/index.js.map +1 -0
  33. package/build/services/AppManagementService.d.ts +95 -0
  34. package/build/services/AppManagementService.d.ts.map +1 -0
  35. package/build/services/AppManagementService.js +322 -0
  36. package/build/services/AppManagementService.js.map +1 -0
  37. package/build/services/AppService.d.ts +39 -0
  38. package/build/services/AppService.d.ts.map +1 -0
  39. package/build/services/AppService.js +173 -0
  40. package/build/services/AppService.js.map +1 -0
  41. package/build/services/AttributeService.d.ts +28 -0
  42. package/build/services/AttributeService.d.ts.map +1 -0
  43. package/build/services/AttributeService.js +86 -0
  44. package/build/services/AttributeService.js.map +1 -0
  45. package/build/services/BusinessRuleService.d.ts +22 -0
  46. package/build/services/BusinessRuleService.d.ts.map +1 -0
  47. package/build/services/BusinessRuleService.js +85 -0
  48. package/build/services/BusinessRuleService.js.map +1 -0
  49. package/build/services/DataService.d.ts +53 -0
  50. package/build/services/DataService.d.ts.map +1 -0
  51. package/build/services/DataService.js +204 -0
  52. package/build/services/DataService.js.map +1 -0
  53. package/build/services/DependencyService.d.ts +27 -0
  54. package/build/services/DependencyService.d.ts.map +1 -0
  55. package/build/services/DependencyService.js +47 -0
  56. package/build/services/DependencyService.js.map +1 -0
  57. package/build/services/EntityService.d.ts +42 -0
  58. package/build/services/EntityService.d.ts.map +1 -0
  59. package/build/services/EntityService.js +132 -0
  60. package/build/services/EntityService.js.map +1 -0
  61. package/build/services/FlowService.d.ts +55 -0
  62. package/build/services/FlowService.d.ts.map +1 -0
  63. package/build/services/FlowService.js +608 -0
  64. package/build/services/FlowService.js.map +1 -0
  65. package/build/services/FormService.d.ts +36 -0
  66. package/build/services/FormService.d.ts.map +1 -0
  67. package/build/services/FormService.js +55 -0
  68. package/build/services/FormService.js.map +1 -0
  69. package/build/services/MetadataService.d.ts +63 -0
  70. package/build/services/MetadataService.d.ts.map +1 -0
  71. package/build/services/MetadataService.js +176 -0
  72. package/build/services/MetadataService.js.map +1 -0
  73. package/build/services/OptionSetService.d.ts +40 -0
  74. package/build/services/OptionSetService.d.ts.map +1 -0
  75. package/build/services/OptionSetService.js +91 -0
  76. package/build/services/OptionSetService.js.map +1 -0
  77. package/build/services/PluginDeploymentService.d.ts +102 -0
  78. package/build/services/PluginDeploymentService.d.ts.map +1 -0
  79. package/build/services/PluginDeploymentService.js +412 -0
  80. package/build/services/PluginDeploymentService.js.map +1 -0
  81. package/build/services/PluginService.d.ts +61 -0
  82. package/build/services/PluginService.d.ts.map +1 -0
  83. package/build/services/PluginService.js +289 -0
  84. package/build/services/PluginService.js.map +1 -0
  85. package/build/services/PublishingService.d.ts +37 -0
  86. package/build/services/PublishingService.d.ts.map +1 -0
  87. package/build/services/PublishingService.js +65 -0
  88. package/build/services/PublishingService.js.map +1 -0
  89. package/build/services/RelationshipService.d.ts +29 -0
  90. package/build/services/RelationshipService.d.ts.map +1 -0
  91. package/build/services/RelationshipService.js +46 -0
  92. package/build/services/RelationshipService.js.map +1 -0
  93. package/build/services/SolutionService.d.ts +60 -0
  94. package/build/services/SolutionService.d.ts.map +1 -0
  95. package/build/services/SolutionService.js +125 -0
  96. package/build/services/SolutionService.js.map +1 -0
  97. package/build/services/ValidationService.d.ts +31 -0
  98. package/build/services/ValidationService.d.ts.map +1 -0
  99. package/build/services/ValidationService.js +391 -0
  100. package/build/services/ValidationService.js.map +1 -0
  101. package/build/services/ViewService.d.ts +36 -0
  102. package/build/services/ViewService.d.ts.map +1 -0
  103. package/build/services/ViewService.js +55 -0
  104. package/build/services/ViewService.js.map +1 -0
  105. package/build/services/WebResourceService.d.ts +40 -0
  106. package/build/services/WebResourceService.d.ts.map +1 -0
  107. package/build/services/WebResourceService.js +64 -0
  108. package/build/services/WebResourceService.js.map +1 -0
  109. package/build/services/WorkflowManagementService.d.ts +157 -0
  110. package/build/services/WorkflowManagementService.d.ts.map +1 -0
  111. package/build/services/WorkflowManagementService.js +567 -0
  112. package/build/services/WorkflowManagementService.js.map +1 -0
  113. package/build/services/WorkflowService.d.ts +28 -0
  114. package/build/services/WorkflowService.d.ts.map +1 -0
  115. package/build/services/WorkflowService.js +285 -0
  116. package/build/services/WorkflowService.js.map +1 -0
  117. package/build/services/index.d.ts +29 -0
  118. package/build/services/index.d.ts.map +1 -0
  119. package/build/services/index.js +31 -0
  120. package/build/services/index.js.map +1 -0
  121. package/build/utils/auditLogger.d.ts +76 -0
  122. package/build/utils/auditLogger.d.ts.map +1 -0
  123. package/build/utils/auditLogger.js +110 -0
  124. package/build/utils/auditLogger.js.map +1 -0
  125. package/build/utils/best-practices-formatters.d.ts +26 -0
  126. package/build/utils/best-practices-formatters.d.ts.map +1 -0
  127. package/build/utils/best-practices-formatters.js +238 -0
  128. package/build/utils/best-practices-formatters.js.map +1 -0
  129. package/build/utils/bestPractices.d.ts +150 -0
  130. package/build/utils/bestPractices.d.ts.map +1 -0
  131. package/build/utils/bestPractices.js +324 -0
  132. package/build/utils/bestPractices.js.map +1 -0
  133. package/build/utils/iconManager.d.ts +84 -0
  134. package/build/utils/iconManager.d.ts.map +1 -0
  135. package/build/utils/iconManager.js +338 -0
  136. package/build/utils/iconManager.js.map +1 -0
  137. package/build/utils/index.d.ts +11 -0
  138. package/build/utils/index.d.ts.map +1 -0
  139. package/build/utils/index.js +18 -0
  140. package/build/utils/index.js.map +1 -0
  141. package/build/utils/prompt-templates.d.ts +9 -0
  142. package/build/utils/prompt-templates.d.ts.map +1 -0
  143. package/build/utils/prompt-templates.js +31 -0
  144. package/build/utils/prompt-templates.js.map +1 -0
  145. package/build/utils/publisherConfig.d.ts +33 -0
  146. package/build/utils/publisherConfig.d.ts.map +1 -0
  147. package/build/utils/publisherConfig.js +54 -0
  148. package/build/utils/publisherConfig.js.map +1 -0
  149. package/build/utils/rate-limiter.d.ts +108 -0
  150. package/build/utils/rate-limiter.d.ts.map +1 -0
  151. package/build/utils/rate-limiter.js +242 -0
  152. package/build/utils/rate-limiter.js.map +1 -0
  153. 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"}