typekro 0.2.2 → 0.3.1

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 (213) 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 +13 -1
  13. package/dist/core/deployment/engine.d.ts.map +1 -1
  14. package/dist/core/deployment/engine.js +48 -3
  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/evaluation/cel-optimizer.d.ts.map +1 -1
  21. package/dist/core/evaluation/cel-optimizer.js +7 -13
  22. package/dist/core/evaluation/cel-optimizer.js.map +1 -1
  23. package/dist/core/expressions/analyzer.d.ts +584 -0
  24. package/dist/core/expressions/analyzer.d.ts.map +1 -0
  25. package/dist/core/expressions/analyzer.js +2956 -0
  26. package/dist/core/expressions/analyzer.js.map +1 -0
  27. package/dist/core/expressions/cache.d.ts +136 -0
  28. package/dist/core/expressions/cache.d.ts.map +1 -0
  29. package/dist/core/expressions/cache.js +347 -0
  30. package/dist/core/expressions/cache.js.map +1 -0
  31. package/dist/core/expressions/cel-conversion-engine.d.ts +126 -0
  32. package/dist/core/expressions/cel-conversion-engine.d.ts.map +1 -0
  33. package/dist/core/expressions/cel-conversion-engine.js +293 -0
  34. package/dist/core/expressions/cel-conversion-engine.js.map +1 -0
  35. package/dist/core/expressions/compile-time-validation.d.ts +270 -0
  36. package/dist/core/expressions/compile-time-validation.d.ts.map +1 -0
  37. package/dist/core/expressions/compile-time-validation.js +506 -0
  38. package/dist/core/expressions/compile-time-validation.js.map +1 -0
  39. package/dist/core/expressions/composition-integration.d.ts +315 -0
  40. package/dist/core/expressions/composition-integration.d.ts.map +1 -0
  41. package/dist/core/expressions/composition-integration.js +936 -0
  42. package/dist/core/expressions/composition-integration.js.map +1 -0
  43. package/dist/core/expressions/conditional-expression-processor.d.ts +154 -0
  44. package/dist/core/expressions/conditional-expression-processor.d.ts.map +1 -0
  45. package/dist/core/expressions/conditional-expression-processor.js +479 -0
  46. package/dist/core/expressions/conditional-expression-processor.js.map +1 -0
  47. package/dist/core/expressions/conditional-integration.d.ts +133 -0
  48. package/dist/core/expressions/conditional-integration.d.ts.map +1 -0
  49. package/dist/core/expressions/conditional-integration.js +293 -0
  50. package/dist/core/expressions/conditional-integration.js.map +1 -0
  51. package/dist/core/expressions/conditional-validation.d.ts +181 -0
  52. package/dist/core/expressions/conditional-validation.d.ts.map +1 -0
  53. package/dist/core/expressions/conditional-validation.js +460 -0
  54. package/dist/core/expressions/conditional-validation.js.map +1 -0
  55. package/dist/core/expressions/context-aware-generator.d.ts +127 -0
  56. package/dist/core/expressions/context-aware-generator.d.ts.map +1 -0
  57. package/dist/core/expressions/context-aware-generator.js +500 -0
  58. package/dist/core/expressions/context-aware-generator.js.map +1 -0
  59. package/dist/core/expressions/context-detector.d.ts +148 -0
  60. package/dist/core/expressions/context-detector.d.ts.map +1 -0
  61. package/dist/core/expressions/context-detector.js +546 -0
  62. package/dist/core/expressions/context-detector.js.map +1 -0
  63. package/dist/core/expressions/context-switcher.d.ts +185 -0
  64. package/dist/core/expressions/context-switcher.d.ts.map +1 -0
  65. package/dist/core/expressions/context-switcher.js +515 -0
  66. package/dist/core/expressions/context-switcher.js.map +1 -0
  67. package/dist/core/expressions/context-validator.d.ts +176 -0
  68. package/dist/core/expressions/context-validator.d.ts.map +1 -0
  69. package/dist/core/expressions/context-validator.js +452 -0
  70. package/dist/core/expressions/context-validator.js.map +1 -0
  71. package/dist/core/expressions/custom-context-manager.d.ts +194 -0
  72. package/dist/core/expressions/custom-context-manager.d.ts.map +1 -0
  73. package/dist/core/expressions/custom-context-manager.js +390 -0
  74. package/dist/core/expressions/custom-context-manager.js.map +1 -0
  75. package/dist/core/expressions/expression-proxy.d.ts +80 -0
  76. package/dist/core/expressions/expression-proxy.d.ts.map +1 -0
  77. package/dist/core/expressions/expression-proxy.js +227 -0
  78. package/dist/core/expressions/expression-proxy.js.map +1 -0
  79. package/dist/core/expressions/factory-integration.d.ts +132 -0
  80. package/dist/core/expressions/factory-integration.d.ts.map +1 -0
  81. package/dist/core/expressions/factory-integration.js +327 -0
  82. package/dist/core/expressions/factory-integration.js.map +1 -0
  83. package/dist/core/expressions/factory-pattern-handler.d.ts +88 -0
  84. package/dist/core/expressions/factory-pattern-handler.d.ts.map +1 -0
  85. package/dist/core/expressions/factory-pattern-handler.js +336 -0
  86. package/dist/core/expressions/factory-pattern-handler.js.map +1 -0
  87. package/dist/core/expressions/field-hydration-processor.d.ts +188 -0
  88. package/dist/core/expressions/field-hydration-processor.d.ts.map +1 -0
  89. package/dist/core/expressions/field-hydration-processor.js +562 -0
  90. package/dist/core/expressions/field-hydration-processor.js.map +1 -0
  91. package/dist/core/expressions/imperative-analyzer.d.ts +21 -0
  92. package/dist/core/expressions/imperative-analyzer.d.ts.map +1 -0
  93. package/dist/core/expressions/imperative-analyzer.js +457 -0
  94. package/dist/core/expressions/imperative-analyzer.js.map +1 -0
  95. package/dist/core/expressions/index.d.ts +54 -0
  96. package/dist/core/expressions/index.d.ts.map +1 -0
  97. package/dist/core/expressions/index.js +50 -0
  98. package/dist/core/expressions/index.js.map +1 -0
  99. package/dist/core/expressions/lazy-analysis.d.ts +1128 -0
  100. package/dist/core/expressions/lazy-analysis.d.ts.map +1 -0
  101. package/dist/core/expressions/lazy-analysis.js +2443 -0
  102. package/dist/core/expressions/lazy-analysis.js.map +1 -0
  103. package/dist/core/expressions/magic-assignable-analyzer.d.ts +123 -0
  104. package/dist/core/expressions/magic-assignable-analyzer.d.ts.map +1 -0
  105. package/dist/core/expressions/magic-assignable-analyzer.js +352 -0
  106. package/dist/core/expressions/magic-assignable-analyzer.js.map +1 -0
  107. package/dist/core/expressions/magic-proxy-analyzer.d.ts +206 -0
  108. package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +1 -0
  109. package/dist/core/expressions/magic-proxy-analyzer.js +639 -0
  110. package/dist/core/expressions/magic-proxy-analyzer.js.map +1 -0
  111. package/dist/core/expressions/magic-proxy-detector.d.ts +154 -0
  112. package/dist/core/expressions/magic-proxy-detector.d.ts.map +1 -0
  113. package/dist/core/expressions/magic-proxy-detector.js +242 -0
  114. package/dist/core/expressions/magic-proxy-detector.js.map +1 -0
  115. package/dist/core/expressions/migration-helpers.d.ts +133 -0
  116. package/dist/core/expressions/migration-helpers.d.ts.map +1 -0
  117. package/dist/core/expressions/migration-helpers.js +443 -0
  118. package/dist/core/expressions/migration-helpers.js.map +1 -0
  119. package/dist/core/expressions/optionality-handler.d.ts +503 -0
  120. package/dist/core/expressions/optionality-handler.d.ts.map +1 -0
  121. package/dist/core/expressions/optionality-handler.js +1306 -0
  122. package/dist/core/expressions/optionality-handler.js.map +1 -0
  123. package/dist/core/expressions/readiness-integration.d.ts +119 -0
  124. package/dist/core/expressions/readiness-integration.d.ts.map +1 -0
  125. package/dist/core/expressions/readiness-integration.js +386 -0
  126. package/dist/core/expressions/readiness-integration.js.map +1 -0
  127. package/dist/core/expressions/resource-analyzer.d.ts +486 -0
  128. package/dist/core/expressions/resource-analyzer.d.ts.map +1 -0
  129. package/dist/core/expressions/resource-analyzer.js +1086 -0
  130. package/dist/core/expressions/resource-analyzer.js.map +1 -0
  131. package/dist/core/expressions/resource-validation.d.ts +187 -0
  132. package/dist/core/expressions/resource-validation.d.ts.map +1 -0
  133. package/dist/core/expressions/resource-validation.js +552 -0
  134. package/dist/core/expressions/resource-validation.js.map +1 -0
  135. package/dist/core/expressions/runtime-error-mapper.d.ts +138 -0
  136. package/dist/core/expressions/runtime-error-mapper.d.ts.map +1 -0
  137. package/dist/core/expressions/runtime-error-mapper.js +412 -0
  138. package/dist/core/expressions/runtime-error-mapper.js.map +1 -0
  139. package/dist/core/expressions/source-map.d.ts +168 -0
  140. package/dist/core/expressions/source-map.d.ts.map +1 -0
  141. package/dist/core/expressions/source-map.js +350 -0
  142. package/dist/core/expressions/source-map.js.map +1 -0
  143. package/dist/core/expressions/status-builder-analyzer.d.ts +353 -0
  144. package/dist/core/expressions/status-builder-analyzer.d.ts.map +1 -0
  145. package/dist/core/expressions/status-builder-analyzer.js +1311 -0
  146. package/dist/core/expressions/status-builder-analyzer.js.map +1 -0
  147. package/dist/core/expressions/type-inference.d.ts +184 -0
  148. package/dist/core/expressions/type-inference.d.ts.map +1 -0
  149. package/dist/core/expressions/type-inference.js +838 -0
  150. package/dist/core/expressions/type-inference.js.map +1 -0
  151. package/dist/core/expressions/type-safety.d.ts +203 -0
  152. package/dist/core/expressions/type-safety.d.ts.map +1 -0
  153. package/dist/core/expressions/type-safety.js +442 -0
  154. package/dist/core/expressions/type-safety.js.map +1 -0
  155. package/dist/core/expressions/types.d.ts +282 -0
  156. package/dist/core/expressions/types.d.ts.map +1 -0
  157. package/dist/core/expressions/types.js +8 -0
  158. package/dist/core/expressions/types.js.map +1 -0
  159. package/dist/core/kubernetes/client-provider.js +2 -2
  160. package/dist/core/kubernetes/client-provider.js.map +1 -1
  161. package/dist/core/references/cel.d.ts +13 -1
  162. package/dist/core/references/cel.d.ts.map +1 -1
  163. package/dist/core/references/cel.js +50 -0
  164. package/dist/core/references/cel.js.map +1 -1
  165. package/dist/core/references/schema-proxy.d.ts.map +1 -1
  166. package/dist/core/references/schema-proxy.js +13 -8
  167. package/dist/core/references/schema-proxy.js.map +1 -1
  168. package/dist/core/serialization/core.d.ts.map +1 -1
  169. package/dist/core/serialization/core.js +573 -9
  170. package/dist/core/serialization/core.js.map +1 -1
  171. package/dist/core/types/deployment.d.ts +7 -0
  172. package/dist/core/types/deployment.d.ts.map +1 -1
  173. package/dist/core/types/deployment.js +7 -0
  174. package/dist/core/types/deployment.js.map +1 -1
  175. package/dist/core/types/index.d.ts +1 -0
  176. package/dist/core/types/index.d.ts.map +1 -1
  177. package/dist/core/types/index.js.map +1 -1
  178. package/dist/core/validation/cel-validator.d.ts.map +1 -1
  179. package/dist/core/validation/cel-validator.js +4 -8
  180. package/dist/core/validation/cel-validator.js.map +1 -1
  181. package/dist/core.d.ts +1 -1
  182. package/dist/core.d.ts.map +1 -1
  183. package/dist/core.js +1 -1
  184. package/dist/core.js.map +1 -1
  185. package/dist/factories/helm/helm-release.d.ts.map +1 -1
  186. package/dist/factories/helm/helm-release.js +0 -5
  187. package/dist/factories/helm/helm-release.js.map +1 -1
  188. package/dist/factories/helm/types.d.ts +1 -1
  189. package/dist/factories/helm/types.d.ts.map +1 -1
  190. package/dist/factories/index.js +1 -0
  191. package/dist/factories/index.js.map +1 -1
  192. package/dist/factories/shared.d.ts.map +1 -1
  193. package/dist/factories/shared.js +21 -1
  194. package/dist/factories/shared.js.map +1 -1
  195. package/dist/factories/simple/index.d.ts +2 -2
  196. package/dist/factories/simple/index.d.ts.map +1 -1
  197. package/dist/factories/simple/workloads/deployment.d.ts +3 -3
  198. package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
  199. package/dist/factories/simple/workloads/deployment.js +37 -11
  200. package/dist/factories/simple/workloads/deployment.js.map +1 -1
  201. package/dist/index.d.ts +1 -1
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +1 -1
  204. package/dist/index.js.map +1 -1
  205. package/dist/utils/index.d.ts +1 -1
  206. package/dist/utils/index.d.ts.map +1 -1
  207. package/dist/utils/index.js +1 -1
  208. package/dist/utils/index.js.map +1 -1
  209. package/dist/utils/type-guards.d.ts +6 -0
  210. package/dist/utils/type-guards.d.ts.map +1 -1
  211. package/dist/utils/type-guards.js +25 -2
  212. package/dist/utils/type-guards.js.map +1 -1
  213. package/package.json +6 -1
