@sokel-dev/plugin-sdk 0.3.0 → 0.5.3
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 +62 -47
- package/README.zh-CN.md +95 -0
- package/dist/src/auth.d.ts +12 -8
- package/dist/src/auth.js +2 -9
- package/dist/src/auth.js.map +1 -1
- package/dist/src/contract.d.ts +27 -9
- package/dist/src/contract.js +10 -9
- package/dist/src/contract.js.map +1 -1
- package/dist/src/env.d.ts +1 -6
- package/dist/src/env.js +6 -3
- package/dist/src/env.js.map +1 -1
- package/dist/src/events.d.ts +32 -23
- package/dist/src/events.js +32 -31
- package/dist/src/events.js.map +1 -1
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.js +6 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/nats.d.ts +22 -16
- package/dist/src/nats.js +83 -64
- package/dist/src/nats.js.map +1 -1
- package/dist/src/plugin.d.ts +24 -19
- package/dist/src/plugin.js +42 -29
- package/dist/src/plugin.js.map +1 -1
- package/dist/src/runtime.d.ts +30 -23
- package/dist/src/runtime.js +28 -25
- package/dist/src/runtime.js.map +1 -1
- package/dist/src/webhook.d.ts +15 -10
- package/dist/src/webhook.js +8 -12
- package/dist/src/webhook.js.map +1 -1
- package/package.json +1 -1
package/dist/src/nats.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
// Copyright 2026 The Sokel Authors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/**
|
|
2
|
-
* NATS
|
|
4
|
+
* The NATS transport: the plugin **dials out** to the broker (no inbound port, no public IP, no
|
|
5
|
+
* firewall hole).
|
|
3
6
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
7
|
+
* The flow matches the Go and Python SDKs step for step (protocol §1-§7): discover, connect,
|
|
8
|
+
* register (reporting the contract), subscribe (as a queue group), renew by heartbeat, dispatch
|
|
9
|
+
* calls, shut down gracefully. Event-source plugins additionally run a per-credential supervisor.
|
|
6
10
|
*/
|
|
7
11
|
import { connect, headers as natsHeaders } from "nats";
|
|
8
12
|
import { hostname } from "node:os";
|
|
@@ -11,11 +15,11 @@ import { createHash, randomBytes } from "node:crypto";
|
|
|
11
15
|
import { OP_WEBHOOK } from "./contract.js";
|
|
12
16
|
import { env } from "./env.js";
|
|
13
17
|
import { CredEntry, SourceCtx, SourceSupervisor, desiredSourceCreds } from "./events.js";
|
|
14
|
-
/**
|
|
18
|
+
/** Replicas of a group share one queue: each call goes to exactly one of them. */
|
|
15
19
|
export const QUEUE_GROUP = "sokel-workers";
|
|
16
|
-
/**
|
|
20
|
+
/** Replies and stream frames report which replica answered. */
|
|
17
21
|
export const INSTANCE_HEADER = "Sokel-Instance";
|
|
18
|
-
/** 1 MiB
|
|
22
|
+
/** 1 MiB. Bytes never ride the operation reply (max_payload); they go through the chunk channel. */
|
|
19
23
|
const FILE_CHUNK = 1 << 20;
|
|
20
24
|
const HEARTBEAT_MS = 20_000;
|
|
21
25
|
const RETRY_MS = 8_000;
|
|
@@ -23,7 +27,8 @@ const REQUEST_TIMEOUT_MS = 8_000;
|
|
|
23
27
|
const FILE_TIMEOUT_MS = 30_000;
|
|
24
28
|
const enc = new TextEncoder();
|
|
25
29
|
const dec = new TextDecoder();
|
|
26
|
-
/**
|
|
30
|
+
/** Exchange file bytes with the platform over the same NATS connection. The plugin never needs HTTP
|
|
31
|
+
* access to the platform, so a plugin behind NAT works the same way. */
|
|
27
32
|
export class NatsFiles {
|
|
28
33
|
nc;
|
|
29
34
|
token;
|
|
@@ -34,7 +39,7 @@ export class NatsFiles {
|
|
|
34
39
|
async fetch(f) {
|
|
35
40
|
const id = f.id || (f.url ? f.url.split("/").pop() : "");
|
|
36
41
|
if (!id)
|
|
37
|
-
throw new Error("
|
|
42
|
+
throw new Error("the file reference has neither id nor url");
|
|
38
43
|
const chunks = [];
|
|
39
44
|
for (let seq = 0;; seq++) {
|
|
40
45
|
const resp = await this.nc.request("sokel.file.get", enc.encode(JSON.stringify({ token: this.token, id, seq })), { timeout: FILE_TIMEOUT_MS });
|
|
@@ -46,19 +51,20 @@ export class NatsFiles {
|
|
|
46
51
|
return Buffer.concat(chunks);
|
|
47
52
|
}
|
|
48
53
|
}
|
|
49
|
-
/**
|
|
54
|
+
/** Whole bytes. Delegates to storeStream: the chunking protocol should have one implementation. */
|
|
50
55
|
async store(name, mime, data) {
|
|
51
56
|
return this.storeStream(name, mime, (async function* () { yield data; })());
|
|
52
57
|
}
|
|
53
|
-
/**
|
|
58
|
+
/** **Stream while reading**; memory stays at one chunk. The platform already writes into blob
|
|
59
|
+
* storage chunk by chunk. */
|
|
54
60
|
async storeStream(name, mime, src) {
|
|
55
61
|
let uploadId = "";
|
|
56
62
|
let seq = 0;
|
|
57
63
|
let pending = Buffer.alloc(0);
|
|
58
64
|
let done = false;
|
|
59
65
|
const it = src[Symbol.asyncIterator]();
|
|
60
|
-
//
|
|
61
|
-
//
|
|
66
|
+
// Fill a whole chunk before sending: the source decides its own slice size (a fs stream gives
|
|
67
|
+
// 64KB by default), and forwarding those as-is would multiply the round trips more than tenfold.
|
|
62
68
|
while (!done) {
|
|
63
69
|
while (pending.length < FILE_CHUNK) {
|
|
64
70
|
const r = await it.next();
|
|
@@ -76,12 +82,12 @@ export class NatsFiles {
|
|
|
76
82
|
uploadId = f.uploadId;
|
|
77
83
|
if (last) {
|
|
78
84
|
if (!f.file)
|
|
79
|
-
throw new Error("
|
|
85
|
+
throw new Error("the platform returned no file reference");
|
|
80
86
|
return f.file;
|
|
81
87
|
}
|
|
82
88
|
seq += 1;
|
|
83
89
|
}
|
|
84
|
-
throw new Error("
|
|
90
|
+
throw new Error("the upload never got a final-chunk reply (should not happen)");
|
|
85
91
|
}
|
|
86
92
|
async putChunk(name, mime, uploadId, seq, last, chunk) {
|
|
87
93
|
{
|
|
@@ -105,18 +111,24 @@ export class NatsFiles {
|
|
|
105
111
|
}
|
|
106
112
|
export class NatsTransport {
|
|
107
113
|
async run(p) {
|
|
108
|
-
const
|
|
109
|
-
// broker
|
|
110
|
-
|
|
111
|
-
|
|
114
|
+
const acc = await discover(p.endpoint, p.token);
|
|
115
|
+
// The broker authorizes per access group: connect with this group's own credentials, handed
|
|
116
|
+
// out by the platform. The legacy shared token remains only as a fallback for endpoints that
|
|
117
|
+
// skipped discovery (a literal nats:// URL).
|
|
118
|
+
const legacyToken = env("NATS_TOKEN") || p.token;
|
|
119
|
+
// Trusting the broker's certificate: the CA the platform shipped with the credentials wins
|
|
120
|
+
// (nothing to configure); SOKEL_NATS_CA (a local file) is the pinned-by-hand alternative.
|
|
121
|
+
// A broker reachable only by IP cannot get a publicly trusted certificate, so self-signed is
|
|
122
|
+
// the norm there.
|
|
123
|
+
const caFile = env("NATS_CA");
|
|
112
124
|
const nc = await connectForever({
|
|
113
|
-
servers: [
|
|
125
|
+
servers: [acc.url],
|
|
114
126
|
name: p.name,
|
|
115
|
-
|
|
116
|
-
maxReconnectAttempts: -1, //
|
|
127
|
+
...(acc.user ? { user: acc.user, pass: acc.pass } : legacyToken ? { token: legacyToken } : {}),
|
|
128
|
+
maxReconnectAttempts: -1, // reconnect forever; subscriptions restore themselves
|
|
117
129
|
reconnectTimeWait: 2_000,
|
|
118
|
-
waitOnFirstConnect: true, // broker
|
|
119
|
-
...(ca ? { tls: {
|
|
130
|
+
waitOnFirstConnect: true, // wait for a broker that is not up yet instead of exiting
|
|
131
|
+
...(acc.ca ? { tls: { ca: acc.ca } } : caFile ? { tls: { caFile } } : {}),
|
|
120
132
|
});
|
|
121
133
|
const host = hostname();
|
|
122
134
|
const instanceId = stableInstanceId(p.token);
|
|
@@ -130,17 +142,18 @@ export class NatsTransport {
|
|
|
130
142
|
});
|
|
131
143
|
const reg = JSON.parse(dec.decode(resp.data));
|
|
132
144
|
if (!reg.ok || !reg.subject)
|
|
133
|
-
throw new Error(
|
|
145
|
+
throw new Error(`registration refused: ${reg.error ?? "the platform returned no subject"}`);
|
|
134
146
|
if (reg.notify_subject)
|
|
135
147
|
notifySubject = reg.notify_subject;
|
|
136
148
|
let creds = (reg.credentials ?? []).map((c) => new CredEntry(c.id ?? "", c.fields ?? {}));
|
|
137
|
-
//
|
|
149
|
+
// An older platform only sends the singular form; fold it into a one-element set.
|
|
138
150
|
if (creds.length === 0 && (reg.credential_id || reg.credential)) {
|
|
139
151
|
creds = [new CredEntry(reg.credential_id ?? "", reg.credential ?? {})];
|
|
140
152
|
}
|
|
141
153
|
return { subject: reg.subject, name: reg.name || p.name, creds };
|
|
142
154
|
};
|
|
143
|
-
//
|
|
155
|
+
// A failed first registration is not fatal (broker or platform may still be starting): retry at
|
|
156
|
+
// a fixed interval until it succeeds.
|
|
144
157
|
let first;
|
|
145
158
|
for (;;) {
|
|
146
159
|
try {
|
|
@@ -148,7 +161,7 @@ export class NatsTransport {
|
|
|
148
161
|
break;
|
|
149
162
|
}
|
|
150
163
|
catch (e) {
|
|
151
|
-
console.warn(`[sokel]
|
|
164
|
+
console.warn(`[sokel] registration failed (${errText(e)}), retrying in ${RETRY_MS / 1000}s…`);
|
|
152
165
|
await sleep(RETRY_MS);
|
|
153
166
|
}
|
|
154
167
|
}
|
|
@@ -158,20 +171,21 @@ export class NatsTransport {
|
|
|
158
171
|
void this.dispatch(p, nc, msg, files, instanceId);
|
|
159
172
|
}
|
|
160
173
|
})();
|
|
161
|
-
console.log(`[sokel]
|
|
174
|
+
console.log(`[sokel] connected: plugin "${first.name}" ready, replica ${instanceId} listening on ${first.subject}`);
|
|
162
175
|
let supervisor;
|
|
163
176
|
if (p.sources.length > 0) {
|
|
164
177
|
supervisor = makeSupervisor(p, nc, files);
|
|
165
178
|
supervisor.reconcile(desiredSourceCreds(first.creds));
|
|
166
179
|
if (notifySubject) {
|
|
167
|
-
//
|
|
180
|
+
// Credential-change notifications use a plain subscription (not a queue group): every
|
|
181
|
+
// replica in the group must hear it, since any assignment may have changed.
|
|
168
182
|
const debounced = debounce(300, async () => {
|
|
169
183
|
try {
|
|
170
184
|
const { creds } = await register();
|
|
171
185
|
supervisor.reconcile(desiredSourceCreds(creds));
|
|
172
186
|
}
|
|
173
187
|
catch (e) {
|
|
174
|
-
console.warn(`[sokel]
|
|
188
|
+
console.warn(`[sokel] re-register after a credential change failed: ${errText(e)}`);
|
|
175
189
|
}
|
|
176
190
|
});
|
|
177
191
|
const notifySub = nc.subscribe(notifySubject);
|
|
@@ -181,17 +195,19 @@ export class NatsTransport {
|
|
|
181
195
|
})();
|
|
182
196
|
}
|
|
183
197
|
}
|
|
184
|
-
//
|
|
185
|
-
//
|
|
198
|
+
// The heartbeat keeps the replica online. On SIGINT/SIGTERM (docker stop, Ctrl-C) it shuts down
|
|
199
|
+
// gracefully: tell the platform to mark this replica offline right away (seconds), instead of
|
|
200
|
+
// waiting for the heartbeat sweep (45s+).
|
|
186
201
|
await new Promise((resolve) => {
|
|
187
202
|
const timer = setInterval(async () => {
|
|
188
203
|
try {
|
|
189
204
|
const { creds } = await register();
|
|
190
|
-
//
|
|
205
|
+
// Reconcile against the latest assignment each tick: shard moves, credentials added or
|
|
206
|
+
// removed, fields refreshed.
|
|
191
207
|
supervisor?.reconcile(desiredSourceCreds(creds));
|
|
192
208
|
}
|
|
193
209
|
catch (e) {
|
|
194
|
-
console.warn(`[sokel]
|
|
210
|
+
console.warn(`[sokel] heartbeat renewal failed: ${errText(e)}`);
|
|
195
211
|
}
|
|
196
212
|
}, HEARTBEAT_MS);
|
|
197
213
|
const bye = (sig) => {
|
|
@@ -199,11 +215,11 @@ export class NatsTransport {
|
|
|
199
215
|
supervisor?.stopAll();
|
|
200
216
|
nc.publish("sokel.unregister", enc.encode(JSON.stringify({ token: p.token, instance_id: instanceId })));
|
|
201
217
|
void nc
|
|
202
|
-
.flush() //
|
|
218
|
+
.flush() // make sure the goodbye lands before the connection drops
|
|
203
219
|
.then(() => nc.drain())
|
|
204
220
|
.catch(() => undefined)
|
|
205
221
|
.then(() => {
|
|
206
|
-
console.log(`[sokel]
|
|
222
|
+
console.log(`[sokel] got ${sig}, told the platform we are going offline, exiting`);
|
|
207
223
|
resolve();
|
|
208
224
|
});
|
|
209
225
|
};
|
|
@@ -219,15 +235,16 @@ export class NatsTransport {
|
|
|
219
235
|
call = JSON.parse(dec.decode(msg.data));
|
|
220
236
|
}
|
|
221
237
|
catch {
|
|
222
|
-
nc.publish(msg.reply, enc.encode(JSON.stringify({ error: "
|
|
238
|
+
nc.publish(msg.reply, enc.encode(JSON.stringify({ error: "could not parse the call frame" })));
|
|
223
239
|
return;
|
|
224
240
|
}
|
|
225
241
|
const op = call.operation ?? "";
|
|
226
242
|
const tag = traceTag(call.trace ?? {});
|
|
227
|
-
//
|
|
228
|
-
//
|
|
243
|
+
// The platform-relayed webhook frame is intercepted before dispatch. An older SDK without this
|
|
244
|
+
// branch falls through to "unknown operation", which the platform translates into "the plugin
|
|
245
|
+
// registered no webhook handler".
|
|
229
246
|
if (op === OP_WEBHOOK) {
|
|
230
|
-
console.log(`[sokel] ← webhook
|
|
247
|
+
console.log(`[sokel] ← webhook inbound${tag}`);
|
|
231
248
|
const sctx = new SourceCtx({
|
|
232
249
|
token: p.token,
|
|
233
250
|
publish: (subject, data) => nc.publish(subject, data),
|
|
@@ -244,16 +261,16 @@ export class NatsTransport {
|
|
|
244
261
|
const h = natsHeaders();
|
|
245
262
|
h.set(INSTANCE_HEADER, instanceId);
|
|
246
263
|
const started = Date.now();
|
|
247
|
-
console.log(`[sokel] ← ${op}
|
|
264
|
+
console.log(`[sokel] ← ${op} started${tag}`);
|
|
248
265
|
if (p.contract.isStream(op)) {
|
|
249
|
-
//
|
|
266
|
+
// Streaming: publish frame by frame to the reply subject; the end frame is mandatory.
|
|
250
267
|
const publishFrame = (f) => nc.publish(msg.reply, enc.encode(JSON.stringify(f)), { headers: h });
|
|
251
268
|
try {
|
|
252
269
|
await p.dispatch(call, publishFrame, files);
|
|
253
|
-
console.log(`[sokel] ✓ ${op}
|
|
270
|
+
console.log(`[sokel] ✓ ${op} done (${Date.now() - started}ms)${tag}`);
|
|
254
271
|
}
|
|
255
272
|
catch (e) {
|
|
256
|
-
console.warn(`[sokel] ✗ ${op}
|
|
273
|
+
console.warn(`[sokel] ✗ ${op} failed (${Date.now() - started}ms)${tag}: ${errText(e)}`);
|
|
257
274
|
publishFrame({ kind: "error", text: errText(e) });
|
|
258
275
|
}
|
|
259
276
|
publishFrame({ kind: "end" });
|
|
@@ -261,16 +278,17 @@ export class NatsTransport {
|
|
|
261
278
|
}
|
|
262
279
|
try {
|
|
263
280
|
const vars = await p.dispatchBuffered(call, files);
|
|
264
|
-
console.log(`[sokel] ✓ ${op}
|
|
281
|
+
console.log(`[sokel] ✓ ${op} done (${Date.now() - started}ms)${tag}`);
|
|
265
282
|
nc.publish(msg.reply, enc.encode(JSON.stringify(vars)), { headers: h });
|
|
266
283
|
}
|
|
267
284
|
catch (e) {
|
|
268
|
-
console.warn(`[sokel] ✗ ${op}
|
|
285
|
+
console.warn(`[sokel] ✗ ${op} failed (${Date.now() - started}ms)${tag}: ${errText(e)}`);
|
|
269
286
|
nc.publish(msg.reply, enc.encode(JSON.stringify({ error: errText(e) })), { headers: h });
|
|
270
287
|
}
|
|
271
288
|
}
|
|
272
289
|
}
|
|
273
|
-
/**
|
|
290
|
+
/** One source instance per credential: its ctx is bound to that credential, and trigger carries the
|
|
291
|
+
* credential_id back automatically. */
|
|
274
292
|
function makeSupervisor(p, nc, files) {
|
|
275
293
|
return new SourceSupervisor((cred) => {
|
|
276
294
|
const ctxs = [];
|
|
@@ -286,7 +304,7 @@ function makeSupervisor(p, nc, files) {
|
|
|
286
304
|
files,
|
|
287
305
|
});
|
|
288
306
|
ctxs.push(sctx);
|
|
289
|
-
console.log(`[sokel]
|
|
307
|
+
console.log(`[sokel] event source "${src.id}" started (credential=${cred.id || "(none)"})`);
|
|
290
308
|
p.board.set(src.id, cred.id, "running");
|
|
291
309
|
void src
|
|
292
310
|
.fn(sctx)
|
|
@@ -296,43 +314,44 @@ function makeSupervisor(p, nc, files) {
|
|
|
296
314
|
})
|
|
297
315
|
.catch((e) => {
|
|
298
316
|
if (sctx.stopped)
|
|
299
|
-
return; // reconcile
|
|
300
|
-
console.warn(`[sokel]
|
|
317
|
+
return; // stopped by reconcile: stop() already removed the state
|
|
318
|
+
console.warn(`[sokel] event source "${src.id}" exited (credential=${cred.id || "(none)"}): ${errText(e)}`);
|
|
301
319
|
p.board.set(src.id, cred.id, "error", errText(e));
|
|
302
320
|
});
|
|
303
321
|
}
|
|
304
322
|
return () => {
|
|
305
|
-
// JS
|
|
323
|
+
// JS has no task cancellation: by convention the source loop watches ctx.stopped and exits
|
|
324
|
+
// (a long poll notices on its next tick).
|
|
306
325
|
for (const c of ctxs)
|
|
307
326
|
c.stopped = true;
|
|
308
327
|
p.board.removeCred(cred.id);
|
|
309
328
|
};
|
|
310
329
|
});
|
|
311
330
|
}
|
|
312
|
-
/**
|
|
313
|
-
* 统一 https 端点 → 经平台 /connect-info 发现真实承载地址。
|
|
314
|
-
* 直填 nats:// / tls:// 时跳过发现(本地开发 / 离线场景)。
|
|
315
|
-
*/
|
|
316
331
|
export async function discover(endpoint, token) {
|
|
317
332
|
const ep = (endpoint ?? "").trim();
|
|
318
333
|
if (ep.startsWith("nats://") || ep.startsWith("tls://"))
|
|
319
|
-
return ep;
|
|
334
|
+
return { url: ep };
|
|
320
335
|
if (!ep.startsWith("http://") && !ep.startsWith("https://")) {
|
|
321
|
-
throw new Error(
|
|
336
|
+
throw new Error(`invalid endpoint "${endpoint}": expected a platform URL (https://…) or nats://`);
|
|
322
337
|
}
|
|
323
338
|
const url = ep.replace(/\/+$/, "") + "/api/v1/connect-info";
|
|
324
339
|
const resp = await fetch(url, { headers: { Authorization: `Bearer ${token}` } });
|
|
325
340
|
if (!resp.ok)
|
|
326
|
-
throw new Error(
|
|
341
|
+
throw new Error(`discovery failed at ${url}: HTTP ${resp.status}`);
|
|
327
342
|
const info = (await resp.json());
|
|
343
|
+
if (info.nats?.url)
|
|
344
|
+
return info.nats;
|
|
328
345
|
const target = info.transports?.nats;
|
|
329
346
|
if (!target)
|
|
330
|
-
throw new Error("
|
|
331
|
-
return target;
|
|
347
|
+
throw new Error("the platform offers no transport (connect-info.transports is empty)");
|
|
348
|
+
return { url: target };
|
|
332
349
|
}
|
|
333
350
|
/**
|
|
334
|
-
*
|
|
335
|
-
*
|
|
351
|
+
* A stable replica identity, reused across restarts. Without it every restart leaves the platform
|
|
352
|
+
* holding another ghost row that stays offline forever.
|
|
353
|
+
* In order: 1) SOKEL_INSTANCE_ID; 2) a file in the working directory named after the token's
|
|
354
|
+
* fingerprint; 3) if writing that file fails, host-pid.
|
|
336
355
|
*/
|
|
337
356
|
export function stableInstanceId(token) {
|
|
338
357
|
const explicit = env("INSTANCE_ID");
|
|
@@ -347,7 +366,7 @@ export function stableInstanceId(token) {
|
|
|
347
366
|
return existing;
|
|
348
367
|
}
|
|
349
368
|
catch {
|
|
350
|
-
/*
|
|
369
|
+
/* first run: fall through, generate one and write it out */
|
|
351
370
|
}
|
|
352
371
|
const id = `${hostname()}-${randomBytes(4).toString("hex")}`;
|
|
353
372
|
try {
|
|
@@ -364,7 +383,7 @@ async function connectForever(opts) {
|
|
|
364
383
|
return await connect(opts);
|
|
365
384
|
}
|
|
366
385
|
catch (e) {
|
|
367
|
-
console.warn(`[sokel]
|
|
386
|
+
console.warn(`[sokel] could not connect to the platform (${errText(e)}), retrying in ${RETRY_MS / 1000}s…`);
|
|
368
387
|
await sleep(RETRY_MS);
|
|
369
388
|
}
|
|
370
389
|
}
|
package/dist/src/nats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nats.js","sourceRoot":"","sources":["../../src/nats.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nats.js","sourceRoot":"","sources":["../../src/nats.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,MAAM,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIzF,kFAAkF;AAClF,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AAC3C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAChD,oGAAoG;AACpG,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAC9B,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAE9B;wEACwE;AACxE,MAAM,OAAO,SAAS;IACS;IAAqC;IAAlE,YAA6B,EAAkB,EAAmB,KAAa;QAAlD,OAAE,GAAF,EAAE,CAAgB;QAAmB,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAEnF,KAAK,CAAC,KAAK,CAAC,CAAY;QACtB,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACtE,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,GAAG,GAAG,CAAC,GAAI,GAAG,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAChC,gBAAgB,EAChB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAC1D,EAAE,OAAO,EAAE,eAAe,EAAE,CAC7B,CAAC;YACF,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAsD,CAAC;YACjG,IAAI,CAAC,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,CAAC,IAAI;gBAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,mGAAmG;IACnG,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,IAAY,EAAE,IAAgB;QACtD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED;iCAC6B;IAC7B,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAAY,EAAE,GAA8B;QAC1E,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,8FAA8F;QAC9F,iGAAiG;QACjG,OAAO,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBACnC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBAAC,IAAI,GAAG,IAAI,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACnC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAC9C,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,CAAC,QAAQ;gBAAE,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,CAAC,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBACxE,OAAO,CAAC,CAAC,IAAI,CAAC;YAChB,CAAC;YACD,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,IAAY,EAAE,IAAY,EAAE,QAAgB,EAAE,GAAW,EAAE,IAAa,EAAE,KAAa;QAEvF,CAAC;YACC,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAChC,gBAAgB,EAChB,GAAG,CAAC,MAAM,CACR,IAAI,CAAC,SAAS,CAAC;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,SAAS,EAAE,QAAQ;oBACnB,IAAI;oBACJ,IAAI;oBACJ,GAAG;oBACH,IAAI;oBACJ,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBAC/B,CAAC,CACH,EACD,EAAE,OAAO,EAAE,eAAe,EAAE,CAC7B,CAAC;gBACF,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAA6D,CAAC;gBACxG,IAAI,CAAC,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,aAAa;IACxB,KAAK,CAAC,GAAG,CAAC,CAAS;QACjB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAChD,4FAA4F;QAC5F,6FAA6F;QAC7F,6CAA6C;QAC7C,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACjD,2FAA2F;QAC3F,0FAA0F;QAC1F,6FAA6F;QAC7F,kBAAkB;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC;YAC9B,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,oBAAoB,EAAE,CAAC,CAAC,EAAE,sDAAsD;YAChF,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,IAAI,EAAE,0DAA0D;YACpF,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,KAAK,IAAoE,EAAE;YAC1F,MAAM,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;gBAChF,OAAO,EAAE,kBAAkB;aAC5B,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAS3C,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,KAAK,IAAI,kCAAkC,EAAE,CAAC,CAAC;YACzH,IAAI,GAAG,CAAC,cAAc;gBAAE,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC;YAC3D,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1F,kFAAkF;YAClF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChE,KAAK,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACnE,CAAC,CAAC;QAEF,gGAAgG;QAChG,sCAAsC;QACtC,IAAI,KAA2C,CAAC;QAChD,SAAS,CAAC;YACR,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;gBACzB,MAAM;YACR,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,gCAAgC,OAAO,CAAC,CAAC,CAAC,kBAAkB,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC;gBAC9F,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAChE,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC5B,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,CAAC,GAAG,CACT,8BAA8B,KAAK,CAAC,IAAI,oBAAoB,UAAU,iBAAiB,KAAK,CAAC,OAAO,EAAE,CACvG,CAAC;QAEF,IAAI,UAAwC,CAAC;QAC7C,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,UAAU,GAAG,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1C,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,IAAI,aAAa,EAAE,CAAC;gBAClB,sFAAsF;gBACtF,4EAA4E;gBAC5E,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;oBACzC,IAAI,CAAC;wBACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC;wBACnC,UAAW,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;oBACnD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,IAAI,CAAC,yDAAyD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtF,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAC9C,KAAK,CAAC,KAAK,IAAI,EAAE;oBACf,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,SAAS;wBAAE,SAAS,EAAE,CAAC;gBAC/C,CAAC,CAAC,EAAE,CAAC;YACP,CAAC;QACH,CAAC;QAED,gGAAgG;QAChG,8FAA8F;QAC9F,0CAA0C;QAC1C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;gBACnC,IAAI,CAAC;oBACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC;oBACnC,uFAAuF;oBACvF,6BAA6B;oBAC7B,UAAU,EAAE,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnD,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,qCAAqC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC,EAAE,YAAY,CAAC,CAAC;YACjB,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE;gBAC1B,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,UAAU,EAAE,OAAO,EAAE,CAAC;gBACtB,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxG,KAAK,EAAE;qBACJ,KAAK,EAAE,CAAC,0DAA0D;qBAClE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;qBACtB,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;qBACtB,IAAI,CAAC,GAAG,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,mDAAmD,CAAC,CAAC;oBACnF,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,CAAS,EACT,EAAkB,EAClB,GAAQ,EACR,KAAgB,EAChB,UAAkB;QAElB,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,IAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/F,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAI,IAAI,CAAC,SAAoB,IAAI,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAEvC,+FAA+F;QAC/F,8FAA8F;QAC9F,kCAAkC;QAClC,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC;gBACzB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;gBACrD,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAClC,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,YAAY,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;gBACtC,QAAQ,EAAE,SAAS;gBACnB,KAAK;aACN,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC1D,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;QACxB,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,sFAAsF;YACtF,MAAM,YAAY,GAAG,CAAC,CAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YACzG,IAAI,CAAC;gBACH,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,MAAM,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxF,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC;YACtE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,MAAM,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxF,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;CACF;AAED;uCACuC;AACvC,SAAS,cAAc,CAAC,CAAS,EAAE,EAAkB,EAAE,KAAgB;IACrE,OAAO,IAAI,gBAAgB,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,IAAI,GAAgB,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC;gBACzB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;gBACrD,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAClC,UAAU,EAAE,IAAI,CAAC,MAAM;gBACvB,YAAY,EAAE,IAAI,CAAC,EAAE;gBACrB,QAAQ,EAAE,GAAG,CAAC,EAAE;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK;aACN,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,EAAE,yBAAyB,IAAI,CAAC,EAAE,IAAI,QAAQ,GAAG,CAAC,CAAC;YAC5F,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACxC,KAAK,GAAG;iBACL,EAAE,CAAC,IAAI,CAAC;iBACR,IAAI,CAAC,GAAG,EAAE;gBACT,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACrE,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACX,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAO,CAAC,yDAAyD;gBACnF,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,CAAC,EAAE,wBAAwB,IAAI,CAAC,EAAE,IAAI,QAAQ,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3G,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,GAAG,EAAE;YACV,2FAA2F;YAC3F,0CAA0C;YAC1C,KAAK,MAAM,CAAC,IAAI,IAAI;gBAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;YACvC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAeD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,KAAa;IAC5D,MAAM,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAC5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,mDAAmD,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,sBAAsB,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACjF,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA2D,CAAC;IAC3F,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACpG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;IACpC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,IAAI,GAAG,oBAAoB,CAAC;IAChC,IAAI,KAAK;QAAE,IAAI,IAAI,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,QAAQ,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7D,IAAI,CAAC;QACH,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,QAAQ,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAmC;IAC/D,SAAS,CAAC;QACR,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,8CAA8C,OAAO,CAAC,CAAC,CAAC,kBAAkB,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC;YAC5G,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU,EAAE,EAAc;IAC1C,IAAI,KAAiC,CAAC;IACtC,OAAO,GAAG,EAAE;QACV,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAA6B;IAC7C,MAAM,KAAK,GAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAW;SACrF,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,OAAO,CAAC,CAAU;IACzB,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/src/plugin.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plugin
|
|
2
|
+
* Plugin: the registry plus dispatch. Transport-agnostic — the NATS layer only moves bytes.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Dispatch is the part **most worth unit-testing** (unknown operations, the reply shape for
|
|
5
|
+
* streaming versus non-streaming, intercepting the webhook frame), so it touches no NATS at all: a
|
|
6
|
+
* fake sink is enough to exercise the whole path.
|
|
6
7
|
*/
|
|
7
8
|
import { Contract } from "./contract.js";
|
|
8
9
|
import type { ContractData } from "./contract.js";
|
|
@@ -20,7 +21,7 @@ export interface Config {
|
|
|
20
21
|
token?: string;
|
|
21
22
|
version?: string;
|
|
22
23
|
}
|
|
23
|
-
/**
|
|
24
|
+
/** One call delivered by the platform (protocol §4). */
|
|
24
25
|
export interface Call {
|
|
25
26
|
operation?: string;
|
|
26
27
|
input?: Record<string, unknown>;
|
|
@@ -42,39 +43,43 @@ export declare class Plugin {
|
|
|
42
43
|
private webhookFn?;
|
|
43
44
|
managed: boolean;
|
|
44
45
|
constructor(cfg: Config);
|
|
45
|
-
/**
|
|
46
|
+
/** Low-level registration: fn(ctx, input, emitter). The generated onXxx is its typed shell. */
|
|
46
47
|
register(opId: string, fn: Invoke): void;
|
|
47
|
-
/**
|
|
48
|
+
/** Register a long-running event source; run() starts one task per source × credential. */
|
|
48
49
|
registerSource(id: string, label: string, fn: (ctx: SourceCtx) => Promise<void>): void;
|
|
49
|
-
/**
|
|
50
|
+
/** Register the webhook handler (one per plugin: route upstream event types yourself by header
|
|
51
|
+
* or path). */
|
|
50
52
|
registerWebhook(fn: WebhookHandler): void;
|
|
51
53
|
get hasWebhook(): boolean;
|
|
52
54
|
/**
|
|
53
|
-
*
|
|
55
|
+
* Attach the auth flow's implementation. The shape (qr / input / oauth) is declared in manifest.yml;
|
|
56
|
+
* only the implementation goes here.
|
|
54
57
|
*
|
|
55
|
-
* kind=oauth
|
|
56
|
-
*
|
|
58
|
+
* For kind=oauth the platform answers start/poll itself — the client secret lives there and a
|
|
59
|
+
* plugin cannot build the consent URL — so such a plugin writes no handler at all.
|
|
57
60
|
*/
|
|
58
61
|
registerAuth(h: AuthHandlers): void;
|
|
59
|
-
/**
|
|
62
|
+
/** Declare which **optional** capabilities this plugin has — how far a given operation goes. */
|
|
60
63
|
setCapabilities(caps: Record<string, boolean>): void;
|
|
61
64
|
/**
|
|
62
|
-
*
|
|
65
|
+
* The registration / heartbeat payload (protocol §3).
|
|
63
66
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
67
|
+
* It is a separate method so it can be tested: **declared but never reported** is the classic
|
|
68
|
+
* silent failure of a self-reporting mechanism. Everything looks fine on the plugin side, nothing
|
|
69
|
+
* happens on the platform side, and the author is left staring at an inert UI.
|
|
66
70
|
*/
|
|
67
71
|
registerPayload(instanceId: string, host: string, startedAt: string): Record<string, unknown>;
|
|
68
72
|
find(opId: string): Invoke | undefined;
|
|
69
|
-
/**
|
|
73
|
+
/** Run one call, handing frames to the sink. Exceptions propagate; the transport turns them into
|
|
74
|
+
* an error frame or an error reply. */
|
|
70
75
|
dispatch(call: Call, sink: Sink, files?: FileRuntime): Promise<void>;
|
|
71
|
-
/**
|
|
76
|
+
/** Non-streaming: buffer the frames and merge the variables into a single reply. */
|
|
72
77
|
dispatchBuffered(call: Call, files?: FileRuntime): Promise<Record<string, unknown>>;
|
|
73
78
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
79
|
+
* Handle one __webhook__ frame. The reply carries an events count: that is how the platform's
|
|
80
|
+
* webhook panel answers "the request arrived, so why did no workflow start?".
|
|
76
81
|
*/
|
|
77
82
|
handleWebhook(sctx: SourceCtx, frame: WebhookFrame): Promise<Record<string, unknown>>;
|
|
78
|
-
/**
|
|
83
|
+
/** Connect, register, heartbeat and dispatch calls. The promise settles on SIGINT/SIGTERM. */
|
|
79
84
|
run(): Promise<void>;
|
|
80
85
|
}
|