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.
- package/README.md +4 -3
- package/dist/.tsbuildinfo +1 -1
- package/dist/core/composition/imperative.d.ts.map +1 -1
- package/dist/core/composition/imperative.js +15 -2
- package/dist/core/composition/imperative.js.map +1 -1
- package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -1
- package/dist/core/composition/typekro-runtime/typekro-runtime.js +24 -25
- package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -1
- package/dist/core/dependencies/type-guards.d.ts.map +1 -1
- package/dist/core/dependencies/type-guards.js +7 -2
- package/dist/core/dependencies/type-guards.js.map +1 -1
- package/dist/core/deployment/engine.d.ts +13 -1
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +48 -3
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/errors.d.ts +85 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +135 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/evaluation/cel-optimizer.d.ts.map +1 -1
- package/dist/core/evaluation/cel-optimizer.js +7 -13
- package/dist/core/evaluation/cel-optimizer.js.map +1 -1
- package/dist/core/expressions/analyzer.d.ts +584 -0
- package/dist/core/expressions/analyzer.d.ts.map +1 -0
- package/dist/core/expressions/analyzer.js +2956 -0
- package/dist/core/expressions/analyzer.js.map +1 -0
- package/dist/core/expressions/cache.d.ts +136 -0
- package/dist/core/expressions/cache.d.ts.map +1 -0
- package/dist/core/expressions/cache.js +347 -0
- package/dist/core/expressions/cache.js.map +1 -0
- package/dist/core/expressions/cel-conversion-engine.d.ts +126 -0
- package/dist/core/expressions/cel-conversion-engine.d.ts.map +1 -0
- package/dist/core/expressions/cel-conversion-engine.js +293 -0
- package/dist/core/expressions/cel-conversion-engine.js.map +1 -0
- package/dist/core/expressions/compile-time-validation.d.ts +270 -0
- package/dist/core/expressions/compile-time-validation.d.ts.map +1 -0
- package/dist/core/expressions/compile-time-validation.js +506 -0
- package/dist/core/expressions/compile-time-validation.js.map +1 -0
- package/dist/core/expressions/composition-integration.d.ts +315 -0
- package/dist/core/expressions/composition-integration.d.ts.map +1 -0
- package/dist/core/expressions/composition-integration.js +936 -0
- package/dist/core/expressions/composition-integration.js.map +1 -0
- package/dist/core/expressions/conditional-expression-processor.d.ts +154 -0
- package/dist/core/expressions/conditional-expression-processor.d.ts.map +1 -0
- package/dist/core/expressions/conditional-expression-processor.js +479 -0
- package/dist/core/expressions/conditional-expression-processor.js.map +1 -0
- package/dist/core/expressions/conditional-integration.d.ts +133 -0
- package/dist/core/expressions/conditional-integration.d.ts.map +1 -0
- package/dist/core/expressions/conditional-integration.js +293 -0
- package/dist/core/expressions/conditional-integration.js.map +1 -0
- package/dist/core/expressions/conditional-validation.d.ts +181 -0
- package/dist/core/expressions/conditional-validation.d.ts.map +1 -0
- package/dist/core/expressions/conditional-validation.js +460 -0
- package/dist/core/expressions/conditional-validation.js.map +1 -0
- package/dist/core/expressions/context-aware-generator.d.ts +127 -0
- package/dist/core/expressions/context-aware-generator.d.ts.map +1 -0
- package/dist/core/expressions/context-aware-generator.js +500 -0
- package/dist/core/expressions/context-aware-generator.js.map +1 -0
- package/dist/core/expressions/context-detector.d.ts +148 -0
- package/dist/core/expressions/context-detector.d.ts.map +1 -0
- package/dist/core/expressions/context-detector.js +546 -0
- package/dist/core/expressions/context-detector.js.map +1 -0
- package/dist/core/expressions/context-switcher.d.ts +185 -0
- package/dist/core/expressions/context-switcher.d.ts.map +1 -0
- package/dist/core/expressions/context-switcher.js +515 -0
- package/dist/core/expressions/context-switcher.js.map +1 -0
- package/dist/core/expressions/context-validator.d.ts +176 -0
- package/dist/core/expressions/context-validator.d.ts.map +1 -0
- package/dist/core/expressions/context-validator.js +452 -0
- package/dist/core/expressions/context-validator.js.map +1 -0
- package/dist/core/expressions/custom-context-manager.d.ts +194 -0
- package/dist/core/expressions/custom-context-manager.d.ts.map +1 -0
- package/dist/core/expressions/custom-context-manager.js +390 -0
- package/dist/core/expressions/custom-context-manager.js.map +1 -0
- package/dist/core/expressions/expression-proxy.d.ts +80 -0
- package/dist/core/expressions/expression-proxy.d.ts.map +1 -0
- package/dist/core/expressions/expression-proxy.js +227 -0
- package/dist/core/expressions/expression-proxy.js.map +1 -0
- package/dist/core/expressions/factory-integration.d.ts +132 -0
- package/dist/core/expressions/factory-integration.d.ts.map +1 -0
- package/dist/core/expressions/factory-integration.js +327 -0
- package/dist/core/expressions/factory-integration.js.map +1 -0
- package/dist/core/expressions/factory-pattern-handler.d.ts +88 -0
- package/dist/core/expressions/factory-pattern-handler.d.ts.map +1 -0
- package/dist/core/expressions/factory-pattern-handler.js +336 -0
- package/dist/core/expressions/factory-pattern-handler.js.map +1 -0
- package/dist/core/expressions/field-hydration-processor.d.ts +188 -0
- package/dist/core/expressions/field-hydration-processor.d.ts.map +1 -0
- package/dist/core/expressions/field-hydration-processor.js +562 -0
- package/dist/core/expressions/field-hydration-processor.js.map +1 -0
- package/dist/core/expressions/imperative-analyzer.d.ts +21 -0
- package/dist/core/expressions/imperative-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/imperative-analyzer.js +457 -0
- package/dist/core/expressions/imperative-analyzer.js.map +1 -0
- package/dist/core/expressions/index.d.ts +54 -0
- package/dist/core/expressions/index.d.ts.map +1 -0
- package/dist/core/expressions/index.js +50 -0
- package/dist/core/expressions/index.js.map +1 -0
- package/dist/core/expressions/lazy-analysis.d.ts +1128 -0
- package/dist/core/expressions/lazy-analysis.d.ts.map +1 -0
- package/dist/core/expressions/lazy-analysis.js +2443 -0
- package/dist/core/expressions/lazy-analysis.js.map +1 -0
- package/dist/core/expressions/magic-assignable-analyzer.d.ts +123 -0
- package/dist/core/expressions/magic-assignable-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/magic-assignable-analyzer.js +352 -0
- package/dist/core/expressions/magic-assignable-analyzer.js.map +1 -0
- package/dist/core/expressions/magic-proxy-analyzer.d.ts +206 -0
- package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy-analyzer.js +639 -0
- package/dist/core/expressions/magic-proxy-analyzer.js.map +1 -0
- package/dist/core/expressions/magic-proxy-detector.d.ts +154 -0
- package/dist/core/expressions/magic-proxy-detector.d.ts.map +1 -0
- package/dist/core/expressions/magic-proxy-detector.js +242 -0
- package/dist/core/expressions/magic-proxy-detector.js.map +1 -0
- package/dist/core/expressions/migration-helpers.d.ts +133 -0
- package/dist/core/expressions/migration-helpers.d.ts.map +1 -0
- package/dist/core/expressions/migration-helpers.js +443 -0
- package/dist/core/expressions/migration-helpers.js.map +1 -0
- package/dist/core/expressions/optionality-handler.d.ts +503 -0
- package/dist/core/expressions/optionality-handler.d.ts.map +1 -0
- package/dist/core/expressions/optionality-handler.js +1306 -0
- package/dist/core/expressions/optionality-handler.js.map +1 -0
- package/dist/core/expressions/readiness-integration.d.ts +119 -0
- package/dist/core/expressions/readiness-integration.d.ts.map +1 -0
- package/dist/core/expressions/readiness-integration.js +386 -0
- package/dist/core/expressions/readiness-integration.js.map +1 -0
- package/dist/core/expressions/resource-analyzer.d.ts +486 -0
- package/dist/core/expressions/resource-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/resource-analyzer.js +1086 -0
- package/dist/core/expressions/resource-analyzer.js.map +1 -0
- package/dist/core/expressions/resource-validation.d.ts +187 -0
- package/dist/core/expressions/resource-validation.d.ts.map +1 -0
- package/dist/core/expressions/resource-validation.js +552 -0
- package/dist/core/expressions/resource-validation.js.map +1 -0
- package/dist/core/expressions/runtime-error-mapper.d.ts +138 -0
- package/dist/core/expressions/runtime-error-mapper.d.ts.map +1 -0
- package/dist/core/expressions/runtime-error-mapper.js +412 -0
- package/dist/core/expressions/runtime-error-mapper.js.map +1 -0
- package/dist/core/expressions/source-map.d.ts +168 -0
- package/dist/core/expressions/source-map.d.ts.map +1 -0
- package/dist/core/expressions/source-map.js +350 -0
- package/dist/core/expressions/source-map.js.map +1 -0
- package/dist/core/expressions/status-builder-analyzer.d.ts +353 -0
- package/dist/core/expressions/status-builder-analyzer.d.ts.map +1 -0
- package/dist/core/expressions/status-builder-analyzer.js +1311 -0
- package/dist/core/expressions/status-builder-analyzer.js.map +1 -0
- package/dist/core/expressions/type-inference.d.ts +184 -0
- package/dist/core/expressions/type-inference.d.ts.map +1 -0
- package/dist/core/expressions/type-inference.js +838 -0
- package/dist/core/expressions/type-inference.js.map +1 -0
- package/dist/core/expressions/type-safety.d.ts +203 -0
- package/dist/core/expressions/type-safety.d.ts.map +1 -0
- package/dist/core/expressions/type-safety.js +442 -0
- package/dist/core/expressions/type-safety.js.map +1 -0
- package/dist/core/expressions/types.d.ts +282 -0
- package/dist/core/expressions/types.d.ts.map +1 -0
- package/dist/core/expressions/types.js +8 -0
- package/dist/core/expressions/types.js.map +1 -0
- package/dist/core/kubernetes/client-provider.js +2 -2
- package/dist/core/kubernetes/client-provider.js.map +1 -1
- package/dist/core/references/cel.d.ts +13 -1
- package/dist/core/references/cel.d.ts.map +1 -1
- package/dist/core/references/cel.js +50 -0
- package/dist/core/references/cel.js.map +1 -1
- package/dist/core/references/schema-proxy.d.ts.map +1 -1
- package/dist/core/references/schema-proxy.js +13 -8
- package/dist/core/references/schema-proxy.js.map +1 -1
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +573 -9
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/types/deployment.d.ts +7 -0
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/deployment.js +7 -0
- package/dist/core/types/deployment.js.map +1 -1
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/validation/cel-validator.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.js +4 -8
- package/dist/core/validation/cel-validator.js.map +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/factories/helm/helm-release.d.ts.map +1 -1
- package/dist/factories/helm/helm-release.js +0 -5
- package/dist/factories/helm/helm-release.js.map +1 -1
- package/dist/factories/helm/types.d.ts +1 -1
- package/dist/factories/helm/types.d.ts.map +1 -1
- package/dist/factories/index.js +1 -0
- package/dist/factories/index.js.map +1 -1
- package/dist/factories/shared.d.ts.map +1 -1
- package/dist/factories/shared.js +21 -1
- package/dist/factories/shared.js.map +1 -1
- package/dist/factories/simple/index.d.ts +2 -2
- package/dist/factories/simple/index.d.ts.map +1 -1
- package/dist/factories/simple/workloads/deployment.d.ts +3 -3
- package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
- package/dist/factories/simple/workloads/deployment.js +37 -11
- package/dist/factories/simple/workloads/deployment.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/type-guards.d.ts +6 -0
- package/dist/utils/type-guards.d.ts.map +1 -1
- package/dist/utils/type-guards.js +25 -2
- package/dist/utils/type-guards.js.map +1 -1
- 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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"}
|