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.
Files changed (197) hide show
  1. package/README.md +4 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/core/composition/imperative.d.ts.map +1 -1
  4. package/dist/core/composition/imperative.js +15 -2
  5. package/dist/core/composition/imperative.js.map +1 -1
  6. package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -1
  7. package/dist/core/composition/typekro-runtime/typekro-runtime.js +24 -25
  8. package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -1
  9. package/dist/core/dependencies/type-guards.d.ts.map +1 -1
  10. package/dist/core/dependencies/type-guards.js +7 -2
  11. package/dist/core/dependencies/type-guards.js.map +1 -1
  12. package/dist/core/deployment/engine.d.ts +0 -1
  13. package/dist/core/deployment/engine.d.ts.map +1 -1
  14. package/dist/core/deployment/engine.js +0 -1
  15. package/dist/core/deployment/engine.js.map +1 -1
  16. package/dist/core/errors.d.ts +85 -0
  17. package/dist/core/errors.d.ts.map +1 -1
  18. package/dist/core/errors.js +135 -0
  19. package/dist/core/errors.js.map +1 -1
  20. package/dist/core/expressions/analyzer.d.ts +584 -0
  21. package/dist/core/expressions/analyzer.d.ts.map +1 -0
  22. package/dist/core/expressions/analyzer.js +2956 -0
  23. package/dist/core/expressions/analyzer.js.map +1 -0
  24. package/dist/core/expressions/cache.d.ts +136 -0
  25. package/dist/core/expressions/cache.d.ts.map +1 -0
  26. package/dist/core/expressions/cache.js +347 -0
  27. package/dist/core/expressions/cache.js.map +1 -0
  28. package/dist/core/expressions/cel-conversion-engine.d.ts +126 -0
  29. package/dist/core/expressions/cel-conversion-engine.d.ts.map +1 -0
  30. package/dist/core/expressions/cel-conversion-engine.js +293 -0
  31. package/dist/core/expressions/cel-conversion-engine.js.map +1 -0
  32. package/dist/core/expressions/compile-time-validation.d.ts +270 -0
  33. package/dist/core/expressions/compile-time-validation.d.ts.map +1 -0
  34. package/dist/core/expressions/compile-time-validation.js +506 -0
  35. package/dist/core/expressions/compile-time-validation.js.map +1 -0
  36. package/dist/core/expressions/composition-integration.d.ts +315 -0
  37. package/dist/core/expressions/composition-integration.d.ts.map +1 -0
  38. package/dist/core/expressions/composition-integration.js +936 -0
  39. package/dist/core/expressions/composition-integration.js.map +1 -0
  40. package/dist/core/expressions/conditional-expression-processor.d.ts +154 -0
  41. package/dist/core/expressions/conditional-expression-processor.d.ts.map +1 -0
  42. package/dist/core/expressions/conditional-expression-processor.js +479 -0
  43. package/dist/core/expressions/conditional-expression-processor.js.map +1 -0
  44. package/dist/core/expressions/conditional-integration.d.ts +133 -0
  45. package/dist/core/expressions/conditional-integration.d.ts.map +1 -0
  46. package/dist/core/expressions/conditional-integration.js +293 -0
  47. package/dist/core/expressions/conditional-integration.js.map +1 -0
  48. package/dist/core/expressions/conditional-validation.d.ts +181 -0
  49. package/dist/core/expressions/conditional-validation.d.ts.map +1 -0
  50. package/dist/core/expressions/conditional-validation.js +460 -0
  51. package/dist/core/expressions/conditional-validation.js.map +1 -0
  52. package/dist/core/expressions/context-aware-generator.d.ts +127 -0
  53. package/dist/core/expressions/context-aware-generator.d.ts.map +1 -0
  54. package/dist/core/expressions/context-aware-generator.js +500 -0
  55. package/dist/core/expressions/context-aware-generator.js.map +1 -0
  56. package/dist/core/expressions/context-detector.d.ts +148 -0
  57. package/dist/core/expressions/context-detector.d.ts.map +1 -0
  58. package/dist/core/expressions/context-detector.js +546 -0
  59. package/dist/core/expressions/context-detector.js.map +1 -0
  60. package/dist/core/expressions/context-switcher.d.ts +185 -0
  61. package/dist/core/expressions/context-switcher.d.ts.map +1 -0
  62. package/dist/core/expressions/context-switcher.js +515 -0
  63. package/dist/core/expressions/context-switcher.js.map +1 -0
  64. package/dist/core/expressions/context-validator.d.ts +176 -0
  65. package/dist/core/expressions/context-validator.d.ts.map +1 -0
  66. package/dist/core/expressions/context-validator.js +452 -0
  67. package/dist/core/expressions/context-validator.js.map +1 -0
  68. package/dist/core/expressions/custom-context-manager.d.ts +194 -0
  69. package/dist/core/expressions/custom-context-manager.d.ts.map +1 -0
  70. package/dist/core/expressions/custom-context-manager.js +390 -0
  71. package/dist/core/expressions/custom-context-manager.js.map +1 -0
  72. package/dist/core/expressions/expression-proxy.d.ts +80 -0
  73. package/dist/core/expressions/expression-proxy.d.ts.map +1 -0
  74. package/dist/core/expressions/expression-proxy.js +227 -0
  75. package/dist/core/expressions/expression-proxy.js.map +1 -0
  76. package/dist/core/expressions/factory-integration.d.ts +132 -0
  77. package/dist/core/expressions/factory-integration.d.ts.map +1 -0
  78. package/dist/core/expressions/factory-integration.js +327 -0
  79. package/dist/core/expressions/factory-integration.js.map +1 -0
  80. package/dist/core/expressions/factory-pattern-handler.d.ts +88 -0
  81. package/dist/core/expressions/factory-pattern-handler.d.ts.map +1 -0
  82. package/dist/core/expressions/factory-pattern-handler.js +336 -0
  83. package/dist/core/expressions/factory-pattern-handler.js.map +1 -0
  84. package/dist/core/expressions/field-hydration-processor.d.ts +188 -0
  85. package/dist/core/expressions/field-hydration-processor.d.ts.map +1 -0
  86. package/dist/core/expressions/field-hydration-processor.js +562 -0
  87. package/dist/core/expressions/field-hydration-processor.js.map +1 -0
  88. package/dist/core/expressions/imperative-analyzer.d.ts +21 -0
  89. package/dist/core/expressions/imperative-analyzer.d.ts.map +1 -0
  90. package/dist/core/expressions/imperative-analyzer.js +343 -0
  91. package/dist/core/expressions/imperative-analyzer.js.map +1 -0
  92. package/dist/core/expressions/index.d.ts +54 -0
  93. package/dist/core/expressions/index.d.ts.map +1 -0
  94. package/dist/core/expressions/index.js +50 -0
  95. package/dist/core/expressions/index.js.map +1 -0
  96. package/dist/core/expressions/lazy-analysis.d.ts +1128 -0
  97. package/dist/core/expressions/lazy-analysis.d.ts.map +1 -0
  98. package/dist/core/expressions/lazy-analysis.js +2443 -0
  99. package/dist/core/expressions/lazy-analysis.js.map +1 -0
  100. package/dist/core/expressions/magic-assignable-analyzer.d.ts +123 -0
  101. package/dist/core/expressions/magic-assignable-analyzer.d.ts.map +1 -0
  102. package/dist/core/expressions/magic-assignable-analyzer.js +352 -0
  103. package/dist/core/expressions/magic-assignable-analyzer.js.map +1 -0
  104. package/dist/core/expressions/magic-proxy-analyzer.d.ts +206 -0
  105. package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +1 -0
  106. package/dist/core/expressions/magic-proxy-analyzer.js +639 -0
  107. package/dist/core/expressions/magic-proxy-analyzer.js.map +1 -0
  108. package/dist/core/expressions/magic-proxy-detector.d.ts +154 -0
  109. package/dist/core/expressions/magic-proxy-detector.d.ts.map +1 -0
  110. package/dist/core/expressions/magic-proxy-detector.js +242 -0
  111. package/dist/core/expressions/magic-proxy-detector.js.map +1 -0
  112. package/dist/core/expressions/migration-helpers.d.ts +133 -0
  113. package/dist/core/expressions/migration-helpers.d.ts.map +1 -0
  114. package/dist/core/expressions/migration-helpers.js +443 -0
  115. package/dist/core/expressions/migration-helpers.js.map +1 -0
  116. package/dist/core/expressions/optionality-handler.d.ts +503 -0
  117. package/dist/core/expressions/optionality-handler.d.ts.map +1 -0
  118. package/dist/core/expressions/optionality-handler.js +1306 -0
  119. package/dist/core/expressions/optionality-handler.js.map +1 -0
  120. package/dist/core/expressions/readiness-integration.d.ts +119 -0
  121. package/dist/core/expressions/readiness-integration.d.ts.map +1 -0
  122. package/dist/core/expressions/readiness-integration.js +386 -0
  123. package/dist/core/expressions/readiness-integration.js.map +1 -0
  124. package/dist/core/expressions/resource-analyzer.d.ts +486 -0
  125. package/dist/core/expressions/resource-analyzer.d.ts.map +1 -0
  126. package/dist/core/expressions/resource-analyzer.js +1086 -0
  127. package/dist/core/expressions/resource-analyzer.js.map +1 -0
  128. package/dist/core/expressions/resource-validation.d.ts +187 -0
  129. package/dist/core/expressions/resource-validation.d.ts.map +1 -0
  130. package/dist/core/expressions/resource-validation.js +552 -0
  131. package/dist/core/expressions/resource-validation.js.map +1 -0
  132. package/dist/core/expressions/runtime-error-mapper.d.ts +138 -0
  133. package/dist/core/expressions/runtime-error-mapper.d.ts.map +1 -0
  134. package/dist/core/expressions/runtime-error-mapper.js +412 -0
  135. package/dist/core/expressions/runtime-error-mapper.js.map +1 -0
  136. package/dist/core/expressions/source-map.d.ts +168 -0
  137. package/dist/core/expressions/source-map.d.ts.map +1 -0
  138. package/dist/core/expressions/source-map.js +350 -0
  139. package/dist/core/expressions/source-map.js.map +1 -0
  140. package/dist/core/expressions/status-builder-analyzer.d.ts +353 -0
  141. package/dist/core/expressions/status-builder-analyzer.d.ts.map +1 -0
  142. package/dist/core/expressions/status-builder-analyzer.js +1301 -0
  143. package/dist/core/expressions/status-builder-analyzer.js.map +1 -0
  144. package/dist/core/expressions/type-inference.d.ts +184 -0
  145. package/dist/core/expressions/type-inference.d.ts.map +1 -0
  146. package/dist/core/expressions/type-inference.js +838 -0
  147. package/dist/core/expressions/type-inference.js.map +1 -0
  148. package/dist/core/expressions/type-safety.d.ts +203 -0
  149. package/dist/core/expressions/type-safety.d.ts.map +1 -0
  150. package/dist/core/expressions/type-safety.js +442 -0
  151. package/dist/core/expressions/type-safety.js.map +1 -0
  152. package/dist/core/expressions/types.d.ts +282 -0
  153. package/dist/core/expressions/types.d.ts.map +1 -0
  154. package/dist/core/expressions/types.js +8 -0
  155. package/dist/core/expressions/types.js.map +1 -0
  156. package/dist/core/kubernetes/client-provider.js +2 -2
  157. package/dist/core/kubernetes/client-provider.js.map +1 -1
  158. package/dist/core/serialization/core.d.ts.map +1 -1
  159. package/dist/core/serialization/core.js +573 -9
  160. package/dist/core/serialization/core.js.map +1 -1
  161. package/dist/core/types/deployment.d.ts +4 -0
  162. package/dist/core/types/deployment.d.ts.map +1 -1
  163. package/dist/core/types/deployment.js.map +1 -1
  164. package/dist/core/types/index.d.ts +1 -0
  165. package/dist/core/types/index.d.ts.map +1 -1
  166. package/dist/core/types/index.js.map +1 -1
  167. package/dist/core.d.ts +1 -1
  168. package/dist/core.d.ts.map +1 -1
  169. package/dist/core.js +1 -1
  170. package/dist/core.js.map +1 -1
  171. package/dist/factories/helm/helm-release.d.ts.map +1 -1
  172. package/dist/factories/helm/helm-release.js +0 -5
  173. package/dist/factories/helm/helm-release.js.map +1 -1
  174. package/dist/factories/helm/types.d.ts +1 -1
  175. package/dist/factories/helm/types.d.ts.map +1 -1
  176. package/dist/factories/shared.d.ts.map +1 -1
  177. package/dist/factories/shared.js +21 -1
  178. package/dist/factories/shared.js.map +1 -1
  179. package/dist/factories/simple/index.d.ts +2 -2
  180. package/dist/factories/simple/index.d.ts.map +1 -1
  181. package/dist/factories/simple/workloads/deployment.d.ts +3 -3
  182. package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
  183. package/dist/factories/simple/workloads/deployment.js +37 -11
  184. package/dist/factories/simple/workloads/deployment.js.map +1 -1
  185. package/dist/index.d.ts +1 -1
  186. package/dist/index.d.ts.map +1 -1
  187. package/dist/index.js +1 -1
  188. package/dist/index.js.map +1 -1
  189. package/dist/utils/index.d.ts +1 -1
  190. package/dist/utils/index.d.ts.map +1 -1
  191. package/dist/utils/index.js +1 -1
  192. package/dist/utils/index.js.map +1 -1
  193. package/dist/utils/type-guards.d.ts +6 -0
  194. package/dist/utils/type-guards.d.ts.map +1 -1
  195. package/dist/utils/type-guards.js +25 -2
  196. package/dist/utils/type-guards.js.map +1 -1
  197. package/package.json +6 -1
@@ -0,0 +1,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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"}