@oomol-lab/open-flow 0.1.0-alpha.10 → 0.1.0-alpha.13
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/README.md +5 -1
- package/dist/browser/addNodeOptions-JRHMwVOl.js +9597 -0
- package/dist/browser/{change-Cu6pQIit.js → change-BATEvjif.js} +2 -2
- package/dist/browser/createResourceDialog-CWD62rU0.js +467 -0
- package/dist/browser/{esm-CvAs_mAS.js → esm-C04lx1pd.js} +1 -1
- package/dist/browser/flow-authoring-node.d.ts +2 -0
- package/dist/browser/flow-authoring.d.ts +1 -1
- package/dist/browser/flow-authoring.js +387 -126
- package/dist/browser/flow-change.d.ts +9 -4
- package/dist/browser/flow-change.js +49 -46
- package/dist/browser/{flowRunInputEditorStore-DXOyyY7o.js → flowRunInputEditorStore-BUwR9Vbp.js} +1615 -882
- package/dist/browser/{flowWorkspace-X_T_DcQf.js → flowWorkspace-_qaqIyDi.js} +18174 -16631
- package/dist/browser/languages-DgJehE1g.js +62 -0
- package/dist/browser/lib-C5Ipyfps.js +7856 -0
- package/dist/browser/main-DmjVyuWr.js +76 -0
- package/dist/browser/{markdownContent-BI-2PmDX.js → markdownContent-CX77lBFM.js} +4795 -4787
- package/dist/browser/theme.css +63 -0
- package/dist/browser/theme.css.d.ts +1 -0
- package/dist/browser/typeScriptSession-D5neIpug.js +2560 -0
- package/dist/browser/{createLucideIcon-COMgwa_u.js → useOpenInteractionType-CRgOHg5M.js} +2484 -2254
- package/dist/browser/workbench-contract.d.ts +2 -1
- package/dist/browser/workbench.css +1 -1
- package/dist/browser/workbench.d.ts +16 -1
- package/dist/browser/workbench.js +1492 -1307
- package/dist/common/control-api-conformance.js +39 -0
- package/dist/common/control-api-errors.d.ts +12 -0
- package/dist/common/control-api.d.ts +13 -0
- package/dist/common/control-api.js +120 -73
- package/dist/common/flow-encoding.d.ts +2 -2
- package/dist/common/flow-encoding.js +4 -1
- package/dist/common/flow-semantics.d.ts +2 -0
- package/dist/common/flow-semantics.js +869 -838
- package/dist/common/licenses.md +1 -25
- package/dist/common/localization.d.ts +21 -0
- package/dist/common/localization.js +62 -0
- package/dist/common/scheduler.d.ts +1 -0
- package/dist/common/scheduler.js +64 -50
- package/package.json +9 -1
- package/dist/browser/addNodeOptions-BwrMvPQC.js +0 -5230
- package/dist/browser/assets/typeScriptWorker-CaA4llbX.js +0 -59850
- package/dist/browser/createResourceDialog-YgMLylQz.js +0 -467
- package/dist/browser/field-BrEG-7ap.js +0 -312
- package/dist/browser/typeScriptSession-Dagu_tRs.js +0 -2549
package/dist/common/licenses.md
CHANGED
|
@@ -1,27 +1,3 @@
|
|
|
1
1
|
# Licenses
|
|
2
2
|
|
|
3
|
-
The app
|
|
4
|
-
|
|
5
|
-
## dequal - 2.0.3 (MIT)
|
|
6
|
-
|
|
7
|
-
The MIT License (MIT)
|
|
8
|
-
|
|
9
|
-
Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
|
|
10
|
-
|
|
11
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
13
|
-
in the Software without restriction, including without limitation the rights
|
|
14
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
16
|
-
furnished to do so, subject to the following conditions:
|
|
17
|
-
|
|
18
|
-
The above copyright notice and this permission notice shall be included in
|
|
19
|
-
all copies or substantial portions of the Software.
|
|
20
|
-
|
|
21
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
27
|
-
THE SOFTWARE.
|
|
3
|
+
The app does not bundle any dependencies with licenses.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const uiLanguages: readonly ['en', 'zh-CN', 'zh-TW', 'ja', 'ko', 'ru', 'fr'];
|
|
2
|
+
export type UiLanguage = (typeof uiLanguages)[number];
|
|
3
|
+
export declare const defaultUiLanguage: UiLanguage;
|
|
4
|
+
/** Endonyms, shown in language pickers regardless of the current UI language. */
|
|
5
|
+
export declare const uiLanguageNames: Readonly<Record<UiLanguage, string>>;
|
|
6
|
+
export declare function isUiLanguage(value: unknown): value is UiLanguage;
|
|
7
|
+
/**
|
|
8
|
+
* BCP 47 aware resolution over candidates such as `navigator.languages`: an exact tag match
|
|
9
|
+
* (case-insensitive) wins; for zh an explicit script subtag beats the region (zh-Hant-* to zh-TW,
|
|
10
|
+
* zh-Hans-* to zh-CN), then zh-TW, zh-HK and zh-MO map to zh-TW and any other zh* to zh-CN; en, ja,
|
|
11
|
+
* ko, ru and fr also match on their primary subtag (fr-CA to fr, ja-JP to ja).
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveUiLanguage(candidates: Iterable<string | null | undefined>, fallback?: UiLanguage): UiLanguage;
|
|
14
|
+
/** Languages written with CJK scripts: zh-CN, zh-TW, ja and ko. */
|
|
15
|
+
export declare function isCjkLanguage(language: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Lookup order for package-author locale files (`oo-locales/<lang>.json`), which only exist for en
|
|
18
|
+
* and zh-CN today. Traditional Chinese readers prefer Simplified Chinese over English; every other
|
|
19
|
+
* language falls back to English first. The chain never repeats a locale.
|
|
20
|
+
*/
|
|
21
|
+
export declare function userLocaleFallbackChain(language: string): readonly string[];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
//#region src/localization/common/languages.ts
|
|
2
|
+
var e = [
|
|
3
|
+
"en",
|
|
4
|
+
"zh-CN",
|
|
5
|
+
"zh-TW",
|
|
6
|
+
"ja",
|
|
7
|
+
"ko",
|
|
8
|
+
"ru",
|
|
9
|
+
"fr"
|
|
10
|
+
], t = "en", n = {
|
|
11
|
+
en: "English",
|
|
12
|
+
"zh-CN": "简体中文",
|
|
13
|
+
"zh-TW": "繁體中文",
|
|
14
|
+
ja: "日本語",
|
|
15
|
+
ko: "한국어",
|
|
16
|
+
ru: "Русский",
|
|
17
|
+
fr: "Français"
|
|
18
|
+
}, r = new Map(e.map((e) => [e.toLowerCase(), e])), i = /* @__PURE__ */ new Set([
|
|
19
|
+
"hk",
|
|
20
|
+
"mo",
|
|
21
|
+
"tw"
|
|
22
|
+
]), a = /* @__PURE__ */ new Set([
|
|
23
|
+
"zh-CN",
|
|
24
|
+
"zh-TW",
|
|
25
|
+
"ja",
|
|
26
|
+
"ko"
|
|
27
|
+
]);
|
|
28
|
+
function o(e) {
|
|
29
|
+
return typeof e == "string" && r.get(e.toLowerCase()) == e;
|
|
30
|
+
}
|
|
31
|
+
function s(e, t = "en") {
|
|
32
|
+
for (let t of e) {
|
|
33
|
+
let e = t == null ? void 0 : u(t);
|
|
34
|
+
if (e != null) return e;
|
|
35
|
+
}
|
|
36
|
+
return t;
|
|
37
|
+
}
|
|
38
|
+
function c(e) {
|
|
39
|
+
let t = u(e);
|
|
40
|
+
return t != null && a.has(t);
|
|
41
|
+
}
|
|
42
|
+
function l(e) {
|
|
43
|
+
return e == "zh-TW" ? [
|
|
44
|
+
"zh-TW",
|
|
45
|
+
"zh-CN",
|
|
46
|
+
"en"
|
|
47
|
+
] : e == "zh-CN" ? ["zh-CN", "en"] : e == "en" ? ["en", "zh-CN"] : [
|
|
48
|
+
e,
|
|
49
|
+
"en",
|
|
50
|
+
"zh-CN"
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
function u(e) {
|
|
54
|
+
let t = e.trim().toLowerCase();
|
|
55
|
+
if (t.length == 0) return;
|
|
56
|
+
let n = r.get(t);
|
|
57
|
+
if (n != null) return n;
|
|
58
|
+
let a = t.split("-");
|
|
59
|
+
return a[0] == "zh" ? a.includes("hant") ? "zh-TW" : a.includes("hans") ? "zh-CN" : a.some((e) => i.has(e)) ? "zh-TW" : "zh-CN" : r.get(a[0]);
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { t as defaultUiLanguage, c as isCjkLanguage, o as isUiLanguage, s as resolveUiLanguage, n as uiLanguageNames, e as uiLanguages, l as userLocaleFallbackChain };
|
|
@@ -86,6 +86,7 @@ export interface SchedulerFailure {
|
|
|
86
86
|
readonly message: string;
|
|
87
87
|
}
|
|
88
88
|
export interface FlowRunOptions {
|
|
89
|
+
readonly bindingValues?: Readonly<Record<string, string>>;
|
|
89
90
|
readonly createId: () => string;
|
|
90
91
|
readonly emit?: (event: SchedulerEvent) => Effect.Effect<void, Error>;
|
|
91
92
|
readonly flowId: string;
|
package/dist/common/scheduler.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as t from "effect/Exit";
|
|
|
3
3
|
import * as n from "effect/FiberSet";
|
|
4
4
|
//#region src/flow/common/change.ts
|
|
5
5
|
function r(e) {
|
|
6
|
-
return Object.fromEntries(e.
|
|
6
|
+
return Object.fromEntries(e.flatMap((e) => "handle" in e ? [[e.handle, e]] : []));
|
|
7
7
|
}
|
|
8
8
|
//#endregion
|
|
9
9
|
//#region src/execution/common/scheduler.ts
|
|
@@ -173,21 +173,27 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
173
173
|
runId: m,
|
|
174
174
|
type: "run.started"
|
|
175
175
|
});
|
|
176
|
-
let w = p(o.graph), T = w.length, E = new Map(Object.entries(o.graph.nodes).map(([e, t]) => [e, new s(e, t, c(a.prepared, t))])), D = /* @__PURE__ */ new Map(), O = /* @__PURE__ */ new Map(), k = /* @__PURE__ */ new Map();
|
|
177
|
-
for (let [e, t] of Object.entries(o.graph.nodes)) for (let [n, r] of Object.entries(t.inputs)) if (r.kind == "sources") for (let t of r.sources) if (t.kind == "
|
|
176
|
+
let w = p(o.graph), T = w.length, E = new Map(Object.entries(o.graph.nodes).map(([e, t]) => [e, new s(e, t, c(a.prepared, t))])), D = /* @__PURE__ */ new Map(), O = /* @__PURE__ */ new Map(), k = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ new Map();
|
|
177
|
+
for (let [e, t] of Object.entries(o.graph.nodes)) for (let [n, r] of Object.entries(t.inputs)) if (r.kind == "sources") for (let t of r.sources) if (t.kind == "binding") {
|
|
178
|
+
let r = O.get(t.bindingId) ?? [];
|
|
179
|
+
r.push({
|
|
180
|
+
handle: n,
|
|
181
|
+
nodeId: e
|
|
182
|
+
}), O.set(t.bindingId, r);
|
|
183
|
+
} else if (t.kind == "flow") {
|
|
178
184
|
let r = D.get(t.input) ?? [];
|
|
179
185
|
r.push({
|
|
180
186
|
handle: n,
|
|
181
187
|
nodeId: e
|
|
182
188
|
}), D.set(t.input, r);
|
|
183
|
-
} else t.kind == "node" && d(
|
|
189
|
+
} else t.kind == "node" && d(k, t.nodeId, t.output, {
|
|
184
190
|
handle: n,
|
|
185
191
|
nodeId: e
|
|
186
192
|
});
|
|
187
|
-
for (let [e, t] of Object.entries(o.outputs)) for (let n of t.sources) n.kind == "node" && d(
|
|
188
|
-
let
|
|
189
|
-
|
|
190
|
-
},
|
|
193
|
+
for (let [e, t] of Object.entries(o.outputs)) for (let n of t.sources) n.kind == "node" && d(A, n.nodeId, n.output, e);
|
|
194
|
+
let j = /* @__PURE__ */ new Map(), M = yield* n.make(), N = yield* n.runtime(M)(), P = /* @__PURE__ */ new Map(), F = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Map(), L = /* @__PURE__ */ new Set(), R, z, B, V = (e, t) => {
|
|
195
|
+
R ?? (E.get(e.nodeId).push(e.handle, t), B(e.nodeId));
|
|
196
|
+
}, H = (t, n, r, i) => e.gen(function* () {
|
|
191
197
|
yield* a.emit({
|
|
192
198
|
handle: r,
|
|
193
199
|
jobId: n,
|
|
@@ -196,13 +202,16 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
196
202
|
type: "node.output",
|
|
197
203
|
value: i
|
|
198
204
|
});
|
|
199
|
-
for (let e of f(
|
|
200
|
-
for (let e of f(
|
|
201
|
-
}),
|
|
205
|
+
for (let e of f(k, t, r)) V(e, i);
|
|
206
|
+
for (let e of f(A, t, r)) I.set(e, i), S != null && (yield* S(e, i));
|
|
207
|
+
}), U = (t, n, i, o) => {
|
|
202
208
|
let s = e.gen(function* () {
|
|
203
|
-
let s = u(a.prepared, n), c = l(a.prepared, n)
|
|
209
|
+
let s = u(a.prepared, n), c = l(a.prepared, n), d = Object.fromEntries(Object.entries(o).filter(([e]) => {
|
|
210
|
+
let t = n.inputs[e];
|
|
211
|
+
return t?.kind != "sources" || t.sources.every((e) => e.kind != "binding");
|
|
212
|
+
}));
|
|
204
213
|
yield* a.emit({
|
|
205
|
-
inputs:
|
|
214
|
+
inputs: d,
|
|
206
215
|
jobId: i,
|
|
207
216
|
nodeId: t,
|
|
208
217
|
nodeKind: s,
|
|
@@ -210,7 +219,7 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
210
219
|
runId: m,
|
|
211
220
|
type: "node.started"
|
|
212
221
|
});
|
|
213
|
-
let
|
|
222
|
+
let f;
|
|
214
223
|
switch (n.kind) {
|
|
215
224
|
case "condition": {
|
|
216
225
|
let e = n.cases.find((e) => {
|
|
@@ -218,16 +227,16 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
218
227
|
let t = e.expressions.map((e) => h(n, e, o));
|
|
219
228
|
return e.relation == "all" ? t.every(Boolean) : t.some(Boolean);
|
|
220
229
|
})?.output ?? n.defaultOutput;
|
|
221
|
-
|
|
230
|
+
f = e == null ? {} : { [e]: o[n.input.handle] ?? null }, e != null && (yield* H(t, i, e, f[e]));
|
|
222
231
|
break;
|
|
223
232
|
}
|
|
224
233
|
case "value":
|
|
225
|
-
|
|
226
|
-
for (let [e, n] of Object.entries(
|
|
234
|
+
f = Object.fromEntries(n.values.map((e) => [e.handle, e.value ?? null]));
|
|
235
|
+
for (let [e, n] of Object.entries(f)) yield* H(t, i, e, n);
|
|
227
236
|
break;
|
|
228
237
|
case "subflow": {
|
|
229
238
|
let e = a.prepared.subflows[n.subflowId];
|
|
230
|
-
|
|
239
|
+
f = yield* _(a, {
|
|
231
240
|
flowId: n.subflowId,
|
|
232
241
|
graph: y(e.graph),
|
|
233
242
|
inputs: r(e.inputs),
|
|
@@ -236,7 +245,7 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
236
245
|
}, a.createId(), o, {
|
|
237
246
|
jobId: i,
|
|
238
247
|
runId: m
|
|
239
|
-
}, {}, (e, n) =>
|
|
248
|
+
}, {}, (e, n) => H(t, i, e, n));
|
|
240
249
|
break;
|
|
241
250
|
}
|
|
242
251
|
case "task": {
|
|
@@ -251,11 +260,11 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
251
260
|
moduleId: n.task.moduleId
|
|
252
261
|
}
|
|
253
262
|
});
|
|
254
|
-
|
|
263
|
+
f = yield* e.try({
|
|
255
264
|
try: () => g(r, t),
|
|
256
265
|
catch: (e) => e instanceof Error ? e : Error(String(e))
|
|
257
266
|
});
|
|
258
|
-
for (let [e, n] of Object.entries(
|
|
267
|
+
for (let [e, n] of Object.entries(f)) yield* H(t, i, e, n);
|
|
259
268
|
break;
|
|
260
269
|
}
|
|
261
270
|
}
|
|
@@ -264,31 +273,31 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
264
273
|
nodeId: t,
|
|
265
274
|
runId: m,
|
|
266
275
|
type: "node.completed"
|
|
267
|
-
}),
|
|
276
|
+
}), f;
|
|
268
277
|
});
|
|
269
278
|
return n.timeoutMs == null ? s : s.pipe(e.timeoutOrElse({
|
|
270
279
|
duration: n.timeoutMs,
|
|
271
280
|
orElse: () => e.fail(/* @__PURE__ */ Error(`Node "${t}" timed out.`))
|
|
272
281
|
}));
|
|
273
|
-
},
|
|
274
|
-
let n = o.graph.nodes[t], r = E.get(t).take(), s = a.createId(), c =
|
|
275
|
-
|
|
276
|
-
let e =
|
|
282
|
+
}, W = (t) => {
|
|
283
|
+
let n = o.graph.nodes[t], r = E.get(t).take(), s = a.createId(), c = F.get(t) ?? 0;
|
|
284
|
+
F.set(t, c + 1), j.set(t, (j.get(t) ?? 0) + 1), N(U(t, n, s, r).pipe(e.tap((n) => e.gen(function* () {
|
|
285
|
+
let e = P.get(t) ?? [];
|
|
277
286
|
e.push({
|
|
278
287
|
jobId: s,
|
|
279
288
|
order: c,
|
|
280
289
|
outputs: n
|
|
281
|
-
}),
|
|
290
|
+
}), P.set(t, e), L.has(t) || (L.add(t), yield* a.emit({
|
|
282
291
|
...b == null ? {} : {
|
|
283
292
|
parentJobId: b.jobId,
|
|
284
293
|
parentRunId: b.runId
|
|
285
294
|
},
|
|
286
|
-
progress:
|
|
295
|
+
progress: L.size / T * 100,
|
|
287
296
|
runId: m,
|
|
288
297
|
type: "run.progress"
|
|
289
298
|
}));
|
|
290
299
|
})), e.tapError((n) => e.gen(function* () {
|
|
291
|
-
|
|
300
|
+
R ?? (z ??= n);
|
|
292
301
|
let r = i(n, a.projectFailure);
|
|
293
302
|
yield* a.emit({
|
|
294
303
|
...r,
|
|
@@ -298,39 +307,43 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
298
307
|
type: "node.failed"
|
|
299
308
|
}).pipe(e.ignore);
|
|
300
309
|
})), e.tapCause((t) => e.sync(() => {
|
|
301
|
-
|
|
310
|
+
R ??= t;
|
|
302
311
|
})), e.ensuring(e.sync(() => {
|
|
303
|
-
|
|
312
|
+
j.set(t, (j.get(t) ?? 1) - 1), B(t);
|
|
304
313
|
}))));
|
|
305
314
|
};
|
|
306
|
-
|
|
307
|
-
if (
|
|
315
|
+
B = (e) => {
|
|
316
|
+
if (R != null) return;
|
|
308
317
|
let t = o.graph.nodes[e], n = E.get(e);
|
|
309
|
-
for (; n.ready && (
|
|
318
|
+
for (; n.ready && (j.get(e) ?? 0) < t.concurrency;) W(e);
|
|
310
319
|
};
|
|
311
320
|
for (let [e, t] of Object.entries(x)) {
|
|
312
321
|
let n = E.get(e);
|
|
313
322
|
if (n != null) for (let [e, r] of Object.entries(t)) n.launch(e, r);
|
|
314
323
|
}
|
|
324
|
+
for (let [t, n] of O) {
|
|
325
|
+
if (!Object.hasOwn(a.bindingValues, t)) return yield* e.fail(/* @__PURE__ */ Error(`Variable binding "${t}" is unresolved.`));
|
|
326
|
+
for (let e of n) V(e, a.bindingValues[t]);
|
|
327
|
+
}
|
|
315
328
|
for (let [e, t] of Object.entries(o.inputs)) {
|
|
316
329
|
let n = Object.hasOwn(v, e) ? v[e] : t.value;
|
|
317
330
|
if (n !== void 0) {
|
|
318
|
-
for (let t of Object.entries(o.outputs)) t[1].sources.some((t) => t.kind == "flow" && t.input == e) && (
|
|
319
|
-
for (let t of D.get(e) ?? [])
|
|
331
|
+
for (let t of Object.entries(o.outputs)) t[1].sources.some((t) => t.kind == "flow" && t.input == e) && (I.set(t[0], n), S != null && (yield* S(t[0], n)));
|
|
332
|
+
for (let t of D.get(e) ?? []) V(t, n);
|
|
320
333
|
}
|
|
321
334
|
}
|
|
322
|
-
if (C != null) for (let e of f(
|
|
323
|
-
for (let e of w)
|
|
324
|
-
let
|
|
325
|
-
if (
|
|
326
|
-
message:
|
|
335
|
+
if (C != null) for (let e of f(k, C.nodeId, "payload")) V(e, C.payload);
|
|
336
|
+
for (let e of w) B(e);
|
|
337
|
+
let G = yield* e.raceFirst(n.awaitEmpty(M), n.join(M)).pipe(e.exit);
|
|
338
|
+
if (z != null) return yield* n.clear(M), yield* a.emit({
|
|
339
|
+
message: z.message,
|
|
327
340
|
runId: m,
|
|
328
341
|
type: "run.failed"
|
|
329
|
-
}).pipe(e.ignore), yield* e.fail(
|
|
330
|
-
if (
|
|
331
|
-
if (t.isFailure(
|
|
342
|
+
}).pipe(e.ignore), yield* e.fail(z);
|
|
343
|
+
if (R != null) return yield* n.clear(M), yield* e.failCause(R);
|
|
344
|
+
if (t.isFailure(G)) return yield* e.failCause(G.cause);
|
|
332
345
|
if (o.kind == "subflow") {
|
|
333
|
-
let e = Object.fromEntries(
|
|
346
|
+
let e = Object.fromEntries(I);
|
|
334
347
|
return yield* a.emit({
|
|
335
348
|
result: {
|
|
336
349
|
kind: "function-outputs",
|
|
@@ -341,10 +354,10 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
341
354
|
type: "run.completed"
|
|
342
355
|
}), e;
|
|
343
356
|
}
|
|
344
|
-
let
|
|
357
|
+
let K = new Set(Object.values(o.graph.nodes).flatMap((e) => Object.values(e.inputs).flatMap((e) => e.kind == "sources" ? e.sources.filter((e) => e.kind == "node").map((e) => e.nodeId) : []))), q = {
|
|
345
358
|
kind: "node-results",
|
|
346
|
-
nodes: w.filter((e) => !
|
|
347
|
-
jobs: (
|
|
359
|
+
nodes: w.filter((e) => !K.has(e)).map((e) => ({
|
|
360
|
+
jobs: (P.get(e) ?? []).toSorted((e, t) => e.order - t.order).map(({ jobId: e, outputs: t }) => ({
|
|
348
361
|
jobId: e,
|
|
349
362
|
outputs: t
|
|
350
363
|
})),
|
|
@@ -352,10 +365,10 @@ function _(a, o, m, v, b, x = {}, S, C) {
|
|
|
352
365
|
}))
|
|
353
366
|
};
|
|
354
367
|
return yield* a.emit({
|
|
355
|
-
result:
|
|
368
|
+
result: q,
|
|
356
369
|
runId: m,
|
|
357
370
|
type: "run.completed"
|
|
358
|
-
}),
|
|
371
|
+
}), q;
|
|
359
372
|
}));
|
|
360
373
|
}
|
|
361
374
|
function v(t, n) {
|
|
@@ -363,6 +376,7 @@ function v(t, n) {
|
|
|
363
376
|
return e.gen(function* () {
|
|
364
377
|
let i = n.trigger == null ? void 0 : t.graph.nodes[n.trigger.nodeId];
|
|
365
378
|
return n.trigger != null && (i == null || "inputs" in i) ? yield* e.fail(/* @__PURE__ */ Error(`Node "${n.trigger.nodeId}" is not a TriggerNode in Flow "${n.flowId}".`)) : yield* _({
|
|
379
|
+
bindingValues: n.bindingValues ?? {},
|
|
366
380
|
createId: n.createId,
|
|
367
381
|
emit: r,
|
|
368
382
|
invokeTask: n.invokeTask,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oomol-lab/open-flow",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.13",
|
|
4
4
|
"description": "TypeScript contracts and Browser runtime for Open Flow.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -37,6 +37,10 @@
|
|
|
37
37
|
"types": "./dist/common/integration-trigger.d.ts",
|
|
38
38
|
"import": "./dist/common/integration-trigger.js"
|
|
39
39
|
},
|
|
40
|
+
"./localization": {
|
|
41
|
+
"types": "./dist/common/localization.d.ts",
|
|
42
|
+
"import": "./dist/common/localization.js"
|
|
43
|
+
},
|
|
40
44
|
"./poll-trigger": {
|
|
41
45
|
"types": "./dist/common/poll-trigger.d.ts",
|
|
42
46
|
"import": "./dist/common/poll-trigger.js"
|
|
@@ -88,6 +92,10 @@
|
|
|
88
92
|
"./workbench.css": {
|
|
89
93
|
"types": "./dist/browser/workbench.css.d.ts",
|
|
90
94
|
"default": "./dist/browser/workbench.css"
|
|
95
|
+
},
|
|
96
|
+
"./theme.css": {
|
|
97
|
+
"types": "./dist/browser/theme.css.d.ts",
|
|
98
|
+
"default": "./dist/browser/theme.css"
|
|
91
99
|
}
|
|
92
100
|
},
|
|
93
101
|
"files": [
|