@async/framework 0.11.15 → 0.11.17
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/CHANGELOG.md +27 -0
- package/README.md +10 -14
- package/browser.d.ts +45 -3
- package/browser.js +746 -47
- package/browser.min.js +1 -1
- package/browser.ts +746 -47
- package/browser.umd.js +746 -47
- package/browser.umd.min.js +1 -1
- package/framework.d.ts +45 -3
- package/framework.ts +746 -47
- package/package.json +24 -2
- package/runtime/events.d.ts +48 -0
- package/runtime/events.js +208 -0
- package/runtime/shared.js +85 -0
- package/runtime/signals.d.ts +31 -0
- package/runtime/signals.js +209 -0
- package/runtime.d.ts +72 -0
- package/runtime.js +63 -0
- package/server.js +746 -47
package/runtime.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { startEvents } from "./runtime/events.js";
|
|
2
|
+
import { startSignals } from "./runtime/signals.js";
|
|
3
|
+
import { createRuntimeController, normalizeRuntimeStartArgs } from "./runtime/shared.js";
|
|
4
|
+
|
|
5
|
+
export function start(rootOrOptions, planArg, optionsArg) {
|
|
6
|
+
const { root, plan, options } = normalizeRuntimeStartArgs(rootOrOptions, planArg, optionsArg);
|
|
7
|
+
assertRuntimePlan(plan);
|
|
8
|
+
const children = [];
|
|
9
|
+
let stopped = false;
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
let signals;
|
|
13
|
+
if (plan.signals) {
|
|
14
|
+
signals = startSignals(root, plan.signals, {
|
|
15
|
+
elements: plan.elements,
|
|
16
|
+
signal: options.signal,
|
|
17
|
+
onDiagnostic: options.onDiagnostic
|
|
18
|
+
});
|
|
19
|
+
children.push(signals);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (plan.events) {
|
|
23
|
+
children.push(startEvents(root, plan.events, {
|
|
24
|
+
elements: plan.elements,
|
|
25
|
+
signal: options.signal,
|
|
26
|
+
signals,
|
|
27
|
+
importModule: options.importModule,
|
|
28
|
+
onDiagnostic: options.onDiagnostic
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
} catch (error) {
|
|
32
|
+
stopChildren(children);
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return createRuntimeController({
|
|
37
|
+
get stopped() {
|
|
38
|
+
return stopped;
|
|
39
|
+
},
|
|
40
|
+
stop() {
|
|
41
|
+
if (stopped) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
stopped = true;
|
|
45
|
+
stopChildren(children);
|
|
46
|
+
}
|
|
47
|
+
}, options.signal);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function stopChildren(children) {
|
|
51
|
+
for (const child of [...children].reverse()) {
|
|
52
|
+
child.stop();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function assertRuntimePlan(plan) {
|
|
57
|
+
if (!plan || typeof plan !== "object") {
|
|
58
|
+
throw new TypeError("Runtime plan must be an object.");
|
|
59
|
+
}
|
|
60
|
+
if (plan.version !== 1) {
|
|
61
|
+
throw new Error(`Unsupported runtime plan version: ${String(plan.version)}.`);
|
|
62
|
+
}
|
|
63
|
+
}
|