@telorun/kernel 0.2.4 → 0.2.6
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/dist/base-definition.d.ts +14 -0
- package/dist/base-definition.d.ts.map +1 -0
- package/dist/base-definition.js +17 -0
- package/dist/base-definition.js.map +1 -0
- package/dist/boot-context-registry.d.ts.map +1 -1
- package/dist/boot-context-registry.js +6 -6
- package/dist/boot-context-registry.js.map +1 -1
- package/dist/capabilities/capabilities/component.yaml +2 -1
- package/dist/capabilities/capabilities/executable.yaml +2 -1
- package/dist/capabilities/capabilities/handler.yaml +2 -1
- package/dist/capabilities/capabilities/listener.yaml +2 -1
- package/dist/capabilities/capabilities/provider.yaml +2 -1
- package/dist/capabilities/capabilities/template.yaml +2 -1
- package/dist/capabilities/capabilities/type.yaml +2 -1
- package/dist/capabilities/component.d.ts +3 -0
- package/dist/capabilities/component.d.ts.map +1 -0
- package/dist/capabilities/component.js +4 -0
- package/dist/capabilities/component.js.map +1 -0
- package/dist/capabilities/component.yaml +1 -1
- package/dist/capabilities/executable.d.ts +3 -0
- package/dist/capabilities/executable.d.ts.map +1 -0
- package/dist/capabilities/executable.js +5 -0
- package/dist/capabilities/executable.js.map +1 -0
- package/dist/capabilities/executable.yaml +1 -1
- package/dist/capabilities/handler.d.ts +3 -0
- package/dist/capabilities/handler.d.ts.map +1 -0
- package/dist/capabilities/handler.js +4 -0
- package/dist/capabilities/handler.js.map +1 -0
- package/dist/capabilities/handler.yaml +1 -1
- package/dist/capabilities/invokable.d.ts +3 -0
- package/dist/capabilities/invokable.d.ts.map +1 -0
- package/dist/capabilities/invokable.js +5 -0
- package/dist/capabilities/invokable.js.map +1 -0
- package/dist/capabilities/listener.d.ts +3 -0
- package/dist/capabilities/listener.d.ts.map +1 -0
- package/dist/capabilities/listener.js +5 -0
- package/dist/capabilities/listener.js.map +1 -0
- package/dist/capabilities/listener.yaml +1 -1
- package/dist/capabilities/mount.d.ts +3 -0
- package/dist/capabilities/mount.d.ts.map +1 -0
- package/dist/capabilities/mount.js +5 -0
- package/dist/capabilities/mount.js.map +1 -0
- package/dist/capabilities/provider.d.ts +3 -0
- package/dist/capabilities/provider.d.ts.map +1 -0
- package/dist/capabilities/provider.js +8 -0
- package/dist/capabilities/provider.js.map +1 -0
- package/dist/capabilities/provider.yaml +1 -1
- package/dist/capabilities/runnable.d.ts +3 -0
- package/dist/capabilities/runnable.d.ts.map +1 -0
- package/dist/capabilities/runnable.js +5 -0
- package/dist/capabilities/runnable.js.map +1 -0
- package/dist/capabilities/service.d.ts +3 -0
- package/dist/capabilities/service.d.ts.map +1 -0
- package/dist/capabilities/service.js +5 -0
- package/dist/capabilities/service.js.map +1 -0
- package/dist/capabilities/template.d.ts +3 -0
- package/dist/capabilities/template.d.ts.map +1 -0
- package/dist/capabilities/template.js +5 -0
- package/dist/capabilities/template.js.map +1 -0
- package/dist/capabilities/template.yaml +1 -1
- package/dist/capabilities/type.d.ts +3 -0
- package/dist/capabilities/type.d.ts.map +1 -0
- package/dist/capabilities/type.js +5 -0
- package/dist/capabilities/type.js.map +1 -0
- package/dist/capabilities/type.yaml +1 -1
- package/dist/controller-loader.d.ts +1 -1
- package/dist/controller-loader.d.ts.map +1 -1
- package/dist/controller-loader.js +6 -3
- package/dist/controller-loader.js.map +1 -1
- package/dist/controller-registry.d.ts +1 -6
- package/dist/controller-registry.d.ts.map +1 -1
- package/dist/controller-registry.js +11 -22
- package/dist/controller-registry.js.map +1 -1
- package/dist/controllers/capability/capability-controller.d.ts +0 -5
- package/dist/controllers/capability/capability-controller.d.ts.map +1 -1
- package/dist/controllers/capability/capability-controller.js +1 -5
- package/dist/controllers/capability/capability-controller.js.map +1 -1
- package/dist/controllers/module/import-controller.d.ts +35 -0
- package/dist/controllers/module/import-controller.d.ts.map +1 -0
- package/dist/controllers/module/import-controller.js +113 -0
- package/dist/controllers/module/import-controller.js.map +1 -0
- package/dist/controllers/module/module-controller.d.ts +2 -15
- package/dist/controllers/module/module-controller.d.ts.map +1 -1
- package/dist/controllers/module/module-controller.js +9 -90
- package/dist/controllers/module/module-controller.js.map +1 -1
- package/dist/controllers/resource-definition/resource-definition-controller.d.ts +3 -4
- package/dist/controllers/resource-definition/resource-definition-controller.d.ts.map +1 -1
- package/dist/controllers/resource-definition/resource-definition-controller.js +17 -11
- package/dist/controllers/resource-definition/resource-definition-controller.js.map +1 -1
- package/dist/controllers/resource-definition/resource-template-controller.d.ts +12 -0
- package/dist/controllers/resource-definition/resource-template-controller.d.ts.map +1 -0
- package/dist/controllers/resource-definition/resource-template-controller.js +112 -0
- package/dist/controllers/resource-definition/resource-template-controller.js.map +1 -0
- package/dist/evaluation-context.d.ts +91 -0
- package/dist/evaluation-context.d.ts.map +1 -0
- package/dist/evaluation-context.js +220 -0
- package/dist/evaluation-context.js.map +1 -0
- package/dist/execution-context.d.ts +13 -0
- package/dist/execution-context.d.ts.map +1 -0
- package/dist/execution-context.js +14 -0
- package/dist/execution-context.js.map +1 -0
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +31 -42
- package/dist/kernel.d.ts.map +1 -1
- package/dist/kernel.js +315 -371
- package/dist/kernel.js.map +1 -1
- package/dist/loader.d.ts +11 -10
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +50 -112
- package/dist/loader.js.map +1 -1
- package/dist/manifest-adapters/http-adapter.d.ts.map +1 -1
- package/dist/manifest-adapters/http-adapter.js +3 -1
- package/dist/manifest-adapters/http-adapter.js.map +1 -1
- package/dist/manifest-adapters/local-file-adapter.d.ts +7 -5
- package/dist/manifest-adapters/local-file-adapter.d.ts.map +1 -1
- package/dist/manifest-adapters/local-file-adapter.js +28 -24
- package/dist/manifest-adapters/local-file-adapter.js.map +1 -1
- package/dist/manifest-adapters/manifest-adapter.d.ts +2 -0
- package/dist/manifest-adapters/manifest-adapter.d.ts.map +1 -1
- package/dist/manifest-adapters/registry-adapter.d.ts.map +1 -1
- package/dist/manifest-adapters/registry-adapter.js +3 -1
- package/dist/manifest-adapters/registry-adapter.js.map +1 -1
- package/dist/manifest-schemas.d.ts +61 -49
- package/dist/manifest-schemas.d.ts.map +1 -1
- package/dist/manifest-schemas.js +58 -37
- package/dist/manifest-schemas.js.map +1 -1
- package/dist/module-context-registry.d.ts +48 -0
- package/dist/module-context-registry.d.ts.map +1 -0
- package/dist/module-context-registry.js +91 -0
- package/dist/module-context-registry.js.map +1 -0
- package/dist/module-context.d.ts +31 -0
- package/dist/module-context.d.ts.map +1 -0
- package/dist/module-context.js +67 -0
- package/dist/module-context.js.map +1 -0
- package/dist/registry.d.ts +1 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +3 -3
- package/dist/registry.js.map +1 -1
- package/dist/resource-context.d.ts +27 -10
- package/dist/resource-context.d.ts.map +1 -1
- package/dist/resource-context.js +100 -44
- package/dist/resource-context.js.map +1 -1
- package/dist/schema-valiator.d.ts.map +1 -1
- package/dist/schema-valiator.js +16 -3
- package/dist/schema-valiator.js.map +1 -1
- package/dist/snapshot-serializer.d.ts +1 -2
- package/dist/snapshot-serializer.d.ts.map +1 -1
- package/dist/snapshot-serializer.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +11 -9
- package/src/boot-context-registry.ts +169 -0
- package/src/controller-loader.ts +299 -0
- package/src/controller-registry.ts +191 -0
- package/src/controllers/module/import-controller.ts +143 -0
- package/src/controllers/module/module-controller.ts +16 -0
- package/src/controllers/resource-definition/resource-definition-controller.ts +86 -0
- package/src/controllers/resource-definition/resource-definition.json +18 -0
- package/src/controllers/resource-definition/resource-template-controller.ts +138 -0
- package/src/event-stream.ts +121 -0
- package/src/events.ts +99 -0
- package/src/index.ts +7 -0
- package/src/kernel.ts +647 -0
- package/src/loader.ts +134 -0
- package/src/manifest-adapters/local-file-adapter.ts +62 -0
- package/src/manifest-adapters/manifest-adapter.ts +35 -0
- package/src/manifest-schemas.ts +85 -0
- package/src/registry.ts +137 -0
- package/src/resource-context.ts +267 -0
- package/src/resource-uri.ts +200 -0
- package/src/schema-valiator.ts +68 -0
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -109
- package/dist/cli.js.map +0 -1
- package/dist/expressions.d.ts +0 -20
- package/dist/expressions.d.ts.map +0 -1
- package/dist/expressions.js +0 -253
- package/dist/expressions.js.map +0 -1
- package/dist/src/controllers/module/module.yaml +0 -32
- package/dist/template-definition.d.ts +0 -38
- package/dist/template-definition.d.ts.map +0 -1
- package/dist/template-definition.js +0 -26
- package/dist/template-definition.js.map +0 -1
- package/dist/template-expander.d.ts +0 -19
- package/dist/template-expander.d.ts.map +0 -1
- package/dist/template-expander.js +0 -425
- package/dist/template-expander.js.map +0 -1
|
@@ -1,425 +0,0 @@
|
|
|
1
|
-
import { evaluate } from "cel-js";
|
|
2
|
-
import { ResourceURI } from "./resource-uri.js";
|
|
3
|
-
import { extractDefaultsFromSchema, isTemplateDefinition } from "./template-definition.js";
|
|
4
|
-
const MAX_EXPANSION_DEPTH = 10;
|
|
5
|
-
const TEMPLATE_REGEX = /\$\{\{\s*([^}]+?)\s*\}\}/g;
|
|
6
|
-
const EXACT_TEMPLATE_REGEX = /^\s*\$\{\{\s*([^}]+?)\s*\}\}\s*$/;
|
|
7
|
-
/**
|
|
8
|
-
* Expands all TemplateDefinition resources into concrete resources
|
|
9
|
-
* Supports recursive expansion (templates can generate templates)
|
|
10
|
-
*/
|
|
11
|
-
export function expandTemplates(resources) {
|
|
12
|
-
const expanded = [];
|
|
13
|
-
const nonTemplates = [];
|
|
14
|
-
// Separate templates from regular resources
|
|
15
|
-
for (const resource of resources) {
|
|
16
|
-
if (isTemplateDefinition(resource)) {
|
|
17
|
-
// Templates will be expanded
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
nonTemplates.push(resource);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
// Track templates for instantiation
|
|
25
|
-
const templates = resources.filter(isTemplateDefinition);
|
|
26
|
-
// Store templates as-is (they define the schema, don't expand their resources yet)
|
|
27
|
-
expanded.push(...templates);
|
|
28
|
-
expanded.push(...nonTemplates);
|
|
29
|
-
return expanded;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Instantiates a template with provided parameters
|
|
33
|
-
* This is called when a resource of kind "Template.<Name>" is encountered
|
|
34
|
-
*/
|
|
35
|
-
export function instantiateTemplate(template, parameters, instanceName, depth = 0, parentUri) {
|
|
36
|
-
if (depth >= MAX_EXPANSION_DEPTH) {
|
|
37
|
-
throw new Error(`Template expansion exceeded maximum depth of ${MAX_EXPANSION_DEPTH}. Possible infinite recursion in template "${template.metadata.name}".`);
|
|
38
|
-
}
|
|
39
|
-
// Build context from schema defaults and override with parameters
|
|
40
|
-
const schemaDefaults = extractDefaultsFromSchema(template.schema);
|
|
41
|
-
const context = { ...schemaDefaults, ...parameters };
|
|
42
|
-
// Expand all resource blueprints
|
|
43
|
-
const expandedResources = [];
|
|
44
|
-
for (const blueprint of template.resources) {
|
|
45
|
-
const resources = expandBlueprint(blueprint, context, depth, parentUri, template.metadata.name);
|
|
46
|
-
expandedResources.push(...resources);
|
|
47
|
-
}
|
|
48
|
-
return expandedResources;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Expands a single resource blueprint, handling for/if directives
|
|
52
|
-
*/
|
|
53
|
-
function expandBlueprint(blueprint, context, depth, parentUri, templateDefinitionName) {
|
|
54
|
-
// Handle 'if' directive first
|
|
55
|
-
if (blueprint.if) {
|
|
56
|
-
const condition = evaluateCEL(blueprint.if, context);
|
|
57
|
-
if (!condition) {
|
|
58
|
-
return []; // Skip this resource
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
// Handle 'for' directive
|
|
62
|
-
if (blueprint.for) {
|
|
63
|
-
// Check if it's an array of expressions (nested loops)
|
|
64
|
-
if (Array.isArray(blueprint.for)) {
|
|
65
|
-
return expandNestedForLoops(blueprint, context, depth, parentUri, templateDefinitionName);
|
|
66
|
-
}
|
|
67
|
-
return expandForLoop(blueprint, context, depth, parentUri, templateDefinitionName);
|
|
68
|
-
}
|
|
69
|
-
// Regular resource expansion
|
|
70
|
-
return [expandSingleResource(blueprint, context, depth, parentUri, templateDefinitionName)];
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Expands nested for loops defined as an array of expressions
|
|
74
|
-
* Example: for: ['endpoint in endpoints', 'method in endpoint.methods']
|
|
75
|
-
*/
|
|
76
|
-
function expandNestedForLoops(blueprint, context, depth, parentUri, templateDefinitionName) {
|
|
77
|
-
const forExprs = blueprint.for;
|
|
78
|
-
if (forExprs.length === 0) {
|
|
79
|
-
// No loops, just expand the resource
|
|
80
|
-
const innerBlueprint = { ...blueprint };
|
|
81
|
-
delete innerBlueprint.for;
|
|
82
|
-
delete innerBlueprint.if; // Already evaluated
|
|
83
|
-
return expandBlueprint(innerBlueprint, context, depth, parentUri, templateDefinitionName);
|
|
84
|
-
}
|
|
85
|
-
if (forExprs.length === 1) {
|
|
86
|
-
// Single loop, use standard expansion
|
|
87
|
-
const innerBlueprint = { ...blueprint, for: forExprs[0] };
|
|
88
|
-
return expandBlueprint(innerBlueprint, context, depth, parentUri, templateDefinitionName);
|
|
89
|
-
}
|
|
90
|
-
// Multiple loops - process the first one and recurse with the rest
|
|
91
|
-
const [firstExpr, ...restExprs] = forExprs;
|
|
92
|
-
// Parse the first loop expression
|
|
93
|
-
const match = firstExpr.match(/^\s*(\w+)(?:\s*,\s*(\w+))?\s+in\s+(.+)$/);
|
|
94
|
-
if (!match) {
|
|
95
|
-
throw new Error(`Invalid 'for' expression: "${firstExpr}". Expected format: "item in collection" or "key, value in collection"`);
|
|
96
|
-
}
|
|
97
|
-
const [, itemVar, valueVar, collectionExpr] = match;
|
|
98
|
-
const collection = evaluateCEL(collectionExpr, context);
|
|
99
|
-
if (!collection) {
|
|
100
|
-
return [];
|
|
101
|
-
}
|
|
102
|
-
const results = [];
|
|
103
|
-
// Handle arrays
|
|
104
|
-
if (Array.isArray(collection)) {
|
|
105
|
-
for (const [index, item] of collection.entries()) {
|
|
106
|
-
const loopContext = {
|
|
107
|
-
...context,
|
|
108
|
-
[itemVar]: item,
|
|
109
|
-
};
|
|
110
|
-
if (valueVar) {
|
|
111
|
-
loopContext[valueVar] = item;
|
|
112
|
-
loopContext[itemVar] = index;
|
|
113
|
-
}
|
|
114
|
-
// Create blueprint with remaining loops
|
|
115
|
-
const innerBlueprint = { ...blueprint, for: restExprs };
|
|
116
|
-
delete innerBlueprint.if; // Already evaluated
|
|
117
|
-
const expanded = expandBlueprint(innerBlueprint, loopContext, depth, parentUri, templateDefinitionName);
|
|
118
|
-
results.push(...expanded);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// Handle objects/maps
|
|
122
|
-
else if (collection && typeof collection === "object") {
|
|
123
|
-
for (const [key, value] of Object.entries(collection)) {
|
|
124
|
-
const loopContext = {
|
|
125
|
-
...context,
|
|
126
|
-
[itemVar]: key,
|
|
127
|
-
};
|
|
128
|
-
if (valueVar) {
|
|
129
|
-
loopContext[valueVar] = value;
|
|
130
|
-
}
|
|
131
|
-
// Create blueprint with remaining loops
|
|
132
|
-
const innerBlueprint = { ...blueprint, for: restExprs };
|
|
133
|
-
delete innerBlueprint.if; // Already evaluated
|
|
134
|
-
const expanded = expandBlueprint(innerBlueprint, loopContext, depth, parentUri, templateDefinitionName);
|
|
135
|
-
results.push(...expanded);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
throw new Error(`'for' expression "${collectionExpr}" did not evaluate to an iterable (got ${typeof collection})`);
|
|
140
|
-
}
|
|
141
|
-
return results;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Expands a for loop directive
|
|
145
|
-
* Syntax: "itemVar in collection" or "key, value in map"
|
|
146
|
-
*/
|
|
147
|
-
function expandForLoop(blueprint, context, depth, parentUri, templateDefinitionName) {
|
|
148
|
-
const forExpr = blueprint.for;
|
|
149
|
-
// Parse "item in collection" or "key, value in collection"
|
|
150
|
-
const match = forExpr.match(/^\s*(\w+)(?:\s*,\s*(\w+))?\s+in\s+(.+)$/);
|
|
151
|
-
if (!match) {
|
|
152
|
-
throw new Error(`Invalid 'for' expression: "${forExpr}". Expected format: "item in collection" or "key, value in collection"`);
|
|
153
|
-
}
|
|
154
|
-
const [, itemVar, valueVar, collectionExpr] = match;
|
|
155
|
-
const collection = evaluateCEL(collectionExpr, context);
|
|
156
|
-
if (!collection) {
|
|
157
|
-
return [];
|
|
158
|
-
}
|
|
159
|
-
const results = [];
|
|
160
|
-
// Handle arrays
|
|
161
|
-
if (Array.isArray(collection)) {
|
|
162
|
-
for (const [index, item] of collection.entries()) {
|
|
163
|
-
const loopContext = {
|
|
164
|
-
...context,
|
|
165
|
-
[itemVar]: item,
|
|
166
|
-
};
|
|
167
|
-
if (valueVar) {
|
|
168
|
-
loopContext[valueVar] = item;
|
|
169
|
-
loopContext[itemVar] = index;
|
|
170
|
-
}
|
|
171
|
-
const innerBlueprint = { ...blueprint };
|
|
172
|
-
delete innerBlueprint.for;
|
|
173
|
-
delete innerBlueprint.if; // Already evaluated
|
|
174
|
-
const expanded = expandBlueprint(innerBlueprint, loopContext, depth, parentUri, templateDefinitionName);
|
|
175
|
-
results.push(...expanded);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
// Handle objects/maps
|
|
179
|
-
else if (collection && typeof collection === "object") {
|
|
180
|
-
for (const [key, value] of Object.entries(collection)) {
|
|
181
|
-
const loopContext = {
|
|
182
|
-
...context,
|
|
183
|
-
[itemVar]: key,
|
|
184
|
-
};
|
|
185
|
-
if (valueVar) {
|
|
186
|
-
loopContext[valueVar] = value;
|
|
187
|
-
}
|
|
188
|
-
const innerBlueprint = { ...blueprint };
|
|
189
|
-
delete innerBlueprint.for;
|
|
190
|
-
delete innerBlueprint.if;
|
|
191
|
-
const expanded = expandBlueprint(innerBlueprint, loopContext, depth, parentUri, templateDefinitionName);
|
|
192
|
-
results.push(...expanded);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
throw new Error(`'for' expression "${collectionExpr}" did not evaluate to an iterable (got ${typeof collection})`);
|
|
197
|
-
}
|
|
198
|
-
return results;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Expands a single resource, resolving all CEL expressions
|
|
202
|
-
*/
|
|
203
|
-
function expandSingleResource(blueprint, context, depth, parentUri, templateDefinitionName) {
|
|
204
|
-
// Get the actual resource (might be in 'resource' wrapper)
|
|
205
|
-
const resourceDef = blueprint.resource || blueprint;
|
|
206
|
-
// Remove control flow directives from final resource
|
|
207
|
-
const cleanBlueprint = { ...resourceDef };
|
|
208
|
-
delete cleanBlueprint.for;
|
|
209
|
-
delete cleanBlueprint.if;
|
|
210
|
-
delete cleanBlueprint.resource;
|
|
211
|
-
// Expand all CEL expressions in the resource with template context
|
|
212
|
-
const expanded = expandTemplateValue(cleanBlueprint, context);
|
|
213
|
-
// Validate basic structure
|
|
214
|
-
if (!expanded.kind || typeof expanded.kind !== "string") {
|
|
215
|
-
throw new Error(`Template resource blueprint missing required 'kind' field`);
|
|
216
|
-
}
|
|
217
|
-
if (!expanded.metadata?.name || typeof expanded.metadata.name !== "string") {
|
|
218
|
-
throw new Error(`Template resource blueprint missing required 'metadata.name' field`);
|
|
219
|
-
}
|
|
220
|
-
// Assign URI and generation depth for template-generated resources
|
|
221
|
-
if (templateDefinitionName) {
|
|
222
|
-
const resourceUri = ResourceURI.fromTemplate(templateDefinitionName, expanded.kind, expanded.metadata.name);
|
|
223
|
-
// If parentUri exists, append to it; otherwise use the created URI
|
|
224
|
-
const finalUri = parentUri
|
|
225
|
-
? ResourceURI.parse(parentUri).withChild(expanded.kind, expanded.metadata.name)
|
|
226
|
-
: resourceUri;
|
|
227
|
-
expanded.metadata.uri = finalUri.toString();
|
|
228
|
-
expanded.metadata.generationDepth = (expanded.metadata.generationDepth || 0) + 1;
|
|
229
|
-
}
|
|
230
|
-
return expanded;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Expands template values using the template context
|
|
234
|
-
* This is different from the global expandValue which uses registry context
|
|
235
|
-
*/
|
|
236
|
-
function expandTemplateValue(value, context) {
|
|
237
|
-
if (typeof value === "string") {
|
|
238
|
-
return expandTemplateString(value, context);
|
|
239
|
-
}
|
|
240
|
-
if (Array.isArray(value)) {
|
|
241
|
-
// Check if array contains control flow directives
|
|
242
|
-
const expanded = [];
|
|
243
|
-
for (const item of value) {
|
|
244
|
-
if (item && typeof item === "object" && (item.for || item.if)) {
|
|
245
|
-
// This is a control flow directive - expand it as a property value
|
|
246
|
-
const expandedItems = expandPropertyControlFlow(item, context);
|
|
247
|
-
expanded.push(...expandedItems);
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
expanded.push(expandTemplateValue(item, context));
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
return expanded;
|
|
254
|
-
}
|
|
255
|
-
if (!value || typeof value !== "object") {
|
|
256
|
-
return value;
|
|
257
|
-
}
|
|
258
|
-
const resolved = {};
|
|
259
|
-
for (const [key, entry] of Object.entries(value)) {
|
|
260
|
-
resolved[key] = expandTemplateValue(entry, context);
|
|
261
|
-
}
|
|
262
|
-
return resolved;
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Expands control flow directives for property values (not full resources)
|
|
266
|
-
* Returns array of expanded property values
|
|
267
|
-
*/
|
|
268
|
-
function expandPropertyControlFlow(item, context) {
|
|
269
|
-
// Handle 'if' directive first
|
|
270
|
-
if (item.if) {
|
|
271
|
-
const condition = evaluateCEL(item.if, context);
|
|
272
|
-
if (!condition) {
|
|
273
|
-
return []; // Skip this item
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
// Handle 'for' directive
|
|
277
|
-
if (item.for) {
|
|
278
|
-
const forExprs = Array.isArray(item.for) ? item.for : [item.for];
|
|
279
|
-
return expandPropertyForLoop(item, forExprs, context);
|
|
280
|
-
}
|
|
281
|
-
// No control flow, just expand the value
|
|
282
|
-
const cleanItem = { ...item };
|
|
283
|
-
delete cleanItem.if;
|
|
284
|
-
return [expandTemplateValue(cleanItem, context)];
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Expands for loops for property values
|
|
288
|
-
*/
|
|
289
|
-
function expandPropertyForLoop(item, forExprs, context) {
|
|
290
|
-
if (forExprs.length === 0) {
|
|
291
|
-
const cleanItem = { ...item };
|
|
292
|
-
delete cleanItem.for;
|
|
293
|
-
delete cleanItem.if;
|
|
294
|
-
return [expandTemplateValue(cleanItem, context)];
|
|
295
|
-
}
|
|
296
|
-
const [firstExpr, ...restExprs] = forExprs;
|
|
297
|
-
// Parse the loop expression
|
|
298
|
-
const match = firstExpr.match(/^\s*(\w+)(?:\s*,\s*(\w+))?\s+in\s+(.+)$/);
|
|
299
|
-
if (!match) {
|
|
300
|
-
throw new Error(`Invalid 'for' expression: "${firstExpr}". Expected format: "item in collection" or "key, value in collection"`);
|
|
301
|
-
}
|
|
302
|
-
const [, itemVar, valueVar, collectionExpr] = match;
|
|
303
|
-
const collection = evaluateCEL(collectionExpr, context);
|
|
304
|
-
if (!collection) {
|
|
305
|
-
return [];
|
|
306
|
-
}
|
|
307
|
-
const results = [];
|
|
308
|
-
// Handle arrays
|
|
309
|
-
if (Array.isArray(collection)) {
|
|
310
|
-
for (const [index, collectionItem] of collection.entries()) {
|
|
311
|
-
const loopContext = {
|
|
312
|
-
...context,
|
|
313
|
-
[itemVar]: collectionItem,
|
|
314
|
-
};
|
|
315
|
-
if (valueVar) {
|
|
316
|
-
loopContext[valueVar] = collectionItem;
|
|
317
|
-
loopContext[itemVar] = index;
|
|
318
|
-
}
|
|
319
|
-
// If more loops remain, recurse
|
|
320
|
-
if (restExprs.length > 0) {
|
|
321
|
-
const nestedResults = expandPropertyForLoop(item, restExprs, loopContext);
|
|
322
|
-
results.push(...nestedResults);
|
|
323
|
-
}
|
|
324
|
-
else {
|
|
325
|
-
// Last loop - expand the item
|
|
326
|
-
const cleanItem = { ...item };
|
|
327
|
-
delete cleanItem.for;
|
|
328
|
-
delete cleanItem.if;
|
|
329
|
-
results.push(expandTemplateValue(cleanItem, loopContext));
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
// Handle objects/maps
|
|
334
|
-
else if (collection && typeof collection === "object") {
|
|
335
|
-
for (const [key, value] of Object.entries(collection)) {
|
|
336
|
-
const loopContext = {
|
|
337
|
-
...context,
|
|
338
|
-
[itemVar]: key,
|
|
339
|
-
};
|
|
340
|
-
if (valueVar) {
|
|
341
|
-
loopContext[valueVar] = value;
|
|
342
|
-
}
|
|
343
|
-
// If more loops remain, recurse
|
|
344
|
-
if (restExprs.length > 0) {
|
|
345
|
-
const nestedResults = expandPropertyForLoop(item, restExprs, loopContext);
|
|
346
|
-
results.push(...nestedResults);
|
|
347
|
-
}
|
|
348
|
-
else {
|
|
349
|
-
// Last loop - expand the item
|
|
350
|
-
const cleanItem = { ...item };
|
|
351
|
-
delete cleanItem.for;
|
|
352
|
-
delete cleanItem.if;
|
|
353
|
-
results.push(expandTemplateValue(cleanItem, loopContext));
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
throw new Error(`'for' expression "${collectionExpr}" did not evaluate to an iterable (got ${typeof collection})`);
|
|
359
|
-
}
|
|
360
|
-
return results;
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Expands a template string with CEL expressions
|
|
364
|
-
*/
|
|
365
|
-
function expandTemplateString(value, context) {
|
|
366
|
-
if (!value.includes("${{")) {
|
|
367
|
-
return value;
|
|
368
|
-
}
|
|
369
|
-
const exact = value.match(EXACT_TEMPLATE_REGEX);
|
|
370
|
-
if (exact) {
|
|
371
|
-
return evaluateCEL(exact[1], context);
|
|
372
|
-
}
|
|
373
|
-
return value.replace(TEMPLATE_REGEX, (_match, expr) => {
|
|
374
|
-
const evaluated = evaluateCEL(expr, context);
|
|
375
|
-
if (evaluated === null || evaluated === undefined) {
|
|
376
|
-
return "";
|
|
377
|
-
}
|
|
378
|
-
return String(evaluated);
|
|
379
|
-
});
|
|
380
|
-
} /**
|
|
381
|
-
* Evaluates a CEL expression with proper error handling
|
|
382
|
-
*/
|
|
383
|
-
function evaluateCEL(expression, context) {
|
|
384
|
-
try {
|
|
385
|
-
return evaluate(expression, context);
|
|
386
|
-
}
|
|
387
|
-
catch (error) {
|
|
388
|
-
throw new Error(`Failed to evaluate CEL expression "${expression}": ${error instanceof Error ? error.message : String(error)}`);
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
/**
|
|
392
|
-
* Expands array/object properties that contain 'for' directives
|
|
393
|
-
* Example: routes: [{ for: "r in routes", resource: { path: "${{ r }}" } }]
|
|
394
|
-
* Also supports nested loops with array syntax: { for: ["e in endpoints", "m in e.methods"], ... }
|
|
395
|
-
*/
|
|
396
|
-
export function expandPropertyWithControlFlow(value, context) {
|
|
397
|
-
if (Array.isArray(value)) {
|
|
398
|
-
const expanded = [];
|
|
399
|
-
for (const item of value) {
|
|
400
|
-
if (item && typeof item === "object") {
|
|
401
|
-
// Check if this is a control flow directive
|
|
402
|
-
if (item.for || item.if) {
|
|
403
|
-
const blueprints = expandBlueprint(item, context, 0);
|
|
404
|
-
expanded.push(...blueprints);
|
|
405
|
-
}
|
|
406
|
-
else {
|
|
407
|
-
expanded.push(expandPropertyWithControlFlow(item, context));
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
else {
|
|
411
|
-
expanded.push(item);
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
return expanded;
|
|
415
|
-
}
|
|
416
|
-
if (value && typeof value === "object") {
|
|
417
|
-
const expanded = {};
|
|
418
|
-
for (const [key, val] of Object.entries(value)) {
|
|
419
|
-
expanded[key] = expandPropertyWithControlFlow(val, context);
|
|
420
|
-
}
|
|
421
|
-
return expanded;
|
|
422
|
-
}
|
|
423
|
-
return value;
|
|
424
|
-
}
|
|
425
|
-
//# sourceMappingURL=template-expander.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template-expander.js","sourceRoot":"","sources":["../src/template-expander.ts"],"names":[],"mappings":"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"}
|