@duckflux/core 0.6.8
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/cel/index.js +12010 -0
- package/dist/engine/index.js +27937 -0
- package/dist/eventhub/index.js +151 -0
- package/dist/index.js +28044 -0
- package/dist/parser/index.js +26765 -0
- package/package.json +48 -0
- package/src/cel/index.ts +156 -0
- package/src/engine/control.ts +169 -0
- package/src/engine/engine.ts +127 -0
- package/src/engine/errors.ts +90 -0
- package/src/engine/index.ts +8 -0
- package/src/engine/output.ts +109 -0
- package/src/engine/sequential.ts +379 -0
- package/src/engine/state.ts +185 -0
- package/src/engine/timeout.ts +43 -0
- package/src/engine/wait.ts +102 -0
- package/src/eventhub/index.ts +24 -0
- package/src/eventhub/memory.ts +106 -0
- package/src/eventhub/types.ts +17 -0
- package/src/index.ts +51 -0
- package/src/model/index.ts +183 -0
- package/src/parser/index.ts +4 -0
- package/src/parser/parser.ts +13 -0
- package/src/parser/schema/duckflux.schema.json +573 -0
- package/src/parser/schema.ts +26 -0
- package/src/parser/validate.ts +541 -0
- package/src/parser/validate_inputs.ts +187 -0
- package/src/participant/emit.ts +63 -0
- package/src/participant/exec.ts +158 -0
- package/src/participant/http.ts +45 -0
- package/src/participant/index.ts +61 -0
- package/src/participant/mcp.ts +8 -0
- package/src/participant/workflow.ts +73 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
function __accessProp(key) {
|
|
8
|
+
return this[key];
|
|
9
|
+
}
|
|
10
|
+
var __toESMCache_node;
|
|
11
|
+
var __toESMCache_esm;
|
|
12
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
13
|
+
var canCache = mod != null && typeof mod === "object";
|
|
14
|
+
if (canCache) {
|
|
15
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
16
|
+
var cached = cache.get(mod);
|
|
17
|
+
if (cached)
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
20
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
21
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
22
|
+
for (let key of __getOwnPropNames(mod))
|
|
23
|
+
if (!__hasOwnProp.call(to, key))
|
|
24
|
+
__defProp(to, key, {
|
|
25
|
+
get: __accessProp.bind(mod, key),
|
|
26
|
+
enumerable: true
|
|
27
|
+
});
|
|
28
|
+
if (canCache)
|
|
29
|
+
cache.set(mod, to);
|
|
30
|
+
return to;
|
|
31
|
+
};
|
|
32
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
33
|
+
var __returnValue = (v) => v;
|
|
34
|
+
function __exportSetter(name, newValue) {
|
|
35
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
36
|
+
}
|
|
37
|
+
var __export = (target, all) => {
|
|
38
|
+
for (var name in all)
|
|
39
|
+
__defProp(target, name, {
|
|
40
|
+
get: all[name],
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true,
|
|
43
|
+
set: __exportSetter.bind(all, name)
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
47
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
48
|
+
|
|
49
|
+
// src/eventhub/memory.ts
|
|
50
|
+
class MemoryHub {
|
|
51
|
+
listeners = new Map;
|
|
52
|
+
buffer = new Map;
|
|
53
|
+
closed = false;
|
|
54
|
+
async publish(event, payload) {
|
|
55
|
+
if (this.closed)
|
|
56
|
+
throw new Error("hub is closed");
|
|
57
|
+
const envelope = { name: event, payload };
|
|
58
|
+
let buf = this.buffer.get(event);
|
|
59
|
+
if (!buf) {
|
|
60
|
+
buf = [];
|
|
61
|
+
this.buffer.set(event, buf);
|
|
62
|
+
}
|
|
63
|
+
buf.push(envelope);
|
|
64
|
+
const listeners = this.listeners.get(event);
|
|
65
|
+
if (listeners) {
|
|
66
|
+
for (const listener of listeners) {
|
|
67
|
+
listener(envelope);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async publishAndWaitAck(event, payload, _timeoutMs) {
|
|
72
|
+
await this.publish(event, payload);
|
|
73
|
+
}
|
|
74
|
+
async* subscribe(event, signal) {
|
|
75
|
+
if (this.closed)
|
|
76
|
+
return;
|
|
77
|
+
const buffered = this.buffer.get(event);
|
|
78
|
+
if (buffered) {
|
|
79
|
+
for (const envelope of buffered) {
|
|
80
|
+
if (signal?.aborted)
|
|
81
|
+
return;
|
|
82
|
+
yield envelope;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const queue = [];
|
|
86
|
+
let resolve = null;
|
|
87
|
+
const listener = (envelope) => {
|
|
88
|
+
queue.push(envelope);
|
|
89
|
+
if (resolve) {
|
|
90
|
+
resolve();
|
|
91
|
+
resolve = null;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
let listeners = this.listeners.get(event);
|
|
95
|
+
if (!listeners) {
|
|
96
|
+
listeners = new Set;
|
|
97
|
+
this.listeners.set(event, listeners);
|
|
98
|
+
}
|
|
99
|
+
listeners.add(listener);
|
|
100
|
+
const onAbort = () => {
|
|
101
|
+
listeners.delete(listener);
|
|
102
|
+
if (resolve) {
|
|
103
|
+
resolve();
|
|
104
|
+
resolve = null;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
if (signal) {
|
|
108
|
+
signal.addEventListener("abort", onAbort);
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
while (!this.closed && !signal?.aborted) {
|
|
112
|
+
if (queue.length > 0) {
|
|
113
|
+
yield queue.shift();
|
|
114
|
+
} else {
|
|
115
|
+
await new Promise((r) => {
|
|
116
|
+
resolve = r;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
} finally {
|
|
121
|
+
listeners.delete(listener);
|
|
122
|
+
if (signal) {
|
|
123
|
+
signal.removeEventListener("abort", onAbort);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async close() {
|
|
128
|
+
this.closed = true;
|
|
129
|
+
for (const listeners of this.listeners.values()) {
|
|
130
|
+
listeners.clear();
|
|
131
|
+
}
|
|
132
|
+
this.listeners.clear();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// src/eventhub/index.ts
|
|
136
|
+
async function createHub(config) {
|
|
137
|
+
switch (config.backend) {
|
|
138
|
+
case "memory":
|
|
139
|
+
return new MemoryHub;
|
|
140
|
+
case "nats":
|
|
141
|
+
throw new Error("NATS backend has been moved to @duckflux/hub-nats. " + "Install it and pass a NatsHub instance via ExecuteOptions.hub instead.");
|
|
142
|
+
case "redis":
|
|
143
|
+
throw new Error("Redis backend has been moved to @duckflux/hub-redis. " + "Install it and pass a RedisHub instance via ExecuteOptions.hub instead.");
|
|
144
|
+
default:
|
|
145
|
+
throw new Error(`unknown event hub backend: ${config.backend}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
export {
|
|
149
|
+
createHub,
|
|
150
|
+
MemoryHub
|
|
151
|
+
};
|