@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,324 @@
|
|
|
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
|
+
/**
|
|
8
|
+
* Hard-coded best practices rules for SmartImpact CRM customizations
|
|
9
|
+
*/
|
|
10
|
+
export const BEST_PRACTICES = {
|
|
11
|
+
publisher: {
|
|
12
|
+
prefix: 'sic_',
|
|
13
|
+
name: 'SmartImpactCustomer',
|
|
14
|
+
optionValuePrefix: 15743,
|
|
15
|
+
},
|
|
16
|
+
entity: {
|
|
17
|
+
ownershipType: {
|
|
18
|
+
allowed: ['UserOwned', 'TeamOwned'],
|
|
19
|
+
forbidden: ['OrganizationOwned'],
|
|
20
|
+
default: 'UserOwned',
|
|
21
|
+
},
|
|
22
|
+
prefix: 'sic_',
|
|
23
|
+
refDataInfix: 'ref_',
|
|
24
|
+
caseRule: 'lowercase',
|
|
25
|
+
},
|
|
26
|
+
attribute: {
|
|
27
|
+
lookupSuffix: 'id',
|
|
28
|
+
caseRule: 'lowercase',
|
|
29
|
+
avoidBooleans: true,
|
|
30
|
+
dateTimeDefaultBehavior: 'TimeZoneIndependent',
|
|
31
|
+
},
|
|
32
|
+
requiredColumns: {
|
|
33
|
+
allTables: [
|
|
34
|
+
{
|
|
35
|
+
schemaName: 'sic_updatedbyprocess',
|
|
36
|
+
displayName: 'Updated by process',
|
|
37
|
+
description: 'This field is updated, each time an automated process updates this record.',
|
|
38
|
+
type: 'String',
|
|
39
|
+
maxLength: 4000,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
refDataTables: [
|
|
43
|
+
{
|
|
44
|
+
schemaName: 'sic_startdate',
|
|
45
|
+
displayName: 'Start Date',
|
|
46
|
+
description: 'The date this reference data record started being used.',
|
|
47
|
+
type: 'DateTime',
|
|
48
|
+
format: 'DateOnly',
|
|
49
|
+
behavior: 'TimeZoneIndependent',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
schemaName: 'sic_enddate',
|
|
53
|
+
displayName: 'End Date',
|
|
54
|
+
description: 'The date this reference data record stopped being used.',
|
|
55
|
+
type: 'DateTime',
|
|
56
|
+
format: 'DateOnly',
|
|
57
|
+
behavior: 'TimeZoneIndependent',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
schemaName: 'sic_description',
|
|
61
|
+
displayName: 'Description',
|
|
62
|
+
description: 'Useful information about this reference data record.',
|
|
63
|
+
type: 'Memo',
|
|
64
|
+
maxLength: 20000,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
schemaName: 'sic_code',
|
|
68
|
+
displayName: 'Code',
|
|
69
|
+
description: 'Code to identify the record, instead of GUID',
|
|
70
|
+
type: 'String',
|
|
71
|
+
maxLength: 100,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
form: {
|
|
76
|
+
firstColumnMustBeName: true,
|
|
77
|
+
standardColumnOrder: [
|
|
78
|
+
'name',
|
|
79
|
+
'createdon',
|
|
80
|
+
'createdby',
|
|
81
|
+
'modifiedon',
|
|
82
|
+
'modifiedby',
|
|
83
|
+
'statuscode',
|
|
84
|
+
'status',
|
|
85
|
+
],
|
|
86
|
+
colorPalette: {
|
|
87
|
+
amber: '#ffd175',
|
|
88
|
+
green: '#8ed483',
|
|
89
|
+
red: '#ff8c8c',
|
|
90
|
+
grey: '#d1d1d1',
|
|
91
|
+
},
|
|
92
|
+
timelineActivityLimit: 10,
|
|
93
|
+
},
|
|
94
|
+
status: {
|
|
95
|
+
preferGlobalOptionSets: true,
|
|
96
|
+
avoidOOTBStateStatus: true,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Best Practices Validator Class
|
|
101
|
+
*/
|
|
102
|
+
export class BestPracticesValidator {
|
|
103
|
+
/**
|
|
104
|
+
* Validate entity naming conventions
|
|
105
|
+
*/
|
|
106
|
+
validateEntityName(schemaName, isRefData) {
|
|
107
|
+
const rules = BEST_PRACTICES.entity;
|
|
108
|
+
const issues = [];
|
|
109
|
+
const warnings = [];
|
|
110
|
+
if (schemaName !== schemaName.toLowerCase()) {
|
|
111
|
+
issues.push(`Entity schema name must be all lowercase. Got: "${schemaName}"`);
|
|
112
|
+
}
|
|
113
|
+
if (!schemaName.startsWith(rules.prefix)) {
|
|
114
|
+
issues.push(`Entity schema name must start with publisher prefix "${rules.prefix}". Got: "${schemaName}"`);
|
|
115
|
+
}
|
|
116
|
+
else if (isRefData) {
|
|
117
|
+
const expectedPattern = rules.prefix + rules.refDataInfix;
|
|
118
|
+
if (!schemaName.startsWith(expectedPattern)) {
|
|
119
|
+
issues.push(`RefData entity schema name must follow pattern "${expectedPattern}<tablename>". ` +
|
|
120
|
+
`Example: ${expectedPattern}cancellationreason. Got: "${schemaName}"`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
isValid: issues.length === 0,
|
|
125
|
+
issues,
|
|
126
|
+
warnings,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Validate attribute naming conventions
|
|
131
|
+
*/
|
|
132
|
+
validateAttributeName(schemaName, isLookup) {
|
|
133
|
+
const rules = BEST_PRACTICES.attribute;
|
|
134
|
+
const issues = [];
|
|
135
|
+
const warnings = [];
|
|
136
|
+
if (schemaName !== schemaName.toLowerCase()) {
|
|
137
|
+
issues.push(`Attribute schema name must be all lowercase. Got: "${schemaName}"`);
|
|
138
|
+
}
|
|
139
|
+
if (!schemaName.startsWith(BEST_PRACTICES.publisher.prefix)) {
|
|
140
|
+
issues.push(`Attribute schema name must start with "${BEST_PRACTICES.publisher.prefix}". Got: "${schemaName}"`);
|
|
141
|
+
}
|
|
142
|
+
if (isLookup && !schemaName.endsWith(rules.lookupSuffix)) {
|
|
143
|
+
warnings.push(`Lookup attribute should end with "${rules.lookupSuffix}". Got: "${schemaName}"`);
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
isValid: issues.length === 0,
|
|
147
|
+
issues,
|
|
148
|
+
warnings,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Validate entity ownership type
|
|
153
|
+
*/
|
|
154
|
+
validateOwnershipType(ownershipType) {
|
|
155
|
+
const rules = BEST_PRACTICES.entity.ownershipType;
|
|
156
|
+
const issues = [];
|
|
157
|
+
if (rules.forbidden.includes(ownershipType)) {
|
|
158
|
+
issues.push(`Ownership type "${ownershipType}" is forbidden. Use "${rules.default}" instead.`);
|
|
159
|
+
}
|
|
160
|
+
if (!rules.allowed.includes(ownershipType)) {
|
|
161
|
+
issues.push(`Ownership type "${ownershipType}" is not in allowed list: ${rules.allowed.join(', ')}`);
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
isValid: issues.length === 0,
|
|
165
|
+
issues,
|
|
166
|
+
warnings: [],
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Check if required columns are present
|
|
171
|
+
*/
|
|
172
|
+
validateRequiredColumns(existingColumns, isRefData) {
|
|
173
|
+
const rules = BEST_PRACTICES.requiredColumns;
|
|
174
|
+
const issues = [];
|
|
175
|
+
const missingColumns = [];
|
|
176
|
+
for (const column of rules.allTables) {
|
|
177
|
+
if (!existingColumns.includes(column.schemaName)) {
|
|
178
|
+
missingColumns.push(column);
|
|
179
|
+
issues.push(`Missing required column: ${column.schemaName} (${column.displayName})`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (isRefData) {
|
|
183
|
+
for (const column of rules.refDataTables) {
|
|
184
|
+
if (!existingColumns.includes(column.schemaName)) {
|
|
185
|
+
missingColumns.push(column);
|
|
186
|
+
issues.push(`Missing required RefData column: ${column.schemaName} (${column.displayName})`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
isValid: issues.length === 0,
|
|
192
|
+
issues,
|
|
193
|
+
warnings: [],
|
|
194
|
+
missingColumns,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Validate boolean usage (discouraged)
|
|
199
|
+
*/
|
|
200
|
+
validateBooleanUsage(attributeType, schemaName) {
|
|
201
|
+
const issues = [];
|
|
202
|
+
const warnings = [];
|
|
203
|
+
if (attributeType === 'Boolean' && BEST_PRACTICES.attribute.avoidBooleans) {
|
|
204
|
+
warnings.push(`Boolean attribute "${schemaName}" should be avoided. ` +
|
|
205
|
+
`Consider using a picklist with explicit values instead for better clarity.`);
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
isValid: true,
|
|
209
|
+
issues,
|
|
210
|
+
warnings,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Validate DateTime behavior
|
|
215
|
+
*/
|
|
216
|
+
validateDateTimeBehavior(behavior) {
|
|
217
|
+
const issues = [];
|
|
218
|
+
const warnings = [];
|
|
219
|
+
const defaultBehavior = BEST_PRACTICES.attribute.dateTimeDefaultBehavior;
|
|
220
|
+
if (behavior && behavior !== defaultBehavior) {
|
|
221
|
+
warnings.push(`DateTime behavior "${behavior}" differs from recommended "${defaultBehavior}". ` +
|
|
222
|
+
`Consider using "${defaultBehavior}" for consistency.`);
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
isValid: true,
|
|
226
|
+
issues,
|
|
227
|
+
warnings,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Get required columns for entity type
|
|
232
|
+
*/
|
|
233
|
+
getRequiredColumns(isRefData) {
|
|
234
|
+
const columns = [...BEST_PRACTICES.requiredColumns.allTables];
|
|
235
|
+
if (isRefData) {
|
|
236
|
+
columns.push(...BEST_PRACTICES.requiredColumns.refDataTables);
|
|
237
|
+
}
|
|
238
|
+
return columns;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Validate option set value prefix
|
|
242
|
+
*/
|
|
243
|
+
validateOptionSetValuePrefix(value) {
|
|
244
|
+
const issues = [];
|
|
245
|
+
const warnings = [];
|
|
246
|
+
const expectedPrefix = BEST_PRACTICES.publisher.optionValuePrefix;
|
|
247
|
+
const valueStr = value.toString();
|
|
248
|
+
const prefixStr = expectedPrefix.toString();
|
|
249
|
+
if (!valueStr.startsWith(prefixStr)) {
|
|
250
|
+
warnings.push(`Option set value ${value} does not start with publisher prefix ${expectedPrefix}. ` +
|
|
251
|
+
`Values should start with ${prefixStr} for consistency.`);
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
isValid: true,
|
|
255
|
+
issues,
|
|
256
|
+
warnings,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Generate next option set value with proper prefix
|
|
261
|
+
*/
|
|
262
|
+
getNextOptionSetValue(existingValues) {
|
|
263
|
+
const prefix = BEST_PRACTICES.publisher.optionValuePrefix;
|
|
264
|
+
const prefixStr = prefix.toString();
|
|
265
|
+
const ourValues = existingValues
|
|
266
|
+
.filter((v) => v.toString().startsWith(prefixStr))
|
|
267
|
+
.sort((a, b) => b - a);
|
|
268
|
+
if (ourValues.length === 0) {
|
|
269
|
+
return prefix * 10000 + 1;
|
|
270
|
+
}
|
|
271
|
+
return ourValues[0] + 1;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Comprehensive entity validation
|
|
275
|
+
*/
|
|
276
|
+
validateEntity(params) {
|
|
277
|
+
const allIssues = [];
|
|
278
|
+
const allWarnings = [];
|
|
279
|
+
let missingColumns;
|
|
280
|
+
const nameResult = this.validateEntityName(params.schemaName, params.isRefData);
|
|
281
|
+
allIssues.push(...nameResult.issues);
|
|
282
|
+
allWarnings.push(...nameResult.warnings);
|
|
283
|
+
const ownershipResult = this.validateOwnershipType(params.ownershipType);
|
|
284
|
+
allIssues.push(...ownershipResult.issues);
|
|
285
|
+
allWarnings.push(...ownershipResult.warnings);
|
|
286
|
+
if (params.existingColumns) {
|
|
287
|
+
const columnsResult = this.validateRequiredColumns(params.existingColumns, params.isRefData);
|
|
288
|
+
allIssues.push(...columnsResult.issues);
|
|
289
|
+
allWarnings.push(...columnsResult.warnings);
|
|
290
|
+
missingColumns = columnsResult.missingColumns;
|
|
291
|
+
}
|
|
292
|
+
return {
|
|
293
|
+
isValid: allIssues.length === 0,
|
|
294
|
+
issues: allIssues,
|
|
295
|
+
warnings: allWarnings,
|
|
296
|
+
missingColumns,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Comprehensive attribute validation
|
|
301
|
+
*/
|
|
302
|
+
validateAttribute(params) {
|
|
303
|
+
const allIssues = [];
|
|
304
|
+
const allWarnings = [];
|
|
305
|
+
const isLookup = params.attributeType === 'Lookup' || params.attributeType === 'Customer';
|
|
306
|
+
const nameResult = this.validateAttributeName(params.schemaName, isLookup);
|
|
307
|
+
allIssues.push(...nameResult.issues);
|
|
308
|
+
allWarnings.push(...nameResult.warnings);
|
|
309
|
+
const boolResult = this.validateBooleanUsage(params.attributeType, params.schemaName);
|
|
310
|
+
allWarnings.push(...boolResult.warnings);
|
|
311
|
+
if (params.attributeType === 'DateTime' && params.dateTimeBehavior) {
|
|
312
|
+
const behaviorResult = this.validateDateTimeBehavior(params.dateTimeBehavior);
|
|
313
|
+
allWarnings.push(...behaviorResult.warnings);
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
isValid: allIssues.length === 0,
|
|
317
|
+
issues: allIssues,
|
|
318
|
+
warnings: allWarnings,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// Export singleton instance
|
|
323
|
+
export const bestPracticesValidator = new BestPracticesValidator();
|
|
324
|
+
//# sourceMappingURL=bestPractices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bestPractices.js","sourceRoot":"","sources":["../../src/utils/bestPractices.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE;QACT,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qBAAqB;QAC3B,iBAAiB,EAAE,KAAK;KACzB;IAED,MAAM,EAAE;QACN,aAAa,EAAE;YACb,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;YACnC,SAAS,EAAE,CAAC,mBAAmB,CAAC;YAChC,OAAO,EAAE,WAAW;SACrB;QACD,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,MAAM;QACpB,QAAQ,EAAE,WAAW;KACtB;IAED,SAAS,EAAE;QACT,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,WAAW;QACrB,aAAa,EAAE,IAAI;QACnB,uBAAuB,EAAE,qBAAqB;KAC/C;IAED,eAAe,EAAE;QACf,SAAS,EAAE;YACT;gBACE,UAAU,EAAE,sBAAsB;gBAClC,WAAW,EAAE,oBAAoB;gBACjC,WAAW,EAAE,4EAA4E;gBACzF,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,IAAI;aAChB;SACF;QACD,aAAa,EAAE;YACb;gBACE,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,YAAY;gBACzB,WAAW,EAAE,yDAAyD;gBACtE,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,qBAAqB;aAChC;YACD;gBACE,UAAU,EAAE,aAAa;gBACzB,WAAW,EAAE,UAAU;gBACvB,WAAW,EAAE,yDAAyD;gBACtE,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,qBAAqB;aAChC;YACD;gBACE,UAAU,EAAE,iBAAiB;gBAC7B,WAAW,EAAE,aAAa;gBAC1B,WAAW,EAAE,sDAAsD;gBACnE,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,KAAK;aACjB;YACD;gBACE,UAAU,EAAE,UAAU;gBACtB,WAAW,EAAE,MAAM;gBACnB,WAAW,EAAE,8CAA8C;gBAC3D,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,GAAG;aACf;SACF;KACF;IAED,IAAI,EAAE;QACJ,qBAAqB,EAAE,IAAI;QAC3B,mBAAmB,EAAE;YACnB,MAAM;YACN,WAAW;YACX,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,QAAQ;SACT;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;SAChB;QACD,qBAAqB,EAAE,EAAE;KAC1B;IAED,MAAM,EAAE;QACN,sBAAsB,EAAE,IAAI;QAC5B,oBAAoB,EAAE,IAAI;KAC3B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC;;OAEG;IACH,kBAAkB,CAAC,UAAkB,EAAE,SAAkB;QACvD,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC;QACpC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,UAAU,KAAK,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,mDAAmD,UAAU,GAAG,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CACT,wDAAwD,KAAK,CAAC,MAAM,YAAY,UAAU,GAAG,CAC9F,CAAC;QACJ,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CACT,mDAAmD,eAAe,gBAAgB;oBAChF,YAAY,eAAe,6BAA6B,UAAU,GAAG,CACxE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,UAAkB,EAAE,QAAiB;QACzD,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC;QACvC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,UAAU,KAAK,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,sDAAsD,UAAU,GAAG,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CACT,0CAA0C,cAAc,CAAC,SAAS,CAAC,MAAM,YAAY,UAAU,GAAG,CACnG,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CACX,qCAAqC,KAAK,CAAC,YAAY,YAAY,UAAU,GAAG,CACjF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,aAAqB;QACzC,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;QAClD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CACT,mBAAmB,aAAa,wBAAwB,KAAK,CAAC,OAAO,YAAY,CAClF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CACT,mBAAmB,aAAa,6BAA6B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,MAAM;YACN,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,eAAyB,EAAE,SAAkB;QACnE,MAAM,KAAK,GAAG,cAAc,CAAC,eAAe,CAAC;QAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAqB,EAAE,CAAC;QAE5C,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACzC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjD,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,MAAM,CAAC,IAAI,CACT,oCAAoC,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,WAAW,GAAG,CAChF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,MAAM;YACN,QAAQ,EAAE,EAAE;YACZ,cAAc;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,aAAqB,EAAE,UAAkB;QAC5D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,aAAa,KAAK,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAC1E,QAAQ,CAAC,IAAI,CACX,sBAAsB,UAAU,uBAAuB;gBACrD,4EAA4E,CAC/E,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,QAA4B;QACnD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC,uBAAuB,CAAC;QAEzE,IAAI,QAAQ,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;YAC7C,QAAQ,CAAC,IAAI,CACX,sBAAsB,QAAQ,+BAA+B,eAAe,KAAK;gBAC/E,mBAAmB,eAAe,oBAAoB,CACzD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,SAAkB;QACnC,MAAM,OAAO,GAAqB,CAAC,GAAG,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,GAAI,cAAc,CAAC,eAAe,CAAC,aAAkC,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,4BAA4B,CAAC,KAAa;QACxC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,iBAAiB,CAAC;QAElE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;QAE5C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CACX,oBAAoB,KAAK,yCAAyC,cAAc,IAAI;gBAClF,4BAA4B,SAAS,mBAAmB,CAC3D,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,cAAwB;QAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,iBAAiB,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEpC,MAAM,SAAS,GAAG,cAAc;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAMd;QACC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,cAA4C,CAAC;QAEjD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAChF,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEzC,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACzE,SAAS,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC1C,WAAW,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE9C,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7F,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACxC,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC5C,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;QAChD,CAAC;QAED,OAAO;YACL,OAAO,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC;YAC/B,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,WAAW;YACrB,cAAc;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,MAIjB;QACC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,KAAK,UAAU,CAAC;QAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC3E,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACtF,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,aAAa,KAAK,UAAU,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACnE,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC9E,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC;YAC/B,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,WAAW;SACtB,CAAC;IACJ,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Icon Management Module
|
|
3
|
+
*
|
|
4
|
+
* Integrates with Fluent UI System Icons for entity icon management.
|
|
5
|
+
* Fetches SVG icons from GitHub and uploads them as web resources.
|
|
6
|
+
*/
|
|
7
|
+
export interface IconSuggestion {
|
|
8
|
+
name: string;
|
|
9
|
+
fileName: string;
|
|
10
|
+
url: string;
|
|
11
|
+
category: string;
|
|
12
|
+
}
|
|
13
|
+
export interface IconUploadResult {
|
|
14
|
+
webResourceId: string;
|
|
15
|
+
webResourceName: string;
|
|
16
|
+
iconVectorName: string;
|
|
17
|
+
success: boolean;
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Icon Manager Class
|
|
22
|
+
*/
|
|
23
|
+
export declare class IconManager {
|
|
24
|
+
private baseUrl;
|
|
25
|
+
private cache;
|
|
26
|
+
constructor();
|
|
27
|
+
/**
|
|
28
|
+
* Suggest icons based on entity name or type
|
|
29
|
+
*/
|
|
30
|
+
suggestIcons(entityName: string): IconSuggestion[];
|
|
31
|
+
/**
|
|
32
|
+
* Populate full URLs for icon suggestions
|
|
33
|
+
*/
|
|
34
|
+
private populateUrls;
|
|
35
|
+
/**
|
|
36
|
+
* Parse icon filename and construct GitHub path
|
|
37
|
+
* Converts: people_community_24_filled.svg
|
|
38
|
+
* To: assets/People Community/SVG/ic_fluent_people_community_24_filled.svg
|
|
39
|
+
*/
|
|
40
|
+
private constructFluentIconPath;
|
|
41
|
+
/**
|
|
42
|
+
* Fetch SVG icon from Fluent UI GitHub repository
|
|
43
|
+
*/
|
|
44
|
+
fetchIcon(fileName: string): Promise<string>;
|
|
45
|
+
/**
|
|
46
|
+
* Generate web resource name for icon
|
|
47
|
+
*/
|
|
48
|
+
generateWebResourceName(entitySchemaName: string, iconName: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Generate icon vector name for EntityMetadata
|
|
51
|
+
* Uses $webresource: directive which is the correct syntax for Dynamics 365
|
|
52
|
+
* This creates a solution dependency and tells the system to look up the web resource by name
|
|
53
|
+
*/
|
|
54
|
+
generateIconVectorName(webResourceName: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Validate icon SVG content
|
|
57
|
+
*/
|
|
58
|
+
validateIconSvg(svg: string): {
|
|
59
|
+
valid: boolean;
|
|
60
|
+
error?: string;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Get all available icon categories
|
|
64
|
+
*/
|
|
65
|
+
getCategories(): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Search icons by name
|
|
68
|
+
*/
|
|
69
|
+
searchIcons(searchTerm: string): IconSuggestion[];
|
|
70
|
+
/**
|
|
71
|
+
* Get icons by category
|
|
72
|
+
*/
|
|
73
|
+
getIconsByCategory(category: string): IconSuggestion[];
|
|
74
|
+
/**
|
|
75
|
+
* Build custom icon URL for specific size/style
|
|
76
|
+
*/
|
|
77
|
+
buildIconUrl(iconName: string, size?: number, style?: 'filled' | 'regular'): string;
|
|
78
|
+
/**
|
|
79
|
+
* Clear icon cache
|
|
80
|
+
*/
|
|
81
|
+
clearCache(): void;
|
|
82
|
+
}
|
|
83
|
+
export declare const iconManager: IconManager;
|
|
84
|
+
//# sourceMappingURL=iconManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iconManager.d.ts","sourceRoot":"","sources":["../../src/utils/iconManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAuID;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAkC;;IAM/C;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE;IAsBlD;;OAEG;IACH,OAAO,CAAC,YAAY;IAkBpB;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAuC/B;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsClD;;OAEG;IACH,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ3E;;;;OAIG;IACH,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAIvD;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAiBhE;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAQzB;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE;IAkBjD;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IActD;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,EAAE,KAAK,GAAE,QAAQ,GAAG,SAAoB,GAAG,MAAM;IAYjG;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|