@telorun/kernel 0.80.0 → 0.82.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/dist/controller-loaders/npm-install-root.d.ts +56 -0
- package/dist/controller-loaders/npm-install-root.d.ts.map +1 -0
- package/dist/controller-loaders/npm-install-root.js +109 -0
- package/dist/controller-loaders/npm-install-root.js.map +1 -0
- package/dist/controller-loaders/npm-loader.d.ts +3 -0
- package/dist/controller-loaders/npm-loader.d.ts.map +1 -1
- package/dist/controller-loaders/npm-loader.js +11 -1
- package/dist/controller-loaders/npm-loader.js.map +1 -1
- package/dist/controllers/logging/console-sink-controller.d.ts.map +1 -1
- package/dist/controllers/logging/console-sink-controller.js +19 -9
- package/dist/controllers/logging/console-sink-controller.js.map +1 -1
- package/dist/controllers/logging/file-sink-controller.d.ts.map +1 -1
- package/dist/controllers/logging/file-sink-controller.js +17 -6
- package/dist/controllers/logging/file-sink-controller.js.map +1 -1
- package/dist/controllers/module/import-controller.d.ts.map +1 -1
- package/dist/controllers/module/import-controller.js +36 -15
- package/dist/controllers/module/import-controller.js.map +1 -1
- package/dist/controllers/resource-definition/resource-template-controller.d.ts.map +1 -1
- package/dist/controllers/resource-definition/resource-template-controller.js +7 -5
- package/dist/controllers/resource-definition/resource-template-controller.js.map +1 -1
- package/dist/effect-scope.d.ts +132 -0
- package/dist/effect-scope.d.ts.map +1 -0
- package/dist/effect-scope.js +253 -0
- package/dist/effect-scope.js.map +1 -0
- package/dist/evaluation-context.d.ts +26 -1
- package/dist/evaluation-context.d.ts.map +1 -1
- package/dist/evaluation-context.js +156 -12
- package/dist/evaluation-context.js.map +1 -1
- package/dist/init-failure-diagnostics.d.ts +10 -0
- package/dist/init-failure-diagnostics.d.ts.map +1 -1
- package/dist/init-failure-diagnostics.js +7 -1
- package/dist/init-failure-diagnostics.js.map +1 -1
- package/dist/kernel.d.ts +6 -2
- package/dist/kernel.d.ts.map +1 -1
- package/dist/kernel.js +23 -14
- package/dist/kernel.js.map +1 -1
- package/dist/manifest-schemas.d.ts +4 -1
- package/dist/manifest-schemas.d.ts.map +1 -1
- package/dist/manifest-schemas.js +4 -10
- package/dist/manifest-schemas.js.map +1 -1
- package/dist/module-context.d.ts +10 -0
- package/dist/module-context.d.ts.map +1 -1
- package/dist/module-context.js +15 -0
- package/dist/module-context.js.map +1 -1
- package/dist/observed-state.d.ts.map +1 -1
- package/dist/observed-state.js +2 -4
- package/dist/observed-state.js.map +1 -1
- package/dist/resource-context.d.ts +18 -1
- package/dist/resource-context.d.ts.map +1 -1
- package/dist/resource-context.js +27 -0
- package/dist/resource-context.js.map +1 -1
- package/dist/schema-compiled-values.d.ts +2 -1
- package/dist/schema-compiled-values.d.ts.map +1 -1
- package/dist/schema-compiled-values.js +23 -20
- package/dist/schema-compiled-values.js.map +1 -1
- package/package.json +4 -3
- package/src/controller-loaders/npm-install-root.ts +131 -0
- package/src/controller-loaders/npm-loader.ts +12 -1
- package/src/controllers/logging/console-sink-controller.ts +19 -9
- package/src/controllers/logging/file-sink-controller.ts +17 -6
- package/src/controllers/module/import-controller.ts +50 -27
- package/src/controllers/resource-definition/resource-template-controller.ts +14 -11
- package/src/effect-scope.ts +340 -0
- package/src/evaluation-context.ts +165 -10
- package/src/init-failure-diagnostics.ts +8 -1
- package/src/kernel.ts +26 -13
- package/src/manifest-schemas.ts +4 -9
- package/src/module-context.ts +16 -0
- package/src/observed-state.ts +2 -4
- package/src/resource-context.ts +32 -0
- package/src/schema-compiled-values.ts +35 -21
|
@@ -171,7 +171,11 @@ export function createTemplateController(definition, definingContext) {
|
|
|
171
171
|
// children are skipped, still-pending ones advance).
|
|
172
172
|
let registered = false;
|
|
173
173
|
return {
|
|
174
|
-
|
|
174
|
+
// The template's own resources are its allocation, and tearing the child
|
|
175
|
+
// context down is the inverse. `init()` still resumes rather than
|
|
176
|
+
// restarting, because a deferral (a child ref naming a sibling that has
|
|
177
|
+
// not initialized) keeps the instance: only a real failure discards it.
|
|
178
|
+
init: (templateCtx) => templateCtx.effect("template resources", async () => {
|
|
175
179
|
if (!registered) {
|
|
176
180
|
for (const template of definition.resources ?? []) {
|
|
177
181
|
childContext.registerManifest(expandSelf(template));
|
|
@@ -179,7 +183,8 @@ export function createTemplateController(definition, definingContext) {
|
|
|
179
183
|
registered = true;
|
|
180
184
|
}
|
|
181
185
|
await childContext.initializeResources();
|
|
182
|
-
|
|
186
|
+
return { result: undefined, inverse: () => childContext.teardownResources() };
|
|
187
|
+
}),
|
|
183
188
|
...(invokeTarget && {
|
|
184
189
|
invoke: async (inputs) => {
|
|
185
190
|
const entry = dispatchEntry(invokeTarget, "invoke");
|
|
@@ -228,9 +233,6 @@ export function createTemplateController(definition, definingContext) {
|
|
|
228
233
|
return mountable.register(app, prefix);
|
|
229
234
|
},
|
|
230
235
|
}),
|
|
231
|
-
teardown: async () => {
|
|
232
|
-
await childContext.teardownResources();
|
|
233
|
-
},
|
|
234
236
|
};
|
|
235
237
|
},
|
|
236
238
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-template-controller.js","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-template-controller.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"resource-template-controller.js","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-template-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { EffectBody, EffectChain, EffectResult, Inverse, ResourceInstance } from "@telorun/sdk";
|
|
2
|
+
/**
|
|
3
|
+
* The inverse accumulator behind the effect chain.
|
|
4
|
+
*
|
|
5
|
+
* A stack of FRAMES, one per lifecycle entry. The kernel opens a frame at
|
|
6
|
+
* `create()` and at each `init()` / `run()`; a failure unwinds only the frame
|
|
7
|
+
* that failed, so a failed `init()` cannot revert what `create()` did and then
|
|
8
|
+
* retry against a resource whose construction was rolled back. Teardown unwinds
|
|
9
|
+
* every open frame, newest first; within a frame, last-in-first-out.
|
|
10
|
+
*
|
|
11
|
+
* Normative contract: `kernel/specs/revertible-effects.md`.
|
|
12
|
+
*/
|
|
13
|
+
export type FrameLabel = "create" | "init" | "run";
|
|
14
|
+
/** One inverse that refused, kept with the reason its author gave the effect. */
|
|
15
|
+
export interface RecoveryFailure {
|
|
16
|
+
readonly reason: string;
|
|
17
|
+
readonly error: unknown;
|
|
18
|
+
}
|
|
19
|
+
/** One link of a chain: what to run, and what the author called it. */
|
|
20
|
+
interface Step {
|
|
21
|
+
readonly reason: string;
|
|
22
|
+
readonly body: EffectBody<unknown, unknown>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A lazy chain of steps against one scope.
|
|
26
|
+
*
|
|
27
|
+
* Immutable and value-like, so `chain.effect(...)` in a branch or a loop builds
|
|
28
|
+
* a new description rather than mutating a shared one. Deliberately NOT a
|
|
29
|
+
* thenable: an `async init()` would unwrap it and hand the kernel its last
|
|
30
|
+
* result instead of the chain.
|
|
31
|
+
*/
|
|
32
|
+
declare class Chain<T> implements EffectChain<T> {
|
|
33
|
+
private readonly scope;
|
|
34
|
+
private readonly steps;
|
|
35
|
+
constructor(scope: EffectScope, steps: readonly Step[]);
|
|
36
|
+
effect<TNext>(reason: string, body: EffectBody<T, TNext>): EffectChain<TNext>;
|
|
37
|
+
perform(): Promise<EffectResult<T>>;
|
|
38
|
+
/** The steps, for the kernel executing a chain a controller returned. */
|
|
39
|
+
plan(): readonly Step[];
|
|
40
|
+
}
|
|
41
|
+
/** A chain produced by this kernel, as opposed to any other object a controller
|
|
42
|
+
* might return from `init()`. */
|
|
43
|
+
export declare function isEffectChain(value: unknown): value is Chain<unknown>;
|
|
44
|
+
export declare class EffectScope {
|
|
45
|
+
private readonly label;
|
|
46
|
+
/** Innermost last. `create` is opened with the scope, so there is always a
|
|
47
|
+
* frame to register onto. */
|
|
48
|
+
private readonly frames;
|
|
49
|
+
/** Set while this scope is unwinding. A generator body checks it at each step
|
|
50
|
+
* boundary and stops rather than allocating into a scope that is going away —
|
|
51
|
+
* the mid-boot SIGINT case. */
|
|
52
|
+
private unwinding;
|
|
53
|
+
/** Terminal: set by {@link unwindAll}. A closed scope has no frames and takes
|
|
54
|
+
* no new effects. */
|
|
55
|
+
private closed;
|
|
56
|
+
constructor(label: string);
|
|
57
|
+
/** Refuse work against a scope that has already unwound. Raised BEFORE a
|
|
58
|
+
* forward body runs, so a late effect cannot allocate and then find it has
|
|
59
|
+
* nowhere to record the inverse. */
|
|
60
|
+
private assertOpen;
|
|
61
|
+
openFrame(label: FrameLabel): void;
|
|
62
|
+
/** Start a chain. Nothing runs until it is executed. */
|
|
63
|
+
chain<T>(reason: string, body: EffectBody<void, T>): EffectChain<T>;
|
|
64
|
+
/**
|
|
65
|
+
* Register an inverse for work performed elsewhere, without a forward body.
|
|
66
|
+
*
|
|
67
|
+
* The synchronous door onto the same accumulator, for a primitive that
|
|
68
|
+
* already returns its own inverse: `acquireHold` hands back a release
|
|
69
|
+
* closure, and its public signature is synchronous, so it cannot go through a
|
|
70
|
+
* chain.
|
|
71
|
+
*/
|
|
72
|
+
register(reason: string, inverse: Inverse): () => Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Run a chain's steps in order against the frame open NOW, threading each
|
|
75
|
+
* step's result into the next.
|
|
76
|
+
*
|
|
77
|
+
* A step that throws leaves every inverse produced so far on the frame — this
|
|
78
|
+
* does not unwind, because whether a partial `init()` is recovered-and-retried
|
|
79
|
+
* or torn down is the caller's decision, not this function's.
|
|
80
|
+
*/
|
|
81
|
+
execute(steps: readonly Step[]): Promise<EffectResult<unknown>>;
|
|
82
|
+
/**
|
|
83
|
+
* Unwind the innermost frame and close it, returning what refused.
|
|
84
|
+
*
|
|
85
|
+
* Failures are returned rather than thrown: the caller decides what a refusal
|
|
86
|
+
* means. Pre-retry recovery withholds the resource (retrying from a state that
|
|
87
|
+
* could not be rolled back is worse than not retrying); teardown aggregates
|
|
88
|
+
* and keeps going, so one throwing resource cannot strand the log sinks pinned
|
|
89
|
+
* to outlive it.
|
|
90
|
+
*/
|
|
91
|
+
unwindFrame(): Promise<RecoveryFailure[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Unwind every open frame, innermost first, and CLOSE the scope.
|
|
94
|
+
*
|
|
95
|
+
* Terminal, because both callers are: teardown, and the discard of a resource
|
|
96
|
+
* whose `init()` failed (its replacement is built with a fresh context, so a
|
|
97
|
+
* fresh scope). A closed scope refuses new effects rather than accepting them
|
|
98
|
+
* onto a frame nothing will ever unwind — recording an inverse that will never
|
|
99
|
+
* run is the silent leak this whole mechanism exists to remove, and it is
|
|
100
|
+
* exactly the shape a detached task still settling after teardown produces.
|
|
101
|
+
*/
|
|
102
|
+
unwindAll(): Promise<RecoveryFailure[]>;
|
|
103
|
+
private runInverses;
|
|
104
|
+
private disposeEntries;
|
|
105
|
+
private current;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Execute whatever a lifecycle method returned.
|
|
109
|
+
*
|
|
110
|
+
* A controller that allocates nothing returns nothing, so a non-chain return is
|
|
111
|
+
* not an error — but it is also not an inverse, which is why `init()` returning
|
|
112
|
+
* a chain it forgot to hand back fails loudly and immediately: nothing was
|
|
113
|
+
* allocated at all.
|
|
114
|
+
*/
|
|
115
|
+
export declare function executeReturnedChain(returned: unknown, scope?: EffectScope): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* What the teardown cascade needs from a resource's context: its inverses, and
|
|
118
|
+
* its detached-task drain.
|
|
119
|
+
*
|
|
120
|
+
* Structural rather than the context class itself, so the accumulator does not
|
|
121
|
+
* pull the whole `ResourceContextImpl` into every consumer — and so the drain
|
|
122
|
+
* stays visibly a *second* thing, since it waits for in-flight work rather than
|
|
123
|
+
* undoing anything.
|
|
124
|
+
*/
|
|
125
|
+
export interface EffectOwner {
|
|
126
|
+
readonly effects: EffectScope;
|
|
127
|
+
drainDetached(): Promise<void>;
|
|
128
|
+
}
|
|
129
|
+
export declare function bindEffectOwner(instance: ResourceInstance, owner: EffectOwner): void;
|
|
130
|
+
export declare function effectOwnerOf(instance: ResourceInstance): EffectOwner | undefined;
|
|
131
|
+
export {};
|
|
132
|
+
//# sourceMappingURL=effect-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-scope.d.ts","sourceRoot":"","sources":["../src/effect-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { RuntimeError } from "@telorun/sdk";
|
|
2
|
+
/** One line for an inverse's refusal, quoted into a recovery aggregate. */
|
|
3
|
+
function errorText(err) {
|
|
4
|
+
return err instanceof Error ? err.message : String(err);
|
|
5
|
+
}
|
|
6
|
+
function isAsyncGenerator(value) {
|
|
7
|
+
return (typeof value === "object" &&
|
|
8
|
+
value !== null &&
|
|
9
|
+
typeof value.next === "function" &&
|
|
10
|
+
Symbol.asyncIterator in value);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A lazy chain of steps against one scope.
|
|
14
|
+
*
|
|
15
|
+
* Immutable and value-like, so `chain.effect(...)` in a branch or a loop builds
|
|
16
|
+
* a new description rather than mutating a shared one. Deliberately NOT a
|
|
17
|
+
* thenable: an `async init()` would unwrap it and hand the kernel its last
|
|
18
|
+
* result instead of the chain.
|
|
19
|
+
*/
|
|
20
|
+
class Chain {
|
|
21
|
+
scope;
|
|
22
|
+
steps;
|
|
23
|
+
constructor(scope, steps) {
|
|
24
|
+
this.scope = scope;
|
|
25
|
+
this.steps = steps;
|
|
26
|
+
}
|
|
27
|
+
effect(reason, body) {
|
|
28
|
+
return new Chain(this.scope, [
|
|
29
|
+
...this.steps,
|
|
30
|
+
{ reason, body: body },
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
perform() {
|
|
34
|
+
return this.scope.execute(this.steps);
|
|
35
|
+
}
|
|
36
|
+
/** The steps, for the kernel executing a chain a controller returned. */
|
|
37
|
+
plan() {
|
|
38
|
+
return this.steps;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** A chain produced by this kernel, as opposed to any other object a controller
|
|
42
|
+
* might return from `init()`. */
|
|
43
|
+
export function isEffectChain(value) {
|
|
44
|
+
return value instanceof Chain;
|
|
45
|
+
}
|
|
46
|
+
export class EffectScope {
|
|
47
|
+
label;
|
|
48
|
+
/** Innermost last. `create` is opened with the scope, so there is always a
|
|
49
|
+
* frame to register onto. */
|
|
50
|
+
frames = [];
|
|
51
|
+
/** Set while this scope is unwinding. A generator body checks it at each step
|
|
52
|
+
* boundary and stops rather than allocating into a scope that is going away —
|
|
53
|
+
* the mid-boot SIGINT case. */
|
|
54
|
+
unwinding = false;
|
|
55
|
+
/** Terminal: set by {@link unwindAll}. A closed scope has no frames and takes
|
|
56
|
+
* no new effects. */
|
|
57
|
+
closed = false;
|
|
58
|
+
constructor(label) {
|
|
59
|
+
this.label = label;
|
|
60
|
+
this.openFrame("create");
|
|
61
|
+
}
|
|
62
|
+
/** Refuse work against a scope that has already unwound. Raised BEFORE a
|
|
63
|
+
* forward body runs, so a late effect cannot allocate and then find it has
|
|
64
|
+
* nowhere to record the inverse. */
|
|
65
|
+
assertOpen(what) {
|
|
66
|
+
if (!this.closed)
|
|
67
|
+
return;
|
|
68
|
+
throw new RuntimeError("ERR_EFFECT_SCOPE_CLOSED", `${this.label}: '${what}' cannot run — this resource has been torn down. ` +
|
|
69
|
+
`An effect registered now would record an inverse nothing will ever run.`);
|
|
70
|
+
}
|
|
71
|
+
openFrame(label) {
|
|
72
|
+
this.frames.push({ label, entries: [] });
|
|
73
|
+
}
|
|
74
|
+
/** Start a chain. Nothing runs until it is executed. */
|
|
75
|
+
chain(reason, body) {
|
|
76
|
+
return new Chain(this, []).effect(reason, body);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Register an inverse for work performed elsewhere, without a forward body.
|
|
80
|
+
*
|
|
81
|
+
* The synchronous door onto the same accumulator, for a primitive that
|
|
82
|
+
* already returns its own inverse: `acquireHold` hands back a release
|
|
83
|
+
* closure, and its public signature is synchronous, so it cannot go through a
|
|
84
|
+
* chain.
|
|
85
|
+
*/
|
|
86
|
+
register(reason, inverse) {
|
|
87
|
+
this.assertOpen(reason);
|
|
88
|
+
const entry = { reason, inverse, disposed: false };
|
|
89
|
+
this.current().entries.push(entry);
|
|
90
|
+
return () => this.disposeEntries([entry]);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Run a chain's steps in order against the frame open NOW, threading each
|
|
94
|
+
* step's result into the next.
|
|
95
|
+
*
|
|
96
|
+
* A step that throws leaves every inverse produced so far on the frame — this
|
|
97
|
+
* does not unwind, because whether a partial `init()` is recovered-and-retried
|
|
98
|
+
* or torn down is the caller's decision, not this function's.
|
|
99
|
+
*/
|
|
100
|
+
async execute(steps) {
|
|
101
|
+
const registered = [];
|
|
102
|
+
const push = (reason, inverse) => {
|
|
103
|
+
const entry = { reason, inverse, disposed: false };
|
|
104
|
+
this.current().entries.push(entry);
|
|
105
|
+
registered.push(entry);
|
|
106
|
+
};
|
|
107
|
+
let value = undefined;
|
|
108
|
+
for (const step of steps) {
|
|
109
|
+
this.assertOpen(step.reason);
|
|
110
|
+
if (this.unwinding) {
|
|
111
|
+
throw new RuntimeError("ERR_EFFECT_SCOPE_CLOSING", `${this.label}: '${step.reason}' not started because the resource is being torn down`);
|
|
112
|
+
}
|
|
113
|
+
const produced = step.body(value);
|
|
114
|
+
if (isAsyncGenerator(produced)) {
|
|
115
|
+
const iterator = produced;
|
|
116
|
+
for (;;) {
|
|
117
|
+
if (this.unwinding) {
|
|
118
|
+
// Stop at the step boundary and let the generator run its own
|
|
119
|
+
// `finally`. What already yielded stays on the frame and is
|
|
120
|
+
// recovered by the unwind in progress.
|
|
121
|
+
await iterator.return?.(undefined);
|
|
122
|
+
throw new RuntimeError("ERR_EFFECT_SCOPE_CLOSING", `${this.label}: '${step.reason}' stopped because the resource is being torn down`);
|
|
123
|
+
}
|
|
124
|
+
const next = await iterator.next();
|
|
125
|
+
if (next.done) {
|
|
126
|
+
value = next.value;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
push(step.reason, next.value);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const outcome = (await produced);
|
|
134
|
+
// No inverse means the step allocated nothing that outlives a failure —
|
|
135
|
+
// a chain is the sequencing structure for lifecycle work as well as the
|
|
136
|
+
// record of what to undo, so a step with nothing to undo registers
|
|
137
|
+
// nothing rather than a no-op that would read as an oversight.
|
|
138
|
+
if (outcome.inverse)
|
|
139
|
+
push(step.reason, outcome.inverse);
|
|
140
|
+
value = outcome.result;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return { result: value, dispose: () => this.disposeEntries(registered) };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Unwind the innermost frame and close it, returning what refused.
|
|
147
|
+
*
|
|
148
|
+
* Failures are returned rather than thrown: the caller decides what a refusal
|
|
149
|
+
* means. Pre-retry recovery withholds the resource (retrying from a state that
|
|
150
|
+
* could not be rolled back is worse than not retrying); teardown aggregates
|
|
151
|
+
* and keeps going, so one throwing resource cannot strand the log sinks pinned
|
|
152
|
+
* to outlive it.
|
|
153
|
+
*/
|
|
154
|
+
async unwindFrame() {
|
|
155
|
+
const frame = this.frames.pop();
|
|
156
|
+
if (!frame)
|
|
157
|
+
return [];
|
|
158
|
+
return this.runInverses(frame.entries);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Unwind every open frame, innermost first, and CLOSE the scope.
|
|
162
|
+
*
|
|
163
|
+
* Terminal, because both callers are: teardown, and the discard of a resource
|
|
164
|
+
* whose `init()` failed (its replacement is built with a fresh context, so a
|
|
165
|
+
* fresh scope). A closed scope refuses new effects rather than accepting them
|
|
166
|
+
* onto a frame nothing will ever unwind — recording an inverse that will never
|
|
167
|
+
* run is the silent leak this whole mechanism exists to remove, and it is
|
|
168
|
+
* exactly the shape a detached task still settling after teardown produces.
|
|
169
|
+
*/
|
|
170
|
+
async unwindAll() {
|
|
171
|
+
const failures = [];
|
|
172
|
+
while (this.frames.length > 0)
|
|
173
|
+
failures.push(...(await this.unwindFrame()));
|
|
174
|
+
this.closed = true;
|
|
175
|
+
return failures;
|
|
176
|
+
}
|
|
177
|
+
async runInverses(entries) {
|
|
178
|
+
const wasUnwinding = this.unwinding;
|
|
179
|
+
this.unwinding = true;
|
|
180
|
+
const failures = [];
|
|
181
|
+
for (const entry of [...entries].reverse()) {
|
|
182
|
+
if (entry.disposed)
|
|
183
|
+
continue;
|
|
184
|
+
entry.disposed = true;
|
|
185
|
+
try {
|
|
186
|
+
await entry.inverse();
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
failures.push({ reason: entry.reason, error });
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
this.unwinding = wasUnwinding;
|
|
193
|
+
return failures;
|
|
194
|
+
}
|
|
195
|
+
async disposeEntries(entries) {
|
|
196
|
+
const failures = await this.runInverses(entries);
|
|
197
|
+
if (failures.length === 0)
|
|
198
|
+
return;
|
|
199
|
+
// An explicit dispose HAS a caller, unlike an unwind — so it throws rather
|
|
200
|
+
// than being collected into someone else's aggregate. Every refusal travels,
|
|
201
|
+
// matching the init and teardown paths: a dispose covers a chain, so
|
|
202
|
+
// reporting the first and dropping the rest would hide the others exactly
|
|
203
|
+
// where more than one thing failed to roll back.
|
|
204
|
+
throw new RuntimeError("ERR_EFFECT_RECOVERY_FAILED", `${this.label}: ${failures.length} inverse(s) refused: ` +
|
|
205
|
+
failures.map((f) => `'${f.reason}' (${errorText(f.error)})`).join(", "), failures.map((f) => ({
|
|
206
|
+
severity: "error",
|
|
207
|
+
message: `inverse '${f.reason}' refused: ${errorText(f.error)}`,
|
|
208
|
+
})));
|
|
209
|
+
}
|
|
210
|
+
current() {
|
|
211
|
+
this.assertOpen("effect");
|
|
212
|
+
const frame = this.frames[this.frames.length - 1];
|
|
213
|
+
if (!frame)
|
|
214
|
+
throw new RuntimeError("ERR_EFFECT_NO_FRAME", `${this.label}: no open effect frame`);
|
|
215
|
+
return frame;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Execute whatever a lifecycle method returned.
|
|
220
|
+
*
|
|
221
|
+
* A controller that allocates nothing returns nothing, so a non-chain return is
|
|
222
|
+
* not an error — but it is also not an inverse, which is why `init()` returning
|
|
223
|
+
* a chain it forgot to hand back fails loudly and immediately: nothing was
|
|
224
|
+
* allocated at all.
|
|
225
|
+
*/
|
|
226
|
+
export async function executeReturnedChain(returned, scope) {
|
|
227
|
+
if (!isEffectChain(returned))
|
|
228
|
+
return;
|
|
229
|
+
if (!scope) {
|
|
230
|
+
throw new RuntimeError("ERR_EFFECT_NO_SCOPE", "a controller returned an effect chain from a resource with no effect scope");
|
|
231
|
+
}
|
|
232
|
+
await scope.execute(returned.plan());
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* An instance's effect owner, recorded at the kernel's single
|
|
236
|
+
* instance-production site — the anchor that already carries handle minting and
|
|
237
|
+
* contract binding, so an instance is never observable without one.
|
|
238
|
+
*
|
|
239
|
+
* A WeakMap rather than a field on the resource-instances map: teardown holds
|
|
240
|
+
* the instance and nothing else, and every reader of that map would otherwise
|
|
241
|
+
* have to learn about effects. First bind wins, mirroring handle minting: a
|
|
242
|
+
* `base:` child IS the parent instance returned verbatim, and re-binding would
|
|
243
|
+
* give one object two accumulators.
|
|
244
|
+
*/
|
|
245
|
+
const owners = new WeakMap();
|
|
246
|
+
export function bindEffectOwner(instance, owner) {
|
|
247
|
+
if (!owners.has(instance))
|
|
248
|
+
owners.set(instance, owner);
|
|
249
|
+
}
|
|
250
|
+
export function effectOwnerOf(instance) {
|
|
251
|
+
return owners.get(instance);
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=effect-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-scope.js","sourceRoot":"","sources":["../src/effect-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,12 +50,27 @@ export declare class EvaluationContext implements IEvaluationContext {
|
|
|
50
50
|
resource: ResourceManifest;
|
|
51
51
|
instance: ResourceInstance;
|
|
52
52
|
}>;
|
|
53
|
-
/** Resources that have been created but not yet initialized (between phases).
|
|
53
|
+
/** Resources that have been created but not yet initialized (between phases).
|
|
54
|
+
* `source` is the manifest as REGISTERED, kept so a discarded instance is
|
|
55
|
+
* rebuilt from what the author wrote rather than from the create-time
|
|
56
|
+
* expansion of it. */
|
|
54
57
|
protected readonly createdInstances: Map<string, {
|
|
55
58
|
resource: ResourceManifest;
|
|
56
59
|
instance: ResourceInstance;
|
|
57
60
|
ctx: any;
|
|
61
|
+
source: ResourceManifest;
|
|
58
62
|
}>;
|
|
63
|
+
/**
|
|
64
|
+
* Resources whose failed `init()` could not be rolled back.
|
|
65
|
+
*
|
|
66
|
+
* Withheld rather than retried: re-running `init()` from a state an inverse
|
|
67
|
+
* refused to restore is worse than not retrying, so the loop skips them and
|
|
68
|
+
* they are reported with both the init error and the refusing inverse.
|
|
69
|
+
*/
|
|
70
|
+
private readonly withheldResources;
|
|
71
|
+
/** Resources discarded after a failed `init()` and re-queued for creation.
|
|
72
|
+
* Their re-creation is not progress — see the create sub-phase. */
|
|
73
|
+
private readonly recreatedResources;
|
|
59
74
|
/** Resources queued for initialization on this context node. */
|
|
60
75
|
private pendingResources;
|
|
61
76
|
/**
|
|
@@ -178,6 +193,16 @@ export declare class EvaluationContext implements IEvaluationContext {
|
|
|
178
193
|
* Attach a child context to this node. The child's parent is set to this
|
|
179
194
|
* context and the child is registered under the given name.
|
|
180
195
|
*/
|
|
196
|
+
/**
|
|
197
|
+
* Detach a child from this node — the inverse of {@link spawnChild}.
|
|
198
|
+
*
|
|
199
|
+
* A child is normally torn down in place, so this exists for the one case
|
|
200
|
+
* that discards it instead: an import whose instance is dropped and rebuilt
|
|
201
|
+
* must not leave its child in `children`, or this context's teardown cascades
|
|
202
|
+
* into a context whose replacement is already live. Here rather than in the
|
|
203
|
+
* controller, because how children are tracked is this class's own fact.
|
|
204
|
+
*/
|
|
205
|
+
detachChild(child: IEvaluationContext): void;
|
|
181
206
|
spawnChild<T extends IEvaluationContext>(child: T): T;
|
|
182
207
|
/** Spawn a fresh child context attached to this node — the isolated scope a
|
|
183
208
|
* templated definition registers its `resources:` into. Rooting it on the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation-context.d.ts","sourceRoot":"","sources":["../src/evaluation-context.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,WAAW,EAEX,KAAK,iBAAiB,IAAI,kBAAkB,EAC5C,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAGlB,KAAK,WAAW,EAChB,KAAK,MAAM,EACZ,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluation-context.d.ts","sourceRoot":"","sources":["../src/evaluation-context.ts"],"names":[],"mappings":"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"}
|