typekro 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/.tsbuildinfo +1 -1
- package/dist/core/composition/imperative.d.ts.map +1 -1
- package/dist/core/composition/imperative.js +15 -2
- package/dist/core/composition/imperative.js.map +1 -1
- package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -1
- package/dist/core/composition/typekro-runtime/typekro-runtime.js +24 -25
- package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -1
- package/dist/core/dependencies/type-guards.d.ts.map +1 -1
- package/dist/core/dependencies/type-guards.js +7 -2
- package/dist/core/dependencies/type-guards.js.map +1 -1
- package/dist/core/deployment/engine.d.ts +0 -1
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +0 -1
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/errors.d.ts +85 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +135 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/expressions/analyzer.d.ts +584 -0
- package/dist/core/expressions/analyzer.d.ts.map +1 -0
- package/dist/core/expressions/analyzer.js +2956 -0
- package/dist/core/expressions/analyzer.js.map +1 -0
- package/dist/core/expressions/cache.d.ts +136 -0
- package/dist/core/expressions/cache.d.ts.map +1 -0
- package/dist/core/expressions/cache.js +347 -0
- package/dist/core/expressions/cache.js.map +1 -0
- package/dist/core/expressions/cel-conversion-engine.d.ts +126 -0
- package/dist/core/expressions/cel-conversion-engine.d.ts.map +1 -0
- package/dist/core/expressions/cel-conversion-engine.js +293 -0
- package/dist/core/expressions/cel-conversion-engine.js.map +1 -0
- package/dist/core/expressions/compile-time-validation.d.ts +270 -0
- package/dist/core/expressions/compile-time-validation.d.ts.map +1 -0
- package/dist/core/expressions/compile-time-validation.js +506 -0
- package/dist/core/expressions/compile-time-validation.js.map +1 -0
- package/dist/core/expressions/composition-integration.d.ts +315 -0
- package/dist/core/expressions/composition-integration.d.ts.map +1 -0
- package/dist/core/expressions/composition-integration.js +936 -0
- package/dist/core/expressions/composition-integration.js.map +1 -0
- package/dist/core/expressions/conditional-expression-processor.d.ts +154 -0
- package/dist/core/expressions/conditional-expression-processor.d.ts.map +1 -0
- package/dist/core/expressions/conditional-expression-processor.js +479 -0
- package/dist/core/expressions/conditional-expression-processor.js.map +1 -0
- package/dist/core/expressions/conditional-integration.d.ts +133 -0
- package/dist/core/expressions/conditional-integration.d.ts.map +1 -0
- package/dist/core/expressions/conditional-integration.js +293 -0
- package/dist/core/expressions/conditional-integration.js.map +1 -0
- package/dist/core/expressions/conditional-validation.d.ts +181 -0
- package/dist/core/expressions/conditional-validation.d.ts.map +1 -0
- package/dist/core/expressions/conditional-validation.js +460 -0
- package/dist/core/expressions/conditional-validation.js.map +1 -0
- package/dist/core/expressions/context-aware-generator.d.ts +127 -0
- package/dist/core/expressions/context-aware-generator.d.ts.map +1 -0
- package/dist/core/expressions/context-aware-generator.js +500 -0
- package/dist/core/expressions/context-aware-generator.js.map +1 -0
- package/dist/core/expressions/context-detector.d.ts +148 -0
- package/dist/core/expressions/context-detector.d.ts.map +1 -0
- package/dist/core/expressions/context-detector.js +546 -0
- package/dist/core/expressions/context-detector.js.map +1 -0
- package/dist/core/expressions/context-switcher.d.ts +185 -0
- package/dist/core/expressions/context-switcher.d.ts.map +1 -0
- package/dist/core/expressions/context-switcher.js +515 -0
- package/dist/core/expressions/context-switcher.js.map +1 -0
- package/dist/core/expressions/context-validator.d.ts +176 -0
- package/dist/core/expressions/context-validator.d.ts.map +1 -0
- package/dist/core/expressions/context-validator.js +452 -0
- package/dist/core/expressions/context-validator.js.map +1 -0
- package/dist/core/expressions/custom-context-manager.d.ts +194 -0
- package/dist/core/expressions/custom-context-manager.d.ts.map +1 -0
- package/dist/core/expressions/custom-context-manager.js +390 -0
- package/dist/core/expressions/custom-context-manager.js.map +1 -0
- package/dist/core/expressions/expression-proxy.d.ts +80 -0
- package/dist/core/expressions/expression-proxy.d.ts.map +1 -0
- package/dist/core/expressions/expression-proxy.js +227 -0
- package/dist/core/expressions/expression-proxy.js.map +1 -0
- package/dist/core/expressions/factory-integration.d.ts +132 -0
- package/dist/core/expressions/factory-integration.d.ts.map +1 -0
- package/dist/core/expressions/factory-integration.js +327 -0
- package/dist/core/expressions/factory-integration.js.map +1 -0
- package/dist/core/expressions/factory-pattern-handler.d.ts +88 -0
- package/dist/core/expressions/factory-pattern-handler.d.ts.map +1 -0
- package/dist/core/expressions/factory-pattern-handler.js +336 -0
- package/dist/core/expressions/factory-pattern-handler.js.map +1 -0
- package/dist/core/expressions/field-hydration-processor.d.ts +188 -0
- package/dist/core/expressions/field-hydration-processor.d.ts.map +1 -0
- package/dist/core/expressions/field-hydration-processor.js +562 -0
- package/dist/core/expressions/field-hydration-processor.js.map +1 -0
- package/dist/core/expressions/imperative-analyzer.d.ts +21 -0
- package/dist/core/expressions/imperative-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/imperative-analyzer.js +343 -0
- package/dist/core/expressions/imperative-analyzer.js.map +1 -0
- package/dist/core/expressions/index.d.ts +54 -0
- package/dist/core/expressions/index.d.ts.map +1 -0
- package/dist/core/expressions/index.js +50 -0
- package/dist/core/expressions/index.js.map +1 -0
- package/dist/core/expressions/lazy-analysis.d.ts +1128 -0
- package/dist/core/expressions/lazy-analysis.d.ts.map +1 -0
- package/dist/core/expressions/lazy-analysis.js +2443 -0
- package/dist/core/expressions/lazy-analysis.js.map +1 -0
- package/dist/core/expressions/magic-assignable-analyzer.d.ts +123 -0
- package/dist/core/expressions/magic-assignable-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/magic-assignable-analyzer.js +352 -0
- package/dist/core/expressions/magic-assignable-analyzer.js.map +1 -0
- package/dist/core/expressions/magic-proxy-analyzer.d.ts +206 -0
- package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy-analyzer.js +639 -0
- package/dist/core/expressions/magic-proxy-analyzer.js.map +1 -0
- package/dist/core/expressions/magic-proxy-detector.d.ts +154 -0
- package/dist/core/expressions/magic-proxy-detector.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy-detector.js +242 -0
- package/dist/core/expressions/magic-proxy-detector.js.map +1 -0
- package/dist/core/expressions/migration-helpers.d.ts +133 -0
- package/dist/core/expressions/migration-helpers.d.ts.map +1 -0
- package/dist/core/expressions/migration-helpers.js +443 -0
- package/dist/core/expressions/migration-helpers.js.map +1 -0
- package/dist/core/expressions/optionality-handler.d.ts +503 -0
- package/dist/core/expressions/optionality-handler.d.ts.map +1 -0
- package/dist/core/expressions/optionality-handler.js +1306 -0
- package/dist/core/expressions/optionality-handler.js.map +1 -0
- package/dist/core/expressions/readiness-integration.d.ts +119 -0
- package/dist/core/expressions/readiness-integration.d.ts.map +1 -0
- package/dist/core/expressions/readiness-integration.js +386 -0
- package/dist/core/expressions/readiness-integration.js.map +1 -0
- package/dist/core/expressions/resource-analyzer.d.ts +486 -0
- package/dist/core/expressions/resource-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/resource-analyzer.js +1086 -0
- package/dist/core/expressions/resource-analyzer.js.map +1 -0
- package/dist/core/expressions/resource-validation.d.ts +187 -0
- package/dist/core/expressions/resource-validation.d.ts.map +1 -0
- package/dist/core/expressions/resource-validation.js +552 -0
- package/dist/core/expressions/resource-validation.js.map +1 -0
- package/dist/core/expressions/runtime-error-mapper.d.ts +138 -0
- package/dist/core/expressions/runtime-error-mapper.d.ts.map +1 -0
- package/dist/core/expressions/runtime-error-mapper.js +412 -0
- package/dist/core/expressions/runtime-error-mapper.js.map +1 -0
- package/dist/core/expressions/source-map.d.ts +168 -0
- package/dist/core/expressions/source-map.d.ts.map +1 -0
- package/dist/core/expressions/source-map.js +350 -0
- package/dist/core/expressions/source-map.js.map +1 -0
- package/dist/core/expressions/status-builder-analyzer.d.ts +353 -0
- package/dist/core/expressions/status-builder-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/status-builder-analyzer.js +1301 -0
- package/dist/core/expressions/status-builder-analyzer.js.map +1 -0
- package/dist/core/expressions/type-inference.d.ts +184 -0
- package/dist/core/expressions/type-inference.d.ts.map +1 -0
- package/dist/core/expressions/type-inference.js +838 -0
- package/dist/core/expressions/type-inference.js.map +1 -0
- package/dist/core/expressions/type-safety.d.ts +203 -0
- package/dist/core/expressions/type-safety.d.ts.map +1 -0
- package/dist/core/expressions/type-safety.js +442 -0
- package/dist/core/expressions/type-safety.js.map +1 -0
- package/dist/core/expressions/types.d.ts +282 -0
- package/dist/core/expressions/types.d.ts.map +1 -0
- package/dist/core/expressions/types.js +8 -0
- package/dist/core/expressions/types.js.map +1 -0
- package/dist/core/kubernetes/client-provider.js +2 -2
- package/dist/core/kubernetes/client-provider.js.map +1 -1
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +573 -9
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/types/deployment.d.ts +4 -0
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/deployment.js.map +1 -1
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js.map +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/factories/helm/helm-release.d.ts.map +1 -1
- package/dist/factories/helm/helm-release.js +0 -5
- package/dist/factories/helm/helm-release.js.map +1 -1
- package/dist/factories/helm/types.d.ts +1 -1
- package/dist/factories/helm/types.d.ts.map +1 -1
- package/dist/factories/shared.d.ts.map +1 -1
- package/dist/factories/shared.js +21 -1
- package/dist/factories/shared.js.map +1 -1
- package/dist/factories/simple/index.d.ts +2 -2
- package/dist/factories/simple/index.d.ts.map +1 -1
- package/dist/factories/simple/workloads/deployment.d.ts +3 -3
- package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
- package/dist/factories/simple/workloads/deployment.js +37 -11
- package/dist/factories/simple/workloads/deployment.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/type-guards.d.ts +6 -0
- package/dist/utils/type-guards.d.ts.map +1 -1
- package/dist/utils/type-guards.js +25 -2
- package/dist/utils/type-guards.js.map +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Helpers for Converting CEL to JavaScript with Magic Proxy Support
|
|
3
|
+
*
|
|
4
|
+
* This module provides utilities to help developers migrate from manual CEL expressions
|
|
5
|
+
* to natural JavaScript expressions that work with TypeKro's magic proxy system.
|
|
6
|
+
*
|
|
7
|
+
* The helpers analyze existing CEL expressions and suggest equivalent JavaScript
|
|
8
|
+
* expressions that will be automatically converted back to CEL by the analyzer.
|
|
9
|
+
*/
|
|
10
|
+
import { isCelExpression } from '../../utils/type-guards.js';
|
|
11
|
+
import { getComponentLogger } from '../logging/index.js';
|
|
12
|
+
/**
|
|
13
|
+
* CEL to JavaScript Migration Helper
|
|
14
|
+
*
|
|
15
|
+
* Analyzes existing CEL expressions and provides suggestions for converting
|
|
16
|
+
* them to equivalent JavaScript expressions that work with magic proxy.
|
|
17
|
+
*/
|
|
18
|
+
export class CelToJavaScriptMigrationHelper {
|
|
19
|
+
logger = getComponentLogger('cel-migration-helper');
|
|
20
|
+
/**
|
|
21
|
+
* Analyze status mappings and provide migration suggestions
|
|
22
|
+
*/
|
|
23
|
+
analyzeMigrationOpportunities(statusMappings) {
|
|
24
|
+
const suggestions = [];
|
|
25
|
+
this.analyzeObjectForMigration(statusMappings, suggestions);
|
|
26
|
+
// Categorize suggestions
|
|
27
|
+
const suggestionsByCategory = new Map();
|
|
28
|
+
for (const suggestion of suggestions) {
|
|
29
|
+
if (!suggestionsByCategory.has(suggestion.category)) {
|
|
30
|
+
suggestionsByCategory.set(suggestion.category, []);
|
|
31
|
+
}
|
|
32
|
+
suggestionsByCategory.get(suggestion.category)?.push(suggestion);
|
|
33
|
+
}
|
|
34
|
+
// Calculate migration feasibility
|
|
35
|
+
const totalExpressions = suggestions.length;
|
|
36
|
+
const migratableExpressions = suggestions.filter(s => s.category !== 'unsupported').length;
|
|
37
|
+
const safeMigrations = suggestions.filter(s => s.isSafe).length;
|
|
38
|
+
const unsupportedExpressions = suggestions.filter(s => s.category === 'unsupported').length;
|
|
39
|
+
const overallConfidence = totalExpressions > 0
|
|
40
|
+
? suggestions.reduce((sum, s) => sum + s.confidence, 0) / totalExpressions
|
|
41
|
+
: 0;
|
|
42
|
+
const migrationFeasibility = {
|
|
43
|
+
totalExpressions,
|
|
44
|
+
migratableExpressions,
|
|
45
|
+
safeMigrations,
|
|
46
|
+
unsupportedExpressions,
|
|
47
|
+
overallConfidence
|
|
48
|
+
};
|
|
49
|
+
// Generate summary
|
|
50
|
+
const summary = this.generateMigrationSummary(migrationFeasibility, suggestionsByCategory);
|
|
51
|
+
this.logger.debug('Migration analysis complete', {
|
|
52
|
+
totalExpressions,
|
|
53
|
+
migratableExpressions,
|
|
54
|
+
overallConfidence: Math.round(overallConfidence * 100)
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
suggestions,
|
|
58
|
+
suggestionsByCategory,
|
|
59
|
+
migrationFeasibility,
|
|
60
|
+
summary
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Recursively analyze object for CEL expressions that can be migrated
|
|
65
|
+
*/
|
|
66
|
+
analyzeObjectForMigration(obj, suggestions, path = '') {
|
|
67
|
+
if (!obj || typeof obj !== 'object') {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
71
|
+
const currentPath = path ? `${path}.${key}` : key;
|
|
72
|
+
if (isCelExpression(value)) {
|
|
73
|
+
const suggestion = this.analyzeCelExpression(value, currentPath);
|
|
74
|
+
if (suggestion) {
|
|
75
|
+
suggestions.push(suggestion);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
79
|
+
this.analyzeObjectForMigration(value, suggestions, currentPath);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Analyze a single CEL expression and provide migration suggestion
|
|
85
|
+
*/
|
|
86
|
+
analyzeCelExpression(celExpression, fieldPath) {
|
|
87
|
+
const celString = celExpression.expression;
|
|
88
|
+
// Try different migration patterns
|
|
89
|
+
const patterns = [
|
|
90
|
+
this.trySimpleComparison,
|
|
91
|
+
this.tryTemplateString,
|
|
92
|
+
this.tryConditionalExpression,
|
|
93
|
+
this.tryResourceReference,
|
|
94
|
+
this.trySchemaReference,
|
|
95
|
+
this.tryComplexExpression
|
|
96
|
+
];
|
|
97
|
+
for (const pattern of patterns) {
|
|
98
|
+
const suggestion = pattern.call(this, celString, fieldPath);
|
|
99
|
+
if (suggestion) {
|
|
100
|
+
return suggestion;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// If no pattern matches, mark as unsupported
|
|
104
|
+
return {
|
|
105
|
+
originalCel: celString,
|
|
106
|
+
suggestedJavaScript: '// Unable to automatically migrate this expression',
|
|
107
|
+
confidence: 0.1,
|
|
108
|
+
category: 'unsupported',
|
|
109
|
+
notes: [
|
|
110
|
+
'This CEL expression is too complex for automatic migration',
|
|
111
|
+
'Manual review and conversion required',
|
|
112
|
+
'Consider breaking down into simpler expressions'
|
|
113
|
+
],
|
|
114
|
+
isSafe: false
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Try to migrate simple comparison expressions
|
|
119
|
+
*/
|
|
120
|
+
trySimpleComparison(celString, _fieldPath) {
|
|
121
|
+
// Pattern: resources.deployment.status.readyReplicas > 0
|
|
122
|
+
const comparisonMatch = celString.match(/^(resources\.[\w.]+|schema\.[\w.]+)\s*([><=!]+)\s*(.+)$/);
|
|
123
|
+
if (comparisonMatch) {
|
|
124
|
+
const [, resourceRef, operator, value] = comparisonMatch;
|
|
125
|
+
if (!resourceRef || !operator || !value) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const jsResourceRef = this.convertCelReferenceToJavaScript(resourceRef);
|
|
129
|
+
return {
|
|
130
|
+
originalCel: celString,
|
|
131
|
+
suggestedJavaScript: `${jsResourceRef} ${operator} ${value}`,
|
|
132
|
+
confidence: 0.9,
|
|
133
|
+
category: 'simple-comparison',
|
|
134
|
+
notes: [
|
|
135
|
+
'Simple comparison expression',
|
|
136
|
+
'Direct conversion to JavaScript comparison operator'
|
|
137
|
+
],
|
|
138
|
+
isSafe: true,
|
|
139
|
+
exampleUsage: `ready: ${jsResourceRef} ${operator} ${value}`
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Try to migrate template string expressions
|
|
146
|
+
*/
|
|
147
|
+
tryTemplateString(celString, _fieldPath) {
|
|
148
|
+
// Pattern: "http://" + resources.service.status.loadBalancer.ingress[0].ip
|
|
149
|
+
const templateMatch = celString.match(/^"([^"]*)" \+ (.+)$/) ||
|
|
150
|
+
celString.match(/^(.+) \+ "([^"]*)"$/) ||
|
|
151
|
+
celString.match(/^"([^"]*)" \+ (.+) \+ "([^"]*)"$/);
|
|
152
|
+
if (templateMatch) {
|
|
153
|
+
let jsExpression;
|
|
154
|
+
let notes;
|
|
155
|
+
if (templateMatch.length === 3) {
|
|
156
|
+
// Simple prefix or suffix
|
|
157
|
+
const [, stringPart, refPart] = templateMatch;
|
|
158
|
+
if (!stringPart || !refPart) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const jsRef = this.convertCelReferenceToJavaScript(refPart.trim());
|
|
162
|
+
if (celString.startsWith('"')) {
|
|
163
|
+
// Prefix: "http://" + ref
|
|
164
|
+
jsExpression = `\`${stringPart}\${${jsRef}}\``;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
// Suffix: ref + ".com"
|
|
168
|
+
jsExpression = `\`\${${jsRef}}${stringPart}\``;
|
|
169
|
+
}
|
|
170
|
+
notes = [
|
|
171
|
+
'String concatenation converted to template literal',
|
|
172
|
+
'Template literals are more readable and maintainable'
|
|
173
|
+
];
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Complex template - might need manual review
|
|
177
|
+
jsExpression = '// Complex template - manual conversion recommended';
|
|
178
|
+
notes = [
|
|
179
|
+
'Complex string concatenation detected',
|
|
180
|
+
'Consider using template literal with multiple interpolations',
|
|
181
|
+
'Manual review recommended for accuracy'
|
|
182
|
+
];
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
originalCel: celString,
|
|
186
|
+
suggestedJavaScript: jsExpression,
|
|
187
|
+
confidence: templateMatch.length === 3 ? 0.8 : 0.4,
|
|
188
|
+
category: 'template-string',
|
|
189
|
+
notes,
|
|
190
|
+
isSafe: templateMatch.length === 3,
|
|
191
|
+
exampleUsage: `url: ${jsExpression}`
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Try to migrate conditional expressions
|
|
198
|
+
*/
|
|
199
|
+
tryConditionalExpression(celString, _fieldPath) {
|
|
200
|
+
// Pattern: condition ? trueValue : falseValue
|
|
201
|
+
const conditionalMatch = celString.match(/^(.+?)\s*\?\s*(.+?)\s*:\s*(.+)$/);
|
|
202
|
+
if (conditionalMatch) {
|
|
203
|
+
const [, condition, trueValue, falseValue] = conditionalMatch;
|
|
204
|
+
if (!condition || !trueValue || !falseValue) {
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
const jsCondition = this.convertCelExpressionToJavaScript(condition.trim());
|
|
208
|
+
const jsTrueValue = this.convertCelValueToJavaScript(trueValue.trim());
|
|
209
|
+
const jsFalseValue = this.convertCelValueToJavaScript(falseValue.trim());
|
|
210
|
+
const jsExpression = `${jsCondition} ? ${jsTrueValue} : ${jsFalseValue}`;
|
|
211
|
+
return {
|
|
212
|
+
originalCel: celString,
|
|
213
|
+
suggestedJavaScript: jsExpression,
|
|
214
|
+
confidence: 0.7,
|
|
215
|
+
category: 'conditional-expression',
|
|
216
|
+
notes: [
|
|
217
|
+
'Conditional expression (ternary operator)',
|
|
218
|
+
'Direct conversion to JavaScript ternary operator'
|
|
219
|
+
],
|
|
220
|
+
isSafe: true,
|
|
221
|
+
exampleUsage: `phase: ${jsExpression}`
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Try to migrate resource reference expressions
|
|
228
|
+
*/
|
|
229
|
+
tryResourceReference(celString, fieldPath) {
|
|
230
|
+
// Pattern: resources.deployment.status.readyReplicas
|
|
231
|
+
const resourceMatch = celString.match(/^resources\.([\w.]+)$/);
|
|
232
|
+
if (resourceMatch) {
|
|
233
|
+
const [, resourcePath] = resourceMatch;
|
|
234
|
+
const jsRef = `resources.${resourcePath}`;
|
|
235
|
+
return {
|
|
236
|
+
originalCel: celString,
|
|
237
|
+
suggestedJavaScript: jsRef,
|
|
238
|
+
confidence: 0.95,
|
|
239
|
+
category: 'resource-reference',
|
|
240
|
+
notes: [
|
|
241
|
+
'Simple resource field reference',
|
|
242
|
+
'Direct conversion - magic proxy will handle the reference'
|
|
243
|
+
],
|
|
244
|
+
isSafe: true,
|
|
245
|
+
exampleUsage: `${fieldPath}: ${jsRef}`
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Try to migrate schema reference expressions
|
|
252
|
+
*/
|
|
253
|
+
trySchemaReference(celString, fieldPath) {
|
|
254
|
+
// Pattern: schema.spec.name
|
|
255
|
+
const schemaMatch = celString.match(/^schema\.([\w.]+)$/);
|
|
256
|
+
if (schemaMatch) {
|
|
257
|
+
const [, schemaPath] = schemaMatch;
|
|
258
|
+
const jsRef = `schema.${schemaPath}`;
|
|
259
|
+
return {
|
|
260
|
+
originalCel: celString,
|
|
261
|
+
suggestedJavaScript: jsRef,
|
|
262
|
+
confidence: 0.95,
|
|
263
|
+
category: 'schema-reference',
|
|
264
|
+
notes: [
|
|
265
|
+
'Simple schema field reference',
|
|
266
|
+
'Direct conversion - magic proxy will handle the reference'
|
|
267
|
+
],
|
|
268
|
+
isSafe: true,
|
|
269
|
+
exampleUsage: `${fieldPath}: ${jsRef}`
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Try to migrate complex expressions
|
|
276
|
+
*/
|
|
277
|
+
tryComplexExpression(celString, _fieldPath) {
|
|
278
|
+
// For complex expressions, provide general guidance
|
|
279
|
+
if (celString.length > 50 || celString.includes('&&') || celString.includes('||')) {
|
|
280
|
+
return {
|
|
281
|
+
originalCel: celString,
|
|
282
|
+
suggestedJavaScript: '// Complex expression - consider breaking into smaller parts',
|
|
283
|
+
confidence: 0.3,
|
|
284
|
+
category: 'complex-expression',
|
|
285
|
+
notes: [
|
|
286
|
+
'Complex CEL expression detected',
|
|
287
|
+
'Consider breaking into multiple simpler expressions',
|
|
288
|
+
'Use JavaScript logical operators (&&, ||) instead of CEL equivalents',
|
|
289
|
+
'Manual review recommended'
|
|
290
|
+
],
|
|
291
|
+
isSafe: false
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Convert CEL resource reference to JavaScript equivalent
|
|
298
|
+
*/
|
|
299
|
+
convertCelReferenceToJavaScript(celRef) {
|
|
300
|
+
// Remove any extra whitespace and convert CEL reference to JS
|
|
301
|
+
return celRef.trim();
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Convert CEL expression part to JavaScript equivalent
|
|
305
|
+
*/
|
|
306
|
+
convertCelExpressionToJavaScript(celExpr) {
|
|
307
|
+
// Handle resource/schema references
|
|
308
|
+
if (celExpr.startsWith('resources.') || celExpr.startsWith('schema.')) {
|
|
309
|
+
return celExpr;
|
|
310
|
+
}
|
|
311
|
+
// Handle string literals
|
|
312
|
+
if (celExpr.startsWith('"') && celExpr.endsWith('"')) {
|
|
313
|
+
return celExpr;
|
|
314
|
+
}
|
|
315
|
+
// Handle numbers and booleans
|
|
316
|
+
if (/^\d+(\.\d+)?$/.test(celExpr) || celExpr === 'true' || celExpr === 'false') {
|
|
317
|
+
return celExpr;
|
|
318
|
+
}
|
|
319
|
+
// For other expressions, return as-is with a note
|
|
320
|
+
return celExpr;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Convert CEL value to JavaScript equivalent
|
|
324
|
+
*/
|
|
325
|
+
convertCelValueToJavaScript(celValue) {
|
|
326
|
+
// Handle string literals
|
|
327
|
+
if (celValue.startsWith('"') && celValue.endsWith('"')) {
|
|
328
|
+
return `'${celValue.slice(1, -1)}'`; // Convert to single quotes for consistency
|
|
329
|
+
}
|
|
330
|
+
// Handle resource/schema references
|
|
331
|
+
if (celValue.startsWith('resources.') || celValue.startsWith('schema.')) {
|
|
332
|
+
return celValue;
|
|
333
|
+
}
|
|
334
|
+
// Handle numbers, booleans, null
|
|
335
|
+
if (/^\d+(\.\d+)?$/.test(celValue) ||
|
|
336
|
+
celValue === 'true' ||
|
|
337
|
+
celValue === 'false' ||
|
|
338
|
+
celValue === 'null') {
|
|
339
|
+
return celValue;
|
|
340
|
+
}
|
|
341
|
+
// For complex values, return as-is
|
|
342
|
+
return celValue;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Generate migration summary
|
|
346
|
+
*/
|
|
347
|
+
generateMigrationSummary(feasibility, suggestionsByCategory) {
|
|
348
|
+
const { totalExpressions, migratableExpressions, safeMigrations, overallConfidence } = feasibility;
|
|
349
|
+
if (totalExpressions === 0) {
|
|
350
|
+
return 'No CEL expressions found that require migration.';
|
|
351
|
+
}
|
|
352
|
+
const migrationRate = Math.round((migratableExpressions / totalExpressions) * 100);
|
|
353
|
+
const safetyRate = Math.round((safeMigrations / totalExpressions) * 100);
|
|
354
|
+
const confidencePercent = Math.round(overallConfidence * 100);
|
|
355
|
+
let summary = `Migration Analysis Summary:\n`;
|
|
356
|
+
summary += `- Total CEL expressions: ${totalExpressions}\n`;
|
|
357
|
+
summary += `- Migratable expressions: ${migratableExpressions} (${migrationRate}%)\n`;
|
|
358
|
+
summary += `- Safe migrations: ${safeMigrations} (${safetyRate}%)\n`;
|
|
359
|
+
summary += `- Overall confidence: ${confidencePercent}%\n\n`;
|
|
360
|
+
summary += `Breakdown by category:\n`;
|
|
361
|
+
for (const [category, suggestions] of suggestionsByCategory) {
|
|
362
|
+
summary += `- ${category}: ${suggestions.length} expressions\n`;
|
|
363
|
+
}
|
|
364
|
+
if (migrationRate >= 80) {
|
|
365
|
+
summary += `\n✅ High migration feasibility - most expressions can be automatically converted.`;
|
|
366
|
+
}
|
|
367
|
+
else if (migrationRate >= 50) {
|
|
368
|
+
summary += `\n⚠️ Moderate migration feasibility - some expressions may need manual review.`;
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
summary += `\n❌ Low migration feasibility - many expressions require manual conversion.`;
|
|
372
|
+
}
|
|
373
|
+
return summary;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Generate migration guide for a specific status builder
|
|
377
|
+
*/
|
|
378
|
+
generateMigrationGuide(statusMappings, options = {}) {
|
|
379
|
+
const { includeExamples = true, includeWarnings = true, format = 'markdown' } = options;
|
|
380
|
+
const analysis = this.analyzeMigrationOpportunities(statusMappings);
|
|
381
|
+
let guide = format === 'markdown' ? '# CEL to JavaScript Migration Guide\n\n' : 'CEL to JavaScript Migration Guide\n\n';
|
|
382
|
+
guide += `${analysis.summary}\n\n`;
|
|
383
|
+
if (analysis.suggestions.length === 0) {
|
|
384
|
+
guide += 'No migration suggestions available.\n';
|
|
385
|
+
return guide;
|
|
386
|
+
}
|
|
387
|
+
// Group suggestions by category
|
|
388
|
+
for (const [category, suggestions] of analysis.suggestionsByCategory) {
|
|
389
|
+
if (suggestions.length === 0)
|
|
390
|
+
continue;
|
|
391
|
+
const categoryTitle = this.getCategoryTitle(category);
|
|
392
|
+
guide += format === 'markdown' ? `## ${categoryTitle}\n\n` : `${categoryTitle}:\n\n`;
|
|
393
|
+
for (const suggestion of suggestions) {
|
|
394
|
+
guide += format === 'markdown' ? '### ' : '';
|
|
395
|
+
guide += `Original CEL: \`${suggestion.originalCel}\`\n`;
|
|
396
|
+
guide += `Suggested JavaScript: \`${suggestion.suggestedJavaScript}\`\n`;
|
|
397
|
+
guide += `Confidence: ${Math.round(suggestion.confidence * 100)}%\n`;
|
|
398
|
+
guide += `Safe: ${suggestion.isSafe ? 'Yes' : 'No'}\n`;
|
|
399
|
+
if (includeExamples && suggestion.exampleUsage) {
|
|
400
|
+
guide += `Example: \`${suggestion.exampleUsage}\`\n`;
|
|
401
|
+
}
|
|
402
|
+
if (includeWarnings && suggestion.notes.length > 0) {
|
|
403
|
+
guide += 'Notes:\n';
|
|
404
|
+
for (const note of suggestion.notes) {
|
|
405
|
+
guide += `- ${note}\n`;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
guide += '\n';
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
return guide;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Get human-readable category title
|
|
415
|
+
*/
|
|
416
|
+
getCategoryTitle(category) {
|
|
417
|
+
const titles = {
|
|
418
|
+
'simple-comparison': 'Simple Comparisons',
|
|
419
|
+
'template-string': 'Template Strings',
|
|
420
|
+
'conditional-expression': 'Conditional Expressions',
|
|
421
|
+
'resource-reference': 'Resource References',
|
|
422
|
+
'schema-reference': 'Schema References',
|
|
423
|
+
'complex-expression': 'Complex Expressions',
|
|
424
|
+
'unsupported': 'Unsupported Expressions'
|
|
425
|
+
};
|
|
426
|
+
return titles[category] || category;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Convenience function to analyze migration opportunities
|
|
431
|
+
*/
|
|
432
|
+
export function analyzeCelMigrationOpportunities(statusMappings) {
|
|
433
|
+
const helper = new CelToJavaScriptMigrationHelper();
|
|
434
|
+
return helper.analyzeMigrationOpportunities(statusMappings);
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Convenience function to generate migration guide
|
|
438
|
+
*/
|
|
439
|
+
export function generateCelMigrationGuide(statusMappings, options) {
|
|
440
|
+
const helper = new CelToJavaScriptMigrationHelper();
|
|
441
|
+
return helper.generateMigrationGuide(statusMappings, options);
|
|
442
|
+
}
|
|
443
|
+
//# sourceMappingURL=migration-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-helpers.js","sourceRoot":"","sources":["../../../src/core/expressions/migration-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA+DzD;;;;;GAKG;AACH,MAAM,OAAO,8BAA8B;IACjC,MAAM,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;IAE5D;;OAEG;IACH,6BAA6B,CAC3B,cAAmC;QAEnC,MAAM,WAAW,GAA0B,EAAE,CAAC;QAE9C,IAAI,CAAC,yBAAyB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAE5D,yBAAyB;QACzB,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAA4C,CAAC;QAClF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACnE,CAAC;QAED,kCAAkC;QAClC,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC;QAC5C,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;QAC3F,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAChE,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;QAC5F,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,CAAC;YAC5C,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,gBAAgB;YAC1E,CAAC,CAAC,CAAC,CAAC;QAEN,MAAM,oBAAoB,GAAG;YAC3B,gBAAgB;YAChB,qBAAqB;YACrB,cAAc;YACd,sBAAsB;YACtB,iBAAiB;SAClB,CAAC;QAEF,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;QAE3F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC/C,gBAAgB;YAChB,qBAAqB;YACrB,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;SACvD,CAAC,CAAC;QAEH,OAAO;YACL,WAAW;YACX,qBAAqB;YACrB,oBAAoB;YACpB,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,yBAAyB,CAC/B,GAAQ,EACR,WAAkC,EAClC,OAAe,EAAE;QAEjB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAElD,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACjE,IAAI,UAAU,EAAE,CAAC;oBACf,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,aAA4B,EAC5B,SAAiB;QAEjB,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC;QAE3C,mCAAmC;QACnC,MAAM,QAAQ,GAAG;YACf,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,oBAAoB;YACzB,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,oBAAoB;SAC1B,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC5D,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,OAAO;YACL,WAAW,EAAE,SAAS;YACtB,mBAAmB,EAAE,oDAAoD;YACzE,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE;gBACL,4DAA4D;gBAC5D,uCAAuC;gBACvC,iDAAiD;aAClD;YACD,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,SAAiB,EAAE,UAAkB;QAC/D,yDAAyD;QACzD,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACnG,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC;YACzD,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,CAAC,WAAW,CAAC,CAAC;YAExE,OAAO;gBACL,WAAW,EAAE,SAAS;gBACtB,mBAAmB,EAAE,GAAG,aAAa,IAAI,QAAQ,IAAI,KAAK,EAAE;gBAC5D,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE,mBAAmB;gBAC7B,KAAK,EAAE;oBACL,8BAA8B;oBAC9B,qDAAqD;iBACtD;gBACD,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,UAAU,aAAa,IAAI,QAAQ,IAAI,KAAK,EAAE;aAC7D,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,SAAiB,EAAE,UAAkB;QAC7D,2EAA2E;QAC3E,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC;YACvC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC;YACtC,SAAS,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAEzE,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,YAAoB,CAAC;YACzB,IAAI,KAAe,CAAC;YAEpB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,0BAA0B;gBAC1B,MAAM,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC;gBAC9C,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAEnE,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9B,0BAA0B;oBAC1B,YAAY,GAAG,KAAK,UAAU,MAAM,KAAK,KAAK,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,uBAAuB;oBACvB,YAAY,GAAG,QAAQ,KAAK,IAAI,UAAU,IAAI,CAAC;gBACjD,CAAC;gBAED,KAAK,GAAG;oBACN,oDAAoD;oBACpD,sDAAsD;iBACvD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,8CAA8C;gBAC9C,YAAY,GAAG,qDAAqD,CAAC;gBACrE,KAAK,GAAG;oBACN,uCAAuC;oBACvC,8DAA8D;oBAC9D,wCAAwC;iBACzC,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,WAAW,EAAE,SAAS;gBACtB,mBAAmB,EAAE,YAAY;gBACjC,UAAU,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;gBAClD,QAAQ,EAAE,iBAAiB;gBAC3B,KAAK;gBACL,MAAM,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;gBAClC,YAAY,EAAE,QAAQ,YAAY,EAAE;aACrC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,SAAiB,EAAE,UAAkB;QACpE,8CAA8C;QAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC5E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,gBAAgB,CAAC;YAC9D,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YAEzE,MAAM,YAAY,GAAG,GAAG,WAAW,MAAM,WAAW,MAAM,YAAY,EAAE,CAAC;YAEzE,OAAO;gBACL,WAAW,EAAE,SAAS;gBACtB,mBAAmB,EAAE,YAAY;gBACjC,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE,wBAAwB;gBAClC,KAAK,EAAE;oBACL,2CAA2C;oBAC3C,kDAAkD;iBACnD;gBACD,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,UAAU,YAAY,EAAE;aACvC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,SAAiB,EAAE,SAAiB;QAC/D,qDAAqD;QACrD,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC/D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,aAAa,CAAC;YACvC,MAAM,KAAK,GAAG,aAAa,YAAY,EAAE,CAAC;YAE1C,OAAO;gBACL,WAAW,EAAE,SAAS;gBACtB,mBAAmB,EAAE,KAAK;gBAC1B,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,oBAAoB;gBAC9B,KAAK,EAAE;oBACL,iCAAiC;oBACjC,2DAA2D;iBAC5D;gBACD,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,GAAG,SAAS,KAAK,KAAK,EAAE;aACvC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,SAAiB,EAAE,SAAiB;QAC7D,4BAA4B;QAC5B,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC1D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC;YACnC,MAAM,KAAK,GAAG,UAAU,UAAU,EAAE,CAAC;YAErC,OAAO;gBACL,WAAW,EAAE,SAAS;gBACtB,mBAAmB,EAAE,KAAK;gBAC1B,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,kBAAkB;gBAC5B,KAAK,EAAE;oBACL,+BAA+B;oBAC/B,2DAA2D;iBAC5D;gBACD,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,GAAG,SAAS,KAAK,KAAK,EAAE;aACvC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,SAAiB,EAAE,UAAkB;QAChE,oDAAoD;QACpD,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClF,OAAO;gBACL,WAAW,EAAE,SAAS;gBACtB,mBAAmB,EAAE,8DAA8D;gBACnF,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE,oBAAoB;gBAC9B,KAAK,EAAE;oBACL,iCAAiC;oBACjC,qDAAqD;oBACrD,sEAAsE;oBACtE,2BAA2B;iBAC5B;gBACD,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,+BAA+B,CAAC,MAAc;QACpD,8DAA8D;QAC9D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,gCAAgC,CAAC,OAAe;QACtD,oCAAoC;QACpC,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,8BAA8B;QAC9B,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC/E,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,kDAAkD;QAClD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,2BAA2B,CAAC,QAAgB;QAClD,yBAAyB;QACzB,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,2CAA2C;QAClF,CAAC;QAED,oCAAoC;QACpC,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACxE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,iCAAiC;QACjC,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC9B,QAAQ,KAAK,MAAM;YACnB,QAAQ,KAAK,OAAO;YACpB,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,mCAAmC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,wBAAwB,CAC9B,WAA4D,EAC5D,qBAAoE;QAEpE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,WAAW,CAAC;QAEnG,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,kDAAkD,CAAC;QAC5D,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC;QAE9D,IAAI,OAAO,GAAG,+BAA+B,CAAC;QAC9C,OAAO,IAAI,4BAA4B,gBAAgB,IAAI,CAAC;QAC5D,OAAO,IAAI,6BAA6B,qBAAqB,KAAK,aAAa,MAAM,CAAC;QACtF,OAAO,IAAI,sBAAsB,cAAc,KAAK,UAAU,MAAM,CAAC;QACrE,OAAO,IAAI,yBAAyB,iBAAiB,OAAO,CAAC;QAE7D,OAAO,IAAI,0BAA0B,CAAC;QACtC,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,qBAAqB,EAAE,CAAC;YAC5D,OAAO,IAAI,KAAK,QAAQ,KAAK,WAAW,CAAC,MAAM,gBAAgB,CAAC;QAClE,CAAC;QAED,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,mFAAmF,CAAC;QACjG,CAAC;aAAM,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;YAC/B,OAAO,IAAI,iFAAiF,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,6EAA6E,CAAC;QAC3F,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,sBAAsB,CACpB,cAAmC,EACnC,UAII,EAAE;QAEN,MAAM,EAAE,eAAe,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC;QACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC;QAEpE,IAAI,KAAK,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,uCAAuC,CAAC;QAExH,KAAK,IAAI,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC;QAEnC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,KAAK,IAAI,uCAAuC,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;YACrE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEvC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACtD,KAAK,IAAI,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,aAAa,MAAM,CAAC,CAAC,CAAC,GAAG,aAAa,OAAO,CAAC;YAErF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,KAAK,IAAI,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,KAAK,IAAI,mBAAmB,UAAU,CAAC,WAAW,MAAM,CAAC;gBACzD,KAAK,IAAI,2BAA2B,UAAU,CAAC,mBAAmB,MAAM,CAAC;gBACzE,KAAK,IAAI,eAAe,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC;gBACrE,KAAK,IAAI,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBAEvD,IAAI,eAAe,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC/C,KAAK,IAAI,cAAc,UAAU,CAAC,YAAY,MAAM,CAAC;gBACvD,CAAC;gBAED,IAAI,eAAe,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,KAAK,IAAI,UAAU,CAAC;oBACpB,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;wBACpC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAED,KAAK,IAAI,IAAI,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,QAA2B;QAClD,MAAM,MAAM,GAAsC;YAChD,mBAAmB,EAAE,oBAAoB;YACzC,iBAAiB,EAAE,kBAAkB;YACrC,wBAAwB,EAAE,yBAAyB;YACnD,oBAAoB,EAAE,qBAAqB;YAC3C,kBAAkB,EAAE,mBAAmB;YACvC,oBAAoB,EAAE,qBAAqB;YAC3C,aAAa,EAAE,yBAAyB;SACzC,CAAC;QAEF,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IACtC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAC9C,cAAmC;IAEnC,MAAM,MAAM,GAAG,IAAI,8BAA8B,EAAE,CAAC;IACpD,OAAO,MAAM,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,cAAmC,EACnC,OAAiF;IAEjF,MAAM,MAAM,GAAG,IAAI,8BAA8B,EAAE,CAAC;IACpD,OAAO,MAAM,CAAC,sBAAsB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC"}
|