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,327 @@
1
+ /**
2
+ * Factory Integration for Expression Analysis
3
+ *
4
+ * This module provides integration between factory functions and the expression
5
+ * analysis system, enabling automatic detection and conversion of KubernetesRef
6
+ * objects in factory configurations.
7
+ */
8
+ import { getComponentLogger } from '../logging/index.js';
9
+ import { isKubernetesRef, isCelExpression } from '../../utils/type-guards.js';
10
+ import { ResourceAnalyzer } from './resource-analyzer.js';
11
+ import { ExpressionContextDetector } from './context-detector.js';
12
+ import { ContextAwareCelGenerator } from './context-aware-generator.js';
13
+ import { MagicProxyDetector } from './magic-proxy-detector.js';
14
+ import { CelConversionEngine, } from './cel-conversion-engine.js';
15
+ const logger = getComponentLogger('factory-integration');
16
+ /**
17
+ * Factory Expression Analyzer
18
+ *
19
+ * Analyzes factory configurations for KubernetesRef objects and provides
20
+ * context-aware expression handling recommendations.
21
+ */
22
+ export class FactoryExpressionAnalyzer {
23
+ resourceAnalyzer;
24
+ contextDetector;
25
+ contextAwareGenerator;
26
+ magicProxyDetector;
27
+ celConversionEngine;
28
+ constructor() {
29
+ this.resourceAnalyzer = new ResourceAnalyzer();
30
+ this.contextDetector = new ExpressionContextDetector();
31
+ this.contextAwareGenerator = new ContextAwareCelGenerator();
32
+ this.magicProxyDetector = new MagicProxyDetector();
33
+ this.celConversionEngine = new CelConversionEngine();
34
+ }
35
+ /**
36
+ * Analyze a factory configuration for KubernetesRef objects
37
+ *
38
+ * @param config - Factory configuration object
39
+ * @param context - Analysis context
40
+ * @param options - Analysis options
41
+ * @returns Analysis result
42
+ */
43
+ analyzeFactoryConfig(config, context, options = {}) {
44
+ const startTime = performance.now();
45
+ logger.debug('Analyzing factory configuration', {
46
+ factoryType: context.factoryType,
47
+ configKeys: Object.keys(config)
48
+ });
49
+ const result = {
50
+ hasKubernetesRefs: false,
51
+ fieldAnalysis: {},
52
+ optimizations: [],
53
+ metrics: {
54
+ analysisTimeMs: 0,
55
+ fieldsAnalyzed: 0,
56
+ referencesFound: 0
57
+ }
58
+ };
59
+ // Skip analysis if disabled
60
+ if (options.enableAnalysis === false) {
61
+ result.metrics.analysisTimeMs = performance.now() - startTime;
62
+ return result;
63
+ }
64
+ // Use enhanced magic proxy detection
65
+ const detectionConfig = {
66
+ maxDepth: options.maxDepth || 10,
67
+ includeDetailedPaths: true,
68
+ analyzeReferenceSources: true,
69
+ trackMetrics: true
70
+ };
71
+ const magicProxyResult = this.magicProxyDetector.detectKubernetesRefs(config, detectionConfig);
72
+ result.magicProxyDetection = magicProxyResult;
73
+ result.hasKubernetesRefs = magicProxyResult.hasKubernetesRefs;
74
+ result.metrics.referencesFound = magicProxyResult.stats.totalReferences;
75
+ // Analyze each field in the configuration using enhanced detection
76
+ this.analyzeConfigFieldsWithMagicProxy(config, context, result, magicProxyResult, options.maxDepth || 10);
77
+ // Generate optimizations based on analysis
78
+ this.generateOptimizations(result, context);
79
+ result.metrics.analysisTimeMs = performance.now() - startTime;
80
+ logger.debug('Factory configuration analysis complete', {
81
+ hasKubernetesRefs: result.hasKubernetesRefs,
82
+ fieldsAnalyzed: result.metrics.fieldsAnalyzed,
83
+ referencesFound: result.metrics.referencesFound,
84
+ analysisTimeMs: result.metrics.analysisTimeMs
85
+ });
86
+ return result;
87
+ }
88
+ /**
89
+ * Process a factory configuration value, handling KubernetesRef objects appropriately
90
+ *
91
+ * @param value - Configuration value to process
92
+ * @param context - Factory context
93
+ * @param fieldPath - Path to the field being processed
94
+ * @param options - Processing options
95
+ * @returns Processed value
96
+ */
97
+ processFactoryValue(value, context, fieldPath, options = {}) {
98
+ logger.debug('Processing factory value', {
99
+ fieldPath,
100
+ factoryType: context.factoryType,
101
+ valueType: typeof value,
102
+ enableCelConversion: options.enableCelConversion
103
+ });
104
+ // Check if the value needs CEL conversion
105
+ if (options.enableCelConversion && this.celConversionEngine.needsConversion(value)) {
106
+ const conversionConfig = {
107
+ factoryType: context.factoryType,
108
+ enableOptimization: true,
109
+ preserveStatic: true,
110
+ includeDebugInfo: false
111
+ };
112
+ const conversionResult = this.celConversionEngine.convertValue(value, context, conversionConfig);
113
+ if (conversionResult.wasConverted) {
114
+ logger.debug('CEL conversion applied', {
115
+ fieldPath,
116
+ strategy: conversionResult.strategy,
117
+ referencesConverted: conversionResult.metrics.referencesConverted
118
+ });
119
+ return conversionResult.converted;
120
+ }
121
+ }
122
+ // Handle KubernetesRef objects based on factory type
123
+ if (isKubernetesRef(value)) {
124
+ logger.debug('Processing KubernetesRef in factory configuration', {
125
+ fieldPath,
126
+ factoryType: context.factoryType,
127
+ resourceId: value.resourceId,
128
+ refFieldPath: value.fieldPath
129
+ });
130
+ // For direct factories, preserve the reference for runtime resolution
131
+ // For Kro factories, the serialization system will handle CEL conversion
132
+ return value;
133
+ }
134
+ // Handle CelExpression objects - preserve them as-is for serialization
135
+ if (isCelExpression(value)) {
136
+ logger.debug('Processing CelExpression in factory configuration', {
137
+ fieldPath,
138
+ factoryType: context.factoryType,
139
+ expression: value.expression
140
+ });
141
+ // Preserve CelExpression objects as-is - the serialization system will convert them to ${expression} format
142
+ return value;
143
+ }
144
+ // Handle arrays and objects recursively
145
+ if (Array.isArray(value)) {
146
+ return value.map((item, index) => this.processFactoryValue(item, context, `${fieldPath}[${index}]`, options));
147
+ }
148
+ if (value && typeof value === 'object' && value.constructor === Object) {
149
+ const processed = {};
150
+ for (const [key, val] of Object.entries(value)) {
151
+ processed[key] = this.processFactoryValue(val, context, `${fieldPath}.${key}`, options);
152
+ }
153
+ return processed;
154
+ }
155
+ // Return static values as-is
156
+ return value;
157
+ }
158
+ /**
159
+ * Create an enhanced factory function that includes expression analysis
160
+ *
161
+ * @param originalFactory - Original factory function
162
+ * @param factoryName - Name of the factory for logging
163
+ * @returns Enhanced factory function
164
+ */
165
+ enhanceFactory(originalFactory, factoryName) {
166
+ return (config, options = {}) => {
167
+ const context = {
168
+ factoryType: options.factoryType || 'kro',
169
+ factoryName,
170
+ analysisEnabled: options.enableAnalysis !== false
171
+ };
172
+ // Analyze the configuration if analysis is enabled
173
+ if (context.analysisEnabled) {
174
+ const analysis = this.analyzeFactoryConfig(config, context, options);
175
+ // Log analysis results for debugging
176
+ if (analysis.hasKubernetesRefs) {
177
+ logger.debug('Factory configuration contains KubernetesRef objects', {
178
+ factoryName,
179
+ referencesFound: analysis.metrics.referencesFound,
180
+ optimizations: analysis.optimizations
181
+ });
182
+ }
183
+ }
184
+ // Call the original factory function
185
+ return originalFactory(config);
186
+ };
187
+ }
188
+ analyzeConfigFields(config, context, result, maxDepth, currentPath = '', currentDepth = 0) {
189
+ if (currentDepth >= maxDepth) {
190
+ return;
191
+ }
192
+ for (const [key, value] of Object.entries(config)) {
193
+ const fieldPath = currentPath ? `${currentPath}.${key}` : key;
194
+ result.metrics.fieldsAnalyzed++;
195
+ if (isKubernetesRef(value)) {
196
+ result.hasKubernetesRefs = true;
197
+ result.metrics.referencesFound++;
198
+ // Analyze the KubernetesRef
199
+ const analysisContext = {
200
+ factoryType: context.factoryType || 'kro',
201
+ type: 'resource',
202
+ availableReferences: {},
203
+ resourceContext: {
204
+ resourceId: value.resourceId,
205
+ fieldPath: value.fieldPath
206
+ },
207
+ resourceId: 'factory-config',
208
+ resourceConfig: { [key]: value }
209
+ };
210
+ const analysis = this.resourceAnalyzer.analyzeResourceConfig('factory-config', { [key]: value }, analysisContext);
211
+ result.fieldAnalysis[fieldPath] = {
212
+ hasKubernetesRefs: true,
213
+ staticFields: [],
214
+ kubernetesRefFields: [fieldPath],
215
+ celExpressionFields: [],
216
+ analysisDetails: analysis
217
+ };
218
+ }
219
+ else if (Array.isArray(value)) {
220
+ // Recursively analyze array elements
221
+ value.forEach((item, index) => {
222
+ if (typeof item === 'object' && item !== null) {
223
+ this.analyzeConfigFields({ [index]: item }, context, result, maxDepth, `${fieldPath}[${index}]`, currentDepth + 1);
224
+ }
225
+ });
226
+ }
227
+ else if (value && typeof value === 'object' && value.constructor === Object) {
228
+ // Recursively analyze nested objects
229
+ this.analyzeConfigFields(value, context, result, maxDepth, fieldPath, currentDepth + 1);
230
+ }
231
+ }
232
+ }
233
+ analyzeConfigFieldsWithMagicProxy(_config, _context, result, magicProxyResult, _maxDepth) {
234
+ // Use the magic proxy detection results to create field analysis
235
+ for (const refInfo of magicProxyResult.references) {
236
+ const fieldPath = refInfo.path;
237
+ if (!result.fieldAnalysis[fieldPath]) {
238
+ result.fieldAnalysis[fieldPath] = {
239
+ hasKubernetesRefs: true,
240
+ staticFields: [],
241
+ kubernetesRefFields: [fieldPath],
242
+ celExpressionFields: [],
243
+ analysisDetails: {
244
+ source: refInfo.source,
245
+ resourceId: refInfo.resourceId,
246
+ fieldPath: refInfo.fieldPath,
247
+ isNested: refInfo.isNested,
248
+ nestingDepth: refInfo.nestingDepth
249
+ }
250
+ };
251
+ }
252
+ }
253
+ // Count fields analyzed
254
+ result.metrics.fieldsAnalyzed = magicProxyResult.metrics.propertiesScanned;
255
+ }
256
+ generateOptimizations(result, context) {
257
+ if (!result.hasKubernetesRefs) {
258
+ result.optimizations.push('Configuration contains only static values - no expression analysis needed');
259
+ return;
260
+ }
261
+ if (context.factoryType === 'direct') {
262
+ result.optimizations.push('Direct factory detected - KubernetesRef objects will be resolved at runtime');
263
+ }
264
+ else {
265
+ result.optimizations.push('Kro factory detected - KubernetesRef objects will be converted to CEL expressions');
266
+ }
267
+ // Enhanced optimizations based on magic proxy detection
268
+ if (result.magicProxyDetection) {
269
+ const detection = result.magicProxyDetection;
270
+ if (detection.stats.schemaReferences > 0) {
271
+ result.optimizations.push(`Found ${detection.stats.schemaReferences} schema references - these will be resolved during serialization`);
272
+ }
273
+ if (detection.stats.resourceReferences > 0) {
274
+ result.optimizations.push(`Found ${detection.stats.resourceReferences} resource references - these create dependencies`);
275
+ }
276
+ if (detection.stats.nestedReferences > 0) {
277
+ result.optimizations.push(`Found ${detection.stats.nestedReferences} nested references - consider flattening for better performance`);
278
+ }
279
+ if (detection.stats.maxNestingDepth > 5) {
280
+ result.optimizations.push(`Deep nesting detected (depth: ${detection.stats.maxNestingDepth}) - consider restructuring for better maintainability`);
281
+ }
282
+ }
283
+ if (result.metrics.referencesFound > 10) {
284
+ result.optimizations.push('High number of references detected - consider caching analysis results');
285
+ }
286
+ if (result.metrics.analysisTimeMs > 100) {
287
+ result.optimizations.push('Analysis took significant time - consider enabling lazy analysis for complex configurations');
288
+ }
289
+ }
290
+ }
291
+ /**
292
+ * Global factory expression analyzer instance
293
+ */
294
+ export const factoryExpressionAnalyzer = new FactoryExpressionAnalyzer();
295
+ /**
296
+ * Utility function to enhance a factory function with expression analysis
297
+ *
298
+ * @param factory - Original factory function
299
+ * @param name - Factory name for logging
300
+ * @returns Enhanced factory function
301
+ */
302
+ export function withExpressionAnalysis(factory, name) {
303
+ return factoryExpressionAnalyzer.enhanceFactory(factory, name);
304
+ }
305
+ /**
306
+ * Utility function to analyze a factory configuration
307
+ *
308
+ * @param config - Factory configuration
309
+ * @param context - Analysis context
310
+ * @param options - Analysis options
311
+ * @returns Analysis result
312
+ */
313
+ export function analyzeFactoryConfig(config, context, options) {
314
+ return factoryExpressionAnalyzer.analyzeFactoryConfig(config, context, options);
315
+ }
316
+ /**
317
+ * Utility function to process a factory value with KubernetesRef handling
318
+ *
319
+ * @param value - Value to process
320
+ * @param context - Factory context
321
+ * @param fieldPath - Field path for logging
322
+ * @returns Processed value
323
+ */
324
+ export function processFactoryValue(value, context, fieldPath) {
325
+ return factoryExpressionAnalyzer.processFactoryValue(value, context, fieldPath);
326
+ }
327
+ //# sourceMappingURL=factory-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory-integration.js","sourceRoot":"","sources":["../../../src/core/expressions/factory-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Factory Pattern Handler for JavaScript to CEL Expression Conversion
3
+ *
4
+ * This module provides different expression handling strategies based on the factory pattern:
5
+ * - DirectFactoryExpressionHandler: For direct deployment evaluation
6
+ * - KroFactoryExpressionHandler: For CEL conversion and Kro deployment
7
+ *
8
+ * The factory pattern determines how expressions containing KubernetesRef objects
9
+ * are processed and converted.
10
+ */
11
+ import type { CelExpression, KubernetesRef } from '../types/common.js';
12
+ import type { AnalysisContext, CelConversionResult } from './analyzer.js';
13
+ /**
14
+ * Factory pattern types supported by TypeKro
15
+ */
16
+ export type FactoryPatternType = 'direct' | 'kro';
17
+ /**
18
+ * Base interface for factory expression handlers
19
+ */
20
+ export interface FactoryExpressionHandler {
21
+ /**
22
+ * Handle expressions containing KubernetesRef objects
23
+ */
24
+ handleExpression(expression: any, context: AnalysisContext): CelConversionResult;
25
+ /**
26
+ * Convert a KubernetesRef to appropriate format for this factory pattern
27
+ */
28
+ convertKubernetesRef(ref: KubernetesRef<any>, context: AnalysisContext): CelExpression;
29
+ /**
30
+ * Get the factory pattern type
31
+ */
32
+ getPatternType(): FactoryPatternType;
33
+ }
34
+ /**
35
+ * Expression handler for direct deployment pattern
36
+ *
37
+ * In direct deployment, expressions are evaluated at deployment time
38
+ * by resolving KubernetesRef objects to actual values from deployed resources.
39
+ */
40
+ export declare class DirectFactoryExpressionHandler implements FactoryExpressionHandler {
41
+ getPatternType(): FactoryPatternType;
42
+ handleExpression(expression: any, context: AnalysisContext): CelConversionResult;
43
+ convertKubernetesRef(ref: KubernetesRef<any>, _context: AnalysisContext): CelExpression;
44
+ private handleStringExpression;
45
+ private handleComplexExpression;
46
+ private isKubernetesRef;
47
+ private extractKubernetesRefs;
48
+ }
49
+ /**
50
+ * Expression handler for Kro deployment pattern
51
+ *
52
+ * In Kro deployment, expressions are converted to CEL and evaluated
53
+ * by the Kro controller at runtime.
54
+ */
55
+ export declare class KroFactoryExpressionHandler implements FactoryExpressionHandler {
56
+ getPatternType(): FactoryPatternType;
57
+ handleExpression(expression: any, context: AnalysisContext): CelConversionResult;
58
+ convertKubernetesRef(ref: KubernetesRef<any>, _context: AnalysisContext): CelExpression;
59
+ private handleStringExpression;
60
+ private handleComplexExpression;
61
+ private isKubernetesRef;
62
+ private extractKubernetesRefs;
63
+ }
64
+ /**
65
+ * Factory for creating appropriate expression handlers based on factory pattern
66
+ */
67
+ export declare class FactoryPatternHandlerFactory {
68
+ /**
69
+ * Create an expression handler for the specified factory pattern
70
+ */
71
+ static createHandler(patternType: FactoryPatternType): FactoryExpressionHandler;
72
+ /**
73
+ * Detect factory pattern from context
74
+ */
75
+ static detectFactoryPattern(context: AnalysisContext): FactoryPatternType;
76
+ /**
77
+ * Create handler based on analysis context
78
+ */
79
+ static createHandlerFromContext(context: AnalysisContext): FactoryExpressionHandler;
80
+ }
81
+ /**
82
+ * Main factory pattern integration point
83
+ *
84
+ * This function provides the main integration point for factory pattern
85
+ * aware expression handling.
86
+ */
87
+ export declare function handleExpressionWithFactoryPattern(expression: any, context: AnalysisContext): CelConversionResult;
88
+ //# sourceMappingURL=factory-pattern-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory-pattern-handler.d.ts","sourceRoot":"","sources":["../../../src/core/expressions/factory-pattern-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,gBAAgB,CACd,UAAU,EAAE,GAAG,EACf,OAAO,EAAE,eAAe,GACvB,mBAAmB,CAAC;IAEvB;;OAEG;IACH,oBAAoB,CAClB,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,EACvB,OAAO,EAAE,eAAe,GACvB,aAAa,CAAC;IAEjB;;OAEG;IACH,cAAc,IAAI,kBAAkB,CAAC;CACtC;AAED;;;;;GAKG;AACH,qBAAa,8BAA+B,YAAW,wBAAwB;IAE7E,cAAc,IAAI,kBAAkB;IAIpC,gBAAgB,CACd,UAAU,EAAE,GAAG,EACf,OAAO,EAAE,eAAe,GACvB,mBAAmB;IA4DtB,oBAAoB,CAClB,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,EACvB,QAAQ,EAAE,eAAe,GACxB,aAAa;IAoBhB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,qBAAqB;CAmB9B;AAED;;;;;GAKG;AACH,qBAAa,2BAA4B,YAAW,wBAAwB;IAE1E,cAAc,IAAI,kBAAkB;IAIpC,gBAAgB,CACd,UAAU,EAAE,GAAG,EACf,OAAO,EAAE,eAAe,GACvB,mBAAmB;IA2DtB,oBAAoB,CAClB,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,EACvB,QAAQ,EAAE,eAAe,GACxB,aAAa;IAoBhB,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,qBAAqB;CAmB9B;AAED;;GAEG;AACH,qBAAa,4BAA4B;IAEvC;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,kBAAkB,GAAG,wBAAwB;IAW/E;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,kBAAkB;IAIzE;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,wBAAwB;CAIpF;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,GAAG,EACf,OAAO,EAAE,eAAe,GACvB,mBAAmB,CAGrB"}