@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.
Files changed (192) hide show
  1. package/dist/base-definition.d.ts +14 -0
  2. package/dist/base-definition.d.ts.map +1 -0
  3. package/dist/base-definition.js +17 -0
  4. package/dist/base-definition.js.map +1 -0
  5. package/dist/boot-context-registry.d.ts.map +1 -1
  6. package/dist/boot-context-registry.js +6 -6
  7. package/dist/boot-context-registry.js.map +1 -1
  8. package/dist/capabilities/capabilities/component.yaml +2 -1
  9. package/dist/capabilities/capabilities/executable.yaml +2 -1
  10. package/dist/capabilities/capabilities/handler.yaml +2 -1
  11. package/dist/capabilities/capabilities/listener.yaml +2 -1
  12. package/dist/capabilities/capabilities/provider.yaml +2 -1
  13. package/dist/capabilities/capabilities/template.yaml +2 -1
  14. package/dist/capabilities/capabilities/type.yaml +2 -1
  15. package/dist/capabilities/component.d.ts +3 -0
  16. package/dist/capabilities/component.d.ts.map +1 -0
  17. package/dist/capabilities/component.js +4 -0
  18. package/dist/capabilities/component.js.map +1 -0
  19. package/dist/capabilities/component.yaml +1 -1
  20. package/dist/capabilities/executable.d.ts +3 -0
  21. package/dist/capabilities/executable.d.ts.map +1 -0
  22. package/dist/capabilities/executable.js +5 -0
  23. package/dist/capabilities/executable.js.map +1 -0
  24. package/dist/capabilities/executable.yaml +1 -1
  25. package/dist/capabilities/handler.d.ts +3 -0
  26. package/dist/capabilities/handler.d.ts.map +1 -0
  27. package/dist/capabilities/handler.js +4 -0
  28. package/dist/capabilities/handler.js.map +1 -0
  29. package/dist/capabilities/handler.yaml +1 -1
  30. package/dist/capabilities/invokable.d.ts +3 -0
  31. package/dist/capabilities/invokable.d.ts.map +1 -0
  32. package/dist/capabilities/invokable.js +5 -0
  33. package/dist/capabilities/invokable.js.map +1 -0
  34. package/dist/capabilities/listener.d.ts +3 -0
  35. package/dist/capabilities/listener.d.ts.map +1 -0
  36. package/dist/capabilities/listener.js +5 -0
  37. package/dist/capabilities/listener.js.map +1 -0
  38. package/dist/capabilities/listener.yaml +1 -1
  39. package/dist/capabilities/mount.d.ts +3 -0
  40. package/dist/capabilities/mount.d.ts.map +1 -0
  41. package/dist/capabilities/mount.js +5 -0
  42. package/dist/capabilities/mount.js.map +1 -0
  43. package/dist/capabilities/provider.d.ts +3 -0
  44. package/dist/capabilities/provider.d.ts.map +1 -0
  45. package/dist/capabilities/provider.js +8 -0
  46. package/dist/capabilities/provider.js.map +1 -0
  47. package/dist/capabilities/provider.yaml +1 -1
  48. package/dist/capabilities/runnable.d.ts +3 -0
  49. package/dist/capabilities/runnable.d.ts.map +1 -0
  50. package/dist/capabilities/runnable.js +5 -0
  51. package/dist/capabilities/runnable.js.map +1 -0
  52. package/dist/capabilities/service.d.ts +3 -0
  53. package/dist/capabilities/service.d.ts.map +1 -0
  54. package/dist/capabilities/service.js +5 -0
  55. package/dist/capabilities/service.js.map +1 -0
  56. package/dist/capabilities/template.d.ts +3 -0
  57. package/dist/capabilities/template.d.ts.map +1 -0
  58. package/dist/capabilities/template.js +5 -0
  59. package/dist/capabilities/template.js.map +1 -0
  60. package/dist/capabilities/template.yaml +1 -1
  61. package/dist/capabilities/type.d.ts +3 -0
  62. package/dist/capabilities/type.d.ts.map +1 -0
  63. package/dist/capabilities/type.js +5 -0
  64. package/dist/capabilities/type.js.map +1 -0
  65. package/dist/capabilities/type.yaml +1 -1
  66. package/dist/controller-loader.d.ts +1 -1
  67. package/dist/controller-loader.d.ts.map +1 -1
  68. package/dist/controller-loader.js +6 -3
  69. package/dist/controller-loader.js.map +1 -1
  70. package/dist/controller-registry.d.ts +1 -6
  71. package/dist/controller-registry.d.ts.map +1 -1
  72. package/dist/controller-registry.js +11 -22
  73. package/dist/controller-registry.js.map +1 -1
  74. package/dist/controllers/capability/capability-controller.d.ts +0 -5
  75. package/dist/controllers/capability/capability-controller.d.ts.map +1 -1
  76. package/dist/controllers/capability/capability-controller.js +1 -5
  77. package/dist/controllers/capability/capability-controller.js.map +1 -1
  78. package/dist/controllers/module/import-controller.d.ts +35 -0
  79. package/dist/controllers/module/import-controller.d.ts.map +1 -0
  80. package/dist/controllers/module/import-controller.js +113 -0
  81. package/dist/controllers/module/import-controller.js.map +1 -0
  82. package/dist/controllers/module/module-controller.d.ts +2 -15
  83. package/dist/controllers/module/module-controller.d.ts.map +1 -1
  84. package/dist/controllers/module/module-controller.js +9 -90
  85. package/dist/controllers/module/module-controller.js.map +1 -1
  86. package/dist/controllers/resource-definition/resource-definition-controller.d.ts +3 -4
  87. package/dist/controllers/resource-definition/resource-definition-controller.d.ts.map +1 -1
  88. package/dist/controllers/resource-definition/resource-definition-controller.js +17 -11
  89. package/dist/controllers/resource-definition/resource-definition-controller.js.map +1 -1
  90. package/dist/controllers/resource-definition/resource-template-controller.d.ts +12 -0
  91. package/dist/controllers/resource-definition/resource-template-controller.d.ts.map +1 -0
  92. package/dist/controllers/resource-definition/resource-template-controller.js +112 -0
  93. package/dist/controllers/resource-definition/resource-template-controller.js.map +1 -0
  94. package/dist/evaluation-context.d.ts +91 -0
  95. package/dist/evaluation-context.d.ts.map +1 -0
  96. package/dist/evaluation-context.js +220 -0
  97. package/dist/evaluation-context.js.map +1 -0
  98. package/dist/execution-context.d.ts +13 -0
  99. package/dist/execution-context.d.ts.map +1 -0
  100. package/dist/execution-context.js +14 -0
  101. package/dist/execution-context.js.map +1 -0
  102. package/dist/index.d.ts +1 -4
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +0 -3
  105. package/dist/index.js.map +1 -1
  106. package/dist/kernel.d.ts +31 -42
  107. package/dist/kernel.d.ts.map +1 -1
  108. package/dist/kernel.js +315 -371
  109. package/dist/kernel.js.map +1 -1
  110. package/dist/loader.d.ts +11 -10
  111. package/dist/loader.d.ts.map +1 -1
  112. package/dist/loader.js +50 -112
  113. package/dist/loader.js.map +1 -1
  114. package/dist/manifest-adapters/http-adapter.d.ts.map +1 -1
  115. package/dist/manifest-adapters/http-adapter.js +3 -1
  116. package/dist/manifest-adapters/http-adapter.js.map +1 -1
  117. package/dist/manifest-adapters/local-file-adapter.d.ts +7 -5
  118. package/dist/manifest-adapters/local-file-adapter.d.ts.map +1 -1
  119. package/dist/manifest-adapters/local-file-adapter.js +28 -24
  120. package/dist/manifest-adapters/local-file-adapter.js.map +1 -1
  121. package/dist/manifest-adapters/manifest-adapter.d.ts +2 -0
  122. package/dist/manifest-adapters/manifest-adapter.d.ts.map +1 -1
  123. package/dist/manifest-adapters/registry-adapter.d.ts.map +1 -1
  124. package/dist/manifest-adapters/registry-adapter.js +3 -1
  125. package/dist/manifest-adapters/registry-adapter.js.map +1 -1
  126. package/dist/manifest-schemas.d.ts +61 -49
  127. package/dist/manifest-schemas.d.ts.map +1 -1
  128. package/dist/manifest-schemas.js +58 -37
  129. package/dist/manifest-schemas.js.map +1 -1
  130. package/dist/module-context-registry.d.ts +48 -0
  131. package/dist/module-context-registry.d.ts.map +1 -0
  132. package/dist/module-context-registry.js +91 -0
  133. package/dist/module-context-registry.js.map +1 -0
  134. package/dist/module-context.d.ts +31 -0
  135. package/dist/module-context.d.ts.map +1 -0
  136. package/dist/module-context.js +67 -0
  137. package/dist/module-context.js.map +1 -0
  138. package/dist/registry.d.ts +1 -2
  139. package/dist/registry.d.ts.map +1 -1
  140. package/dist/registry.js +3 -3
  141. package/dist/registry.js.map +1 -1
  142. package/dist/resource-context.d.ts +27 -10
  143. package/dist/resource-context.d.ts.map +1 -1
  144. package/dist/resource-context.js +100 -44
  145. package/dist/resource-context.js.map +1 -1
  146. package/dist/schema-valiator.d.ts.map +1 -1
  147. package/dist/schema-valiator.js +16 -3
  148. package/dist/schema-valiator.js.map +1 -1
  149. package/dist/snapshot-serializer.d.ts +1 -2
  150. package/dist/snapshot-serializer.d.ts.map +1 -1
  151. package/dist/snapshot-serializer.js.map +1 -1
  152. package/dist/types.d.ts +3 -0
  153. package/dist/types.d.ts.map +1 -1
  154. package/dist/types.js.map +1 -1
  155. package/package.json +11 -9
  156. package/src/boot-context-registry.ts +169 -0
  157. package/src/controller-loader.ts +299 -0
  158. package/src/controller-registry.ts +191 -0
  159. package/src/controllers/module/import-controller.ts +143 -0
  160. package/src/controllers/module/module-controller.ts +16 -0
  161. package/src/controllers/resource-definition/resource-definition-controller.ts +86 -0
  162. package/src/controllers/resource-definition/resource-definition.json +18 -0
  163. package/src/controllers/resource-definition/resource-template-controller.ts +138 -0
  164. package/src/event-stream.ts +121 -0
  165. package/src/events.ts +99 -0
  166. package/src/index.ts +7 -0
  167. package/src/kernel.ts +647 -0
  168. package/src/loader.ts +134 -0
  169. package/src/manifest-adapters/local-file-adapter.ts +62 -0
  170. package/src/manifest-adapters/manifest-adapter.ts +35 -0
  171. package/src/manifest-schemas.ts +85 -0
  172. package/src/registry.ts +137 -0
  173. package/src/resource-context.ts +267 -0
  174. package/src/resource-uri.ts +200 -0
  175. package/src/schema-valiator.ts +68 -0
  176. package/dist/cli.d.ts +0 -3
  177. package/dist/cli.d.ts.map +0 -1
  178. package/dist/cli.js +0 -109
  179. package/dist/cli.js.map +0 -1
  180. package/dist/expressions.d.ts +0 -20
  181. package/dist/expressions.d.ts.map +0 -1
  182. package/dist/expressions.js +0 -253
  183. package/dist/expressions.js.map +0 -1
  184. package/dist/src/controllers/module/module.yaml +0 -32
  185. package/dist/template-definition.d.ts +0 -38
  186. package/dist/template-definition.d.ts.map +0 -1
  187. package/dist/template-definition.js +0 -26
  188. package/dist/template-definition.js.map +0 -1
  189. package/dist/template-expander.d.ts +0 -19
  190. package/dist/template-expander.d.ts.map +0 -1
  191. package/dist/template-expander.js +0 -425
  192. 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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"}