typekro 0.2.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/README.md +4 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/core/composition/imperative.d.ts.map +1 -1
  4. package/dist/core/composition/imperative.js +15 -2
  5. package/dist/core/composition/imperative.js.map +1 -1
  6. package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -1
  7. package/dist/core/composition/typekro-runtime/typekro-runtime.js +24 -25
  8. package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -1
  9. package/dist/core/dependencies/type-guards.d.ts.map +1 -1
  10. package/dist/core/dependencies/type-guards.js +7 -2
  11. package/dist/core/dependencies/type-guards.js.map +1 -1
  12. package/dist/core/deployment/engine.d.ts +13 -1
  13. package/dist/core/deployment/engine.d.ts.map +1 -1
  14. package/dist/core/deployment/engine.js +48 -3
  15. package/dist/core/deployment/engine.js.map +1 -1
  16. package/dist/core/errors.d.ts +85 -0
  17. package/dist/core/errors.d.ts.map +1 -1
  18. package/dist/core/errors.js +135 -0
  19. package/dist/core/errors.js.map +1 -1
  20. package/dist/core/evaluation/cel-optimizer.d.ts.map +1 -1
  21. package/dist/core/evaluation/cel-optimizer.js +7 -13
  22. package/dist/core/evaluation/cel-optimizer.js.map +1 -1
  23. package/dist/core/expressions/analyzer.d.ts +584 -0
  24. package/dist/core/expressions/analyzer.d.ts.map +1 -0
  25. package/dist/core/expressions/analyzer.js +2956 -0
  26. package/dist/core/expressions/analyzer.js.map +1 -0
  27. package/dist/core/expressions/cache.d.ts +136 -0
  28. package/dist/core/expressions/cache.d.ts.map +1 -0
  29. package/dist/core/expressions/cache.js +347 -0
  30. package/dist/core/expressions/cache.js.map +1 -0
  31. package/dist/core/expressions/cel-conversion-engine.d.ts +126 -0
  32. package/dist/core/expressions/cel-conversion-engine.d.ts.map +1 -0
  33. package/dist/core/expressions/cel-conversion-engine.js +293 -0
  34. package/dist/core/expressions/cel-conversion-engine.js.map +1 -0
  35. package/dist/core/expressions/compile-time-validation.d.ts +270 -0
  36. package/dist/core/expressions/compile-time-validation.d.ts.map +1 -0
  37. package/dist/core/expressions/compile-time-validation.js +506 -0
  38. package/dist/core/expressions/compile-time-validation.js.map +1 -0
  39. package/dist/core/expressions/composition-integration.d.ts +315 -0
  40. package/dist/core/expressions/composition-integration.d.ts.map +1 -0
  41. package/dist/core/expressions/composition-integration.js +936 -0
  42. package/dist/core/expressions/composition-integration.js.map +1 -0
  43. package/dist/core/expressions/conditional-expression-processor.d.ts +154 -0
  44. package/dist/core/expressions/conditional-expression-processor.d.ts.map +1 -0
  45. package/dist/core/expressions/conditional-expression-processor.js +479 -0
  46. package/dist/core/expressions/conditional-expression-processor.js.map +1 -0
  47. package/dist/core/expressions/conditional-integration.d.ts +133 -0
  48. package/dist/core/expressions/conditional-integration.d.ts.map +1 -0
  49. package/dist/core/expressions/conditional-integration.js +293 -0
  50. package/dist/core/expressions/conditional-integration.js.map +1 -0
  51. package/dist/core/expressions/conditional-validation.d.ts +181 -0
  52. package/dist/core/expressions/conditional-validation.d.ts.map +1 -0
  53. package/dist/core/expressions/conditional-validation.js +460 -0
  54. package/dist/core/expressions/conditional-validation.js.map +1 -0
  55. package/dist/core/expressions/context-aware-generator.d.ts +127 -0
  56. package/dist/core/expressions/context-aware-generator.d.ts.map +1 -0
  57. package/dist/core/expressions/context-aware-generator.js +500 -0
  58. package/dist/core/expressions/context-aware-generator.js.map +1 -0
  59. package/dist/core/expressions/context-detector.d.ts +148 -0
  60. package/dist/core/expressions/context-detector.d.ts.map +1 -0
  61. package/dist/core/expressions/context-detector.js +546 -0
  62. package/dist/core/expressions/context-detector.js.map +1 -0
  63. package/dist/core/expressions/context-switcher.d.ts +185 -0
  64. package/dist/core/expressions/context-switcher.d.ts.map +1 -0
  65. package/dist/core/expressions/context-switcher.js +515 -0
  66. package/dist/core/expressions/context-switcher.js.map +1 -0
  67. package/dist/core/expressions/context-validator.d.ts +176 -0
  68. package/dist/core/expressions/context-validator.d.ts.map +1 -0
  69. package/dist/core/expressions/context-validator.js +452 -0
  70. package/dist/core/expressions/context-validator.js.map +1 -0
  71. package/dist/core/expressions/custom-context-manager.d.ts +194 -0
  72. package/dist/core/expressions/custom-context-manager.d.ts.map +1 -0
  73. package/dist/core/expressions/custom-context-manager.js +390 -0
  74. package/dist/core/expressions/custom-context-manager.js.map +1 -0
  75. package/dist/core/expressions/expression-proxy.d.ts +80 -0
  76. package/dist/core/expressions/expression-proxy.d.ts.map +1 -0
  77. package/dist/core/expressions/expression-proxy.js +227 -0
  78. package/dist/core/expressions/expression-proxy.js.map +1 -0
  79. package/dist/core/expressions/factory-integration.d.ts +132 -0
  80. package/dist/core/expressions/factory-integration.d.ts.map +1 -0
  81. package/dist/core/expressions/factory-integration.js +327 -0
  82. package/dist/core/expressions/factory-integration.js.map +1 -0
  83. package/dist/core/expressions/factory-pattern-handler.d.ts +88 -0
  84. package/dist/core/expressions/factory-pattern-handler.d.ts.map +1 -0
  85. package/dist/core/expressions/factory-pattern-handler.js +336 -0
  86. package/dist/core/expressions/factory-pattern-handler.js.map +1 -0
  87. package/dist/core/expressions/field-hydration-processor.d.ts +188 -0
  88. package/dist/core/expressions/field-hydration-processor.d.ts.map +1 -0
  89. package/dist/core/expressions/field-hydration-processor.js +562 -0
  90. package/dist/core/expressions/field-hydration-processor.js.map +1 -0
  91. package/dist/core/expressions/imperative-analyzer.d.ts +21 -0
  92. package/dist/core/expressions/imperative-analyzer.d.ts.map +1 -0
  93. package/dist/core/expressions/imperative-analyzer.js +457 -0
  94. package/dist/core/expressions/imperative-analyzer.js.map +1 -0
  95. package/dist/core/expressions/index.d.ts +54 -0
  96. package/dist/core/expressions/index.d.ts.map +1 -0
  97. package/dist/core/expressions/index.js +50 -0
  98. package/dist/core/expressions/index.js.map +1 -0
  99. package/dist/core/expressions/lazy-analysis.d.ts +1128 -0
  100. package/dist/core/expressions/lazy-analysis.d.ts.map +1 -0
  101. package/dist/core/expressions/lazy-analysis.js +2443 -0
  102. package/dist/core/expressions/lazy-analysis.js.map +1 -0
  103. package/dist/core/expressions/magic-assignable-analyzer.d.ts +123 -0
  104. package/dist/core/expressions/magic-assignable-analyzer.d.ts.map +1 -0
  105. package/dist/core/expressions/magic-assignable-analyzer.js +352 -0
  106. package/dist/core/expressions/magic-assignable-analyzer.js.map +1 -0
  107. package/dist/core/expressions/magic-proxy-analyzer.d.ts +206 -0
  108. package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +1 -0
  109. package/dist/core/expressions/magic-proxy-analyzer.js +639 -0
  110. package/dist/core/expressions/magic-proxy-analyzer.js.map +1 -0
  111. package/dist/core/expressions/magic-proxy-detector.d.ts +154 -0
  112. package/dist/core/expressions/magic-proxy-detector.d.ts.map +1 -0
  113. package/dist/core/expressions/magic-proxy-detector.js +242 -0
  114. package/dist/core/expressions/magic-proxy-detector.js.map +1 -0
  115. package/dist/core/expressions/migration-helpers.d.ts +133 -0
  116. package/dist/core/expressions/migration-helpers.d.ts.map +1 -0
  117. package/dist/core/expressions/migration-helpers.js +443 -0
  118. package/dist/core/expressions/migration-helpers.js.map +1 -0
  119. package/dist/core/expressions/optionality-handler.d.ts +503 -0
  120. package/dist/core/expressions/optionality-handler.d.ts.map +1 -0
  121. package/dist/core/expressions/optionality-handler.js +1306 -0
  122. package/dist/core/expressions/optionality-handler.js.map +1 -0
  123. package/dist/core/expressions/readiness-integration.d.ts +119 -0
  124. package/dist/core/expressions/readiness-integration.d.ts.map +1 -0
  125. package/dist/core/expressions/readiness-integration.js +386 -0
  126. package/dist/core/expressions/readiness-integration.js.map +1 -0
  127. package/dist/core/expressions/resource-analyzer.d.ts +486 -0
  128. package/dist/core/expressions/resource-analyzer.d.ts.map +1 -0
  129. package/dist/core/expressions/resource-analyzer.js +1086 -0
  130. package/dist/core/expressions/resource-analyzer.js.map +1 -0
  131. package/dist/core/expressions/resource-validation.d.ts +187 -0
  132. package/dist/core/expressions/resource-validation.d.ts.map +1 -0
  133. package/dist/core/expressions/resource-validation.js +552 -0
  134. package/dist/core/expressions/resource-validation.js.map +1 -0
  135. package/dist/core/expressions/runtime-error-mapper.d.ts +138 -0
  136. package/dist/core/expressions/runtime-error-mapper.d.ts.map +1 -0
  137. package/dist/core/expressions/runtime-error-mapper.js +412 -0
  138. package/dist/core/expressions/runtime-error-mapper.js.map +1 -0
  139. package/dist/core/expressions/source-map.d.ts +168 -0
  140. package/dist/core/expressions/source-map.d.ts.map +1 -0
  141. package/dist/core/expressions/source-map.js +350 -0
  142. package/dist/core/expressions/source-map.js.map +1 -0
  143. package/dist/core/expressions/status-builder-analyzer.d.ts +353 -0
  144. package/dist/core/expressions/status-builder-analyzer.d.ts.map +1 -0
  145. package/dist/core/expressions/status-builder-analyzer.js +1311 -0
  146. package/dist/core/expressions/status-builder-analyzer.js.map +1 -0
  147. package/dist/core/expressions/type-inference.d.ts +184 -0
  148. package/dist/core/expressions/type-inference.d.ts.map +1 -0
  149. package/dist/core/expressions/type-inference.js +838 -0
  150. package/dist/core/expressions/type-inference.js.map +1 -0
  151. package/dist/core/expressions/type-safety.d.ts +203 -0
  152. package/dist/core/expressions/type-safety.d.ts.map +1 -0
  153. package/dist/core/expressions/type-safety.js +442 -0
  154. package/dist/core/expressions/type-safety.js.map +1 -0
  155. package/dist/core/expressions/types.d.ts +282 -0
  156. package/dist/core/expressions/types.d.ts.map +1 -0
  157. package/dist/core/expressions/types.js +8 -0
  158. package/dist/core/expressions/types.js.map +1 -0
  159. package/dist/core/kubernetes/client-provider.js +2 -2
  160. package/dist/core/kubernetes/client-provider.js.map +1 -1
  161. package/dist/core/references/cel.d.ts +13 -1
  162. package/dist/core/references/cel.d.ts.map +1 -1
  163. package/dist/core/references/cel.js +50 -0
  164. package/dist/core/references/cel.js.map +1 -1
  165. package/dist/core/references/schema-proxy.d.ts.map +1 -1
  166. package/dist/core/references/schema-proxy.js +13 -8
  167. package/dist/core/references/schema-proxy.js.map +1 -1
  168. package/dist/core/serialization/core.d.ts.map +1 -1
  169. package/dist/core/serialization/core.js +573 -9
  170. package/dist/core/serialization/core.js.map +1 -1
  171. package/dist/core/types/deployment.d.ts +7 -0
  172. package/dist/core/types/deployment.d.ts.map +1 -1
  173. package/dist/core/types/deployment.js +7 -0
  174. package/dist/core/types/deployment.js.map +1 -1
  175. package/dist/core/types/index.d.ts +1 -0
  176. package/dist/core/types/index.d.ts.map +1 -1
  177. package/dist/core/types/index.js.map +1 -1
  178. package/dist/core/validation/cel-validator.d.ts.map +1 -1
  179. package/dist/core/validation/cel-validator.js +4 -8
  180. package/dist/core/validation/cel-validator.js.map +1 -1
  181. package/dist/core.d.ts +1 -1
  182. package/dist/core.d.ts.map +1 -1
  183. package/dist/core.js +1 -1
  184. package/dist/core.js.map +1 -1
  185. package/dist/factories/helm/helm-release.d.ts.map +1 -1
  186. package/dist/factories/helm/helm-release.js +0 -5
  187. package/dist/factories/helm/helm-release.js.map +1 -1
  188. package/dist/factories/helm/types.d.ts +1 -1
  189. package/dist/factories/helm/types.d.ts.map +1 -1
  190. package/dist/factories/index.js +1 -0
  191. package/dist/factories/index.js.map +1 -1
  192. package/dist/factories/shared.d.ts.map +1 -1
  193. package/dist/factories/shared.js +21 -1
  194. package/dist/factories/shared.js.map +1 -1
  195. package/dist/factories/simple/index.d.ts +2 -2
  196. package/dist/factories/simple/index.d.ts.map +1 -1
  197. package/dist/factories/simple/workloads/deployment.d.ts +3 -3
  198. package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
  199. package/dist/factories/simple/workloads/deployment.js +37 -11
  200. package/dist/factories/simple/workloads/deployment.js.map +1 -1
  201. package/dist/index.d.ts +1 -1
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +1 -1
  204. package/dist/index.js.map +1 -1
  205. package/dist/utils/index.d.ts +1 -1
  206. package/dist/utils/index.d.ts.map +1 -1
  207. package/dist/utils/index.js +1 -1
  208. package/dist/utils/index.js.map +1 -1
  209. package/dist/utils/type-guards.d.ts +6 -0
  210. package/dist/utils/type-guards.d.ts.map +1 -1
  211. package/dist/utils/type-guards.js +25 -2
  212. package/dist/utils/type-guards.js.map +1 -1
  213. package/package.json +6 -1
