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.
- 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,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expression Proxy System for JavaScript-to-CEL Conversion
|
|
3
|
+
*
|
|
4
|
+
* This module provides a proxy system that intercepts JavaScript operations on KubernetesRef objects
|
|
5
|
+
* and creates expression KubernetesRef objects instead of evaluating them immediately.
|
|
6
|
+
*
|
|
7
|
+
* The key insight is that we need to capture expressions BEFORE they're evaluated,
|
|
8
|
+
* not try to detect KubernetesRef objects after evaluation has already happened.
|
|
9
|
+
*/
|
|
10
|
+
import type { KubernetesRef } from '../types/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Expression KubernetesRef - represents a JavaScript expression that should be converted to CEL
|
|
13
|
+
*/
|
|
14
|
+
interface ExpressionKubernetesRef<T = any> extends KubernetesRef<T> {
|
|
15
|
+
readonly __expressionType: 'binary' | 'template' | 'conditional' | 'logical' | 'unary';
|
|
16
|
+
readonly __operator?: string;
|
|
17
|
+
readonly __left?: any;
|
|
18
|
+
readonly __right?: any;
|
|
19
|
+
readonly __template?: string;
|
|
20
|
+
readonly __templateParts?: any[];
|
|
21
|
+
readonly __condition?: any;
|
|
22
|
+
readonly __consequent?: any;
|
|
23
|
+
readonly __alternate?: any;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create an expression KubernetesRef for binary operations (===, !==, >, <, >=, <=, &&, ||)
|
|
27
|
+
*/
|
|
28
|
+
declare function createBinaryExpressionRef<T>(operator: string, left: any, right: any, resourceId?: string, fieldPath?: string): ExpressionKubernetesRef<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Create an expression KubernetesRef for template literals
|
|
31
|
+
*/
|
|
32
|
+
declare function createTemplateExpressionRef<T>(template: string, parts: any[], resourceId?: string, fieldPath?: string): ExpressionKubernetesRef<T>;
|
|
33
|
+
/**
|
|
34
|
+
* Create an expression KubernetesRef for conditional expressions (ternary operator)
|
|
35
|
+
*/
|
|
36
|
+
declare function createConditionalExpressionRef<T>(condition: any, consequent: any, alternate: any, resourceId?: string, fieldPath?: string): ExpressionKubernetesRef<T>;
|
|
37
|
+
/**
|
|
38
|
+
* Enhanced KubernetesRef that supports expression operations
|
|
39
|
+
*
|
|
40
|
+
* This proxy intercepts operations on KubernetesRef objects and creates
|
|
41
|
+
* expression KubernetesRef objects instead of evaluating them immediately.
|
|
42
|
+
*/
|
|
43
|
+
declare function createExpressionProxy<T>(ref: KubernetesRef<T>): KubernetesRef<T>;
|
|
44
|
+
/**
|
|
45
|
+
* Expression capture system that overrides global operators
|
|
46
|
+
*
|
|
47
|
+
* This is a more advanced approach that tries to capture expressions
|
|
48
|
+
* by overriding comparison and logical operators.
|
|
49
|
+
*/
|
|
50
|
+
export declare class ExpressionCaptureSystem {
|
|
51
|
+
private capturedExpressions;
|
|
52
|
+
private isCapturing;
|
|
53
|
+
/**
|
|
54
|
+
* Start capturing expressions
|
|
55
|
+
*/
|
|
56
|
+
startCapture(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Stop capturing expressions and return captured expressions
|
|
59
|
+
*/
|
|
60
|
+
stopCapture(): ExpressionKubernetesRef[];
|
|
61
|
+
/**
|
|
62
|
+
* Create a KubernetesRef that captures expressions when used in operations
|
|
63
|
+
*/
|
|
64
|
+
createCapturingRef<T>(resourceId: string, fieldPath: string): KubernetesRef<T>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Global expression capture system instance
|
|
68
|
+
*/
|
|
69
|
+
export declare const expressionCaptureSystem: ExpressionCaptureSystem;
|
|
70
|
+
/**
|
|
71
|
+
* Utility function to check if a value is an expression KubernetesRef
|
|
72
|
+
*/
|
|
73
|
+
export declare function isExpressionKubernetesRef(value: any): value is ExpressionKubernetesRef;
|
|
74
|
+
/**
|
|
75
|
+
* Convert an expression KubernetesRef to a CEL expression string
|
|
76
|
+
*/
|
|
77
|
+
export declare function expressionRefToCel(expr: ExpressionKubernetesRef): string;
|
|
78
|
+
export { createBinaryExpressionRef, createTemplateExpressionRef, createConditionalExpressionRef, createExpressionProxy };
|
|
79
|
+
export type { ExpressionKubernetesRef };
|
|
80
|
+
//# sourceMappingURL=expression-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-proxy.d.ts","sourceRoot":"","sources":["../../../src/core/expressions/expression-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AACH,UAAU,uBAAuB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;IACvF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;CAC5B;AAED;;GAEG;AACH,iBAAS,yBAAyB,CAAC,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,GAAG,EACV,UAAU,GAAE,MAAyB,EACrC,SAAS,GAAE,MAA8D,GACxE,uBAAuB,CAAC,CAAC,CAAC,CAgB5B;AAED;;GAEG;AACH,iBAAS,2BAA2B,CAAC,CAAC,EACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,GAAG,EAAE,EACZ,UAAU,GAAE,MAAyB,EACrC,SAAS,GAAE,MAAgC,GAC1C,uBAAuB,CAAC,CAAC,CAAC,CAe5B;AAED;;GAEG;AACH,iBAAS,8BAA8B,CAAC,CAAC,EACvC,SAAS,EAAE,GAAG,EACd,UAAU,EAAE,GAAG,EACf,SAAS,EAAE,GAAG,EACd,UAAU,GAAE,MAAyB,EACrC,SAAS,GAAE,MAA6E,GACvF,uBAAuB,CAAC,CAAC,CAAC,CAgB5B;AAED;;;;;GAKG;AACH,iBAAS,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAuBzE;AAED;;;;;GAKG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACH,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACH,WAAW,IAAI,uBAAuB,EAAE;IAOxC;;OAEG;IACH,kBAAkB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC;CA2C/E;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,yBAAgC,CAAC;AAErE;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,uBAAuB,CAEtF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAoCxE;AAyBD,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,8BAA8B,EAC9B,qBAAqB,EACtB,CAAC;AACF,YAAY,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expression Proxy System for JavaScript-to-CEL Conversion
|
|
3
|
+
*
|
|
4
|
+
* This module provides a proxy system that intercepts JavaScript operations on KubernetesRef objects
|
|
5
|
+
* and creates expression KubernetesRef objects instead of evaluating them immediately.
|
|
6
|
+
*
|
|
7
|
+
* The key insight is that we need to capture expressions BEFORE they're evaluated,
|
|
8
|
+
* not try to detect KubernetesRef objects after evaluation has already happened.
|
|
9
|
+
*/
|
|
10
|
+
import { KUBERNETES_REF_BRAND } from '../constants/brands.js';
|
|
11
|
+
import { isKubernetesRef } from '../../utils/type-guards.js';
|
|
12
|
+
/**
|
|
13
|
+
* Create an expression KubernetesRef for binary operations (===, !==, >, <, >=, <=, &&, ||)
|
|
14
|
+
*/
|
|
15
|
+
function createBinaryExpressionRef(operator, left, right, resourceId = '__expression__', fieldPath = `${left.fieldPath || 'unknown'} ${operator} ${right}`) {
|
|
16
|
+
const expressionRef = (() => {
|
|
17
|
+
throw new Error('Expression KubernetesRef should not be called as a function');
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperties(expressionRef, {
|
|
20
|
+
[KUBERNETES_REF_BRAND]: { value: true, enumerable: false },
|
|
21
|
+
resourceId: { value: resourceId, enumerable: false },
|
|
22
|
+
fieldPath: { value: fieldPath, enumerable: false },
|
|
23
|
+
__expressionType: { value: 'binary', enumerable: false },
|
|
24
|
+
__operator: { value: operator, enumerable: false },
|
|
25
|
+
__left: { value: left, enumerable: false },
|
|
26
|
+
__right: { value: right, enumerable: false }
|
|
27
|
+
});
|
|
28
|
+
return expressionRef;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create an expression KubernetesRef for template literals
|
|
32
|
+
*/
|
|
33
|
+
function createTemplateExpressionRef(template, parts, resourceId = '__expression__', fieldPath = `template(${template})`) {
|
|
34
|
+
const expressionRef = (() => {
|
|
35
|
+
throw new Error('Expression KubernetesRef should not be called as a function');
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperties(expressionRef, {
|
|
38
|
+
[KUBERNETES_REF_BRAND]: { value: true, enumerable: false },
|
|
39
|
+
resourceId: { value: resourceId, enumerable: false },
|
|
40
|
+
fieldPath: { value: fieldPath, enumerable: false },
|
|
41
|
+
__expressionType: { value: 'template', enumerable: false },
|
|
42
|
+
__template: { value: template, enumerable: false },
|
|
43
|
+
__templateParts: { value: parts, enumerable: false }
|
|
44
|
+
});
|
|
45
|
+
return expressionRef;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create an expression KubernetesRef for conditional expressions (ternary operator)
|
|
49
|
+
*/
|
|
50
|
+
function createConditionalExpressionRef(condition, consequent, alternate, resourceId = '__expression__', fieldPath = `${condition.fieldPath || 'unknown'} ? ${consequent} : ${alternate}`) {
|
|
51
|
+
const expressionRef = (() => {
|
|
52
|
+
throw new Error('Expression KubernetesRef should not be called as a function');
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperties(expressionRef, {
|
|
55
|
+
[KUBERNETES_REF_BRAND]: { value: true, enumerable: false },
|
|
56
|
+
resourceId: { value: resourceId, enumerable: false },
|
|
57
|
+
fieldPath: { value: fieldPath, enumerable: false },
|
|
58
|
+
__expressionType: { value: 'conditional', enumerable: false },
|
|
59
|
+
__condition: { value: condition, enumerable: false },
|
|
60
|
+
__consequent: { value: consequent, enumerable: false },
|
|
61
|
+
__alternate: { value: alternate, enumerable: false }
|
|
62
|
+
});
|
|
63
|
+
return expressionRef;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Enhanced KubernetesRef that supports expression operations
|
|
67
|
+
*
|
|
68
|
+
* This proxy intercepts operations on KubernetesRef objects and creates
|
|
69
|
+
* expression KubernetesRef objects instead of evaluating them immediately.
|
|
70
|
+
*/
|
|
71
|
+
function createExpressionProxy(ref) {
|
|
72
|
+
return new Proxy(ref, {
|
|
73
|
+
get(target, prop, receiver) {
|
|
74
|
+
// Handle comparison operations
|
|
75
|
+
if (prop === Symbol.toPrimitive || prop === 'valueOf') {
|
|
76
|
+
return (hint) => {
|
|
77
|
+
if (hint === 'string') {
|
|
78
|
+
return `\${${target.resourceId}.${target.fieldPath}}`;
|
|
79
|
+
}
|
|
80
|
+
// For other hints, return the proxy itself to enable further operations
|
|
81
|
+
return receiver;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Handle toString for template literals
|
|
85
|
+
if (prop === 'toString') {
|
|
86
|
+
return () => `\${${target.resourceId}.${target.fieldPath}}`;
|
|
87
|
+
}
|
|
88
|
+
// Return the original property
|
|
89
|
+
return Reflect.get(target, prop, receiver);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Expression capture system that overrides global operators
|
|
95
|
+
*
|
|
96
|
+
* This is a more advanced approach that tries to capture expressions
|
|
97
|
+
* by overriding comparison and logical operators.
|
|
98
|
+
*/
|
|
99
|
+
export class ExpressionCaptureSystem {
|
|
100
|
+
capturedExpressions = [];
|
|
101
|
+
isCapturing = false;
|
|
102
|
+
/**
|
|
103
|
+
* Start capturing expressions
|
|
104
|
+
*/
|
|
105
|
+
startCapture() {
|
|
106
|
+
this.isCapturing = true;
|
|
107
|
+
this.capturedExpressions = [];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Stop capturing expressions and return captured expressions
|
|
111
|
+
*/
|
|
112
|
+
stopCapture() {
|
|
113
|
+
this.isCapturing = false;
|
|
114
|
+
const expressions = [...this.capturedExpressions];
|
|
115
|
+
this.capturedExpressions = [];
|
|
116
|
+
return expressions;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a KubernetesRef that captures expressions when used in operations
|
|
120
|
+
*/
|
|
121
|
+
createCapturingRef(resourceId, fieldPath) {
|
|
122
|
+
const ref = (() => {
|
|
123
|
+
throw new Error('KubernetesRef should not be called as a function');
|
|
124
|
+
});
|
|
125
|
+
Object.defineProperties(ref, {
|
|
126
|
+
[KUBERNETES_REF_BRAND]: { value: true, enumerable: false },
|
|
127
|
+
resourceId: { value: resourceId, enumerable: false },
|
|
128
|
+
fieldPath: { value: fieldPath, enumerable: false }
|
|
129
|
+
});
|
|
130
|
+
// Create a proxy that intercepts operations
|
|
131
|
+
return new Proxy(ref, {
|
|
132
|
+
get(target, prop, receiver) {
|
|
133
|
+
// Handle comparison operations by returning functions that create expression refs
|
|
134
|
+
if (prop === Symbol.toPrimitive || prop === 'valueOf') {
|
|
135
|
+
return (hint) => {
|
|
136
|
+
if (hint === 'string') {
|
|
137
|
+
// For template literals, return a string that can be detected
|
|
138
|
+
return `__KUBERNETES_REF_${resourceId}_${fieldPath}__`;
|
|
139
|
+
}
|
|
140
|
+
// For numeric comparisons, return a special object
|
|
141
|
+
return new Proxy({}, {
|
|
142
|
+
get(_, op) {
|
|
143
|
+
if (op === Symbol.toPrimitive) {
|
|
144
|
+
return () => receiver;
|
|
145
|
+
}
|
|
146
|
+
return receiver;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
if (prop === 'toString') {
|
|
152
|
+
return () => `__KUBERNETES_REF_${resourceId}_${fieldPath}__`;
|
|
153
|
+
}
|
|
154
|
+
// Return the original property
|
|
155
|
+
return Reflect.get(target, prop, receiver);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Global expression capture system instance
|
|
162
|
+
*/
|
|
163
|
+
export const expressionCaptureSystem = new ExpressionCaptureSystem();
|
|
164
|
+
/**
|
|
165
|
+
* Utility function to check if a value is an expression KubernetesRef
|
|
166
|
+
*/
|
|
167
|
+
export function isExpressionKubernetesRef(value) {
|
|
168
|
+
return isKubernetesRef(value) && '__expressionType' in value;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Convert an expression KubernetesRef to a CEL expression string
|
|
172
|
+
*/
|
|
173
|
+
export function expressionRefToCel(expr) {
|
|
174
|
+
switch (expr.__expressionType) {
|
|
175
|
+
case 'binary': {
|
|
176
|
+
const left = isKubernetesRef(expr.__left)
|
|
177
|
+
? `\${${expr.__left.resourceId}.${expr.__left.fieldPath}}`
|
|
178
|
+
: JSON.stringify(expr.__left);
|
|
179
|
+
const right = isKubernetesRef(expr.__right)
|
|
180
|
+
? `\${${expr.__right.resourceId}.${expr.__right.fieldPath}}`
|
|
181
|
+
: JSON.stringify(expr.__right);
|
|
182
|
+
// Map JavaScript operators to CEL operators
|
|
183
|
+
const celOperator = mapJavaScriptOperatorToCel(expr.__operator || '');
|
|
184
|
+
return `\${${left} ${celOperator} ${right}}`;
|
|
185
|
+
}
|
|
186
|
+
case 'template':
|
|
187
|
+
// Convert template literal to CEL template
|
|
188
|
+
return `\${${expr.__template}}`;
|
|
189
|
+
case 'conditional': {
|
|
190
|
+
const condition = isKubernetesRef(expr.__condition)
|
|
191
|
+
? `\${${expr.__condition.resourceId}.${expr.__condition.fieldPath}}`
|
|
192
|
+
: JSON.stringify(expr.__condition);
|
|
193
|
+
const consequent = isKubernetesRef(expr.__consequent)
|
|
194
|
+
? `\${${expr.__consequent.resourceId}.${expr.__consequent.fieldPath}}`
|
|
195
|
+
: JSON.stringify(expr.__consequent);
|
|
196
|
+
const alternate = isKubernetesRef(expr.__alternate)
|
|
197
|
+
? `\${${expr.__alternate.resourceId}.${expr.__alternate.fieldPath}}`
|
|
198
|
+
: JSON.stringify(expr.__alternate);
|
|
199
|
+
return `\${${condition} ? ${consequent} : ${alternate}}`;
|
|
200
|
+
}
|
|
201
|
+
default:
|
|
202
|
+
return `\${${expr.resourceId}.${expr.fieldPath}}`;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Map JavaScript operators to CEL operators
|
|
207
|
+
*/
|
|
208
|
+
function mapJavaScriptOperatorToCel(jsOperator) {
|
|
209
|
+
const operatorMap = {
|
|
210
|
+
'===': '==',
|
|
211
|
+
'!==': '!=',
|
|
212
|
+
'&&': '&&',
|
|
213
|
+
'||': '||',
|
|
214
|
+
'>': '>',
|
|
215
|
+
'<': '<',
|
|
216
|
+
'>=': '>=',
|
|
217
|
+
'<=': '<=',
|
|
218
|
+
'+': '+',
|
|
219
|
+
'-': '-',
|
|
220
|
+
'*': '*',
|
|
221
|
+
'/': '/',
|
|
222
|
+
'%': '%'
|
|
223
|
+
};
|
|
224
|
+
return operatorMap[jsOperator] || jsOperator;
|
|
225
|
+
}
|
|
226
|
+
export { createBinaryExpressionRef, createTemplateExpressionRef, createConditionalExpressionRef, createExpressionProxy };
|
|
227
|
+
//# sourceMappingURL=expression-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-proxy.js","sourceRoot":"","sources":["../../../src/core/expressions/expression-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory Integration for Expression Analysis
|
|
3
|
+
*
|
|
4
|
+
* This module provides integration between factory functions and the expression
|
|
5
|
+
* analysis system, enabling automatic detection and conversion of KubernetesRef
|
|
6
|
+
* objects in factory configurations.
|
|
7
|
+
*/
|
|
8
|
+
import type { MagicAssignable } from '../types/index.js';
|
|
9
|
+
import { type MagicProxyDetectionResult } from './magic-proxy-detector.js';
|
|
10
|
+
import type { ExpressionAnalysisResult, FactoryAnalysisResult, FactoryExpressionContext } from './types.js';
|
|
11
|
+
export type { ExpressionAnalysisResult, FactoryExpressionContext, FactoryAnalysisResult };
|
|
12
|
+
export interface FactoryAnalysisConfig {
|
|
13
|
+
/** Whether to enable expression analysis for this factory */
|
|
14
|
+
enableAnalysis?: boolean;
|
|
15
|
+
/** Factory type for analysis context */
|
|
16
|
+
factoryType?: 'direct' | 'kro';
|
|
17
|
+
/** Whether to include detailed debug information */
|
|
18
|
+
includeDebugInfo?: boolean;
|
|
19
|
+
/** Maximum depth for recursive analysis */
|
|
20
|
+
maxDepth?: number;
|
|
21
|
+
/** Whether to validate expression types */
|
|
22
|
+
validateTypes?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Configuration for factory expression analysis
|
|
26
|
+
*/
|
|
27
|
+
export interface FactoryAnalysisConfig {
|
|
28
|
+
/** Whether to enable expression analysis for this factory */
|
|
29
|
+
enableAnalysis?: boolean;
|
|
30
|
+
/** Factory type for context-aware analysis */
|
|
31
|
+
factoryType?: 'direct' | 'kro';
|
|
32
|
+
/** Whether to preserve static values without analysis */
|
|
33
|
+
preserveStatic?: boolean;
|
|
34
|
+
/** Maximum depth for recursive analysis */
|
|
35
|
+
maxDepth?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Result of factory configuration analysis
|
|
39
|
+
*/
|
|
40
|
+
export interface FactoryConfigAnalysisResult {
|
|
41
|
+
/** Whether the configuration contains KubernetesRef objects */
|
|
42
|
+
hasKubernetesRefs: boolean;
|
|
43
|
+
/** Analysis results for each field containing KubernetesRef objects */
|
|
44
|
+
fieldAnalysis: Record<string, ExpressionAnalysisResult>;
|
|
45
|
+
/** Suggested optimizations */
|
|
46
|
+
optimizations: string[];
|
|
47
|
+
/** Performance metrics */
|
|
48
|
+
metrics: {
|
|
49
|
+
analysisTimeMs: number;
|
|
50
|
+
fieldsAnalyzed: number;
|
|
51
|
+
referencesFound: number;
|
|
52
|
+
};
|
|
53
|
+
/** Magic proxy detection results */
|
|
54
|
+
magicProxyDetection?: MagicProxyDetectionResult;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Factory Expression Analyzer
|
|
58
|
+
*
|
|
59
|
+
* Analyzes factory configurations for KubernetesRef objects and provides
|
|
60
|
+
* context-aware expression handling recommendations.
|
|
61
|
+
*/
|
|
62
|
+
export declare class FactoryExpressionAnalyzer {
|
|
63
|
+
private resourceAnalyzer;
|
|
64
|
+
private contextDetector;
|
|
65
|
+
private contextAwareGenerator;
|
|
66
|
+
private magicProxyDetector;
|
|
67
|
+
private celConversionEngine;
|
|
68
|
+
constructor();
|
|
69
|
+
/**
|
|
70
|
+
* Analyze a factory configuration for KubernetesRef objects
|
|
71
|
+
*
|
|
72
|
+
* @param config - Factory configuration object
|
|
73
|
+
* @param context - Analysis context
|
|
74
|
+
* @param options - Analysis options
|
|
75
|
+
* @returns Analysis result
|
|
76
|
+
*/
|
|
77
|
+
analyzeFactoryConfig<T extends Record<string, any>>(config: T, context: FactoryExpressionContext, options?: FactoryAnalysisConfig): FactoryConfigAnalysisResult;
|
|
78
|
+
/**
|
|
79
|
+
* Process a factory configuration value, handling KubernetesRef objects appropriately
|
|
80
|
+
*
|
|
81
|
+
* @param value - Configuration value to process
|
|
82
|
+
* @param context - Factory context
|
|
83
|
+
* @param fieldPath - Path to the field being processed
|
|
84
|
+
* @param options - Processing options
|
|
85
|
+
* @returns Processed value
|
|
86
|
+
*/
|
|
87
|
+
processFactoryValue<T>(value: MagicAssignable<T>, context: FactoryExpressionContext, fieldPath: string, options?: {
|
|
88
|
+
enableCelConversion?: boolean;
|
|
89
|
+
}): T;
|
|
90
|
+
/**
|
|
91
|
+
* Create an enhanced factory function that includes expression analysis
|
|
92
|
+
*
|
|
93
|
+
* @param originalFactory - Original factory function
|
|
94
|
+
* @param factoryName - Name of the factory for logging
|
|
95
|
+
* @returns Enhanced factory function
|
|
96
|
+
*/
|
|
97
|
+
enhanceFactory<TConfig, TResource>(originalFactory: (config: TConfig) => TResource, factoryName: string): (config: TConfig, options?: FactoryAnalysisConfig) => TResource;
|
|
98
|
+
private analyzeConfigFields;
|
|
99
|
+
private analyzeConfigFieldsWithMagicProxy;
|
|
100
|
+
private generateOptimizations;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Global factory expression analyzer instance
|
|
104
|
+
*/
|
|
105
|
+
export declare const factoryExpressionAnalyzer: FactoryExpressionAnalyzer;
|
|
106
|
+
/**
|
|
107
|
+
* Utility function to enhance a factory function with expression analysis
|
|
108
|
+
*
|
|
109
|
+
* @param factory - Original factory function
|
|
110
|
+
* @param name - Factory name for logging
|
|
111
|
+
* @returns Enhanced factory function
|
|
112
|
+
*/
|
|
113
|
+
export declare function withExpressionAnalysis<TConfig, TResource>(factory: (config: TConfig) => TResource, name: string): (config: TConfig, options?: FactoryAnalysisConfig) => TResource;
|
|
114
|
+
/**
|
|
115
|
+
* Utility function to analyze a factory configuration
|
|
116
|
+
*
|
|
117
|
+
* @param config - Factory configuration
|
|
118
|
+
* @param context - Analysis context
|
|
119
|
+
* @param options - Analysis options
|
|
120
|
+
* @returns Analysis result
|
|
121
|
+
*/
|
|
122
|
+
export declare function analyzeFactoryConfig<T extends Record<string, any>>(config: T, context: FactoryExpressionContext, options?: FactoryAnalysisConfig): FactoryConfigAnalysisResult;
|
|
123
|
+
/**
|
|
124
|
+
* Utility function to process a factory value with KubernetesRef handling
|
|
125
|
+
*
|
|
126
|
+
* @param value - Value to process
|
|
127
|
+
* @param context - Factory context
|
|
128
|
+
* @param fieldPath - Field path for logging
|
|
129
|
+
* @returns Processed value
|
|
130
|
+
*/
|
|
131
|
+
export declare function processFactoryValue<T>(value: MagicAssignable<T>, context: FactoryExpressionContext, fieldPath: string): T;
|
|
132
|
+
//# sourceMappingURL=factory-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory-integration.d.ts","sourceRoot":"","sources":["../../../src/core/expressions/factory-integration.ts"],"names":[],"mappings":"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"}
|