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,639 @@
1
+ /**
2
+ * Magic Proxy System Integration for JavaScript to CEL Expression Conversion
3
+ *
4
+ * This module provides deep integration with TypeKro's magic proxy system,
5
+ * including SchemaProxy and ResourcesProxy, to detect and analyze KubernetesRef
6
+ * objects within JavaScript expressions and convert them to appropriate CEL expressions.
7
+ *
8
+ * The magic proxy system creates KubernetesRef objects at runtime when accessing
9
+ * properties on schema and resources proxies. This analyzer uses AST parsing to
10
+ * detect these access patterns in JavaScript expressions and converts them to CEL.
11
+ */
12
+ import * as esprima from 'esprima';
13
+ import * as estraverse from 'estraverse';
14
+ import { ConversionError } from '../errors.js';
15
+ import { CEL_EXPRESSION_BRAND, KUBERNETES_REF_BRAND, BrandChecks } from '../constants/brands.js';
16
+ import { SourceMapBuilder, } from './source-map.js';
17
+ import { getComponentLogger } from '../logging/index.js';
18
+ /**
19
+ * Magic Proxy Analyzer for detecting and converting KubernetesRef objects
20
+ * from TypeKro's magic proxy system
21
+ */
22
+ export class MagicProxyAnalyzer {
23
+ sourceMapBuilder;
24
+ logger = getComponentLogger('magic-proxy-analyzer');
25
+ constructor() {
26
+ this.sourceMapBuilder = new SourceMapBuilder();
27
+ }
28
+ /**
29
+ * Analyze expressions for magic proxy access patterns
30
+ *
31
+ * This method can handle different types of expressions:
32
+ * - String expressions: parsed with AST
33
+ * - KubernetesRef objects: analyzed directly
34
+ * - Other objects: analyzed for nested KubernetesRef objects
35
+ */
36
+ analyzeExpressionWithRefs(expression, context) {
37
+ try {
38
+ // Handle KubernetesRef objects directly
39
+ if (expression && typeof expression === 'object' && expression.__brand === 'KubernetesRef') {
40
+ return this.analyzeKubernetesRefDirectly(expression, context);
41
+ }
42
+ // Handle string expressions with AST parsing
43
+ if (typeof expression === 'string') {
44
+ return this.analyzeStringExpression(expression, context);
45
+ }
46
+ // Handle other objects
47
+ if (typeof expression === 'object' && expression !== null) {
48
+ return this.analyzeObjectExpression(expression, context);
49
+ }
50
+ // Handle primitives
51
+ return this.analyzePrimitiveExpression(expression, context);
52
+ }
53
+ catch (error) {
54
+ return this.createErrorResult(expression, error, context);
55
+ }
56
+ }
57
+ /**
58
+ * Analyze a KubernetesRef object directly
59
+ */
60
+ analyzeKubernetesRefDirectly(ref, context) {
61
+ const { schemaRefs, resourceRefs, schemaReferences, resourceReferences } = this.analyzeKubernetesRefs([ref]);
62
+ const celExpressions = this.convertKubernetesRefsToCel([ref], context);
63
+ const proxyTypes = [];
64
+ if (schemaRefs.length > 0)
65
+ proxyTypes.push('schema');
66
+ if (resourceRefs.length > 0)
67
+ proxyTypes.push('resource');
68
+ return {
69
+ valid: true,
70
+ celExpression: celExpressions.length > 0 ? (celExpressions[0] || null) : null,
71
+ dependencies: [ref],
72
+ sourceMap: [],
73
+ errors: [],
74
+ warnings: [],
75
+ requiresConversion: true,
76
+ proxyTypes,
77
+ schemaReferences,
78
+ resourceReferences,
79
+ analysisDepth: 1
80
+ };
81
+ }
82
+ /**
83
+ * Analyze string expressions using AST parsing
84
+ */
85
+ analyzeStringExpression(expressionSource, context) {
86
+ this.logger.debug('Analyzing string expression for magic proxy patterns', {
87
+ expression: expressionSource.substring(0, 100),
88
+ contextType: context.type
89
+ });
90
+ // Parse the JavaScript expression to AST
91
+ const ast = this.parseExpression(expressionSource);
92
+ // Analyze the AST for magic proxy access patterns
93
+ const analysisResult = this.analyzeASTForMagicProxyPatterns(ast, expressionSource, context);
94
+ // Convert the analysis result to magic proxy result format
95
+ const conversionResult = this.convertToMagicProxyResult(analysisResult, context);
96
+ return conversionResult;
97
+ }
98
+ /**
99
+ * Analyze object expressions
100
+ */
101
+ analyzeObjectExpression(obj, context) {
102
+ const refs = this.detectKubernetesRefs(obj);
103
+ const { schemaRefs, resourceRefs, schemaReferences, resourceReferences } = this.analyzeKubernetesRefs(refs);
104
+ const celExpressions = this.convertKubernetesRefsToCel(refs, context);
105
+ const proxyTypes = [];
106
+ if (schemaRefs.length > 0)
107
+ proxyTypes.push('schema');
108
+ if (resourceRefs.length > 0)
109
+ proxyTypes.push('resource');
110
+ return {
111
+ valid: true,
112
+ celExpression: celExpressions.length > 0 ? (celExpressions[0] || null) : null,
113
+ dependencies: refs,
114
+ sourceMap: [],
115
+ errors: [],
116
+ warnings: [],
117
+ requiresConversion: refs.length > 0,
118
+ proxyTypes,
119
+ schemaReferences,
120
+ resourceReferences,
121
+ analysisDepth: 1
122
+ };
123
+ }
124
+ /**
125
+ * Analyze primitive expressions
126
+ */
127
+ analyzePrimitiveExpression(_value, _context) {
128
+ return {
129
+ valid: true,
130
+ celExpression: null,
131
+ dependencies: [],
132
+ sourceMap: [],
133
+ errors: [],
134
+ warnings: [],
135
+ requiresConversion: false,
136
+ proxyTypes: [],
137
+ schemaReferences: [],
138
+ resourceReferences: [],
139
+ analysisDepth: 0
140
+ };
141
+ }
142
+ /**
143
+ * Parse JavaScript expression string into AST using esprima
144
+ */
145
+ parseExpression(expressionSource) {
146
+ try {
147
+ // Use esprima to parse the expression
148
+ const ast = esprima.parseScript(expressionSource, {
149
+ loc: true,
150
+ range: true
151
+ });
152
+ return ast;
153
+ }
154
+ catch (error) {
155
+ throw new ConversionError(`Failed to parse JavaScript expression: ${error instanceof Error ? error.message : 'Unknown error'}`, expressionSource, 'javascript');
156
+ }
157
+ }
158
+ /**
159
+ * Analyze AST for magic proxy access patterns
160
+ */
161
+ analyzeASTForMagicProxyPatterns(ast, _expressionSource, context) {
162
+ const refs = [];
163
+ let analysisDepth = 0;
164
+ let hasProxyObjects = false;
165
+ // Traverse the AST to find member expressions that could be magic proxy accesses
166
+ estraverse.traverse(ast, {
167
+ enter: (node, _parent) => {
168
+ analysisDepth++;
169
+ if (node.type === 'MemberExpression') {
170
+ const memberExpr = node;
171
+ const kubernetesRef = this.extractKubernetesRefFromMemberExpression(memberExpr, context);
172
+ if (kubernetesRef) {
173
+ refs.push(kubernetesRef);
174
+ hasProxyObjects = true;
175
+ }
176
+ }
177
+ // Check for other proxy patterns
178
+ if (this.isProxyAccessPattern(node, context)) {
179
+ hasProxyObjects = true;
180
+ }
181
+ }
182
+ });
183
+ return {
184
+ refs,
185
+ analysisDepth,
186
+ hasProxyObjects
187
+ };
188
+ }
189
+ /**
190
+ * Extract KubernetesRef from member expression AST node
191
+ */
192
+ extractKubernetesRefFromMemberExpression(memberExpr, context) {
193
+ try {
194
+ // Build the field path from the member expression chain
195
+ const fieldPath = this.buildFieldPathFromMemberExpression(memberExpr);
196
+ const resourceId = this.extractResourceIdFromMemberExpression(memberExpr);
197
+ if (resourceId && fieldPath) {
198
+ // Check if this matches known proxy patterns
199
+ if (this.isValidProxyAccess(resourceId, fieldPath, context)) {
200
+ return {
201
+ [KUBERNETES_REF_BRAND]: true,
202
+ resourceId,
203
+ fieldPath,
204
+ _type: undefined // Will be inferred from context
205
+ };
206
+ }
207
+ }
208
+ return null;
209
+ }
210
+ catch (error) {
211
+ this.logger.debug('Failed to extract KubernetesRef from member expression', { error });
212
+ return null;
213
+ }
214
+ }
215
+ /**
216
+ * Build field path from member expression chain
217
+ */
218
+ buildFieldPathFromMemberExpression(memberExpr) {
219
+ const parts = [];
220
+ let current = memberExpr;
221
+ while (current && current.type === 'MemberExpression') {
222
+ const member = current;
223
+ if (member.property.type === 'Identifier') {
224
+ parts.unshift(member.property.name);
225
+ }
226
+ else {
227
+ // Skip computed properties for now
228
+ break;
229
+ }
230
+ current = member.object;
231
+ }
232
+ return parts.length > 0 ? parts.join('.') : null;
233
+ }
234
+ /**
235
+ * Extract resource ID from member expression
236
+ */
237
+ extractResourceIdFromMemberExpression(memberExpr) {
238
+ let current = memberExpr;
239
+ // Traverse to the root of the member expression chain
240
+ while (current && current.type === 'MemberExpression') {
241
+ current = current.object;
242
+ }
243
+ if (current && current.type === 'Identifier') {
244
+ const identifier = current;
245
+ // Check for known proxy patterns
246
+ if (identifier.name === 'schema') {
247
+ return '__schema__';
248
+ }
249
+ else if (identifier.name === 'resources') {
250
+ // For resources.resourceName.field, we need to get the next level
251
+ let resourceCurrent = memberExpr;
252
+ while (resourceCurrent && resourceCurrent.type === 'MemberExpression') {
253
+ const member = resourceCurrent;
254
+ if (member.object.type === 'Identifier' && member.object.name === 'resources') {
255
+ if (member.property.type === 'Identifier') {
256
+ return member.property.name;
257
+ }
258
+ break;
259
+ }
260
+ resourceCurrent = member.object;
261
+ }
262
+ }
263
+ else {
264
+ // Direct resource access
265
+ return identifier.name;
266
+ }
267
+ }
268
+ return null;
269
+ }
270
+ /**
271
+ * Check if a node represents a proxy access pattern
272
+ */
273
+ isProxyAccessPattern(node, context) {
274
+ if (node.type === 'MemberExpression') {
275
+ const memberExpr = node;
276
+ const resourceId = this.extractResourceIdFromMemberExpression(memberExpr);
277
+ if (resourceId) {
278
+ return this.isValidProxyAccess(resourceId, '', context);
279
+ }
280
+ }
281
+ return false;
282
+ }
283
+ /**
284
+ * Check if a resource ID and field path represent valid proxy access
285
+ */
286
+ isValidProxyAccess(resourceId, _fieldPath, context) {
287
+ // Schema references are always valid
288
+ if (resourceId === '__schema__') {
289
+ return true;
290
+ }
291
+ // Check if resource exists in available references
292
+ if (context.availableReferences?.[resourceId]) {
293
+ return true;
294
+ }
295
+ // Check if resource exists in resource proxies
296
+ if (context.resourceProxies?.[resourceId]) {
297
+ return true;
298
+ }
299
+ return false;
300
+ }
301
+ /**
302
+ * Detect KubernetesRef objects in complex data structures
303
+ *
304
+ * This method uses a breadth-first search approach to find all
305
+ * KubernetesRef objects while respecting maxDepth to prevent infinite recursion.
306
+ * The maxDepth limits how deep we traverse non-KubernetesRef objects, but we
307
+ * continue searching for KubernetesRef objects even beyond the depth limit.
308
+ * This allows us to find deeply nested KubernetesRef objects while still
309
+ * preventing infinite recursion on complex object graphs.
310
+ */
311
+ detectKubernetesRefs(value, maxDepth = 10, currentDepth = 0) {
312
+ const refs = [];
313
+ const visited = new WeakSet();
314
+ // Use a queue for breadth-first traversal
315
+ const queue = [{ value, depth: currentDepth }];
316
+ while (queue.length > 0) {
317
+ const { value: currentValue, depth } = queue.shift();
318
+ // Skip if we've already visited this object (prevents infinite loops)
319
+ if (currentValue && typeof currentValue === 'object' && visited.has(currentValue)) {
320
+ continue;
321
+ }
322
+ // Check if the current value is a KubernetesRef
323
+ if (this.isKubernetesRef(currentValue)) {
324
+ refs.push(currentValue);
325
+ continue; // Don't traverse into KubernetesRef objects
326
+ }
327
+ // Mark as visited if it's an object
328
+ if (currentValue && typeof currentValue === 'object') {
329
+ visited.add(currentValue);
330
+ }
331
+ // For objects beyond maxDepth, we still check if they might contain
332
+ // KubernetesRef objects, but we limit the expansion to prevent
333
+ // infinite recursion on complex object graphs
334
+ const shouldExpandFully = depth < maxDepth;
335
+ const shouldCheckForRefs = depth < maxDepth + 50; // Allow significant extra depth for KubernetesRef detection
336
+ if (!shouldCheckForRefs) {
337
+ continue;
338
+ }
339
+ // Add children to the queue for further processing
340
+ if (Array.isArray(currentValue)) {
341
+ for (const item of currentValue) {
342
+ if (shouldExpandFully || this.mightContainKubernetesRef(item)) {
343
+ queue.push({ value: item, depth: depth + 1 });
344
+ }
345
+ }
346
+ }
347
+ else if (currentValue && typeof currentValue === 'object') {
348
+ // Skip functions and special objects
349
+ if (typeof currentValue === 'function' ||
350
+ currentValue instanceof Date ||
351
+ currentValue instanceof RegExp) {
352
+ continue;
353
+ }
354
+ // Add object properties to the queue
355
+ for (const key in currentValue) {
356
+ if (Object.hasOwn(currentValue, key)) {
357
+ try {
358
+ const propertyValue = currentValue[key];
359
+ if (shouldExpandFully || this.mightContainKubernetesRef(propertyValue)) {
360
+ queue.push({ value: propertyValue, depth: depth + 1 });
361
+ }
362
+ }
363
+ catch (_error) {
364
+ // Ignore errors when accessing properties during analysis
365
+ }
366
+ }
367
+ }
368
+ }
369
+ }
370
+ return refs;
371
+ }
372
+ /**
373
+ * Analyze KubernetesRef objects and categorize them by type
374
+ */
375
+ analyzeKubernetesRefs(refs) {
376
+ const schemaRefs = [];
377
+ const resourceRefs = [];
378
+ const schemaReferences = [];
379
+ const resourceReferences = [];
380
+ for (const ref of refs) {
381
+ if (ref.resourceId === '__schema__') {
382
+ schemaRefs.push(ref);
383
+ schemaReferences.push(ref.fieldPath);
384
+ }
385
+ else {
386
+ resourceRefs.push(ref);
387
+ resourceReferences.push(`${ref.resourceId}.${ref.fieldPath}`);
388
+ }
389
+ }
390
+ return {
391
+ schemaRefs,
392
+ resourceRefs,
393
+ schemaReferences: Array.from(new Set(schemaReferences)),
394
+ resourceReferences: Array.from(new Set(resourceReferences))
395
+ };
396
+ }
397
+ /**
398
+ * Convert KubernetesRef objects to CEL expressions with magic proxy context
399
+ */
400
+ convertKubernetesRefsToCel(refs, context) {
401
+ const celExpressions = [];
402
+ for (const ref of refs) {
403
+ try {
404
+ const celExpression = this.convertSingleKubernetesRefToCel(ref, context);
405
+ celExpressions.push(celExpression);
406
+ }
407
+ catch (error) {
408
+ // Log error but continue with other refs
409
+ console.warn(`Failed to convert KubernetesRef ${ref.resourceId}.${ref.fieldPath}:`, error);
410
+ }
411
+ }
412
+ return celExpressions;
413
+ }
414
+ /**
415
+ * Validate KubernetesRef objects against available proxies
416
+ */
417
+ validateKubernetesRefs(refs, context) {
418
+ const valid = [];
419
+ const invalid = [];
420
+ for (const ref of refs) {
421
+ const validationResult = this.validateSingleKubernetesRef(ref, context);
422
+ if (validationResult.isValid) {
423
+ valid.push(ref);
424
+ }
425
+ else {
426
+ invalid.push({ ref, reason: validationResult.reason });
427
+ }
428
+ }
429
+ return { valid, invalid };
430
+ }
431
+ /**
432
+ * Get source mapping information for magic proxy analysis
433
+ */
434
+ getSourceMapping() {
435
+ return this.sourceMapBuilder.getEntries();
436
+ }
437
+ /**
438
+ * Clear source mapping information
439
+ */
440
+ clearSourceMapping() {
441
+ this.sourceMapBuilder.clear();
442
+ }
443
+ /**
444
+ * Convert analysis result to MagicProxyAnalysisResult
445
+ */
446
+ convertToMagicProxyResult(analysisResult, context) {
447
+ const { refs, analysisDepth } = analysisResult;
448
+ // Analyze and categorize KubernetesRef objects
449
+ const { schemaRefs, resourceRefs, schemaReferences, resourceReferences } = this.analyzeKubernetesRefs(refs);
450
+ // Validate KubernetesRef objects
451
+ const { valid: validRefs, invalid: invalidRefs } = this.validateKubernetesRefs(refs, context);
452
+ // Convert valid KubernetesRef objects to CEL expressions
453
+ const celExpressions = this.convertKubernetesRefsToCel(validRefs, context);
454
+ // Determine proxy types
455
+ const proxyTypes = [];
456
+ if (schemaRefs.length > 0)
457
+ proxyTypes.push('schema');
458
+ if (resourceRefs.length > 0)
459
+ proxyTypes.push('resource');
460
+ // Create conversion errors for invalid refs
461
+ const errors = invalidRefs.map(({ ref, reason }) => new ConversionError(`Invalid KubernetesRef: ${reason}`, `${ref.resourceId}.${ref.fieldPath}`, 'member-access'));
462
+ // Determine if conversion is required
463
+ const requiresConversion = refs.length > 0;
464
+ // Create primary CEL expression (use first valid one or null)
465
+ const primaryCelExpression = celExpressions.length > 0 ? celExpressions[0] : null;
466
+ return {
467
+ valid: errors.length === 0,
468
+ celExpression: primaryCelExpression,
469
+ dependencies: validRefs,
470
+ sourceMap: this.getSourceMapping(),
471
+ errors,
472
+ warnings: [],
473
+ requiresConversion,
474
+ proxyTypes,
475
+ schemaReferences,
476
+ resourceReferences,
477
+ analysisDepth
478
+ };
479
+ }
480
+ /**
481
+ * Create error result for failed analysis
482
+ */
483
+ createErrorResult(expression, error, _context) {
484
+ const conversionError = new ConversionError(`Magic proxy analysis failed: ${error instanceof Error ? error.message : String(error)}`, String(expression), 'javascript');
485
+ return {
486
+ valid: false,
487
+ celExpression: null,
488
+ dependencies: [],
489
+ sourceMap: [],
490
+ errors: [conversionError],
491
+ warnings: [],
492
+ requiresConversion: false,
493
+ proxyTypes: [],
494
+ schemaReferences: [],
495
+ resourceReferences: [],
496
+ analysisDepth: 0
497
+ };
498
+ }
499
+ /**
500
+ * Check if a value is a KubernetesRef object
501
+ */
502
+ isKubernetesRef(value) {
503
+ return BrandChecks.isKubernetesRef(value) &&
504
+ typeof value.resourceId === 'string' &&
505
+ typeof value.fieldPath === 'string';
506
+ }
507
+ /**
508
+ * Quick check if a value might contain KubernetesRef objects
509
+ * This is used for optimization when we're beyond maxDepth but still
510
+ * want to find deeply nested KubernetesRef objects.
511
+ */
512
+ mightContainKubernetesRef(value) {
513
+ // If it's already a KubernetesRef, we'll find it
514
+ if (this.isKubernetesRef(value)) {
515
+ return true;
516
+ }
517
+ // If it's not an object, it can't contain KubernetesRef objects
518
+ if (!value || typeof value !== 'object') {
519
+ return false;
520
+ }
521
+ // Skip functions and special objects that are unlikely to contain KubernetesRef objects
522
+ if (typeof value === 'function' ||
523
+ value instanceof Date ||
524
+ value instanceof RegExp ||
525
+ value instanceof Error) {
526
+ return false;
527
+ }
528
+ // For plain objects and arrays, assume they might contain KubernetesRef objects
529
+ // This is a conservative approach that errs on the side of finding all refs
530
+ return true;
531
+ }
532
+ /**
533
+ * Convert a single KubernetesRef to CEL expression
534
+ */
535
+ convertSingleKubernetesRefToCel(ref, context) {
536
+ // Generate CEL expression based on factory type
537
+ let celExpression;
538
+ if (ref.resourceId === '__schema__') {
539
+ // Schema references
540
+ celExpression = `schema.${ref.fieldPath}`;
541
+ }
542
+ else {
543
+ // Resource references
544
+ celExpression = `resources.${ref.resourceId}.${ref.fieldPath}`;
545
+ }
546
+ // Add source mapping
547
+ if (context.sourceMap) {
548
+ const sourceLocation = { line: 1, column: 1, length: celExpression.length };
549
+ context.sourceMap.addMapping(`${ref.resourceId}.${ref.fieldPath}`, celExpression, sourceLocation, context.type, {
550
+ expressionType: 'member-access',
551
+ kubernetesRefs: [celExpression],
552
+ dependencies: [`${ref.resourceId}.${ref.fieldPath}`],
553
+ conversionNotes: ['Magic proxy KubernetesRef conversion']
554
+ });
555
+ }
556
+ return {
557
+ [CEL_EXPRESSION_BRAND]: true,
558
+ expression: celExpression,
559
+ _type: ref._type
560
+ };
561
+ }
562
+ /**
563
+ * Validate a single KubernetesRef object
564
+ */
565
+ validateSingleKubernetesRef(ref, context) {
566
+ // Check basic structure
567
+ if (!ref.resourceId || !ref.fieldPath) {
568
+ return { isValid: false, reason: 'Missing resourceId or fieldPath' };
569
+ }
570
+ // Validate schema references - always valid if properly structured
571
+ if (ref.resourceId === '__schema__') {
572
+ return { isValid: true, reason: '' };
573
+ }
574
+ // Validate resource references
575
+ if (!context.availableReferences || !context.availableReferences[ref.resourceId]) {
576
+ return {
577
+ isValid: false,
578
+ reason: `Resource '${ref.resourceId}' not found in available references`
579
+ };
580
+ }
581
+ return { isValid: true, reason: '' };
582
+ }
583
+ }
584
+ /**
585
+ * Utility functions for magic proxy integration
586
+ */
587
+ export class MagicProxyUtils {
588
+ /**
589
+ * Check if a value contains any KubernetesRef objects
590
+ */
591
+ static containsKubernetesRefs(value) {
592
+ const analyzer = new MagicProxyAnalyzer();
593
+ const refs = analyzer.detectKubernetesRefs(value);
594
+ return refs.length > 0;
595
+ }
596
+ /**
597
+ * Extract all KubernetesRef objects from a value
598
+ */
599
+ static extractKubernetesRefs(value) {
600
+ const analyzer = new MagicProxyAnalyzer();
601
+ return analyzer.detectKubernetesRefs(value);
602
+ }
603
+ /**
604
+ * Check if a value is a KubernetesRef object
605
+ */
606
+ static isKubernetesRef(value) {
607
+ return BrandChecks.isKubernetesRef(value) &&
608
+ typeof value.resourceId === 'string' &&
609
+ typeof value.fieldPath === 'string';
610
+ }
611
+ /**
612
+ * Check if a value is a schema reference
613
+ */
614
+ static isSchemaReference(value) {
615
+ return MagicProxyUtils.isKubernetesRef(value) && value.resourceId === '__schema__';
616
+ }
617
+ /**
618
+ * Check if a value is a resource reference
619
+ */
620
+ static isResourceReference(value) {
621
+ return MagicProxyUtils.isKubernetesRef(value) && value.resourceId !== '__schema__';
622
+ }
623
+ /**
624
+ * Get the CEL expression for a KubernetesRef
625
+ */
626
+ static getCelExpression(ref) {
627
+ if (ref.resourceId === '__schema__') {
628
+ return `schema.${ref.fieldPath}`;
629
+ }
630
+ else {
631
+ return `resources.${ref.resourceId}.${ref.fieldPath}`;
632
+ }
633
+ }
634
+ }
635
+ /**
636
+ * Global magic proxy analyzer instance
637
+ */
638
+ export const globalMagicProxyAnalyzer = new MagicProxyAnalyzer();
639
+ //# sourceMappingURL=magic-proxy-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"magic-proxy-analyzer.js","sourceRoot":"","sources":["../../../src/core/expressions/magic-proxy-analyzer.ts"],"names":[],"mappings":"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"}