@telorun/kernel 0.26.0 → 0.26.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/module/import-controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAI1E,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,GAAG,EACb,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"import-controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/module/import-controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAI1E,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,GAAG,EACb,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAqR3B;AAmCD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlB,CAAC"}
|
|
@@ -96,8 +96,16 @@ export async function create(resource, ctx) {
|
|
|
96
96
|
// no resources/env/ports in import inputs — is enforced by the analyzer, not here;
|
|
97
97
|
// a `${{ resources.X }}` slipping past analysis (skipValidation / programmatic
|
|
98
98
|
// load) would evaluate at runtime rather than being rejected.
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
// Defaults declared on the library's own `variables` / `secrets` contract fill
|
|
100
|
+
// any input the importer didn't override — the import-time analogue of the root
|
|
101
|
+
// Application's env defaulting (`resolveApplicationEnv`). Child modules are
|
|
102
|
+
// isolated from the host environment, so there is no env lookup here: the value
|
|
103
|
+
// is the importer's override, else the library default. Without this a contract
|
|
104
|
+
// var with a default but no override reaches a `${{ variables.X }}` template as
|
|
105
|
+
// a missing key, even though analysis validated the reference against the
|
|
106
|
+
// (defaulted) contract.
|
|
107
|
+
const importVariables = applyDefaults(ctx.expandValue(resource.variables, {}) ?? {}, moduleManifest.variables ?? {});
|
|
108
|
+
const importSecrets = applyDefaults(ctx.expandValue(resource.secrets, {}) ?? {}, moduleManifest.secrets ?? {});
|
|
101
109
|
const childCtx = new ModuleContext(ctx.moduleContext.source, importVariables, importSecrets, {}, [], ctx.moduleContext.createInstance, ctx.moduleContext.emit);
|
|
102
110
|
const child = ctx.moduleContext.spawnChild(childCtx);
|
|
103
111
|
// A library references its own kinds via `Self.<Kind>` (e.g. when it declares an
|
|
@@ -120,6 +128,27 @@ export async function create(resource, ctx) {
|
|
|
120
128
|
for (const manifest of manifests) {
|
|
121
129
|
child.registerManifest(manifest);
|
|
122
130
|
}
|
|
131
|
+
// Initialize the child's resources in dependency order, mirroring the root
|
|
132
|
+
// context (kernel.boot → setInitOrder). Without this, an imported library's
|
|
133
|
+
// resources init in registration order, so a dependent can run Phase 5
|
|
134
|
+
// injection before its dependency exists — e.g. an Http.Api whose inline route
|
|
135
|
+
// handler is appended after it during inline-resource extraction would init,
|
|
136
|
+
// and inject, before the handler is created, leaving the handler ref
|
|
137
|
+
// unresolved. The order is computed in the library's OWN scope (childRegistry),
|
|
138
|
+
// so an anonymous child resolves against the declaring library, not the
|
|
139
|
+
// consumer. setInitOrder ignores names it doesn't recognize, so a partial order
|
|
140
|
+
// is safe. A cycle purely among a library's own resources is invisible to the
|
|
141
|
+
// root graph (which stops at the import boundary), so this is the only place it
|
|
142
|
+
// surfaces — throw it the same way the root does rather than silently falling
|
|
143
|
+
// back to registration order (which would re-manifest as a confusing runtime
|
|
144
|
+
// ERR_RESOURCE_NOT_INVOKABLE). `prepare` returns null order on a ref-validation
|
|
145
|
+
// error too (already reported by analyze above); those we leave to fall back.
|
|
146
|
+
const { order, cycleError } = analyzer.prepare(manifests, childRegistry);
|
|
147
|
+
if (cycleError) {
|
|
148
|
+
throw new RuntimeError("ERR_CIRCULAR_DEPENDENCY", `Circular dependency in imported library '${targetModule}': ${cycleError}`);
|
|
149
|
+
}
|
|
150
|
+
if (order)
|
|
151
|
+
child.setInitOrder(order);
|
|
123
152
|
// Link the target module context as a child of the declaring module context in
|
|
124
153
|
// the lifecycle tree. This enables cascading teardown (parent → child order)
|
|
125
154
|
// and makes the import hierarchy visible at runtime.
|
|
@@ -195,6 +224,23 @@ export async function create(resource, ctx) {
|
|
|
195
224
|
},
|
|
196
225
|
};
|
|
197
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* Fill in library-declared `default:` values for any input the importer left
|
|
229
|
+
* unset. Mirrors the root Application's env defaulting: a provided value (incl.
|
|
230
|
+
* an explicit `null`) wins; otherwise the contract default applies. Returns a new
|
|
231
|
+
* object — the resolved input map is never mutated in place.
|
|
232
|
+
*/
|
|
233
|
+
function applyDefaults(provided, schemaDefs) {
|
|
234
|
+
const out = { ...provided };
|
|
235
|
+
for (const [key, def] of Object.entries(schemaDefs)) {
|
|
236
|
+
if (typeof def !== "object" || def === null || !("default" in def))
|
|
237
|
+
continue;
|
|
238
|
+
if (out[key] === undefined || out[key] === null) {
|
|
239
|
+
out[key] = def.default;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return out;
|
|
243
|
+
}
|
|
198
244
|
function validateRequiredInputs(schemaDefs, provided, kind) {
|
|
199
245
|
for (const [key, def] of Object.entries(schemaDefs)) {
|
|
200
246
|
const isRequired = typeof def === "object" && def !== null && !("default" in def);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-controller.js","sourceRoot":"","sources":["../../../src/controllers/module/import-controller.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"import-controller.js","sourceRoot":"","sources":["../../../src/controllers/module/import-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3G,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE9E,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAa,EACb,GAA6B;IAE7B,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAc,CAAC;IAE/C,MAAM,YAAY,GAAW,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;IAEhE,kFAAkF;IAClF,mFAAmF;IACnF,iFAAiF;IACjF,oFAAoF;IACpF,mFAAmF;IACnF,uFAAuF;IACvF,MAAM,IAAI,GAAI,QAAQ,CAAC,QAAQ,EAAE,MAA6B,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC;IAE3F,0FAA0F;IAC1F,0FAA0F;IAC1F,4FAA4F;IAC5F,EAAE;IACF,0EAA0E;IAC1E,mEAAmE;IACnE,oEAAoE;IACpE,mEAAmE;IACnE,gEAAgE;IAChE,2CAA2C;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAE7D,+EAA+E;IAC/E,iFAAiF;IACjF,iFAAiF;IACjF,4EAA4E;IAC5E,yEAAyE;IACzE,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,qCAAqC;IACrC,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAE7C,8EAA8E;IAC9E,8EAA8E;IAC9E,2EAA2E;IAC3E,yEAAyE;IACzE,+EAA+E;IAC/E,8EAA8E;IAC9E,+EAA+E;IAC/E,iCAAiC;IACjC,MAAM,eAAe,GAAG,GAAG,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAClC,iBAAiB,EACjB,EAAE,cAAc,EAAE,eAAe,EAAE,EACnC,aAAa,CACd,CAAC;IACF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,WAAW;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,kBAAkB,CAAC,KAAK,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,YAAY,CACpB,gCAAgC,EAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAClB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2FAA2F;IAC3F,8FAA8F;IAC9F,6DAA6D;IAC7D,6EAA6E;IAC7E,wEAAwE;IACxE,yEAAyE;IACzE,kEAAkE;IAClE,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE;QACrD,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,6EAA6E;IAC7E,2EAA2E;IAC3E,iFAAiF;IACjF,iFAAiF;IACjF,2CAA2C;IAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACrF,qFAAqF;IACrF,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,mBAAmB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;QACtF,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CACpB,gCAAgC,EAChC,uBAAuB,QAAQ,CAAC,MAAgB,kHAAkH,CACnK,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,CAAC,MAAgB,GAAG,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,YAAY,GAAW,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;IAE1D,6CAA6C;IAC7C,sBAAsB,CAAC,cAAc,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;IAC9F,sBAAsB,CAAC,cAAc,CAAC,OAAO,IAAI,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAExF,6EAA6E;IAC7E,+EAA+E;IAC/E,+EAA+E;IAC/E,iFAAiF;IACjF,gFAAgF;IAChF,gFAAgF;IAChF,2CAA2C;IAC3C,EAAE;IACF,iFAAiF;IACjF,iFAAiF;IACjF,mFAAmF;IACnF,+EAA+E;IAC/E,8DAA8D;IAC9D,+EAA+E;IAC/E,gFAAgF;IAChF,4EAA4E;IAC5E,gFAAgF;IAChF,gFAAgF;IAChF,gFAAgF;IAChF,0EAA0E;IAC1E,wBAAwB;IACxB,MAAM,eAAe,GAAG,aAAa,CAClC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAA6B,IAAI,EAAE,EAC1E,cAAc,CAAC,SAAS,IAAI,EAAE,CAC/B,CAAC;IACF,MAAM,aAAa,GAAG,aAAa,CAChC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAA6B,IAAI,EAAE,EACxE,cAAc,CAAC,OAAO,IAAI,EAAE,CAC7B,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,aAAa,CAChC,GAAG,CAAC,aAAa,CAAC,MAAM,EACxB,eAAe,EACf,aAAa,EACb,EAAE,EACF,EAAE,EACF,GAAG,CAAC,aAAa,CAAC,cAAc,EAChC,GAAG,CAAC,aAAa,CAAC,IAAI,CACvB,CAAC;IACF,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAErD,iFAAiF;IACjF,uFAAuF;IACvF,sFAAsF;IACtF,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IAElD,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,yEAAyE;IACzE,0BAA0B;IAC1B,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAA4B,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,KAAuB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,uEAAuE;IACvE,+EAA+E;IAC/E,6EAA6E;IAC7E,qEAAqE;IACrE,gFAAgF;IAChF,wEAAwE;IACxE,gFAAgF;IAChF,8EAA8E;IAC9E,gFAAgF;IAChF,8EAA8E;IAC9E,6EAA6E;IAC7E,gFAAgF;IAChF,8EAA8E;IAC9E,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACzE,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,YAAY,CACpB,yBAAyB,EACzB,4CAA4C,YAAY,MAAM,UAAU,EAAE,CAC3E,CAAC;IACJ,CAAC;IACD,IAAI,KAAK;QAAG,KAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAExD,+EAA+E;IAC/E,6EAA6E;IAC7E,qDAAqD;IACrD,6EAA6E;IAC7E,gFAAgF;IAChF,2BAA2B;IAC3B,wCAAwC;IACxC,IAAI;IAEJ,+CAA+C;IAC/C,+FAA+F;IAC/F,4EAA4E;IAE5E,8FAA8F;IAC9F,uFAAuF;IACvF,uFAAuF;IACvF,2CAA2C;IAC3C,MAAM,WAAW,GAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9F,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5D,yFAAyF;IACzF,wFAAwF;IACxF,mBAAmB;IACnB,MAAM,aAAa,GAAI,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvF,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CACpB,oBAAoB,EACpB,YAAY,YAAY,6DAA6D;gBACnF,oEAAoE,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/D,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;QACzC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,YAAY,CACpB,oBAAoB,EACpB,gEAAgE,IAAI,wCAAwC,IAAI,wCAAwC,KAAK,GAAG,CACjK,CAAC;QACJ,CAAC;IACH,CAAC;IACD,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;IAEpE,yFAAyF;IACzF,wFAAwF;IACxF,yFAAyF;IACzF,0FAA0F;IAC1F,2FAA2F;IAC1F,GAAG,CAAC,aAA+B,CAAC,qBAAqB,CACxD,KAAK,EACL,qBAAqB,EACrB,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAC3C,CAAC;IACF,uFAAuF;IACvF,4EAA4E;IAC3E,GAAG,CAAC,aAA+B,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAC/E,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CACjC,CAAC;IAEF,gFAAgF;IAChF,sFAAsF;IACtF,kFAAkF;IAClF,gFAAgF;IAChF,OAAO;QACL,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;gBAClD,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;oBAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,OAAO;gBACL,SAAS,EAAE,eAAe;gBAC1B,OAAO,EAAE,aAAa;gBACtB,GAAG,QAAQ;aACZ,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAClC,2EAA2E;YAC3E,+EAA+E;YAC/E,6EAA6E;YAC7E,gCAAgC;YAChC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACtE,CAAC;QACD,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CACpB,QAAiC,EACjC,UAA+B;IAE/B,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC;YAAE,SAAS;QAC7E,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAChD,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAA+B,EAC/B,QAAiC,EACjC,IAA6B;IAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;QAClF,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,WAAW,GAAG,kCAAkC,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC3B;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;YAClB,oBAAoB,EAAE,IAAI;SAC3B;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAClB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;aAC7C;SACF;KACF;IACD,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IAChC,oBAAoB,EAAE,KAAK;CAC5B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telorun/kernel",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.1",
|
|
4
4
|
"description": "Telo Runtime - A lightweight, polyglot execution host.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"telo",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@marcbachmann/cel-js": "^7.6.1",
|
|
49
49
|
"@sinclair/typebox": "^0.34.48",
|
|
50
|
-
"@telorun/analyzer": "0.23.
|
|
50
|
+
"@telorun/analyzer": "0.23.1",
|
|
51
51
|
"@telorun/templating": "0.8.0",
|
|
52
52
|
"ajv": "^8.17.1",
|
|
53
53
|
"ajv-formats": "^3.0.1",
|
|
@@ -121,10 +121,22 @@ export async function create(
|
|
|
121
121
|
// no resources/env/ports in import inputs — is enforced by the analyzer, not here;
|
|
122
122
|
// a `${{ resources.X }}` slipping past analysis (skipValidation / programmatic
|
|
123
123
|
// load) would evaluate at runtime rather than being rejected.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
124
|
+
// Defaults declared on the library's own `variables` / `secrets` contract fill
|
|
125
|
+
// any input the importer didn't override — the import-time analogue of the root
|
|
126
|
+
// Application's env defaulting (`resolveApplicationEnv`). Child modules are
|
|
127
|
+
// isolated from the host environment, so there is no env lookup here: the value
|
|
128
|
+
// is the importer's override, else the library default. Without this a contract
|
|
129
|
+
// var with a default but no override reaches a `${{ variables.X }}` template as
|
|
130
|
+
// a missing key, even though analysis validated the reference against the
|
|
131
|
+
// (defaulted) contract.
|
|
132
|
+
const importVariables = applyDefaults(
|
|
133
|
+
(ctx.expandValue(resource.variables, {}) as Record<string, unknown>) ?? {},
|
|
134
|
+
moduleManifest.variables ?? {},
|
|
135
|
+
);
|
|
136
|
+
const importSecrets = applyDefaults(
|
|
137
|
+
(ctx.expandValue(resource.secrets, {}) as Record<string, unknown>) ?? {},
|
|
138
|
+
moduleManifest.secrets ?? {},
|
|
139
|
+
);
|
|
128
140
|
const childCtx = new ModuleContext(
|
|
129
141
|
ctx.moduleContext.source,
|
|
130
142
|
importVariables,
|
|
@@ -159,6 +171,30 @@ export async function create(
|
|
|
159
171
|
child.registerManifest(manifest);
|
|
160
172
|
}
|
|
161
173
|
|
|
174
|
+
// Initialize the child's resources in dependency order, mirroring the root
|
|
175
|
+
// context (kernel.boot → setInitOrder). Without this, an imported library's
|
|
176
|
+
// resources init in registration order, so a dependent can run Phase 5
|
|
177
|
+
// injection before its dependency exists — e.g. an Http.Api whose inline route
|
|
178
|
+
// handler is appended after it during inline-resource extraction would init,
|
|
179
|
+
// and inject, before the handler is created, leaving the handler ref
|
|
180
|
+
// unresolved. The order is computed in the library's OWN scope (childRegistry),
|
|
181
|
+
// so an anonymous child resolves against the declaring library, not the
|
|
182
|
+
// consumer. setInitOrder ignores names it doesn't recognize, so a partial order
|
|
183
|
+
// is safe. A cycle purely among a library's own resources is invisible to the
|
|
184
|
+
// root graph (which stops at the import boundary), so this is the only place it
|
|
185
|
+
// surfaces — throw it the same way the root does rather than silently falling
|
|
186
|
+
// back to registration order (which would re-manifest as a confusing runtime
|
|
187
|
+
// ERR_RESOURCE_NOT_INVOKABLE). `prepare` returns null order on a ref-validation
|
|
188
|
+
// error too (already reported by analyze above); those we leave to fall back.
|
|
189
|
+
const { order, cycleError } = analyzer.prepare(manifests, childRegistry);
|
|
190
|
+
if (cycleError) {
|
|
191
|
+
throw new RuntimeError(
|
|
192
|
+
"ERR_CIRCULAR_DEPENDENCY",
|
|
193
|
+
`Circular dependency in imported library '${targetModule}': ${cycleError}`,
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
if (order) (child as ModuleContext).setInitOrder(order);
|
|
197
|
+
|
|
162
198
|
// Link the target module context as a child of the declaring module context in
|
|
163
199
|
// the lifecycle tree. This enables cascading teardown (parent → child order)
|
|
164
200
|
// and makes the import hierarchy visible at runtime.
|
|
@@ -251,6 +287,26 @@ export async function create(
|
|
|
251
287
|
};
|
|
252
288
|
}
|
|
253
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Fill in library-declared `default:` values for any input the importer left
|
|
292
|
+
* unset. Mirrors the root Application's env defaulting: a provided value (incl.
|
|
293
|
+
* an explicit `null`) wins; otherwise the contract default applies. Returns a new
|
|
294
|
+
* object — the resolved input map is never mutated in place.
|
|
295
|
+
*/
|
|
296
|
+
function applyDefaults(
|
|
297
|
+
provided: Record<string, unknown>,
|
|
298
|
+
schemaDefs: Record<string, any>,
|
|
299
|
+
): Record<string, unknown> {
|
|
300
|
+
const out = { ...provided };
|
|
301
|
+
for (const [key, def] of Object.entries(schemaDefs)) {
|
|
302
|
+
if (typeof def !== "object" || def === null || !("default" in def)) continue;
|
|
303
|
+
if (out[key] === undefined || out[key] === null) {
|
|
304
|
+
out[key] = def.default;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return out;
|
|
308
|
+
}
|
|
309
|
+
|
|
254
310
|
function validateRequiredInputs(
|
|
255
311
|
schemaDefs: Record<string, any>,
|
|
256
312
|
provided: Record<string, unknown>,
|