@@ -0,0 +1,506 @@
1
+ /**
2
+ * Compile-Time Type Checking for Expression Compatibility
3
+ *
4
+ * This module provides compile-time type checking capabilities for JavaScript
5
+ * expressions that will be converted to CEL. It integrates with TypeScript's
6
+ * type system to validate expressions before runtime conversion.
7
+ */
8
+ /**
9
+ * Compile-time error
10
+ */
11
+ export class CompileTimeError extends Error {
12
+ errorType;
13
+ expression;
14
+ location;
15
+ constructor(message, errorType, expression, location) {
16
+ super(message);
17
+ this.errorType = errorType;
18
+ this.expression = expression;
19
+ this.location = location;
20
+ this.name = 'CompileTimeError';
21
+ }
22
+ static forTypeIncompatibility(expression, expectedType, actualType, location) {
23
+ return new CompileTimeError(`Type '${actualType}' is not assignable to type '${expectedType}'`, 'TYPE_INCOMPATIBILITY', expression, location);
24
+ }
25
+ static forUnsupportedSyntax(expression, syntaxFeature, location) {
26
+ return new CompileTimeError(`Unsupported syntax feature: ${syntaxFeature}`, 'UNSUPPORTED_SYNTAX', expression, location);
27
+ }
28
+ static forGenericConstraintViolation(expression, constraint, actualType, location) {
29
+ return new CompileTimeError(`Type '${actualType}' does not satisfy constraint '${constraint}'`, 'GENERIC_CONSTRAINT_VIOLATION', expression, location);
30
+ }
31
+ }
32
+ /**
33
+ * Compile-time warning
34
+ */
35
+ export class CompileTimeWarning {
36
+ message;
37
+ warningType;
38
+ expression;
39
+ location;
40
+ constructor(message, warningType, expression, location) {
41
+ this.message = message;
42
+ this.warningType = warningType;
43
+ this.expression = expression;
44
+ this.location = location;
45
+ }
46
+ static forPotentialRuntimeError(expression, reason, location) {
47
+ return new CompileTimeWarning(`Potential runtime error: ${reason}`, 'POTENTIAL_RUNTIME_ERROR', expression, location);
48
+ }
49
+ static forPerformanceImpact(expression, impact, location) {
50
+ return new CompileTimeWarning(`Performance impact: ${impact}`, 'PERFORMANCE_IMPACT', expression, location);
51
+ }
52
+ static forDeprecatedFeature(expression, feature, replacement, location) {
53
+ const message = replacement
54
+ ? `Deprecated feature '${feature}', use '${replacement}' instead`
55
+ : `Deprecated feature '${feature}'`;
56
+ return new CompileTimeWarning(message, 'DEPRECATED_FEATURE', expression, location);
57
+ }
58
+ }
59
+ /**
60
+ * Compile-time type checker
61
+ */
62
+ export class CompileTimeTypeChecker {
63
+ typeCache = new Map();
64
+ validationCache = new Map();
65
+ /**
66
+ * Validate expression compatibility at compile time
67
+ */
68
+ validateExpressionCompatibility(expression, context) {
69
+ const startTime = Date.now();
70
+ // Check cache first
71
+ const cacheKey = this.createCacheKey(expression, context);
72
+ const cached = this.validationCache.get(cacheKey);
73
+ if (cached && !context.skipCache) {
74
+ return cached;
75
+ }
76
+ const errors = [];
77
+ const warnings = [];
78
+ const compatibilityIssues = [];
79
+ const suggestions = [];
80
+ try {
81
+ // Extract compile-time type information
82
+ const compileTimeType = this.extractCompileTimeType(expression, context);
83
+ // Infer runtime type
84
+ const runtimeType = this.inferRuntimeType(expression, context);
85
+ // Check compatibility between compile-time and runtime types
86
+ const compatibility = this.checkTypeCompatibility(compileTimeType, runtimeType, context);
87
+ compatibilityIssues.push(...compatibility.issues);
88
+ // Validate against expected type if provided
89
+ if (context.expectedType) {
90
+ const expectedCompatibility = this.validateAgainstExpectedType(compileTimeType, context.expectedType, context);
91
+ compatibilityIssues.push(...expectedCompatibility.issues);
92
+ errors.push(...expectedCompatibility.errors);
93
+ warnings.push(...expectedCompatibility.warnings);
94
+ }
95
+ // Check for unsupported syntax
96
+ const syntaxValidation = this.validateSyntaxSupport(expression, context);
97
+ errors.push(...syntaxValidation.errors);
98
+ warnings.push(...syntaxValidation.warnings);
99
+ // Check for potential runtime issues
100
+ const runtimeValidation = this.validateRuntimeSafety(expression, compileTimeType, context);
101
+ warnings.push(...runtimeValidation.warnings);
102
+ suggestions.push(...runtimeValidation.suggestions);
103
+ // Generate suggestions for issues
104
+ suggestions.push(...this.generateSuggestions(compatibilityIssues, errors, warnings));
105
+ const validationTime = Date.now() - startTime;
106
+ const result = {
107
+ valid: errors.length === 0 && compatibilityIssues.filter(i => i.severity === 'error').length === 0,
108
+ compileTimeType,
109
+ runtimeType,
110
+ compatibilityIssues,
111
+ errors,
112
+ warnings,
113
+ suggestions,
114
+ metadata: {
115
+ strictMode: context.strictMode || false,
116
+ strictNullChecks: context.strictNullChecks || false,
117
+ validationTime,
118
+ typeChecksPerformed: 1,
119
+ complexityScore: this.calculateComplexityScore(expression)
120
+ }
121
+ };
122
+ // Cache the result
123
+ this.validationCache.set(cacheKey, result);
124
+ return result;
125
+ }
126
+ catch (_error) {
127
+ const validationError = CompileTimeError.forTypeIncompatibility(expression, 'unknown', 'unknown');
128
+ const result = {
129
+ valid: false,
130
+ compatibilityIssues,
131
+ errors: [validationError],
132
+ warnings,
133
+ suggestions,
134
+ metadata: {
135
+ strictMode: context.strictMode || false,
136
+ strictNullChecks: context.strictNullChecks || false,
137
+ validationTime: Date.now() - startTime,
138
+ typeChecksPerformed: 0,
139
+ complexityScore: 0
140
+ }
141
+ };
142
+ this.validationCache.set(cacheKey, result);
143
+ return result;
144
+ }
145
+ }
146
+ /**
147
+ * Validate multiple expressions for compatibility
148
+ */
149
+ validateExpressionsCompatibility(expressions, context) {
150
+ return expressions.map(expr => this.validateExpressionCompatibility(expr, context));
151
+ }
152
+ /**
153
+ * Validate that a KubernetesRef type is compatible with its usage
154
+ */
155
+ validateKubernetesRefCompatibility(ref, usageContext, validationContext) {
156
+ const _expression = `${ref.resourceId}.${ref.fieldPath}`;
157
+ // Extract the compile-time type of the KubernetesRef
158
+ const compileTimeType = this.extractKubernetesRefType(ref, usageContext);
159
+ // Check if the usage is compatible with the type
160
+ const compatibility = this.validateKubernetesRefUsage(ref, usageContext, validationContext);
161
+ return {
162
+ valid: compatibility.valid,
163
+ compileTimeType,
164
+ ...(compatibility.runtimeType && { runtimeType: compatibility.runtimeType }),
165
+ compatibilityIssues: compatibility.issues,
166
+ errors: compatibility.errors,
167
+ warnings: compatibility.warnings,
168
+ suggestions: compatibility.suggestions,
169
+ metadata: {
170
+ strictMode: validationContext.strictMode || false,
171
+ strictNullChecks: validationContext.strictNullChecks || false,
172
+ validationTime: 0,
173
+ typeChecksPerformed: 1,
174
+ complexityScore: 1
175
+ }
176
+ };
177
+ }
178
+ /**
179
+ * Extract compile-time type information from expression
180
+ */
181
+ extractCompileTimeType(expression, _context) {
182
+ // This would integrate with TypeScript compiler API
183
+ // For now, provide a basic implementation
184
+ // Check for literal types
185
+ if (expression.match(/^["'].*["']$/)) {
186
+ return {
187
+ typeName: 'string',
188
+ isUnion: false,
189
+ isGeneric: false,
190
+ optional: false,
191
+ nullable: false,
192
+ undefinable: false
193
+ };
194
+ }
195
+ if (expression.match(/^\d+(\.\d+)?$/)) {
196
+ return {
197
+ typeName: 'number',
198
+ isUnion: false,
199
+ isGeneric: false,
200
+ optional: false,
201
+ nullable: false,
202
+ undefinable: false
203
+ };
204
+ }
205
+ if (expression === 'true' || expression === 'false') {
206
+ return {
207
+ typeName: 'boolean',
208
+ isUnion: false,
209
+ isGeneric: false,
210
+ optional: false,
211
+ nullable: false,
212
+ undefinable: false
213
+ };
214
+ }
215
+ // Check for boolean expressions
216
+ if (this.isBooleanExpression(expression)) {
217
+ return {
218
+ typeName: 'boolean',
219
+ isUnion: false,
220
+ isGeneric: false,
221
+ optional: false,
222
+ nullable: false,
223
+ undefinable: false
224
+ };
225
+ }
226
+ // Check for numeric expressions
227
+ if (this.isNumericExpression(expression)) {
228
+ return {
229
+ typeName: 'number',
230
+ isUnion: false,
231
+ isGeneric: false,
232
+ optional: false,
233
+ nullable: false,
234
+ undefinable: false
235
+ };
236
+ }
237
+ // Check for resource references
238
+ if (expression.includes('resources.') || expression.includes('schema.')) {
239
+ return {
240
+ typeName: 'KubernetesRef<unknown>',
241
+ isUnion: false,
242
+ isGeneric: true,
243
+ genericParams: ['unknown'],
244
+ optional: false,
245
+ nullable: false,
246
+ undefinable: false
247
+ };
248
+ }
249
+ // Default to unknown
250
+ return {
251
+ typeName: 'unknown',
252
+ isUnion: false,
253
+ isGeneric: false,
254
+ optional: false,
255
+ nullable: false,
256
+ undefinable: false
257
+ };
258
+ }
259
+ /**
260
+ * Infer runtime type from compile-time information
261
+ */
262
+ inferRuntimeType(expression, context) {
263
+ // Convert compile-time type to runtime type
264
+ const compileTimeType = this.extractCompileTimeType(expression, context);
265
+ return {
266
+ typeName: compileTimeType.typeName,
267
+ optional: compileTimeType.optional,
268
+ nullable: compileTimeType.nullable
269
+ };
270
+ }
271
+ /**
272
+ * Check compatibility between compile-time and runtime types
273
+ */
274
+ checkTypeCompatibility(compileTimeType, runtimeType, _context) {
275
+ const issues = [];
276
+ // Check basic type compatibility
277
+ if (compileTimeType.typeName !== runtimeType.typeName &&
278
+ !this.areTypesCompatible(compileTimeType.typeName, runtimeType.typeName)) {
279
+ issues.push({
280
+ type: 'TYPE_MISMATCH',
281
+ description: `Compile-time type '${compileTimeType.typeName}' does not match runtime type '${runtimeType.typeName}'`,
282
+ expectedType: compileTimeType,
283
+ actualType: this.convertRuntimeToCompileTime(runtimeType),
284
+ severity: 'error'
285
+ });
286
+ }
287
+ // Check nullability compatibility
288
+ if (compileTimeType.nullable !== runtimeType.nullable) {
289
+ issues.push({
290
+ type: 'NULLABILITY_MISMATCH',
291
+ description: `Nullability mismatch between compile-time and runtime types`,
292
+ expectedType: compileTimeType,
293
+ actualType: this.convertRuntimeToCompileTime(runtimeType),
294
+ severity: 'warning'
295
+ });
296
+ }
297
+ // Check optionality compatibility
298
+ if (compileTimeType.optional !== runtimeType.optional) {
299
+ issues.push({
300
+ type: 'OPTIONALITY_MISMATCH',
301
+ description: `Optionality mismatch between compile-time and runtime types`,
302
+ expectedType: compileTimeType,
303
+ actualType: this.convertRuntimeToCompileTime(runtimeType),
304
+ severity: 'warning'
305
+ });
306
+ }
307
+ return { issues };
308
+ }
309
+ /**
310
+ * Validate against expected type
311
+ */
312
+ validateAgainstExpectedType(actualType, expectedType, _context) {
313
+ const issues = [];
314
+ const errors = [];
315
+ const warnings = [];
316
+ if (!this.areTypesCompatible(actualType.typeName, expectedType.typeName)) {
317
+ issues.push({
318
+ type: 'TYPE_MISMATCH',
319
+ description: `Type '${actualType.typeName}' is not assignable to type '${expectedType.typeName}'`,
320
+ expectedType,
321
+ actualType,
322
+ severity: 'error',
323
+ suggestedFix: `Convert to ${expectedType.typeName} or adjust the expected type`
324
+ });
325
+ errors.push(CompileTimeError.forTypeIncompatibility('', expectedType.typeName, actualType.typeName));
326
+ }
327
+ return { issues, errors, warnings };
328
+ }
329
+ /**
330
+ * Validate syntax support
331
+ */
332
+ validateSyntaxSupport(expression, _context) {
333
+ const errors = [];
334
+ const warnings = [];
335
+ // Check for unsupported syntax features
336
+ const unsupportedFeatures = [
337
+ { pattern: /async\s+/, feature: 'async/await' },
338
+ { pattern: /yield\s+/, feature: 'generators' },
339
+ { pattern: /class\s+/, feature: 'class declarations' },
340
+ { pattern: /function\*/, feature: 'generator functions' }
341
+ ];
342
+ for (const { pattern, feature } of unsupportedFeatures) {
343
+ if (pattern.test(expression)) {
344
+ errors.push(CompileTimeError.forUnsupportedSyntax(expression, feature));
345
+ }
346
+ }
347
+ // Check for potentially problematic features
348
+ const problematicFeatures = [
349
+ { pattern: /eval\(/, feature: 'eval() usage' },
350
+ { pattern: /new Function/, feature: 'Function constructor' },
351
+ { pattern: /with\s*\(/, feature: 'with statements' }
352
+ ];
353
+ for (const { pattern, feature } of problematicFeatures) {
354
+ if (pattern.test(expression)) {
355
+ warnings.push(CompileTimeWarning.forPotentialRuntimeError(expression, `${feature} may cause runtime issues`));
356
+ }
357
+ }
358
+ return { errors, warnings };
359
+ }
360
+ /**
361
+ * Validate runtime safety
362
+ */
363
+ validateRuntimeSafety(expression, compileTimeType, _context) {
364
+ const warnings = [];
365
+ const suggestions = [];
366
+ // Check for potential null/undefined access
367
+ if (expression.includes('.') && !expression.includes('?.')) {
368
+ // For expressions like "obj.prop.nested", assume the intermediate objects could be null
369
+ const propertyAccesses = expression.split('.').length - 1;
370
+ if (propertyAccesses > 1) {
371
+ warnings.push(CompileTimeWarning.forPotentialRuntimeError(expression, 'Property access on potentially null/undefined value'));
372
+ suggestions.push('Consider using optional chaining (?.) for safer property access');
373
+ }
374
+ if (compileTimeType.nullable || compileTimeType.undefinable) {
375
+ warnings.push(CompileTimeWarning.forPotentialRuntimeError(expression, 'Property access on potentially null/undefined value'));
376
+ suggestions.push('Consider using optional chaining (?.) for safer property access');
377
+ }
378
+ }
379
+ // Check for performance implications
380
+ if (expression.includes('find(') || expression.includes('filter(')) {
381
+ warnings.push(CompileTimeWarning.forPerformanceImpact(expression, 'Array methods may have performance implications in CEL'));
382
+ suggestions.push('Consider using simpler expressions when possible');
383
+ }
384
+ return { warnings, suggestions };
385
+ }
386
+ /**
387
+ * Extract KubernetesRef type information
388
+ */
389
+ extractKubernetesRefType(ref, _usageContext) {
390
+ return {
391
+ typeName: `KubernetesRef<${ref._type || 'unknown'}>`,
392
+ isUnion: false,
393
+ isGeneric: true,
394
+ genericParams: [String(ref._type || 'unknown')],
395
+ optional: false,
396
+ nullable: false,
397
+ undefinable: false
398
+ };
399
+ }
400
+ /**
401
+ * Validate KubernetesRef usage
402
+ */
403
+ validateKubernetesRefUsage(ref, usageContext, _validationContext) {
404
+ const issues = [];
405
+ const errors = [];
406
+ const warnings = [];
407
+ const suggestions = [];
408
+ // Validate that the resource exists
409
+ if (!usageContext.availableResources[ref.resourceId] && ref.resourceId !== '__schema__') {
410
+ errors.push(CompileTimeError.forTypeIncompatibility(`${ref.resourceId}.${ref.fieldPath}`, 'Enhanced<any, any>', 'undefined'));
411
+ }
412
+ // Validate field path
413
+ if (ref.fieldPath.includes('..') || ref.fieldPath.startsWith('.') || ref.fieldPath.endsWith('.')) {
414
+ errors.push(CompileTimeError.forUnsupportedSyntax(`${ref.resourceId}.${ref.fieldPath}`, 'invalid field path syntax'));
415
+ }
416
+ return {
417
+ valid: errors.length === 0,
418
+ runtimeType: { typeName: String(ref._type || 'unknown'), optional: false, nullable: false },
419
+ issues,
420
+ errors,
421
+ warnings,
422
+ suggestions
423
+ };
424
+ }
425
+ /**
426
+ * Utility methods
427
+ */
428
+ areTypesCompatible(type1, type2) {
429
+ if (type1 === type2)
430
+ return true;
431
+ if (type1 === 'any' || type2 === 'any')
432
+ return true;
433
+ if (type1 === 'unknown' || type2 === 'unknown')
434
+ return true;
435
+ // Handle basic type compatibility
436
+ const compatibilityMap = {
437
+ 'string': ['string', 'String'],
438
+ 'number': ['number', 'Number'],
439
+ 'boolean': ['boolean', 'Boolean'],
440
+ 'null': ['null', 'undefined'],
441
+ 'undefined': ['undefined', 'null']
442
+ };
443
+ return compatibilityMap[type1]?.includes(type2) || false;
444
+ }
445
+ convertRuntimeToCompileTime(runtimeType) {
446
+ return {
447
+ typeName: runtimeType.typeName,
448
+ isUnion: false,
449
+ isGeneric: false,
450
+ optional: runtimeType.optional,
451
+ nullable: runtimeType.nullable,
452
+ undefinable: runtimeType.optional
453
+ };
454
+ }
455
+ generateSuggestions(issues, errors, _warnings) {
456
+ const suggestions = [];
457
+ // Generate suggestions based on issues
458
+ for (const issue of issues) {
459
+ if (issue.suggestedFix) {
460
+ suggestions.push(issue.suggestedFix);
461
+ }
462
+ }
463
+ // Generate suggestions based on errors
464
+ for (const error of errors) {
465
+ if (error.errorType === 'TYPE_INCOMPATIBILITY') {
466
+ suggestions.push('Consider adding type assertions or converting the value to the expected type');
467
+ }
468
+ }
469
+ return [...new Set(suggestions)]; // Remove duplicates
470
+ }
471
+ calculateComplexityScore(expression) {
472
+ let score = 0;
473
+ // Basic complexity factors
474
+ score += (expression.match(/\./g) || []).length; // Property access
475
+ score += (expression.match(/\(/g) || []).length; // Function calls
476
+ score += (expression.match(/\?/g) || []).length; // Conditional operators
477
+ score += (expression.match(/&&|\|\|/g) || []).length; // Logical operators
478
+ return Math.min(10, score);
479
+ }
480
+ createCacheKey(expression, context) {
481
+ return `${expression}:${JSON.stringify({
482
+ strictMode: context.strictMode,
483
+ strictNullChecks: context.strictNullChecks,
484
+ expectedType: context.expectedType?.typeName
485
+ })}`;
486
+ }
487
+ isBooleanExpression(expression) {
488
+ // Boolean operators
489
+ const booleanOperators = ['&&', '||', '!', '==', '!=', '===', '!==', '>', '<', '>=', '<='];
490
+ return booleanOperators.some(op => expression.includes(op));
491
+ }
492
+ isNumericExpression(expression) {
493
+ // Numeric operators
494
+ const numericOperators = ['+', '-', '*', '/', '%'];
495
+ return numericOperators.some(op => expression.includes(op)) &&
496
+ !expression.includes('"') && !expression.includes("'");
497
+ }
498
+ /**
499
+ * Clear validation cache
500
+ */
501
+ clearCache() {
502
+ this.typeCache.clear();
503
+ this.validationCache.clear();
504
+ }
505
+ }
506
+ //# sourceMappingURL=compile-time-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-time-validation.js","sourceRoot":"","sources":["../../../src/core/expressions/compile-time-validation.ts"],"names":[],"mappings":"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"}