typekro 0.2.1 → 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.
- 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 +0 -1
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +0 -1
- 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/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 +343 -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 +1301 -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/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 +4 -0
- package/dist/core/types/deployment.d.ts.map +1 -1
- 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.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/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,442 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type Safety Integration for JavaScript to CEL Expression Conversion
|
|
3
|
+
*
|
|
4
|
+
* This module provides TypeScript type system integration for validating
|
|
5
|
+
* JavaScript expressions during conversion to CEL. It ensures type safety
|
|
6
|
+
* throughout the conversion process and provides compile-time validation.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Type validation error
|
|
10
|
+
*/
|
|
11
|
+
export class TypeValidationError extends Error {
|
|
12
|
+
expression;
|
|
13
|
+
expectedType;
|
|
14
|
+
actualType;
|
|
15
|
+
location;
|
|
16
|
+
constructor(message, expression, expectedType, actualType, location) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.expression = expression;
|
|
19
|
+
this.expectedType = expectedType;
|
|
20
|
+
this.actualType = actualType;
|
|
21
|
+
this.location = location;
|
|
22
|
+
this.name = 'TypeValidationError';
|
|
23
|
+
}
|
|
24
|
+
static forTypeMismatch(expression, expectedType, actualType, location) {
|
|
25
|
+
return new TypeValidationError(`Type mismatch: expected ${expectedType.typeName}, got ${actualType.typeName}`, expression, expectedType, actualType, location);
|
|
26
|
+
}
|
|
27
|
+
static forUndefinedProperty(expression, propertyName, objectType, location) {
|
|
28
|
+
return new TypeValidationError(`Property '${propertyName}' does not exist on type '${objectType.typeName}'`, expression, { typeName: 'undefined', optional: false, nullable: false }, objectType, location);
|
|
29
|
+
}
|
|
30
|
+
static forInvalidOperation(expression, operation, leftType, rightType, location) {
|
|
31
|
+
return new TypeValidationError(`Cannot apply operator '${operation}' to types '${leftType.typeName}' and '${rightType.typeName}'`, expression, { typeName: 'boolean', optional: false, nullable: false }, { typeName: 'invalid', optional: false, nullable: false }, location);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Type validation warning
|
|
36
|
+
*/
|
|
37
|
+
export class TypeValidationWarning {
|
|
38
|
+
message;
|
|
39
|
+
expression;
|
|
40
|
+
location;
|
|
41
|
+
constructor(message, expression, location) {
|
|
42
|
+
this.message = message;
|
|
43
|
+
this.expression = expression;
|
|
44
|
+
this.location = location;
|
|
45
|
+
}
|
|
46
|
+
static forPotentialNullAccess(expression, location) {
|
|
47
|
+
return new TypeValidationWarning(`Potential null/undefined access - consider using optional chaining (?.)`, expression, location);
|
|
48
|
+
}
|
|
49
|
+
static forImplicitTypeCoercion(expression, fromType, toType, location) {
|
|
50
|
+
return new TypeValidationWarning(`Implicit type coercion from ${fromType} to ${toType}`, expression, location);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Type safety validator for JavaScript expressions
|
|
55
|
+
*/
|
|
56
|
+
export class ExpressionTypeValidator {
|
|
57
|
+
/**
|
|
58
|
+
* Validate the types in a JavaScript expression
|
|
59
|
+
*/
|
|
60
|
+
validateExpression(expression, availableTypes, expectedResultType) {
|
|
61
|
+
try {
|
|
62
|
+
// Parse the expression to understand its structure
|
|
63
|
+
const expressionType = this.inferExpressionType(expression, availableTypes);
|
|
64
|
+
const errors = [];
|
|
65
|
+
const warnings = [];
|
|
66
|
+
const suggestions = [];
|
|
67
|
+
// Validate against expected result type if provided
|
|
68
|
+
if (expectedResultType && !this.isTypeCompatible(expressionType, expectedResultType)) {
|
|
69
|
+
errors.push(TypeValidationError.forTypeMismatch(expression, expectedResultType, expressionType));
|
|
70
|
+
suggestions.push(this.suggestTypeConversion(expressionType, expectedResultType));
|
|
71
|
+
}
|
|
72
|
+
// Check for potential null/undefined access
|
|
73
|
+
if (this.hasNullableAccess(expression, availableTypes)) {
|
|
74
|
+
warnings.push(TypeValidationWarning.forPotentialNullAccess(expression));
|
|
75
|
+
suggestions.push('Consider using optional chaining (?.) for safer property access');
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
valid: errors.length === 0,
|
|
79
|
+
resultType: expressionType,
|
|
80
|
+
errors,
|
|
81
|
+
warnings,
|
|
82
|
+
suggestions
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
return {
|
|
87
|
+
valid: false,
|
|
88
|
+
errors: [new TypeValidationError(`Type validation failed: ${error instanceof Error ? error.message : String(error)}`, expression, { typeName: 'unknown', optional: false, nullable: false }, { typeName: 'unknown', optional: false, nullable: false })],
|
|
89
|
+
warnings: [],
|
|
90
|
+
suggestions: []
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Validate KubernetesRef types during conversion
|
|
96
|
+
*/
|
|
97
|
+
validateKubernetesRef(ref, availableResources, schemaProxy) {
|
|
98
|
+
const errors = [];
|
|
99
|
+
const warnings = [];
|
|
100
|
+
const suggestions = [];
|
|
101
|
+
try {
|
|
102
|
+
// Validate resource exists
|
|
103
|
+
if (ref.resourceId === '__schema__') {
|
|
104
|
+
if (!schemaProxy) {
|
|
105
|
+
errors.push(new TypeValidationError('Schema reference used but no schema proxy available', `${ref.resourceId}.${ref.fieldPath}`, { typeName: 'SchemaProxy', optional: false, nullable: false }, { typeName: 'undefined', optional: false, nullable: false }));
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Validate schema field path
|
|
109
|
+
const schemaType = this.extractSchemaType(schemaProxy, ref.fieldPath);
|
|
110
|
+
if (!schemaType) {
|
|
111
|
+
errors.push(TypeValidationError.forUndefinedProperty(`${ref.resourceId}.${ref.fieldPath}`, ref.fieldPath, { typeName: 'Schema', optional: false, nullable: false }));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Validate resource reference
|
|
117
|
+
const resource = availableResources[ref.resourceId];
|
|
118
|
+
if (!resource) {
|
|
119
|
+
errors.push(new TypeValidationError(`Resource '${ref.resourceId}' not found in available resources`, `${ref.resourceId}.${ref.fieldPath}`, { typeName: 'Enhanced', optional: false, nullable: false }, { typeName: 'undefined', optional: false, nullable: false }));
|
|
120
|
+
suggestions.push(`Available resources: ${Object.keys(availableResources).join(', ')}`);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
// Validate field path on resource
|
|
124
|
+
const fieldType = this.extractResourceFieldType(resource, ref.fieldPath);
|
|
125
|
+
if (!fieldType) {
|
|
126
|
+
errors.push(TypeValidationError.forUndefinedProperty(`${ref.resourceId}.${ref.fieldPath}`, ref.fieldPath, { typeName: resource.constructor.name, optional: false, nullable: false }));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
valid: errors.length === 0,
|
|
132
|
+
resultType: this.inferKubernetesRefType(ref),
|
|
133
|
+
errors,
|
|
134
|
+
warnings,
|
|
135
|
+
suggestions
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
return {
|
|
140
|
+
valid: false,
|
|
141
|
+
errors: [new TypeValidationError(`KubernetesRef validation failed: ${error instanceof Error ? error.message : String(error)}`, `${ref.resourceId}.${ref.fieldPath}`, { typeName: 'unknown', optional: false, nullable: false }, { typeName: 'unknown', optional: false, nullable: false })],
|
|
142
|
+
warnings: [],
|
|
143
|
+
suggestions: []
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Infer the TypeScript type of an expression
|
|
149
|
+
*/
|
|
150
|
+
inferExpressionType(expression, availableTypes) {
|
|
151
|
+
// Simple type inference based on expression patterns
|
|
152
|
+
// String literals
|
|
153
|
+
if (expression.match(/^["'`].*["'`]$/)) {
|
|
154
|
+
return { typeName: 'string', optional: false, nullable: false };
|
|
155
|
+
}
|
|
156
|
+
// Number literals
|
|
157
|
+
if (expression.match(/^\d+(\.\d+)?$/)) {
|
|
158
|
+
return { typeName: 'number', optional: false, nullable: false };
|
|
159
|
+
}
|
|
160
|
+
// Boolean literals
|
|
161
|
+
if (expression === 'true' || expression === 'false') {
|
|
162
|
+
return { typeName: 'boolean', optional: false, nullable: false };
|
|
163
|
+
}
|
|
164
|
+
// Null/undefined
|
|
165
|
+
if (expression === 'null' || expression === 'undefined') {
|
|
166
|
+
return { typeName: 'null', optional: false, nullable: true };
|
|
167
|
+
}
|
|
168
|
+
// Binary operations
|
|
169
|
+
if (expression.includes(' > ') || expression.includes(' < ') ||
|
|
170
|
+
expression.includes(' >= ') || expression.includes(' <= ') ||
|
|
171
|
+
expression.includes(' == ') || expression.includes(' != ') ||
|
|
172
|
+
expression.includes(' && ') || expression.includes(' || ')) {
|
|
173
|
+
return { typeName: 'boolean', optional: false, nullable: false };
|
|
174
|
+
}
|
|
175
|
+
// Template literals
|
|
176
|
+
if (expression.includes('${')) {
|
|
177
|
+
return { typeName: 'string', optional: false, nullable: false };
|
|
178
|
+
}
|
|
179
|
+
// Property access
|
|
180
|
+
if (expression.includes('.')) {
|
|
181
|
+
const parts = expression.split('.');
|
|
182
|
+
const rootPart = parts[0];
|
|
183
|
+
if (rootPart) {
|
|
184
|
+
const rootType = availableTypes[rootPart];
|
|
185
|
+
if (rootType) {
|
|
186
|
+
return this.followPropertyPath(rootType, parts.slice(1));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Variable reference
|
|
191
|
+
const variableType = availableTypes[expression];
|
|
192
|
+
if (variableType) {
|
|
193
|
+
return variableType;
|
|
194
|
+
}
|
|
195
|
+
// Default to unknown
|
|
196
|
+
return { typeName: 'unknown', optional: false, nullable: false };
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Check if two types are compatible
|
|
200
|
+
*/
|
|
201
|
+
isTypeCompatible(actualType, expectedType) {
|
|
202
|
+
// Exact match
|
|
203
|
+
if (actualType.typeName === expectedType.typeName) {
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
// Handle optionality
|
|
207
|
+
if (expectedType.optional && actualType.typeName === 'undefined') {
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
// Handle nullability
|
|
211
|
+
if (expectedType.nullable && actualType.typeName === 'null') {
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
// Handle union types
|
|
215
|
+
if (expectedType.unionTypes) {
|
|
216
|
+
return expectedType.unionTypes.some(unionType => this.isTypeCompatible(actualType, unionType));
|
|
217
|
+
}
|
|
218
|
+
// Handle type coercion for common cases
|
|
219
|
+
if (expectedType.typeName === 'string' &&
|
|
220
|
+
(actualType.typeName === 'number' || actualType.typeName === 'boolean')) {
|
|
221
|
+
return true; // Implicit string conversion
|
|
222
|
+
}
|
|
223
|
+
if (expectedType.typeName === 'boolean' && actualType.typeName !== 'void') {
|
|
224
|
+
return true; // Truthy/falsy conversion
|
|
225
|
+
}
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Follow a property path through a type definition
|
|
230
|
+
*/
|
|
231
|
+
followPropertyPath(rootType, path) {
|
|
232
|
+
let currentType = rootType;
|
|
233
|
+
for (const property of path) {
|
|
234
|
+
if (!currentType.properties || !currentType.properties[property]) {
|
|
235
|
+
return { typeName: 'unknown', optional: false, nullable: false };
|
|
236
|
+
}
|
|
237
|
+
currentType = currentType.properties[property];
|
|
238
|
+
}
|
|
239
|
+
return currentType;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Check if an expression has nullable property access
|
|
243
|
+
*/
|
|
244
|
+
hasNullableAccess(expression, availableTypes) {
|
|
245
|
+
// Look for property access without optional chaining on nullable types
|
|
246
|
+
const propertyAccesses = expression.match(/(\w+)\.(\w+)/g);
|
|
247
|
+
if (!propertyAccesses) {
|
|
248
|
+
// Check if the expression itself is a nullable/optional field
|
|
249
|
+
const fieldType = availableTypes[expression];
|
|
250
|
+
if (fieldType && (fieldType.nullable || fieldType.optional)) {
|
|
251
|
+
return true;
|
|
252
|
+
}
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
for (const access of propertyAccesses) {
|
|
256
|
+
const [object, property] = access.split('.');
|
|
257
|
+
if (object) {
|
|
258
|
+
const objectType = availableTypes[object];
|
|
259
|
+
if (objectType && (objectType.nullable || objectType.optional)) {
|
|
260
|
+
// Check if optional chaining is used
|
|
261
|
+
const optionalChainPattern = new RegExp(`${object}\\?\\.${property}`);
|
|
262
|
+
if (!optionalChainPattern.test(expression)) {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Suggest type conversion for incompatible types
|
|
272
|
+
*/
|
|
273
|
+
suggestTypeConversion(actualType, expectedType) {
|
|
274
|
+
if (expectedType.typeName === 'string') {
|
|
275
|
+
return `Convert to string using String(${actualType.typeName}) or template literal`;
|
|
276
|
+
}
|
|
277
|
+
if (expectedType.typeName === 'number') {
|
|
278
|
+
return `Convert to number using Number(${actualType.typeName}) or parseInt/parseFloat`;
|
|
279
|
+
}
|
|
280
|
+
if (expectedType.typeName === 'boolean') {
|
|
281
|
+
return `Convert to boolean using Boolean(${actualType.typeName}) or !! operator`;
|
|
282
|
+
}
|
|
283
|
+
return `Ensure the expression returns type '${expectedType.typeName}'`;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Extract type information from schema proxy
|
|
287
|
+
*/
|
|
288
|
+
extractSchemaType(_schemaProxy, _fieldPath) {
|
|
289
|
+
// This would integrate with the actual schema type system
|
|
290
|
+
// For now, return a placeholder
|
|
291
|
+
return { typeName: 'unknown', optional: false, nullable: false };
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Extract type information from resource field
|
|
295
|
+
*/
|
|
296
|
+
extractResourceFieldType(_resource, _fieldPath) {
|
|
297
|
+
// This would integrate with the Enhanced type system
|
|
298
|
+
// For now, return a placeholder
|
|
299
|
+
return { typeName: 'unknown', optional: false, nullable: false };
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Infer the type of a KubernetesRef
|
|
303
|
+
*/
|
|
304
|
+
inferKubernetesRefType(ref) {
|
|
305
|
+
// Use the _type property if available
|
|
306
|
+
if (ref._type) {
|
|
307
|
+
return this.convertTypeToTypeInfo(ref._type);
|
|
308
|
+
}
|
|
309
|
+
// Default to unknown
|
|
310
|
+
return { typeName: 'unknown', optional: false, nullable: false };
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Convert a TypeScript type to TypeInfo
|
|
314
|
+
*/
|
|
315
|
+
convertTypeToTypeInfo(type) {
|
|
316
|
+
// This would integrate with the TypeScript compiler API
|
|
317
|
+
// For now, return a basic conversion
|
|
318
|
+
if (typeof type === 'string') {
|
|
319
|
+
return { typeName: type, optional: false, nullable: false };
|
|
320
|
+
}
|
|
321
|
+
return { typeName: 'unknown', optional: false, nullable: false };
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Type registry for managing available types in different contexts
|
|
326
|
+
*/
|
|
327
|
+
export class TypeRegistry {
|
|
328
|
+
types = new Map();
|
|
329
|
+
resourceTypes = new Map();
|
|
330
|
+
schemaTypes = new Map();
|
|
331
|
+
/**
|
|
332
|
+
* Register a type in the registry
|
|
333
|
+
*/
|
|
334
|
+
registerType(name, typeInfo) {
|
|
335
|
+
this.types.set(name, typeInfo);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Register a resource type
|
|
339
|
+
*/
|
|
340
|
+
registerResourceType(resourceId, typeInfo) {
|
|
341
|
+
this.resourceTypes.set(resourceId, typeInfo);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Register schema types
|
|
345
|
+
*/
|
|
346
|
+
registerSchemaType(fieldPath, typeInfo) {
|
|
347
|
+
this.schemaTypes.set(fieldPath, typeInfo);
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Get type information for a name
|
|
351
|
+
*/
|
|
352
|
+
getType(name) {
|
|
353
|
+
return this.types.get(name);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Get resource type information
|
|
357
|
+
*/
|
|
358
|
+
getResourceType(resourceId) {
|
|
359
|
+
return this.resourceTypes.get(resourceId);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Get schema type information
|
|
363
|
+
*/
|
|
364
|
+
getSchemaType(fieldPath) {
|
|
365
|
+
return this.schemaTypes.get(fieldPath);
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Get all available types for a context
|
|
369
|
+
*/
|
|
370
|
+
getAvailableTypes() {
|
|
371
|
+
const allTypes = {};
|
|
372
|
+
// Add basic types
|
|
373
|
+
this.types.forEach((typeInfo, name) => {
|
|
374
|
+
allTypes[name] = typeInfo;
|
|
375
|
+
});
|
|
376
|
+
// Add resource types with 'resources.' prefix
|
|
377
|
+
this.resourceTypes.forEach((typeInfo, resourceId) => {
|
|
378
|
+
allTypes[`resources.${resourceId}`] = typeInfo;
|
|
379
|
+
});
|
|
380
|
+
// Add schema types with 'schema.' prefix
|
|
381
|
+
this.schemaTypes.forEach((typeInfo, fieldPath) => {
|
|
382
|
+
allTypes[`schema.${fieldPath}`] = typeInfo;
|
|
383
|
+
});
|
|
384
|
+
return allTypes;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Clear all registered types
|
|
388
|
+
*/
|
|
389
|
+
clear() {
|
|
390
|
+
this.types.clear();
|
|
391
|
+
this.resourceTypes.clear();
|
|
392
|
+
this.schemaTypes.clear();
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Utility functions for type safety integration
|
|
397
|
+
*/
|
|
398
|
+
export class TypeSafetyUtils {
|
|
399
|
+
/**
|
|
400
|
+
* Create TypeInfo from ArkType definition
|
|
401
|
+
*/
|
|
402
|
+
static fromArkType(_arkType) {
|
|
403
|
+
// This would integrate with ArkType's type system
|
|
404
|
+
// For now, return a basic conversion
|
|
405
|
+
return {
|
|
406
|
+
typeName: 'unknown',
|
|
407
|
+
optional: false,
|
|
408
|
+
nullable: false
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Create TypeInfo for Enhanced resource types
|
|
413
|
+
*/
|
|
414
|
+
static fromEnhancedType(enhanced) {
|
|
415
|
+
// Extract type information from Enhanced wrapper
|
|
416
|
+
return {
|
|
417
|
+
typeName: enhanced.constructor.name,
|
|
418
|
+
optional: false,
|
|
419
|
+
nullable: false,
|
|
420
|
+
properties: {
|
|
421
|
+
metadata: { typeName: 'ObjectMeta', optional: true, nullable: false },
|
|
422
|
+
spec: { typeName: 'unknown', optional: true, nullable: false },
|
|
423
|
+
status: { typeName: 'unknown', optional: true, nullable: false }
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Validate that a CEL expression type matches expected type
|
|
429
|
+
*/
|
|
430
|
+
static validateCelExpressionType(_celExpression, expectedType) {
|
|
431
|
+
// This would validate the CEL expression type
|
|
432
|
+
// For now, return a basic validation
|
|
433
|
+
return {
|
|
434
|
+
valid: true,
|
|
435
|
+
resultType: expectedType,
|
|
436
|
+
errors: [],
|
|
437
|
+
warnings: [],
|
|
438
|
+
suggestions: []
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
//# sourceMappingURL=type-safety.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-safety.js","sourceRoot":"","sources":["../../../src/core/expressions/type-safety.ts"],"names":[],"mappings":"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"}
|