@@ -0,0 +1,515 @@
1
+ /**
2
+ * Context Switching for Nested Expressions with KubernetesRef Objects
3
+ *
4
+ * This module provides functionality to handle context switching when analyzing
5
+ * nested JavaScript expressions that contain KubernetesRef objects, ensuring
6
+ * that each part of a complex expression is converted using the appropriate context.
7
+ */
8
+ import { isKubernetesRef, containsKubernetesRefs } from '../../utils/type-guards.js';
9
+ import { ConversionError } from '../errors.js';
10
+ /**
11
+ * Context switcher for nested expressions
12
+ */
13
+ export class ExpressionContextSwitcher {
14
+ contextDetector;
15
+ celGenerator;
16
+ validator;
17
+ constructor(contextDetector, celGenerator, validator) {
18
+ this.contextDetector = contextDetector;
19
+ this.celGenerator = celGenerator;
20
+ this.validator = validator;
21
+ }
22
+ /**
23
+ * Analyze and convert a nested expression with context switching
24
+ */
25
+ analyzeWithContextSwitching(expression, config) {
26
+ const startTime = performance.now();
27
+ const switchPoints = [];
28
+ const celExpressions = new Map();
29
+ const validationReports = new Map();
30
+ const warnings = [];
31
+ const allDependencies = [];
32
+ try {
33
+ // Step 1: Extract all dependencies from the expression first
34
+ const expressionDependencies = this.extractKubernetesRefs(expression);
35
+ allDependencies.push(...expressionDependencies);
36
+ // Step 2: Analyze the expression structure and find context switch points
37
+ const contextDetectionStart = performance.now();
38
+ this.findContextSwitchPoints(expression, config.primaryContext, config.primaryContext, [], 0, config, switchPoints);
39
+ const contextDetectionTime = performance.now() - contextDetectionStart;
40
+ // Step 3: Generate CEL expressions for each context
41
+ const celGenerationStart = performance.now();
42
+ const contextGroups = this.groupSwitchPointsByContext(switchPoints);
43
+ // If no context switches were found but we have dependencies, create a group for the primary context
44
+ if (contextGroups.size === 0 && allDependencies.length > 0) {
45
+ contextGroups.set(config.primaryContext, [{
46
+ path: [],
47
+ currentContext: config.primaryContext,
48
+ targetContext: config.primaryContext,
49
+ reason: 'Primary context with dependencies',
50
+ expression,
51
+ kubernetesRefs: allDependencies,
52
+ depth: 0
53
+ }]);
54
+ }
55
+ for (const [context, points] of contextGroups) {
56
+ const contextRefs = points.flatMap(p => p.kubernetesRefs);
57
+ allDependencies.push(...contextRefs);
58
+ if (contextRefs.length > 0) {
59
+ const celConfig = {
60
+ factoryType: config.factoryType || 'direct',
61
+ ...(config.availableResources ? { availableResources: config.availableResources } : {}),
62
+ ...(config.schemaProxy ? { schemaProxy: config.schemaProxy } : {}),
63
+ includeDebugInfo: true
64
+ };
65
+ const strategy = this.determineCelStrategy(context, config.factoryType);
66
+ const celResult = this.celGenerator.generateCelExpression(contextRefs, context, strategy, celConfig);
67
+ celExpressions.set(context, celResult.celExpression);
68
+ if (celResult.warnings.length > 0) {
69
+ warnings.push(...celResult.warnings);
70
+ }
71
+ }
72
+ }
73
+ const celGenerationTime = performance.now() - celGenerationStart;
74
+ // Step 4: Validate context switches if enabled
75
+ const validationStart = performance.now();
76
+ if (config.validateContextSwitches) {
77
+ for (const [context, points] of contextGroups) {
78
+ const contextExpression = points.map(p => p.expression);
79
+ const validationConfig = {
80
+ ...(config.availableResources ? { availableResources: config.availableResources } : {}),
81
+ ...(config.schemaProxy ? { schemaProxy: config.schemaProxy } : {}),
82
+ ...(config.factoryType ? { factoryType: config.factoryType } : {}),
83
+ validateMagicProxy: true
84
+ };
85
+ const report = this.validator.validateExpression(contextExpression, context, validationConfig);
86
+ validationReports.set(context, report);
87
+ if (!report.valid) {
88
+ warnings.push(`Context ${context} validation failed: ${report.errors.map(e => e.message).join(', ')}`);
89
+ }
90
+ }
91
+ }
92
+ const validationTime = performance.now() - validationStart;
93
+ // Step 5: Combine CEL expressions into final result
94
+ const finalCelExpression = this.combineCelExpressions(celExpressions, switchPoints, config.primaryContext);
95
+ const totalTime = performance.now() - startTime;
96
+ return {
97
+ originalExpression: expression,
98
+ primaryContext: config.primaryContext,
99
+ switchPoints,
100
+ celExpressions,
101
+ finalCelExpression,
102
+ allDependencies: [...new Set(allDependencies)], // Remove duplicates
103
+ validationReports,
104
+ warnings,
105
+ performanceMetrics: {
106
+ totalTimeMs: totalTime,
107
+ contextDetectionTimeMs: contextDetectionTime,
108
+ celGenerationTimeMs: celGenerationTime,
109
+ validationTimeMs: validationTime,
110
+ contextSwitchCount: switchPoints.length,
111
+ maxDepthReached: Math.max(...switchPoints.map(p => p.depth), 0)
112
+ }
113
+ };
114
+ }
115
+ catch (error) {
116
+ throw new ConversionError(`Context switching analysis failed: ${error instanceof Error ? error.message : String(error)}`, String(expression), 'unknown');
117
+ }
118
+ }
119
+ /**
120
+ * Find context switch points in a nested expression
121
+ */
122
+ findContextSwitchPoints(expression, currentContext, parentContext, path, depth, config, switchPoints) {
123
+ // Check maximum depth
124
+ if (config.maxNestingDepth && depth > config.maxNestingDepth) {
125
+ return;
126
+ }
127
+ // Extract KubernetesRef objects from this expression part
128
+ const kubernetesRefs = this.extractKubernetesRefs(expression);
129
+ // Detect if context should switch for this expression part
130
+ if (config.autoDetectContext && kubernetesRefs.length > 0) {
131
+ const detectionResult = this.contextDetector.detectContext(expression, {
132
+ ...(config.availableResources ? { availableResources: config.availableResources } : {}),
133
+ ...(config.schemaProxy ? { schemaProxy: config.schemaProxy } : {}),
134
+ ...(config.factoryType ? { factoryType: config.factoryType } : {})
135
+ });
136
+ // Check if we should switch context
137
+ if (detectionResult.context !== currentContext && detectionResult.confidence > 0.7) {
138
+ switchPoints.push({
139
+ path: [...path],
140
+ currentContext,
141
+ targetContext: detectionResult.context,
142
+ reason: `Auto-detected context switch: ${detectionResult.reasons.join(', ')}`,
143
+ expression,
144
+ kubernetesRefs,
145
+ depth
146
+ });
147
+ currentContext = detectionResult.context;
148
+ }
149
+ }
150
+ // Apply custom context switching rules
151
+ if (config.customContextRules) {
152
+ for (const rule of config.customContextRules.sort((a, b) => b.priority - a.priority)) {
153
+ if (rule.condition(expression, currentContext, parentContext, depth)) {
154
+ switchPoints.push({
155
+ path: [...path],
156
+ currentContext,
157
+ targetContext: rule.targetContext,
158
+ reason: `Custom rule: ${rule.name}`,
159
+ expression,
160
+ kubernetesRefs,
161
+ depth
162
+ });
163
+ currentContext = rule.targetContext;
164
+ break; // Use highest priority rule only
165
+ }
166
+ }
167
+ }
168
+ // Recursively analyze nested structures
169
+ if (Array.isArray(expression)) {
170
+ expression.forEach((item, index) => {
171
+ this.findContextSwitchPoints(item, currentContext, currentContext, [...path, `[${index}]`], depth + 1, config, switchPoints);
172
+ });
173
+ }
174
+ else if (expression && typeof expression === 'object' && !isKubernetesRef(expression)) {
175
+ for (const [key, value] of Object.entries(expression)) {
176
+ // Skip certain keys that shouldn't trigger context switches
177
+ if (key.startsWith('_') || key === 'constructor' || key === 'prototype') {
178
+ continue;
179
+ }
180
+ this.findContextSwitchPoints(value, currentContext, currentContext, [...path, key], depth + 1, config, switchPoints);
181
+ }
182
+ }
183
+ else if (typeof expression === 'string') {
184
+ // Analyze string expressions for nested patterns
185
+ this.analyzeStringExpression(expression, currentContext, path, depth, config, switchPoints);
186
+ }
187
+ }
188
+ /**
189
+ * Analyze string expressions for context switching patterns
190
+ */
191
+ analyzeStringExpression(expression, currentContext, path, depth, _config, switchPoints) {
192
+ // Look for template literal patterns
193
+ if (expression.includes('${') && expression.includes('}')) {
194
+ const templateParts = this.parseTemplateLiteral(expression);
195
+ templateParts.forEach((part, index) => {
196
+ if (part.type === 'interpolation') {
197
+ // Template interpolations might need different context
198
+ if (currentContext !== 'template-literal') {
199
+ switchPoints.push({
200
+ path: [...path, `template[${index}]`],
201
+ currentContext,
202
+ targetContext: 'template-literal',
203
+ reason: 'Template literal interpolation detected',
204
+ expression: part.content,
205
+ kubernetesRefs: this.extractKubernetesRefs(part.content),
206
+ depth: depth + 1
207
+ });
208
+ }
209
+ }
210
+ });
211
+ }
212
+ // Look for conditional patterns
213
+ if (expression.includes('?') && expression.includes(':')) {
214
+ const conditionalParts = this.parseConditionalExpression(expression);
215
+ if (conditionalParts && currentContext !== 'conditional') {
216
+ switchPoints.push({
217
+ path: [...path, 'condition'],
218
+ currentContext,
219
+ targetContext: 'conditional',
220
+ reason: 'Conditional expression detected',
221
+ expression: conditionalParts.condition,
222
+ kubernetesRefs: this.extractKubernetesRefs(conditionalParts.condition),
223
+ depth: depth + 1
224
+ });
225
+ }
226
+ }
227
+ }
228
+ /**
229
+ * Parse template literal into parts
230
+ */
231
+ parseTemplateLiteral(expression) {
232
+ const parts = [];
233
+ let currentIndex = 0;
234
+ while (currentIndex < expression.length) {
235
+ const interpolationStart = expression.indexOf('${', currentIndex);
236
+ if (interpolationStart === -1) {
237
+ // No more interpolations
238
+ if (currentIndex < expression.length) {
239
+ parts.push({
240
+ type: 'literal',
241
+ content: expression.slice(currentIndex)
242
+ });
243
+ }
244
+ break;
245
+ }
246
+ // Add literal part before interpolation
247
+ if (interpolationStart > currentIndex) {
248
+ parts.push({
249
+ type: 'literal',
250
+ content: expression.slice(currentIndex, interpolationStart)
251
+ });
252
+ }
253
+ // Find the end of interpolation
254
+ const interpolationEnd = this.findMatchingBrace(expression, interpolationStart + 2);
255
+ if (interpolationEnd === -1) {
256
+ // Malformed template literal
257
+ break;
258
+ }
259
+ // Add interpolation part
260
+ parts.push({
261
+ type: 'interpolation',
262
+ content: expression.slice(interpolationStart + 2, interpolationEnd)
263
+ });
264
+ currentIndex = interpolationEnd + 1;
265
+ }
266
+ return parts;
267
+ }
268
+ /**
269
+ * Parse conditional expression
270
+ */
271
+ parseConditionalExpression(expression) {
272
+ const questionIndex = expression.indexOf('?');
273
+ const colonIndex = expression.indexOf(':', questionIndex);
274
+ if (questionIndex === -1 || colonIndex === -1) {
275
+ return null;
276
+ }
277
+ return {
278
+ condition: expression.slice(0, questionIndex).trim(),
279
+ trueBranch: expression.slice(questionIndex + 1, colonIndex).trim(),
280
+ falseBranch: expression.slice(colonIndex + 1).trim()
281
+ };
282
+ }
283
+ /**
284
+ * Find matching closing brace
285
+ */
286
+ findMatchingBrace(expression, startIndex) {
287
+ let braceCount = 1;
288
+ let index = startIndex;
289
+ while (index < expression.length && braceCount > 0) {
290
+ const char = expression[index];
291
+ if (char === '{') {
292
+ braceCount++;
293
+ }
294
+ else if (char === '}') {
295
+ braceCount--;
296
+ }
297
+ index++;
298
+ }
299
+ return braceCount === 0 ? index - 1 : -1;
300
+ }
301
+ /**
302
+ * Group switch points by context
303
+ */
304
+ groupSwitchPointsByContext(switchPoints) {
305
+ const groups = new Map();
306
+ for (const point of switchPoints) {
307
+ const context = point.targetContext;
308
+ if (!groups.has(context)) {
309
+ groups.set(context, []);
310
+ }
311
+ groups.get(context)?.push(point);
312
+ }
313
+ return groups;
314
+ }
315
+ /**
316
+ * Determine CEL generation strategy for context
317
+ */
318
+ determineCelStrategy(context, factoryType) {
319
+ switch (context) {
320
+ case 'status-builder':
321
+ return 'status-expression';
322
+ case 'resource-builder':
323
+ return 'resource-reference';
324
+ case 'conditional':
325
+ return 'conditional-check';
326
+ case 'readiness':
327
+ return 'readiness-check';
328
+ case 'template-literal':
329
+ return 'template-interpolation';
330
+ case 'field-hydration':
331
+ return factoryType === 'direct' ? 'direct-evaluation' : 'status-expression';
332
+ default:
333
+ return 'direct-evaluation';
334
+ }
335
+ }
336
+ /**
337
+ * Combine CEL expressions from different contexts
338
+ */
339
+ combineCelExpressions(celExpressions, _switchPoints, _primaryContext) {
340
+ if (celExpressions.size === 0) {
341
+ // No CEL expressions generated
342
+ return {
343
+ expression: '/* No KubernetesRef objects found */',
344
+ _type: undefined
345
+ };
346
+ }
347
+ if (celExpressions.size === 1) {
348
+ // Single context - return the CEL expression directly
349
+ const singleExpression = Array.from(celExpressions.values())[0];
350
+ if (!singleExpression) {
351
+ throw new ConversionError('No CEL expression generated', 'unknown', 'unknown');
352
+ }
353
+ return singleExpression;
354
+ }
355
+ // Multiple contexts - need to combine them appropriately
356
+ const expressions = Array.from(celExpressions.entries());
357
+ // For now, create a structure that preserves context information
358
+ const combinedExpression = expressions
359
+ .map(([context, cel]) => `/* ${context} */ ${cel.expression}`)
360
+ .join(' + ');
361
+ return {
362
+ expression: combinedExpression,
363
+ _type: 'string' // Default to string for combined expressions
364
+ };
365
+ }
366
+ /**
367
+ * Extract KubernetesRef objects from expression
368
+ */
369
+ extractKubernetesRefs(expression) {
370
+ const refs = [];
371
+ if (isKubernetesRef(expression)) {
372
+ refs.push(expression);
373
+ }
374
+ else if (typeof expression === 'object' && expression !== null) {
375
+ this.recursivelyExtractRefs(expression, refs);
376
+ }
377
+ return refs;
378
+ }
379
+ /**
380
+ * Recursively extract KubernetesRef objects
381
+ */
382
+ recursivelyExtractRefs(value, refs) {
383
+ if (isKubernetesRef(value)) {
384
+ refs.push(value);
385
+ return;
386
+ }
387
+ if (Array.isArray(value)) {
388
+ for (const item of value) {
389
+ this.recursivelyExtractRefs(item, refs);
390
+ }
391
+ }
392
+ else if (value && typeof value === 'object') {
393
+ for (const prop of Object.values(value)) {
394
+ this.recursivelyExtractRefs(prop, refs);
395
+ }
396
+ }
397
+ }
398
+ }
399
+ /**
400
+ * Context switching utilities
401
+ */
402
+ export class ContextSwitchingUtils {
403
+ /**
404
+ * Create default context switching rules
405
+ */
406
+ static createDefaultRules() {
407
+ return [
408
+ {
409
+ id: 'template-literal-interpolation',
410
+ name: 'Template Literal Interpolation',
411
+ condition: (expression, currentContext) => {
412
+ return typeof expression === 'string' &&
413
+ expression.includes('${') &&
414
+ currentContext !== 'template-literal';
415
+ },
416
+ targetContext: 'template-literal',
417
+ priority: 100
418
+ },
419
+ {
420
+ id: 'conditional-expression',
421
+ name: 'Conditional Expression',
422
+ condition: (expression, currentContext) => {
423
+ return typeof expression === 'string' &&
424
+ expression.includes('?') &&
425
+ expression.includes(':') &&
426
+ currentContext !== 'conditional';
427
+ },
428
+ targetContext: 'conditional',
429
+ priority: 90
430
+ },
431
+ {
432
+ id: 'readiness-check',
433
+ name: 'Readiness Check',
434
+ condition: (expression, currentContext) => {
435
+ const expressionString = String(expression);
436
+ return /ready|available|healthy|running/i.test(expressionString) &&
437
+ currentContext !== 'readiness';
438
+ },
439
+ targetContext: 'readiness',
440
+ priority: 80
441
+ },
442
+ {
443
+ id: 'status-field-reference',
444
+ name: 'Status Field Reference',
445
+ condition: (expression, currentContext) => {
446
+ if (!containsKubernetesRefs(expression))
447
+ return false;
448
+ const refs = [];
449
+ if (isKubernetesRef(expression)) {
450
+ refs.push(expression);
451
+ }
452
+ else {
453
+ // Extract refs from complex expression
454
+ // This is a simplified check
455
+ return String(expression).includes('status') &&
456
+ currentContext !== 'status-builder';
457
+ }
458
+ return refs.some(ref => ref.fieldPath.includes('status')) &&
459
+ currentContext !== 'status-builder';
460
+ },
461
+ targetContext: 'status-builder',
462
+ priority: 70
463
+ }
464
+ ];
465
+ }
466
+ /**
467
+ * Optimize context switching configuration
468
+ */
469
+ static optimizeConfig(config) {
470
+ const optimized = { ...config };
471
+ // Set reasonable defaults
472
+ if (optimized.maxNestingDepth === undefined) {
473
+ optimized.maxNestingDepth = 10;
474
+ }
475
+ if (optimized.autoDetectContext === undefined) {
476
+ optimized.autoDetectContext = true;
477
+ }
478
+ if (optimized.validateContextSwitches === undefined) {
479
+ optimized.validateContextSwitches = true;
480
+ }
481
+ if (optimized.optimizeContextSwitches === undefined) {
482
+ optimized.optimizeContextSwitches = true;
483
+ }
484
+ // Add default rules if none provided
485
+ if (!optimized.customContextRules) {
486
+ optimized.customContextRules = ContextSwitchingUtils.createDefaultRules();
487
+ }
488
+ return optimized;
489
+ }
490
+ /**
491
+ * Analyze context switching performance
492
+ */
493
+ static analyzePerformance(result) {
494
+ const metrics = result.performanceMetrics;
495
+ if (!metrics)
496
+ return 'No performance metrics available';
497
+ const lines = [
498
+ `Context Switching Performance Analysis:`,
499
+ ` Total Time: ${metrics.totalTimeMs.toFixed(2)}ms`,
500
+ ` Context Detection: ${metrics.contextDetectionTimeMs.toFixed(2)}ms (${((metrics.contextDetectionTimeMs / metrics.totalTimeMs) * 100).toFixed(1)}%)`,
501
+ ` CEL Generation: ${metrics.celGenerationTimeMs.toFixed(2)}ms (${((metrics.celGenerationTimeMs / metrics.totalTimeMs) * 100).toFixed(1)}%)`,
502
+ ` Validation: ${metrics.validationTimeMs.toFixed(2)}ms (${((metrics.validationTimeMs / metrics.totalTimeMs) * 100).toFixed(1)}%)`,
503
+ ` Context Switches: ${metrics.contextSwitchCount}`,
504
+ ` Max Depth: ${metrics.maxDepthReached}`
505
+ ];
506
+ return lines.join('\n');
507
+ }
508
+ }
509
+ /**
510
+ * Create a context switcher with default dependencies
511
+ */
512
+ export function createContextSwitcher(contextDetector, celGenerator, validator) {
513
+ return new ExpressionContextSwitcher(contextDetector, celGenerator, validator);
514
+ }
515
+ //# sourceMappingURL=context-switcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-switcher.js","sourceRoot":"","sources":["../../../src/core/expressions/context-switcher.ts"],"names":[],"mappings":"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"}