typekro 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/README.md +4 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/core/composition/imperative.d.ts.map +1 -1
  4. package/dist/core/composition/imperative.js +15 -2
  5. package/dist/core/composition/imperative.js.map +1 -1
  6. package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -1
  7. package/dist/core/composition/typekro-runtime/typekro-runtime.js +24 -25
  8. package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -1
  9. package/dist/core/dependencies/type-guards.d.ts.map +1 -1
  10. package/dist/core/dependencies/type-guards.js +7 -2
  11. package/dist/core/dependencies/type-guards.js.map +1 -1
  12. package/dist/core/deployment/engine.d.ts +0 -1
  13. package/dist/core/deployment/engine.d.ts.map +1 -1
  14. package/dist/core/deployment/engine.js +0 -1
  15. package/dist/core/deployment/engine.js.map +1 -1
  16. package/dist/core/errors.d.ts +85 -0
  17. package/dist/core/errors.d.ts.map +1 -1
  18. package/dist/core/errors.js +135 -0
  19. package/dist/core/errors.js.map +1 -1
  20. package/dist/core/expressions/analyzer.d.ts +584 -0
  21. package/dist/core/expressions/analyzer.d.ts.map +1 -0
  22. package/dist/core/expressions/analyzer.js +2956 -0
  23. package/dist/core/expressions/analyzer.js.map +1 -0
  24. package/dist/core/expressions/cache.d.ts +136 -0
  25. package/dist/core/expressions/cache.d.ts.map +1 -0
  26. package/dist/core/expressions/cache.js +347 -0
  27. package/dist/core/expressions/cache.js.map +1 -0
  28. package/dist/core/expressions/cel-conversion-engine.d.ts +126 -0
  29. package/dist/core/expressions/cel-conversion-engine.d.ts.map +1 -0
  30. package/dist/core/expressions/cel-conversion-engine.js +293 -0
  31. package/dist/core/expressions/cel-conversion-engine.js.map +1 -0
  32. package/dist/core/expressions/compile-time-validation.d.ts +270 -0
  33. package/dist/core/expressions/compile-time-validation.d.ts.map +1 -0
  34. package/dist/core/expressions/compile-time-validation.js +506 -0
  35. package/dist/core/expressions/compile-time-validation.js.map +1 -0
  36. package/dist/core/expressions/composition-integration.d.ts +315 -0
  37. package/dist/core/expressions/composition-integration.d.ts.map +1 -0
  38. package/dist/core/expressions/composition-integration.js +936 -0
  39. package/dist/core/expressions/composition-integration.js.map +1 -0
  40. package/dist/core/expressions/conditional-expression-processor.d.ts +154 -0
  41. package/dist/core/expressions/conditional-expression-processor.d.ts.map +1 -0
  42. package/dist/core/expressions/conditional-expression-processor.js +479 -0
  43. package/dist/core/expressions/conditional-expression-processor.js.map +1 -0
  44. package/dist/core/expressions/conditional-integration.d.ts +133 -0
  45. package/dist/core/expressions/conditional-integration.d.ts.map +1 -0
  46. package/dist/core/expressions/conditional-integration.js +293 -0
  47. package/dist/core/expressions/conditional-integration.js.map +1 -0
  48. package/dist/core/expressions/conditional-validation.d.ts +181 -0
  49. package/dist/core/expressions/conditional-validation.d.ts.map +1 -0
  50. package/dist/core/expressions/conditional-validation.js +460 -0
  51. package/dist/core/expressions/conditional-validation.js.map +1 -0
  52. package/dist/core/expressions/context-aware-generator.d.ts +127 -0
  53. package/dist/core/expressions/context-aware-generator.d.ts.map +1 -0
  54. package/dist/core/expressions/context-aware-generator.js +500 -0
  55. package/dist/core/expressions/context-aware-generator.js.map +1 -0
  56. package/dist/core/expressions/context-detector.d.ts +148 -0
  57. package/dist/core/expressions/context-detector.d.ts.map +1 -0
  58. package/dist/core/expressions/context-detector.js +546 -0
  59. package/dist/core/expressions/context-detector.js.map +1 -0
  60. package/dist/core/expressions/context-switcher.d.ts +185 -0
  61. package/dist/core/expressions/context-switcher.d.ts.map +1 -0
  62. package/dist/core/expressions/context-switcher.js +515 -0
  63. package/dist/core/expressions/context-switcher.js.map +1 -0
  64. package/dist/core/expressions/context-validator.d.ts +176 -0
  65. package/dist/core/expressions/context-validator.d.ts.map +1 -0
  66. package/dist/core/expressions/context-validator.js +452 -0
  67. package/dist/core/expressions/context-validator.js.map +1 -0
  68. package/dist/core/expressions/custom-context-manager.d.ts +194 -0
  69. package/dist/core/expressions/custom-context-manager.d.ts.map +1 -0
  70. package/dist/core/expressions/custom-context-manager.js +390 -0
  71. package/dist/core/expressions/custom-context-manager.js.map +1 -0
  72. package/dist/core/expressions/expression-proxy.d.ts +80 -0
  73. package/dist/core/expressions/expression-proxy.d.ts.map +1 -0
  74. package/dist/core/expressions/expression-proxy.js +227 -0
  75. package/dist/core/expressions/expression-proxy.js.map +1 -0
  76. package/dist/core/expressions/factory-integration.d.ts +132 -0
  77. package/dist/core/expressions/factory-integration.d.ts.map +1 -0
  78. package/dist/core/expressions/factory-integration.js +327 -0
  79. package/dist/core/expressions/factory-integration.js.map +1 -0
  80. package/dist/core/expressions/factory-pattern-handler.d.ts +88 -0
  81. package/dist/core/expressions/factory-pattern-handler.d.ts.map +1 -0
  82. package/dist/core/expressions/factory-pattern-handler.js +336 -0
  83. package/dist/core/expressions/factory-pattern-handler.js.map +1 -0
  84. package/dist/core/expressions/field-hydration-processor.d.ts +188 -0
  85. package/dist/core/expressions/field-hydration-processor.d.ts.map +1 -0
  86. package/dist/core/expressions/field-hydration-processor.js +562 -0
  87. package/dist/core/expressions/field-hydration-processor.js.map +1 -0
  88. package/dist/core/expressions/imperative-analyzer.d.ts +21 -0
  89. package/dist/core/expressions/imperative-analyzer.d.ts.map +1 -0
  90. package/dist/core/expressions/imperative-analyzer.js +343 -0
  91. package/dist/core/expressions/imperative-analyzer.js.map +1 -0
  92. package/dist/core/expressions/index.d.ts +54 -0
  93. package/dist/core/expressions/index.d.ts.map +1 -0
  94. package/dist/core/expressions/index.js +50 -0
  95. package/dist/core/expressions/index.js.map +1 -0
  96. package/dist/core/expressions/lazy-analysis.d.ts +1128 -0
  97. package/dist/core/expressions/lazy-analysis.d.ts.map +1 -0
  98. package/dist/core/expressions/lazy-analysis.js +2443 -0
  99. package/dist/core/expressions/lazy-analysis.js.map +1 -0
  100. package/dist/core/expressions/magic-assignable-analyzer.d.ts +123 -0
  101. package/dist/core/expressions/magic-assignable-analyzer.d.ts.map +1 -0
  102. package/dist/core/expressions/magic-assignable-analyzer.js +352 -0
  103. package/dist/core/expressions/magic-assignable-analyzer.js.map +1 -0
  104. package/dist/core/expressions/magic-proxy-analyzer.d.ts +206 -0
  105. package/dist/core/expressions/magic-proxy-analyzer.d.ts.map +1 -0
  106. package/dist/core/expressions/magic-proxy-analyzer.js +639 -0
  107. package/dist/core/expressions/magic-proxy-analyzer.js.map +1 -0
  108. package/dist/core/expressions/magic-proxy-detector.d.ts +154 -0
  109. package/dist/core/expressions/magic-proxy-detector.d.ts.map +1 -0
  110. package/dist/core/expressions/magic-proxy-detector.js +242 -0
  111. package/dist/core/expressions/magic-proxy-detector.js.map +1 -0
  112. package/dist/core/expressions/migration-helpers.d.ts +133 -0
  113. package/dist/core/expressions/migration-helpers.d.ts.map +1 -0
  114. package/dist/core/expressions/migration-helpers.js +443 -0
  115. package/dist/core/expressions/migration-helpers.js.map +1 -0
  116. package/dist/core/expressions/optionality-handler.d.ts +503 -0
  117. package/dist/core/expressions/optionality-handler.d.ts.map +1 -0
  118. package/dist/core/expressions/optionality-handler.js +1306 -0
  119. package/dist/core/expressions/optionality-handler.js.map +1 -0
  120. package/dist/core/expressions/readiness-integration.d.ts +119 -0
  121. package/dist/core/expressions/readiness-integration.d.ts.map +1 -0
  122. package/dist/core/expressions/readiness-integration.js +386 -0
  123. package/dist/core/expressions/readiness-integration.js.map +1 -0
  124. package/dist/core/expressions/resource-analyzer.d.ts +486 -0
  125. package/dist/core/expressions/resource-analyzer.d.ts.map +1 -0
  126. package/dist/core/expressions/resource-analyzer.js +1086 -0
  127. package/dist/core/expressions/resource-analyzer.js.map +1 -0
  128. package/dist/core/expressions/resource-validation.d.ts +187 -0
  129. package/dist/core/expressions/resource-validation.d.ts.map +1 -0
  130. package/dist/core/expressions/resource-validation.js +552 -0
  131. package/dist/core/expressions/resource-validation.js.map +1 -0
  132. package/dist/core/expressions/runtime-error-mapper.d.ts +138 -0
  133. package/dist/core/expressions/runtime-error-mapper.d.ts.map +1 -0
  134. package/dist/core/expressions/runtime-error-mapper.js +412 -0
  135. package/dist/core/expressions/runtime-error-mapper.js.map +1 -0
  136. package/dist/core/expressions/source-map.d.ts +168 -0
  137. package/dist/core/expressions/source-map.d.ts.map +1 -0
  138. package/dist/core/expressions/source-map.js +350 -0
  139. package/dist/core/expressions/source-map.js.map +1 -0
  140. package/dist/core/expressions/status-builder-analyzer.d.ts +353 -0
  141. package/dist/core/expressions/status-builder-analyzer.d.ts.map +1 -0
  142. package/dist/core/expressions/status-builder-analyzer.js +1301 -0
  143. package/dist/core/expressions/status-builder-analyzer.js.map +1 -0
  144. package/dist/core/expressions/type-inference.d.ts +184 -0
  145. package/dist/core/expressions/type-inference.d.ts.map +1 -0
  146. package/dist/core/expressions/type-inference.js +838 -0
  147. package/dist/core/expressions/type-inference.js.map +1 -0
  148. package/dist/core/expressions/type-safety.d.ts +203 -0
  149. package/dist/core/expressions/type-safety.d.ts.map +1 -0
  150. package/dist/core/expressions/type-safety.js +442 -0
  151. package/dist/core/expressions/type-safety.js.map +1 -0
  152. package/dist/core/expressions/types.d.ts +282 -0
  153. package/dist/core/expressions/types.d.ts.map +1 -0
  154. package/dist/core/expressions/types.js +8 -0
  155. package/dist/core/expressions/types.js.map +1 -0
  156. package/dist/core/kubernetes/client-provider.js +2 -2
  157. package/dist/core/kubernetes/client-provider.js.map +1 -1
  158. package/dist/core/serialization/core.d.ts.map +1 -1
  159. package/dist/core/serialization/core.js +573 -9
  160. package/dist/core/serialization/core.js.map +1 -1
  161. package/dist/core/types/deployment.d.ts +4 -0
  162. package/dist/core/types/deployment.d.ts.map +1 -1
  163. package/dist/core/types/deployment.js.map +1 -1
  164. package/dist/core/types/index.d.ts +1 -0
  165. package/dist/core/types/index.d.ts.map +1 -1
  166. package/dist/core/types/index.js.map +1 -1
  167. package/dist/core.d.ts +1 -1
  168. package/dist/core.d.ts.map +1 -1
  169. package/dist/core.js +1 -1
  170. package/dist/core.js.map +1 -1
  171. package/dist/factories/helm/helm-release.d.ts.map +1 -1
  172. package/dist/factories/helm/helm-release.js +0 -5
  173. package/dist/factories/helm/helm-release.js.map +1 -1
  174. package/dist/factories/helm/types.d.ts +1 -1
  175. package/dist/factories/helm/types.d.ts.map +1 -1
  176. package/dist/factories/shared.d.ts.map +1 -1
  177. package/dist/factories/shared.js +21 -1
  178. package/dist/factories/shared.js.map +1 -1
  179. package/dist/factories/simple/index.d.ts +2 -2
  180. package/dist/factories/simple/index.d.ts.map +1 -1
  181. package/dist/factories/simple/workloads/deployment.d.ts +3 -3
  182. package/dist/factories/simple/workloads/deployment.d.ts.map +1 -1
  183. package/dist/factories/simple/workloads/deployment.js +37 -11
  184. package/dist/factories/simple/workloads/deployment.js.map +1 -1
  185. package/dist/index.d.ts +1 -1
  186. package/dist/index.d.ts.map +1 -1
  187. package/dist/index.js +1 -1
  188. package/dist/index.js.map +1 -1
  189. package/dist/utils/index.d.ts +1 -1
  190. package/dist/utils/index.d.ts.map +1 -1
  191. package/dist/utils/index.js +1 -1
  192. package/dist/utils/index.js.map +1 -1
  193. package/dist/utils/type-guards.d.ts +6 -0
  194. package/dist/utils/type-guards.d.ts.map +1 -1
  195. package/dist/utils/type-guards.js +25 -2
  196. package/dist/utils/type-guards.js.map +1 -1
  197. package/package.json +6 -1
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Advanced caching system for JavaScript to CEL expression conversion
3
+ * Provides multi-level caching with performance monitoring and memory management
4
+ */
5
+ /**
6
+ * Advanced multi-level cache for expression conversion results
7
+ */
8
+ export class ExpressionCache {
9
+ cache = new Map();
10
+ astCache = new Map();
11
+ options;
12
+ cleanupTimer;
13
+ stats = {
14
+ totalRequests: 0,
15
+ cacheHits: 0,
16
+ cacheMisses: 0,
17
+ hitRatio: 0,
18
+ totalMemoryUsage: 0,
19
+ maxMemoryUsage: 0,
20
+ entryCount: 0,
21
+ averageRetrievalTime: 0,
22
+ totalRetrievalTime: 0,
23
+ astCacheHits: 0,
24
+ astCacheMisses: 0,
25
+ astEntryCount: 0,
26
+ astMemoryUsage: 0,
27
+ totalEvictions: 0,
28
+ lastCleanupTime: Date.now()
29
+ };
30
+ constructor(options = {}) {
31
+ this.options = {
32
+ maxEntries: options.maxEntries ?? 1000,
33
+ maxMemoryMB: options.maxMemoryMB ?? 50,
34
+ ttlMs: options.ttlMs ?? 5 * 60 * 1000, // 5 minutes
35
+ cleanupIntervalMs: options.cleanupIntervalMs ?? 0, // Disable by default to prevent hanging
36
+ enableASTCache: options.enableASTCache ?? true,
37
+ enableMetrics: options.enableMetrics ?? true
38
+ };
39
+ if (this.options.cleanupIntervalMs > 0) {
40
+ this.startCleanupTimer();
41
+ }
42
+ }
43
+ /**
44
+ * Get cached conversion result
45
+ */
46
+ get(expression, context) {
47
+ const startTime = this.options.enableMetrics ? performance.now() : 0;
48
+ try {
49
+ this.stats.totalRequests++;
50
+ const key = this.createCacheKey(expression, context);
51
+ const entry = this.cache.get(key);
52
+ if (!entry) {
53
+ this.stats.cacheMisses++;
54
+ return null;
55
+ }
56
+ // Check TTL
57
+ if (this.isExpired(entry)) {
58
+ this.cache.delete(key);
59
+ this.updateMemoryUsage();
60
+ this.stats.cacheMisses++;
61
+ return null;
62
+ }
63
+ // Update access metadata
64
+ entry.accessCount++;
65
+ entry.lastAccessed = Date.now();
66
+ this.stats.cacheHits++;
67
+ this.updateHitRatio();
68
+ return entry.result;
69
+ }
70
+ finally {
71
+ if (this.options.enableMetrics) {
72
+ const duration = performance.now() - startTime;
73
+ this.stats.totalRetrievalTime += duration;
74
+ this.stats.averageRetrievalTime = this.stats.totalRetrievalTime / this.stats.totalRequests;
75
+ }
76
+ }
77
+ }
78
+ /**
79
+ * Store conversion result in cache
80
+ */
81
+ set(expression, context, result) {
82
+ const key = this.createCacheKey(expression, context);
83
+ const size = this.estimateSize(result);
84
+ const entry = {
85
+ result,
86
+ timestamp: Date.now(),
87
+ accessCount: 1,
88
+ lastAccessed: Date.now(),
89
+ size
90
+ };
91
+ // Check if we need to evict entries before adding
92
+ this.ensureCapacity(size);
93
+ this.cache.set(key, entry);
94
+ this.updateMemoryUsage();
95
+ this.stats.entryCount = this.cache.size;
96
+ }
97
+ /**
98
+ * Get cached AST
99
+ */
100
+ getAST(expression) {
101
+ if (!this.options.enableASTCache) {
102
+ return null;
103
+ }
104
+ const entry = this.astCache.get(expression);
105
+ if (!entry) {
106
+ this.stats.astCacheMisses++;
107
+ return null;
108
+ }
109
+ // Check TTL
110
+ if (this.isExpired(entry)) {
111
+ this.astCache.delete(expression);
112
+ this.updateASTMemoryUsage();
113
+ this.stats.astCacheMisses++;
114
+ return null;
115
+ }
116
+ // Update access metadata
117
+ entry.accessCount++;
118
+ entry.lastAccessed = Date.now();
119
+ this.stats.astCacheHits++;
120
+ return entry.ast;
121
+ }
122
+ /**
123
+ * Store AST in cache
124
+ */
125
+ setAST(expression, ast) {
126
+ if (!this.options.enableASTCache) {
127
+ return;
128
+ }
129
+ const size = this.estimateASTSize(ast);
130
+ const entry = {
131
+ ast,
132
+ timestamp: Date.now(),
133
+ accessCount: 1,
134
+ lastAccessed: Date.now(),
135
+ size
136
+ };
137
+ this.astCache.set(expression, entry);
138
+ this.updateASTMemoryUsage();
139
+ this.stats.astEntryCount = this.astCache.size;
140
+ }
141
+ /**
142
+ * Clear all caches
143
+ */
144
+ clear() {
145
+ this.cache.clear();
146
+ this.astCache.clear();
147
+ this.resetStats();
148
+ }
149
+ /**
150
+ * Get cache statistics
151
+ */
152
+ getStats() {
153
+ return { ...this.stats };
154
+ }
155
+ /**
156
+ * Force cleanup of expired entries
157
+ */
158
+ cleanup() {
159
+ const _startTime = Date.now();
160
+ let evicted = 0;
161
+ // Cleanup main cache
162
+ for (const [key, entry] of this.cache.entries()) {
163
+ if (this.isExpired(entry)) {
164
+ this.cache.delete(key);
165
+ evicted++;
166
+ }
167
+ }
168
+ // Cleanup AST cache
169
+ for (const [key, entry] of this.astCache.entries()) {
170
+ if (this.isExpired(entry)) {
171
+ this.astCache.delete(key);
172
+ evicted++;
173
+ }
174
+ }
175
+ this.updateMemoryUsage();
176
+ this.updateASTMemoryUsage();
177
+ this.stats.totalEvictions += evicted;
178
+ this.stats.lastCleanupTime = Date.now();
179
+ this.stats.entryCount = this.cache.size;
180
+ this.stats.astEntryCount = this.astCache.size;
181
+ return evicted;
182
+ }
183
+ /**
184
+ * Destroy cache and cleanup resources
185
+ */
186
+ destroy() {
187
+ if (this.cleanupTimer) {
188
+ clearInterval(this.cleanupTimer);
189
+ this.cleanupTimer = undefined;
190
+ }
191
+ this.clear();
192
+ }
193
+ /**
194
+ * Create cache key from expression and context
195
+ */
196
+ createCacheKey(expression, context) {
197
+ const contextHash = this.hashContext(context);
198
+ return `${expression}:${contextHash}`;
199
+ }
200
+ /**
201
+ * Create hash of analysis context for cache key
202
+ */
203
+ hashContext(context) {
204
+ // Create a deterministic hash of the context
205
+ const contextData = {
206
+ type: context.type,
207
+ availableReferences: Object.keys(context.availableReferences || {}).sort(),
208
+ factoryType: context.factoryType || 'direct'
209
+ };
210
+ return this.simpleHash(JSON.stringify(contextData));
211
+ }
212
+ /**
213
+ * Simple hash function for strings
214
+ */
215
+ simpleHash(str) {
216
+ let hash = 0;
217
+ for (let i = 0; i < str.length; i++) {
218
+ const char = str.charCodeAt(i);
219
+ hash = ((hash << 5) - hash) + char;
220
+ hash = hash & hash; // Convert to 32-bit integer
221
+ }
222
+ return hash.toString(36);
223
+ }
224
+ /**
225
+ * Check if cache entry is expired
226
+ */
227
+ isExpired(entry) {
228
+ return Date.now() - entry.timestamp > this.options.ttlMs;
229
+ }
230
+ /**
231
+ * Estimate memory size of conversion result
232
+ */
233
+ estimateSize(result) {
234
+ // Rough estimation of memory usage
235
+ let size = 0;
236
+ if (result.celExpression) {
237
+ size += result.celExpression.expression.length * 2; // UTF-16
238
+ }
239
+ size += result.dependencies.reduce((acc, dep) => acc + (dep.resourceId?.length || 0) * 2 + (dep.fieldPath?.length || 0) * 2 + 50, 0);
240
+ size += result.sourceMap.length * 100; // Rough estimate for source map entries
241
+ size += result.errors.length * 200; // Rough estimate for error objects
242
+ return size;
243
+ }
244
+ /**
245
+ * Estimate memory size of AST
246
+ */
247
+ estimateASTSize(ast) {
248
+ // Very rough estimation - could be improved with recursive traversal
249
+ return JSON.stringify(ast).length * 2;
250
+ }
251
+ /**
252
+ * Ensure cache has capacity for new entry
253
+ */
254
+ ensureCapacity(newEntrySize) {
255
+ const maxMemoryBytes = this.options.maxMemoryMB * 1024 * 1024;
256
+ // Check memory limit
257
+ while (this.stats.totalMemoryUsage + newEntrySize > maxMemoryBytes && this.cache.size > 0) {
258
+ this.evictLRU();
259
+ }
260
+ // Check entry count limit
261
+ while (this.cache.size >= this.options.maxEntries) {
262
+ this.evictLRU();
263
+ }
264
+ }
265
+ /**
266
+ * Evict least recently used entry
267
+ */
268
+ evictLRU() {
269
+ let oldestKey = null;
270
+ let oldestTime = Date.now();
271
+ for (const [key, entry] of this.cache.entries()) {
272
+ if (entry.lastAccessed < oldestTime) {
273
+ oldestTime = entry.lastAccessed;
274
+ oldestKey = key;
275
+ }
276
+ }
277
+ if (oldestKey) {
278
+ this.cache.delete(oldestKey);
279
+ this.stats.totalEvictions++;
280
+ this.updateMemoryUsage();
281
+ }
282
+ }
283
+ /**
284
+ * Update memory usage statistics
285
+ */
286
+ updateMemoryUsage() {
287
+ let totalSize = 0;
288
+ for (const entry of this.cache.values()) {
289
+ totalSize += entry.size;
290
+ }
291
+ this.stats.totalMemoryUsage = totalSize;
292
+ this.stats.maxMemoryUsage = Math.max(this.stats.maxMemoryUsage, totalSize);
293
+ }
294
+ /**
295
+ * Update AST memory usage statistics
296
+ */
297
+ updateASTMemoryUsage() {
298
+ let totalSize = 0;
299
+ for (const entry of this.astCache.values()) {
300
+ totalSize += entry.size;
301
+ }
302
+ this.stats.astMemoryUsage = totalSize;
303
+ }
304
+ /**
305
+ * Update hit ratio statistics
306
+ */
307
+ updateHitRatio() {
308
+ this.stats.hitRatio = this.stats.totalRequests > 0
309
+ ? this.stats.cacheHits / this.stats.totalRequests
310
+ : 0;
311
+ }
312
+ /**
313
+ * Reset statistics
314
+ */
315
+ resetStats() {
316
+ this.stats = {
317
+ totalRequests: 0,
318
+ cacheHits: 0,
319
+ cacheMisses: 0,
320
+ hitRatio: 0,
321
+ totalMemoryUsage: 0,
322
+ maxMemoryUsage: 0,
323
+ entryCount: 0,
324
+ averageRetrievalTime: 0,
325
+ totalRetrievalTime: 0,
326
+ astCacheHits: 0,
327
+ astCacheMisses: 0,
328
+ astEntryCount: 0,
329
+ astMemoryUsage: 0,
330
+ totalEvictions: 0,
331
+ lastCleanupTime: Date.now()
332
+ };
333
+ }
334
+ /**
335
+ * Start automatic cleanup timer
336
+ */
337
+ startCleanupTimer() {
338
+ this.cleanupTimer = setInterval(() => {
339
+ this.cleanup();
340
+ }, this.options.cleanupIntervalMs);
341
+ }
342
+ }
343
+ /**
344
+ * Global cache instance for expression conversion
345
+ */
346
+ export const globalExpressionCache = new ExpressionCache();
347
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/core/expressions/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * CEL Conversion Engine for Factory Integration
3
+ *
4
+ * This module provides automatic conversion of JavaScript expressions containing
5
+ * KubernetesRef objects to appropriate CEL expressions for different deployment
6
+ * strategies.
7
+ */
8
+ import type { KubernetesRef, CelExpression } from '../types/index.js';
9
+ import { type MagicProxyRefInfo } from './magic-proxy-detector.js';
10
+ import type { FactoryExpressionContext } from './types.js';
11
+ /**
12
+ * Configuration for CEL conversion
13
+ */
14
+ export interface CelConversionConfig {
15
+ /** Factory type for context-aware conversion */
16
+ factoryType?: 'direct' | 'kro';
17
+ /** Whether to enable optimization */
18
+ enableOptimization?: boolean;
19
+ /** Whether to preserve static values */
20
+ preserveStatic?: boolean;
21
+ /** Whether to include debug information */
22
+ includeDebugInfo?: boolean;
23
+ /** Maximum depth for recursive conversion */
24
+ maxDepth?: number;
25
+ }
26
+ /**
27
+ * Result of CEL conversion
28
+ */
29
+ export interface CelConversionResult<T = any> {
30
+ /** Converted value */
31
+ converted: T;
32
+ /** Whether conversion was performed */
33
+ wasConverted: boolean;
34
+ /** Original value before conversion */
35
+ original: any;
36
+ /** Conversion strategy used */
37
+ strategy: 'direct' | 'cel-expression' | 'template-literal' | 'static';
38
+ /** Performance metrics */
39
+ metrics: {
40
+ conversionTimeMs: number;
41
+ referencesConverted: number;
42
+ expressionsGenerated: number;
43
+ };
44
+ /** Warnings generated during conversion */
45
+ warnings: string[];
46
+ /** Debug information if enabled */
47
+ debugInfo?: {
48
+ detectedReferences: MagicProxyRefInfo[];
49
+ conversionSteps: string[];
50
+ };
51
+ }
52
+ /**
53
+ * CEL Conversion Engine
54
+ *
55
+ * Automatically converts JavaScript expressions containing KubernetesRef objects
56
+ * to appropriate CEL expressions based on the factory type and usage context.
57
+ */
58
+ export declare class CelConversionEngine {
59
+ private magicProxyDetector;
60
+ constructor();
61
+ /**
62
+ * Convert a value containing KubernetesRef objects to appropriate format
63
+ *
64
+ * @param value - Value to convert
65
+ * @param context - Factory context
66
+ * @param config - Conversion configuration
67
+ * @returns Conversion result
68
+ */
69
+ convertValue<T>(value: T, context: FactoryExpressionContext, config?: CelConversionConfig): CelConversionResult<T>;
70
+ /**
71
+ * Convert a simple KubernetesRef to CEL expression
72
+ *
73
+ * @param ref - KubernetesRef to convert
74
+ * @param context - Factory context
75
+ * @returns CEL expression
76
+ */
77
+ convertKubernetesRefToCel<T>(ref: KubernetesRef<T>, context: FactoryExpressionContext): CelExpression<T>;
78
+ /**
79
+ * Check if a value needs CEL conversion
80
+ *
81
+ * @param value - Value to check
82
+ * @param maxDepth - Maximum depth to check
83
+ * @returns Whether conversion is needed
84
+ */
85
+ needsConversion(value: any, maxDepth?: number): boolean;
86
+ private performConversion;
87
+ /**
88
+ * Check if a KubernetesRef comes from an external reference
89
+ * External references are not registered in the current composition context
90
+ */
91
+ private isExternalReference;
92
+ private generateCelFromRef;
93
+ private isTemplateLiteralWithRefs;
94
+ private convertTemplateLiteral;
95
+ private convertObjectWithRefs;
96
+ }
97
+ /**
98
+ * Global CEL conversion engine instance
99
+ */
100
+ export declare const celConversionEngine: CelConversionEngine;
101
+ /**
102
+ * Utility function to convert a value with KubernetesRef objects
103
+ *
104
+ * @param value - Value to convert
105
+ * @param context - Factory context
106
+ * @param config - Conversion configuration
107
+ * @returns Conversion result
108
+ */
109
+ export declare function convertToCel<T>(value: T, context: FactoryExpressionContext, config?: CelConversionConfig): CelConversionResult<T>;
110
+ /**
111
+ * Utility function to convert a KubernetesRef to CEL expression
112
+ *
113
+ * @param ref - KubernetesRef to convert
114
+ * @param context - Factory context
115
+ * @returns CEL expression
116
+ */
117
+ export declare function kubernetesRefToCel<T>(ref: KubernetesRef<T>, context: FactoryExpressionContext): CelExpression<T>;
118
+ /**
119
+ * Utility function to check if a value needs CEL conversion
120
+ *
121
+ * @param value - Value to check
122
+ * @param maxDepth - Maximum depth to check
123
+ * @returns Whether conversion is needed
124
+ */
125
+ export declare function needsCelConversion(value: any, maxDepth?: number): boolean;
126
+ //# sourceMappingURL=cel-conversion-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cel-conversion-engine.d.ts","sourceRoot":"","sources":["../../../src/core/expressions/cel-conversion-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAK3D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,WAAW,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC/B,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wCAAwC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,GAAG;IAC1C,sBAAsB;IACtB,SAAS,EAAE,CAAC,CAAC;IACb,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,QAAQ,EAAE,GAAG,CAAC;IACd,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,QAAQ,CAAC;IACtE,0BAA0B;IAC1B,OAAO,EAAE;QACP,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mCAAmC;IACnC,SAAS,CAAC,EAAE;QACV,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;QACxC,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACH;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,kBAAkB,CAAqB;;IAM/C;;;;;;;OAOG;IACH,YAAY,CAAC,CAAC,EACZ,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,wBAAwB,EACjC,MAAM,GAAE,mBAAwB,GAC/B,mBAAmB,CAAC,CAAC,CAAC;IAgEzB;;;;;;OAMG;IACH,yBAAyB,CAAC,CAAC,EACzB,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,OAAO,EAAE,wBAAwB,GAChC,aAAa,CAAC,CAAC,CAAC;IAUnB;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,SAAK,GAAG,OAAO;IAInD,OAAO,CAAC,iBAAiB;IA0DzB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,qBAAqB;CAkE9B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,qBAA4B,CAAC;AAE7D;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,wBAAwB,EACjC,MAAM,CAAC,EAAE,mBAAmB,GAC3B,mBAAmB,CAAC,CAAC,CAAC,CAExB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,OAAO,EAAE,wBAAwB,GAChC,aAAa,CAAC,CAAC,CAAC,CAElB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAEzE"}