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.
Files changed (197) hide show
  1. package/README.md +4 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/core/composition/imperative.d.ts.map +1 -1
  4. package/dist/core/composition/imperative.js +15 -2
  5. package/dist/core/composition/imperative.js.map +1 -1
  6. package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -1
  7. package/dist/core/composition/typekro-runtime/typekro-runtime.js +24 -25
  8. package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -1
  9. package/dist/core/dependencies/type-guards.d.ts.map +1 -1
  10. package/dist/core/dependencies/type-guards.js +7 -2
  11. package/dist/core/dependencies/type-guards.js.map +1 -1
  12. package/dist/core/deployment/engine.d.ts +0 -1
  13. package/dist/core/deployment/engine.d.ts.map +1 -1
  14. package/dist/core/deployment/engine.js +0 -1
  15. package/dist/core/deployment/engine.js.map +1 -1
  16. package/dist/core/errors.d.ts +85 -0
  17. package/dist/core/errors.d.ts.map +1 -1
  18. package/dist/core/errors.js +135 -0
  19. package/dist/core/errors.js.map +1 -1
  20. package/dist/core/expressions/analyzer.d.ts +584 -0
  21. package/dist/core/expressions/analyzer.d.ts.map +1 -0
  22. package/dist/core/expressions/analyzer.js +2956 -0
  23. package/dist/core/expressions/analyzer.js.map +1 -0
  24. package/dist/core/expressions/cache.d.ts +136 -0
  25. package/dist/core/expressions/cache.d.ts.map +1 -0
  26. package/dist/core/expressions/cache.js +347 -0
  27. package/dist/core/expressions/cache.js.map +1 -0
  28. package/dist/core/expressions/cel-conversion-engine.d.ts +126 -0
  29. package/dist/core/expressions/cel-conversion-engine.d.ts.map +1 -0
  30. package/dist/core/expressions/cel-conversion-engine.js +293 -0
  31. package/dist/core/expressions/cel-conversion-engine.js.map +1 -0
  32. package/dist/core/expressions/compile-time-validation.d.ts +270 -0
  33. package/dist/core/expressions/compile-time-validation.d.ts.map +1 -0
  34. package/dist/core/expressions/compile-time-validation.js +506 -0
  35. package/dist/core/expressions/compile-time-validation.js.map +1 -0
  36. package/dist/core/expressions/composition-integration.d.ts +315 -0
  37. package/dist/core/expressions/composition-integration.d.ts.map +1 -0
  38. package/dist/core/expressions/composition-integration.js +936 -0
  39. package/dist/core/expressions/composition-integration.js.map +1 -0
  40. package/dist/core/expressions/conditional-expression-processor.d.ts +154 -0
  41. package/dist/core/expressions/conditional-expression-processor.d.ts.map +1 -0
  42. package/dist/core/expressions/conditional-expression-processor.js +479 -0
  43. package/dist/core/expressions/conditional-expression-processor.js.map +1 -0
  44. package/dist/core/expressions/conditional-integration.d.ts +133 -0
  45. package/dist/core/expressions/conditional-integration.d.ts.map +1 -0
  46. package/dist/core/expressions/conditional-integration.js +293 -0
  47. package/dist/core/expressions/conditional-integration.js.map +1 -0
  48. package/dist/core/expressions/conditional-validation.d.ts +181 -0
  49. package/dist/core/expressions/conditional-validation.d.ts.map +1 -0
  50. package/dist/core/expressions/conditional-validation.js +460 -0
  51. package/dist/core/expressions/conditional-validation.js.map +1 -0
  52. package/dist/core/expressions/context-aware-generator.d.ts +127 -0
  53. package/dist/core/expressions/context-aware-generator.d.ts.map +1 -0
  54. package/dist/core/expressions/context-aware-generator.js +500 -0
  55. package/dist/core/expressions/context-aware-generator.js.map +1 -0
  56. package/dist/core/expressions/context-detector.d.ts +148 -0
  57. package/dist/core/expressions/context-detector.d.ts.map +1 -0
  58. package/dist/core/expressions/context-detector.js +546 -0
  59. package/dist/core/expressions/context-detector.js.map +1 -0
  60. package/dist/core/expressions/context-switcher.d.ts +185 -0
  61. package/dist/core/expressions/context-switcher.d.ts.map +1 -0
  62. package/dist/core/expressions/context-switcher.js +515 -0
  63. package/dist/core/expressions/context-switcher.js.map +1 -0
  64. package/dist/core/expressions/context-validator.d.ts +176 -0
  65. package/dist/core/expressions/context-validator.d.ts.map +1 -0
  66. package/dist/core/expressions/context-validator.js +452 -0
  67. package/dist/core/expressions/context-validator.js.map +1 -0
  68. package/dist/core/expressions/custom-context-manager.d.ts +194 -0
  69. package/dist/core/expressions/custom-context-manager.d.ts.map +1 -0
  70. package/dist/core/expressions/custom-context-manager.js +390 -0
  71. package/dist/core/expressions/custom-context-manager.js.map +1 -0
  72. package/dist/core/expressions/expression-proxy.d.ts +80 -0
  73. package/dist/core/expressions/expression-proxy.d.ts.map +1 -0
  74. package/dist/core/expressions/expression-proxy.js +227 -0
  75. package/dist/core/expressions/expression-proxy.js.map +1 -0
  76. package/dist/core/expressions/factory-integration.d.ts +132 -0
  77. package/dist/core/expressions/factory-integration.d.ts.map +1 -0
  78. package/dist/core/expressions/factory-integration.js +327 -0
  79. package/dist/core/expressions/factory-integration.js.map +1 -0
  80. package/dist/core/expressions/factory-pattern-handler.d.ts +88 -0
  81. package/dist/core/expressions/factory-pattern-handler.d.ts.map +1 -0
  82. package/dist/core/expressions/factory-pattern-handler.js +336 -0
  83. package/dist/core/expressions/factory-pattern-handler.js.map +1 -0
  84. package/dist/core/expressions/field-hydration-processor.d.ts +188 -0
  85. package/dist/core/expressions/field-hydration-processor.d.ts.map +1 -0
  86. package/dist/core/expressions/field-hydration-processor.js +562 -0
  87. package/dist/core/expressions/field-hydration-processor.js.map +1 -0
  88. package/dist/core/expressions/imperative-analyzer.d.ts +21 -0
  89. package/dist/core/expressions/imperative-analyzer.d.ts.map +1 -0
  90. package/dist/core/expressions/imperative-analyzer.js +343 -0
  91. package/dist/core/expressions/imperative-analyzer.js.map +1 -0
  92. package/dist/core/expressions/index.d.ts +54 -0
  93. package/dist/core/expressions/index.d.ts.map +1 -0
  94. package/dist/core/expressions/index.js +50 -0
  95. package/dist/core/expressions/index.js.map +1 -0
  96. package/dist/core/expressions/lazy-analysis.d.ts +1128 -0
  97. package/dist/core/expressions/lazy-analysis.d.ts.map +1 -0
  98. package/dist/core/expressions/lazy-analysis.js +2443 -0
  99. package/dist/core/expressions/lazy-analysis.js.map +1 -0
  100. package/dist/core/expressions/magic-assignable-analyzer.d.ts +123 -0
  101. package/dist/core/expressions/magic-assignable-analyzer.d.ts.map +1 -0
  102. package/dist/core/expressions/magic-assignable-analyzer.js +352 -0
  103. package/dist/core/expressions/magic-assignable-analyzer.js.map +1 -0
  104. package/dist/core/expressions/magic-proxy-analyzer.d.ts +206 -0
  105. package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +1 -0
  106. package/dist/core/expressions/magic-proxy-analyzer.js +639 -0
  107. package/dist/core/expressions/magic-proxy-analyzer.js.map +1 -0
  108. package/dist/core/expressions/magic-proxy-detector.d.ts +154 -0
  109. package/dist/core/expressions/magic-proxy-detector.d.ts.map +1 -0
  110. package/dist/core/expressions/magic-proxy-detector.js +242 -0
  111. package/dist/core/expressions/magic-proxy-detector.js.map +1 -0
  112. package/dist/core/expressions/migration-helpers.d.ts +133 -0
  113. package/dist/core/expressions/migration-helpers.d.ts.map +1 -0
  114. package/dist/core/expressions/migration-helpers.js +443 -0
  115. package/dist/core/expressions/migration-helpers.js.map +1 -0
  116. package/dist/core/expressions/optionality-handler.d.ts +503 -0
  117. package/dist/core/expressions/optionality-handler.d.ts.map +1 -0
  118. package/dist/core/expressions/optionality-handler.js +1306 -0
  119. package/dist/core/expressions/optionality-handler.js.map +1 -0
  120. package/dist/core/expressions/readiness-integration.d.ts +119 -0
  121. package/dist/core/expressions/readiness-integration.d.ts.map +1 -0
  122. package/dist/core/expressions/readiness-integration.js +386 -0
  123. package/dist/core/expressions/readiness-integration.js.map +1 -0
  124. package/dist/core/expressions/resource-analyzer.d.ts +486 -0
  125. package/dist/core/expressions/resource-analyzer.d.ts.map +1 -0
  126. package/dist/core/expressions/resource-analyzer.js +1086 -0
  127. package/dist/core/expressions/resource-analyzer.js.map +1 -0
  128. package/dist/core/expressions/resource-validation.d.ts +187 -0
  129. package/dist/core/expressions/resource-validation.d.ts.map +1 -0
  130. package/dist/core/expressions/resource-validation.js +552 -0
  131. package/dist/core/expressions/resource-validation.js.map +1 -0
  132. package/dist/core/expressions/runtime-error-mapper.d.ts +138 -0
  133. package/dist/core/expressions/runtime-error-mapper.d.ts.map +1 -0
  134. package/dist/core/expressions/runtime-error-mapper.js +412 -0
  135. package/dist/core/expressions/runtime-error-mapper.js.map +1 -0
  136. package/dist/core/expressions/source-map.d.ts +168 -0
  137. package/dist/core/expressions/source-map.d.ts.map +1 -0
  138. package/dist/core/expressions/source-map.js +350 -0
  139. package/dist/core/expressions/source-map.js.map +1 -0
  140. package/dist/core/expressions/status-builder-analyzer.d.ts +353 -0
  141. package/dist/core/expressions/status-builder-analyzer.d.ts.map +1 -0
  142. package/dist/core/expressions/status-builder-analyzer.js +1301 -0
  143. package/dist/core/expressions/status-builder-analyzer.js.map +1 -0
  144. package/dist/core/expressions/type-inference.d.ts +184 -0
  145. package/dist/core/expressions/type-inference.d.ts.map +1 -0
  146. package/dist/core/expressions/type-inference.js +838 -0
  147. package/dist/core/expressions/type-inference.js.map +1 -0
  148. package/dist/core/expressions/type-safety.d.ts +203 -0
  149. package/dist/core/expressions/type-safety.d.ts.map +1 -0
  150. package/dist/core/expressions/type-safety.js +442 -0
  151. package/dist/core/expressions/type-safety.js.map +1 -0
  152. package/dist/core/expressions/types.d.ts +282 -0
  153. package/dist/core/expressions/types.d.ts.map +1 -0
  154. package/dist/core/expressions/types.js +8 -0
  155. package/dist/core/expressions/types.js.map +1 -0
  156. package/dist/core/kubernetes/client-provider.js +2 -2
  157. package/dist/core/kubernetes/client-provider.js.map +1 -1
  158. package/dist/core/serialization/core.d.ts.map +1 -1
  159. package/dist/core/serialization/core.js +573 -9
  160. package/dist/core/serialization/core.js.map +1 -1
  161. package/dist/core/types/deployment.d.ts +4 -0
  162. package/dist/core/types/deployment.d.ts.map +1 -1
  163. package/dist/core/types/deployment.js.map +1 -1
  164. package/dist/core/types/index.d.ts +1 -0
  165. package/dist/core/types/index.d.ts.map +1 -1
  166. package/dist/core/types/index.js.map +1 -1
  167. package/dist/core.d.ts +1 -1
  168. package/dist/core.d.ts.map +1 -1
  169. package/dist/core.js +1 -1
  170. package/dist/core.js.map +1 -1
  171. package/dist/factories/helm/helm-release.d.ts.map +1 -1
  172. package/dist/factories/helm/helm-release.js +0 -5
  173. package/dist/factories/helm/helm-release.js.map +1 -1
  174. package/dist/factories/helm/types.d.ts +1 -1
  175. package/dist/factories/helm/types.d.ts.map +1 -1
  176. package/dist/factories/shared.d.ts.map +1 -1
  177. package/dist/factories/shared.js +21 -1
  178. package/dist/factories/shared.js.map +1 -1
  179. package/dist/factories/simple/index.d.ts +2 -2
  180. package/dist/factories/simple/index.d.ts.map +1 -1
  181. package/dist/factories/simple/workloads/deployment.d.ts +3 -3
  182. package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
  183. package/dist/factories/simple/workloads/deployment.js +37 -11
  184. package/dist/factories/simple/workloads/deployment.js.map +1 -1
  185. package/dist/index.d.ts +1 -1
  186. package/dist/index.d.ts.map +1 -1
  187. package/dist/index.js +1 -1
  188. package/dist/index.js.map +1 -1
  189. package/dist/utils/index.d.ts +1 -1
  190. package/dist/utils/index.d.ts.map +1 -1
  191. package/dist/utils/index.js +1 -1
  192. package/dist/utils/index.js.map +1 -1
  193. package/dist/utils/type-guards.d.ts +6 -0
  194. package/dist/utils/type-guards.d.ts.map +1 -1
  195. package/dist/utils/type-guards.js +25 -2
  196. package/dist/utils/type-guards.js.map +1 -1
  197. 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":"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"}