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,500 @@
1
+ /**
2
+ * Context-Aware CEL Generation Strategies
3
+ *
4
+ * This module provides context-specific CEL generation strategies for converting
5
+ * KubernetesRef objects to appropriate CEL expressions based on the usage context.
6
+ */
7
+ import { CEL_EXPRESSION_BRAND } from '../constants/brands.js';
8
+ import { ConversionError } from '../errors.js';
9
+ /**
10
+ * Context-aware CEL generator
11
+ */
12
+ export class ContextAwareCelGenerator {
13
+ /**
14
+ * Generate CEL expression from KubernetesRef objects based on context
15
+ */
16
+ generateCelExpression(kubernetesRefs, context, strategy, config) {
17
+ const startTime = performance.now();
18
+ const warnings = [];
19
+ const debugInfo = {
20
+ originalRefs: [...kubernetesRefs],
21
+ transformationSteps: [],
22
+ contextDetection: {} // Will be filled by caller if needed
23
+ };
24
+ try {
25
+ let celExpression;
26
+ // Apply context-specific generation strategy
27
+ switch (strategy) {
28
+ case 'status-expression':
29
+ celExpression = this.generateStatusExpression(kubernetesRefs, config, debugInfo);
30
+ break;
31
+ case 'resource-reference':
32
+ celExpression = this.generateResourceReference(kubernetesRefs, config, debugInfo);
33
+ break;
34
+ case 'conditional-check':
35
+ celExpression = this.generateConditionalCheck(kubernetesRefs, config, debugInfo);
36
+ break;
37
+ case 'readiness-check':
38
+ celExpression = this.generateReadinessCheck(kubernetesRefs, config, debugInfo);
39
+ break;
40
+ case 'template-interpolation':
41
+ celExpression = this.generateTemplateInterpolation(kubernetesRefs, config, debugInfo);
42
+ break;
43
+ case 'direct-evaluation':
44
+ celExpression = this.generateDirectEvaluation(kubernetesRefs, config, debugInfo);
45
+ break;
46
+ default:
47
+ throw new ConversionError(`Unsupported CEL generation strategy: ${strategy}`, kubernetesRefs.map(ref => `${ref.resourceId}.${ref.fieldPath}`).join(', '), 'unknown');
48
+ }
49
+ // Add performance metrics if debug info is enabled
50
+ if (config.includeDebugInfo) {
51
+ debugInfo.performanceMetrics = {
52
+ generationTimeMs: performance.now() - startTime,
53
+ cacheHits: 0, // Would be filled by cache layer
54
+ cacheMisses: 0 // Would be filled by cache layer
55
+ };
56
+ }
57
+ return {
58
+ celExpression,
59
+ strategy,
60
+ context,
61
+ dependencies: kubernetesRefs,
62
+ warnings,
63
+ ...(config.includeDebugInfo ? { debugInfo } : {})
64
+ };
65
+ }
66
+ catch (error) {
67
+ throw new ConversionError(`Failed to generate CEL expression using ${strategy} strategy: ${error instanceof Error ? error.message : String(error)}`, kubernetesRefs.map(ref => `${ref.resourceId}.${ref.fieldPath}`).join(', '), 'unknown');
68
+ }
69
+ }
70
+ /**
71
+ * Generate status expression CEL for status builders
72
+ */
73
+ generateStatusExpression(kubernetesRefs, config, debugInfo) {
74
+ debugInfo.transformationSteps.push('Generating status expression');
75
+ if (kubernetesRefs.length === 1) {
76
+ const ref = kubernetesRefs[0];
77
+ if (!ref) {
78
+ throw new ConversionError('Invalid KubernetesRef array', 'undefined', 'unknown');
79
+ }
80
+ debugInfo.transformationSteps.push(`Single reference: ${ref.resourceId}.${ref.fieldPath}`);
81
+ // Generate appropriate CEL based on factory type
82
+ if (config.factoryType === 'kro') {
83
+ // For Kro factory, generate CEL expressions for runtime evaluation
84
+ const expression = this.generateKroStatusReference(ref);
85
+ debugInfo.transformationSteps.push(`Kro status reference: ${expression}`);
86
+ return {
87
+ [CEL_EXPRESSION_BRAND]: true,
88
+ expression,
89
+ _type: ref._type
90
+ };
91
+ }
92
+ else {
93
+ // For direct factory, generate CEL expressions that will be resolved at deployment time
94
+ const expression = this.generateDirectStatusReference(ref);
95
+ debugInfo.transformationSteps.push(`Direct status reference: ${expression}`);
96
+ return {
97
+ [CEL_EXPRESSION_BRAND]: true,
98
+ expression,
99
+ _type: ref._type
100
+ };
101
+ }
102
+ }
103
+ else {
104
+ // Multiple references - need to combine them appropriately
105
+ debugInfo.transformationSteps.push(`Multiple references: ${kubernetesRefs.length}`);
106
+ const expressions = kubernetesRefs.map(ref => {
107
+ if (config.factoryType === 'kro') {
108
+ return this.generateKroStatusReference(ref);
109
+ }
110
+ else {
111
+ return this.generateDirectStatusReference(ref);
112
+ }
113
+ });
114
+ // For now, just concatenate them (this would be improved based on actual usage patterns)
115
+ const combinedExpression = expressions.join(' + ');
116
+ debugInfo.transformationSteps.push(`Combined expression: ${combinedExpression}`);
117
+ return {
118
+ [CEL_EXPRESSION_BRAND]: true,
119
+ expression: combinedExpression,
120
+ _type: 'string' // Default to string for combined expressions
121
+ };
122
+ }
123
+ }
124
+ /**
125
+ * Generate resource reference CEL for resource builders
126
+ */
127
+ generateResourceReference(kubernetesRefs, config, debugInfo) {
128
+ debugInfo.transformationSteps.push('Generating resource reference');
129
+ if (kubernetesRefs.length === 1) {
130
+ const ref = kubernetesRefs[0];
131
+ if (!ref) {
132
+ throw new ConversionError('Invalid KubernetesRef array', 'undefined', 'unknown');
133
+ }
134
+ debugInfo.transformationSteps.push(`Single resource reference: ${ref.resourceId}.${ref.fieldPath}`);
135
+ // Resource references in resource builders are typically schema references
136
+ if (ref.resourceId === '__schema__') {
137
+ const expression = `schema.${ref.fieldPath}`;
138
+ debugInfo.transformationSteps.push(`Schema reference: ${expression}`);
139
+ return {
140
+ [CEL_EXPRESSION_BRAND]: true,
141
+ expression,
142
+ _type: ref._type
143
+ };
144
+ }
145
+ else {
146
+ // Cross-resource references in resource builders
147
+ const expression = config.factoryType === 'kro'
148
+ ? `resources.${ref.resourceId}.${ref.fieldPath}`
149
+ : `resources.${ref.resourceId}.${ref.fieldPath}`;
150
+ debugInfo.transformationSteps.push(`Cross-resource reference: ${expression}`);
151
+ return {
152
+ [CEL_EXPRESSION_BRAND]: true,
153
+ expression,
154
+ _type: ref._type
155
+ };
156
+ }
157
+ }
158
+ else {
159
+ // Multiple resource references - combine appropriately
160
+ debugInfo.transformationSteps.push(`Multiple resource references: ${kubernetesRefs.length}`);
161
+ const expressions = kubernetesRefs.map(ref => {
162
+ if (ref.resourceId === '__schema__') {
163
+ return `schema.${ref.fieldPath}`;
164
+ }
165
+ else {
166
+ return `resources.${ref.resourceId}.${ref.fieldPath}`;
167
+ }
168
+ });
169
+ // For resource builders, multiple references are typically concatenated or used in templates
170
+ const combinedExpression = expressions.length > 1
171
+ ? `'${expressions.join(' + ')}'` // Template-like combination
172
+ : expressions[0];
173
+ debugInfo.transformationSteps.push(`Combined resource reference: ${combinedExpression}`);
174
+ return {
175
+ [CEL_EXPRESSION_BRAND]: true,
176
+ expression: combinedExpression,
177
+ _type: 'string'
178
+ };
179
+ }
180
+ }
181
+ /**
182
+ * Generate conditional check CEL for conditional expressions
183
+ */
184
+ generateConditionalCheck(kubernetesRefs, _config, debugInfo) {
185
+ debugInfo.transformationSteps.push('Generating conditional check');
186
+ if (kubernetesRefs.length === 1) {
187
+ const ref = kubernetesRefs[0];
188
+ if (!ref) {
189
+ throw new ConversionError('Invalid KubernetesRef array', 'undefined', 'unknown');
190
+ }
191
+ debugInfo.transformationSteps.push(`Single conditional reference: ${ref.resourceId}.${ref.fieldPath}`);
192
+ // Conditional checks typically evaluate to boolean
193
+ const baseExpression = ref.resourceId === '__schema__'
194
+ ? `schema.${ref.fieldPath}`
195
+ : `resources.${ref.resourceId}.${ref.fieldPath}`;
196
+ // Add appropriate boolean conversion based on field type
197
+ let expression;
198
+ if (ref._type === 'boolean') {
199
+ expression = baseExpression;
200
+ }
201
+ else if (ref._type === 'number') {
202
+ expression = `${baseExpression} > 0`;
203
+ }
204
+ else if (ref._type === 'string') {
205
+ expression = `${baseExpression} != ""`;
206
+ }
207
+ else {
208
+ // Default to existence check
209
+ expression = `has(${baseExpression})`;
210
+ }
211
+ debugInfo.transformationSteps.push(`Conditional expression: ${expression}`);
212
+ return {
213
+ [CEL_EXPRESSION_BRAND]: true,
214
+ expression,
215
+ _type: 'boolean'
216
+ };
217
+ }
218
+ else {
219
+ // Multiple references in conditional - combine with AND logic by default
220
+ debugInfo.transformationSteps.push(`Multiple conditional references: ${kubernetesRefs.length}`);
221
+ const conditions = kubernetesRefs.map(ref => {
222
+ const baseExpression = ref.resourceId === '__schema__'
223
+ ? `schema.${ref.fieldPath}`
224
+ : `resources.${ref.resourceId}.${ref.fieldPath}`;
225
+ // Convert to boolean condition
226
+ if (ref._type === 'boolean') {
227
+ return baseExpression;
228
+ }
229
+ else if (ref._type === 'number') {
230
+ return `${baseExpression} > 0`;
231
+ }
232
+ else if (ref._type === 'string') {
233
+ return `${baseExpression} != ""`;
234
+ }
235
+ else {
236
+ return `has(${baseExpression})`;
237
+ }
238
+ });
239
+ const combinedExpression = conditions.join(' && ');
240
+ debugInfo.transformationSteps.push(`Combined conditional: ${combinedExpression}`);
241
+ return {
242
+ [CEL_EXPRESSION_BRAND]: true,
243
+ expression: combinedExpression,
244
+ _type: 'boolean'
245
+ };
246
+ }
247
+ }
248
+ /**
249
+ * Generate readiness check CEL for readiness expressions
250
+ */
251
+ generateReadinessCheck(kubernetesRefs, _config, debugInfo) {
252
+ debugInfo.transformationSteps.push('Generating readiness check');
253
+ // Readiness checks are similar to conditional checks but with readiness-specific logic
254
+ if (kubernetesRefs.length === 1) {
255
+ const ref = kubernetesRefs[0];
256
+ if (!ref) {
257
+ throw new ConversionError('Invalid KubernetesRef array', 'undefined', 'unknown');
258
+ }
259
+ debugInfo.transformationSteps.push(`Single readiness reference: ${ref.resourceId}.${ref.fieldPath}`);
260
+ const baseExpression = ref.resourceId === '__schema__'
261
+ ? `schema.${ref.fieldPath}`
262
+ : `resources.${ref.resourceId}.${ref.fieldPath}`;
263
+ // Readiness-specific checks
264
+ let expression;
265
+ if (ref.fieldPath.includes('readyReplicas')) {
266
+ expression = `${baseExpression} > 0`;
267
+ }
268
+ else if (ref.fieldPath.includes('ready')) {
269
+ expression = baseExpression; // Assume it's already boolean
270
+ }
271
+ else if (ref.fieldPath.includes('status')) {
272
+ expression = `${baseExpression} == "Ready"`;
273
+ }
274
+ else if (ref.fieldPath.includes('conditions')) {
275
+ expression = `${baseExpression}.find(c, c.type == "Ready").status == "True"`;
276
+ }
277
+ else {
278
+ // Default readiness check
279
+ expression = `has(${baseExpression}) && ${baseExpression} != ""`;
280
+ }
281
+ debugInfo.transformationSteps.push(`Readiness expression: ${expression}`);
282
+ return {
283
+ [CEL_EXPRESSION_BRAND]: true,
284
+ expression,
285
+ _type: 'boolean'
286
+ };
287
+ }
288
+ else {
289
+ // Multiple readiness references - all must be ready
290
+ debugInfo.transformationSteps.push(`Multiple readiness references: ${kubernetesRefs.length}`);
291
+ const readinessChecks = kubernetesRefs.map(ref => {
292
+ const baseExpression = ref.resourceId === '__schema__'
293
+ ? `schema.${ref.fieldPath}`
294
+ : `resources.${ref.resourceId}.${ref.fieldPath}`;
295
+ // Apply readiness-specific logic
296
+ if (ref.fieldPath.includes('readyReplicas')) {
297
+ return `${baseExpression} > 0`;
298
+ }
299
+ else if (ref.fieldPath.includes('ready')) {
300
+ return baseExpression;
301
+ }
302
+ else if (ref.fieldPath.includes('status')) {
303
+ return `${baseExpression} == "Ready"`;
304
+ }
305
+ else {
306
+ return `has(${baseExpression})`;
307
+ }
308
+ });
309
+ const combinedExpression = readinessChecks.join(' && ');
310
+ debugInfo.transformationSteps.push(`Combined readiness check: ${combinedExpression}`);
311
+ return {
312
+ [CEL_EXPRESSION_BRAND]: true,
313
+ expression: combinedExpression,
314
+ _type: 'boolean'
315
+ };
316
+ }
317
+ }
318
+ /**
319
+ * Generate template interpolation CEL for template literals
320
+ */
321
+ generateTemplateInterpolation(kubernetesRefs, _config, debugInfo) {
322
+ debugInfo.transformationSteps.push('Generating template interpolation');
323
+ // Template interpolations convert KubernetesRef objects to string expressions
324
+ const interpolations = kubernetesRefs.map(ref => {
325
+ const baseExpression = ref.resourceId === '__schema__'
326
+ ? `schema.${ref.fieldPath}`
327
+ : `resources.${ref.resourceId}.${ref.fieldPath}`;
328
+ // Ensure string conversion
329
+ if (ref._type === 'string') {
330
+ return baseExpression;
331
+ }
332
+ else {
333
+ return `string(${baseExpression})`;
334
+ }
335
+ });
336
+ debugInfo.transformationSteps.push(`Template interpolations: ${interpolations.join(', ')}`);
337
+ // For template literals, we typically have a pattern like: `prefix${ref1}middle${ref2}suffix`
338
+ // For now, just concatenate the interpolations
339
+ const expression = interpolations.length === 1
340
+ ? interpolations[0]
341
+ : interpolations.join(' + ');
342
+ debugInfo.transformationSteps.push(`Template expression: ${expression}`);
343
+ return {
344
+ [CEL_EXPRESSION_BRAND]: true,
345
+ expression,
346
+ _type: 'string'
347
+ };
348
+ }
349
+ /**
350
+ * Generate direct evaluation CEL (pass-through for direct factory)
351
+ */
352
+ generateDirectEvaluation(kubernetesRefs, _config, debugInfo) {
353
+ debugInfo.transformationSteps.push('Generating direct evaluation');
354
+ // For direct evaluation, we generate CEL expressions that will be resolved at deployment time
355
+ if (kubernetesRefs.length === 1) {
356
+ const ref = kubernetesRefs[0];
357
+ if (!ref) {
358
+ throw new ConversionError('Invalid KubernetesRef array', 'undefined', 'unknown');
359
+ }
360
+ const expression = ref.resourceId === '__schema__'
361
+ ? `schema.${ref.fieldPath}`
362
+ : `resources.${ref.resourceId}.${ref.fieldPath}`;
363
+ debugInfo.transformationSteps.push(`Direct evaluation: ${expression}`);
364
+ return {
365
+ [CEL_EXPRESSION_BRAND]: true,
366
+ expression,
367
+ _type: ref._type
368
+ };
369
+ }
370
+ else {
371
+ // Multiple references - create a structure that preserves all references
372
+ const expressions = kubernetesRefs.map(ref => ref.resourceId === '__schema__'
373
+ ? `schema.${ref.fieldPath}`
374
+ : `resources.${ref.resourceId}.${ref.fieldPath}`);
375
+ const combinedExpression = `[${expressions.join(', ')}]`;
376
+ debugInfo.transformationSteps.push(`Direct evaluation array: ${combinedExpression}`);
377
+ return {
378
+ [CEL_EXPRESSION_BRAND]: true,
379
+ expression: combinedExpression,
380
+ _type: 'array'
381
+ };
382
+ }
383
+ }
384
+ /**
385
+ * Generate Kro-specific status reference
386
+ */
387
+ generateKroStatusReference(ref) {
388
+ if (ref.resourceId === '__schema__') {
389
+ return `schema.${ref.fieldPath}`;
390
+ }
391
+ else {
392
+ return `resources.${ref.resourceId}.${ref.fieldPath}`;
393
+ }
394
+ }
395
+ /**
396
+ * Generate direct factory status reference
397
+ */
398
+ generateDirectStatusReference(ref) {
399
+ // For direct factory, the references will be resolved before CEL evaluation
400
+ if (ref.resourceId === '__schema__') {
401
+ return `schema.${ref.fieldPath}`;
402
+ }
403
+ else {
404
+ return `resources.${ref.resourceId}.${ref.fieldPath}`;
405
+ }
406
+ }
407
+ }
408
+ /**
409
+ * Context-specific CEL generation utilities
410
+ */
411
+ export class CelGenerationUtils {
412
+ /**
413
+ * Determine the best CEL generation strategy for a given context
414
+ */
415
+ static determineBestStrategy(context, _kubernetesRefs, factoryType) {
416
+ // Context-based strategy selection
417
+ switch (context) {
418
+ case 'status-builder':
419
+ return 'status-expression';
420
+ case 'resource-builder':
421
+ return 'resource-reference';
422
+ case 'conditional':
423
+ return 'conditional-check';
424
+ case 'readiness':
425
+ return 'readiness-check';
426
+ case 'template-literal':
427
+ return 'template-interpolation';
428
+ case 'field-hydration':
429
+ return factoryType === 'direct' ? 'direct-evaluation' : 'status-expression';
430
+ default:
431
+ return 'direct-evaluation';
432
+ }
433
+ }
434
+ /**
435
+ * Validate that KubernetesRef objects are appropriate for the given context
436
+ */
437
+ static validateRefsForContext(kubernetesRefs, context, availableResources) {
438
+ const errors = [];
439
+ for (const ref of kubernetesRefs) {
440
+ // Validate resource exists
441
+ if (ref.resourceId !== '__schema__' && availableResources) {
442
+ if (!availableResources[ref.resourceId]) {
443
+ errors.push(`Resource '${ref.resourceId}' is not available in this context`);
444
+ }
445
+ }
446
+ // Context-specific validations
447
+ switch (context) {
448
+ case 'conditional':
449
+ case 'readiness':
450
+ // These contexts should typically reference status fields
451
+ if (!ref.fieldPath.includes('status') && !ref.fieldPath.includes('ready')) {
452
+ errors.push(`Conditional/readiness context should reference status fields, got: ${ref.fieldPath}`);
453
+ }
454
+ break;
455
+ case 'resource-builder':
456
+ // Resource builders typically reference spec fields or schema
457
+ if (ref.resourceId !== '__schema__' && !ref.fieldPath.includes('spec')) {
458
+ errors.push(`Resource builder context should reference spec fields or schema, got: ${ref.resourceId}.${ref.fieldPath}`);
459
+ }
460
+ break;
461
+ }
462
+ }
463
+ return {
464
+ valid: errors.length === 0,
465
+ errors
466
+ };
467
+ }
468
+ /**
469
+ * Optimize CEL expression for performance
470
+ */
471
+ static optimizeCelExpression(celExpression, context) {
472
+ let optimizedExpression = celExpression.expression;
473
+ // Context-specific optimizations
474
+ switch (context) {
475
+ case 'conditional':
476
+ case 'readiness':
477
+ // Optimize boolean expressions
478
+ optimizedExpression = optimizedExpression
479
+ .replace(/\s*==\s*true/g, '') // Remove redundant == true
480
+ .replace(/\s*!=\s*false/g, '') // Remove redundant != false
481
+ .replace(/has\(([^)]+)\)\s*&&\s*\1\s*!=\s*""/g, 'has($1)'); // Simplify existence checks
482
+ break;
483
+ case 'template-literal':
484
+ // Optimize string concatenations
485
+ optimizedExpression = optimizedExpression
486
+ .replace(/\s*\+\s*""\s*\+\s*/g, ' + ') // Remove empty string concatenations
487
+ .replace(/string\(([^)]+)\)\s*\+\s*string\(([^)]+)\)/g, 'string($1) + string($2)'); // Combine string conversions
488
+ break;
489
+ }
490
+ return {
491
+ ...celExpression,
492
+ expression: optimizedExpression
493
+ };
494
+ }
495
+ }
496
+ /**
497
+ * Default context-aware CEL generator instance
498
+ */
499
+ export const contextAwareCelGenerator = new ContextAwareCelGenerator();
500
+ //# sourceMappingURL=context-aware-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-aware-generator.js","sourceRoot":"","sources":["../../../src/core/expressions/context-aware-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Context Detection for JavaScript to CEL Expression Conversion
3
+ *
4
+ * This module provides functionality to detect the context in which JavaScript expressions
5
+ * containing KubernetesRef objects are being used, enabling context-appropriate CEL generation.
6
+ */
7
+ import type { KubernetesRef } from '../types/common.js';
8
+ import type { Enhanced } from '../types/kubernetes.js';
9
+ import type { SchemaProxy } from '../types/serialization.js';
10
+ /**
11
+ * Different contexts where expressions can be used
12
+ */
13
+ export type ExpressionContext = 'status-builder' | 'resource-builder' | 'conditional' | 'readiness' | 'field-hydration' | 'template-literal' | 'unknown';
14
+ /**
15
+ * Context detection result
16
+ */
17
+ export interface ContextDetectionResult {
18
+ /** Detected context type */
19
+ context: ExpressionContext;
20
+ /** Confidence level (0-1) in the detection */
21
+ confidence: number;
22
+ /** Reasons for the context detection */
23
+ reasons: string[];
24
+ /** Whether KubernetesRef objects were found in the expression */
25
+ hasKubernetesRefs: boolean;
26
+ /** Detected KubernetesRef objects */
27
+ kubernetesRefs: KubernetesRef<any>[];
28
+ /** Suggested CEL generation strategy */
29
+ celStrategy: CelGenerationStrategy;
30
+ /** Context-specific metadata */
31
+ metadata: ContextMetadata;
32
+ }
33
+ /**
34
+ * CEL generation strategy based on context
35
+ */
36
+ export type CelGenerationStrategy = 'status-expression' | 'resource-reference' | 'conditional-check' | 'readiness-check' | 'template-interpolation' | 'direct-evaluation';
37
+ /**
38
+ * Context-specific metadata
39
+ */
40
+ export interface ContextMetadata {
41
+ /** Available resources in this context */
42
+ availableResources?: string[];
43
+ /** Schema fields available in this context */
44
+ availableSchemaFields?: string[];
45
+ /** Expected return type for this context */
46
+ expectedReturnType?: string;
47
+ /** Whether this context supports async operations */
48
+ supportsAsync?: boolean;
49
+ /** Factory type being used */
50
+ factoryType?: 'direct' | 'kro';
51
+ /** Additional context-specific properties */
52
+ [key: string]: any;
53
+ }
54
+ /**
55
+ * Context detection configuration
56
+ */
57
+ export interface ContextDetectionConfig {
58
+ /** Available resources for context analysis */
59
+ availableResources?: Record<string, Enhanced<any, any>>;
60
+ /** Schema proxy for schema field analysis */
61
+ schemaProxy?: SchemaProxy<any, any>;
62
+ /** Factory type being used */
63
+ factoryType?: 'direct' | 'kro';
64
+ /** Function name or identifier that provides context hints */
65
+ functionContext?: string;
66
+ /** Call stack information for context detection */
67
+ callStack?: string[];
68
+ /** Whether to perform deep analysis */
69
+ deepAnalysis?: boolean;
70
+ }
71
+ /**
72
+ * Context detector for JavaScript expressions containing KubernetesRef objects
73
+ */
74
+ export declare class ExpressionContextDetector {
75
+ /**
76
+ * Detect the context of a JavaScript expression
77
+ */
78
+ detectContext(expression: any, config?: ContextDetectionConfig): ContextDetectionResult;
79
+ /**
80
+ * Detect context from function call patterns
81
+ */
82
+ detectContextFromFunction(functionName: string, args: any[], config?: ContextDetectionConfig): ContextDetectionResult;
83
+ /**
84
+ * Extract KubernetesRef objects from an expression
85
+ */
86
+ private extractKubernetesRefs;
87
+ /**
88
+ * Recursively extract KubernetesRef objects from complex structures
89
+ */
90
+ private recursivelyExtractRefs;
91
+ /**
92
+ * Analyze the structure of the expression
93
+ */
94
+ private analyzeExpressionStructure;
95
+ /**
96
+ * Analyze the content of the expression for context clues
97
+ */
98
+ private analyzeExpressionContent;
99
+ /**
100
+ * Analyze contextual hints from configuration
101
+ */
102
+ private analyzeContextualHints;
103
+ /**
104
+ * Combine all analyses to determine the final context
105
+ */
106
+ private combineAnalyses;
107
+ /**
108
+ * Determine CEL generation strategy based on context
109
+ */
110
+ private determineCelStrategy;
111
+ /**
112
+ * Build context-specific metadata
113
+ */
114
+ private buildContextMetadata;
115
+ /**
116
+ * Detect status builder context
117
+ */
118
+ private detectStatusBuilderContext;
119
+ /**
120
+ * Detect resource builder context
121
+ */
122
+ private detectResourceBuilderContext;
123
+ /**
124
+ * Detect conditional context
125
+ */
126
+ private detectConditionalContext;
127
+ /**
128
+ * Detect readiness context
129
+ */
130
+ private detectReadinessContext;
131
+ /**
132
+ * Calculate complexity of a string expression
133
+ */
134
+ private calculateStringComplexity;
135
+ /**
136
+ * Calculate complexity of a function
137
+ */
138
+ private calculateFunctionComplexity;
139
+ /**
140
+ * Calculate complexity of an object
141
+ */
142
+ private calculateObjectComplexity;
143
+ }
144
+ /**
145
+ * Default context detector instance
146
+ */
147
+ export declare const contextDetector: ExpressionContextDetector;
148
+ //# sourceMappingURL=context-detector.d.ts.map