@ironflow/node 0.4.0 → 0.6.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/client.d.ts +147 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +273 -2
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/context.d.ts +45 -1
- package/dist/internal/context.d.ts.map +1 -1
- package/dist/internal/context.js +89 -1
- package/dist/internal/context.js.map +1 -1
- package/dist/internal/errors.d.ts +20 -1
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js.map +1 -1
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +104 -4
- package/dist/serve.js.map +1 -1
- package/dist/step.d.ts +7 -1
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +221 -5
- package/dist/step.js.map +1 -1
- package/dist/test/index.d.ts +22 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +112 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/test-step.d.ts +21 -0
- package/dist/test/test-step.d.ts.map +1 -0
- package/dist/test/test-step.js +83 -0
- package/dist/test/test-step.js.map +1 -0
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/webhook.d.ts +22 -0
- package/dist/webhook.d.ts.map +1 -0
- package/dist/webhook.js +23 -0
- package/dist/webhook.js.map +1 -0
- package/dist/worker-streaming.d.ts.map +1 -1
- package/dist/worker-streaming.js +29 -7
- package/dist/worker-streaming.js.map +1 -1
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +23 -10
- package/dist/worker.js.map +1 -1
- package/package.json +20 -15
package/dist/step.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Implements durable step primitives: run, sleep, sleepUntil, waitForEvent, parallel, map
|
|
5
5
|
*/
|
|
6
|
-
import { StepError, isRetryable, parseDuration } from "@ironflow/core";
|
|
7
|
-
import { BranchContext } from "./internal/context.js";
|
|
6
|
+
import { StepError, StepTimeoutError, isRetryable, parseDuration, InvokeError } from "@ironflow/core";
|
|
7
|
+
import { ExecutionContext, BranchContext } from "./internal/context.js";
|
|
8
8
|
import { YieldSignal, } from "./internal/errors.js";
|
|
9
9
|
/**
|
|
10
10
|
* Create a step client for the given execution context
|
|
@@ -17,18 +17,48 @@ export function createStepClient(ctx) {
|
|
|
17
17
|
*/
|
|
18
18
|
function createStepClientInternal(ctx) {
|
|
19
19
|
return {
|
|
20
|
-
run: (name, fn) => executeStep(ctx, name, fn),
|
|
20
|
+
run: (name, fn, options) => executeStep(ctx, name, fn, options),
|
|
21
21
|
sleep: (name, duration) => executeSleep(ctx, name, duration),
|
|
22
22
|
sleepUntil: (name, until) => executeSleepUntil(ctx, name, until),
|
|
23
23
|
waitForEvent: (name, filter) => executeWaitForEvent(ctx, name, filter),
|
|
24
24
|
parallel: (name, branches, options) => executeParallel(ctx, name, branches, options),
|
|
25
25
|
map: (name, items, fn, options) => executeMap(ctx, name, items, fn, options),
|
|
26
|
+
compensate: (stepName, fn) => {
|
|
27
|
+
ctx.registerCompensation(stepName, fn);
|
|
28
|
+
},
|
|
29
|
+
invoke: (functionId, input, options) => executeInvoke(ctx, functionId, input, options),
|
|
30
|
+
invokeAsync: (functionId, input) => executeInvokeAsync(ctx, functionId, input),
|
|
31
|
+
publish: (topic, data) => executePublish(ctx, topic, data),
|
|
26
32
|
};
|
|
27
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Wrap a step function with a timeout.
|
|
36
|
+
* If the timeout fires before fn() resolves, throws StepTimeoutError.
|
|
37
|
+
*/
|
|
38
|
+
async function withStepTimeout(fn, stepName, timeout) {
|
|
39
|
+
const timeoutMs = parseDuration(timeout);
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
const timer = setTimeout(() => {
|
|
42
|
+
reject(new StepTimeoutError(stepName, timeout));
|
|
43
|
+
}, timeoutMs);
|
|
44
|
+
fn().then((result) => {
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
resolve(result);
|
|
47
|
+
}, (error) => {
|
|
48
|
+
clearTimeout(timer);
|
|
49
|
+
reject(error);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
28
53
|
/**
|
|
29
54
|
* Execute a step with memoization
|
|
55
|
+
*
|
|
56
|
+
* WHY: Use step.run() for any non-idempotent operation (e.g., sending an email,
|
|
57
|
+
* charging a card, calling an external API). Ironflow memoizes the result
|
|
58
|
+
* of the first successful execution. If the workflow retries, this step will
|
|
59
|
+
* be skipped and the previously stored result will be returned.
|
|
30
60
|
*/
|
|
31
|
-
async function executeStep(ctx, name, fn) {
|
|
61
|
+
async function executeStep(ctx, name, fn, options) {
|
|
32
62
|
const stepId = ctx.generateStepId(name);
|
|
33
63
|
// Check if step is already completed (memoized)
|
|
34
64
|
if (ctx.shouldSkipStep(stepId)) {
|
|
@@ -39,7 +69,10 @@ async function executeStep(ctx, name, fn) {
|
|
|
39
69
|
const startedAt = new Date();
|
|
40
70
|
ctx.logger.debug(`Step starting: ${name}`, { stepId });
|
|
41
71
|
try {
|
|
42
|
-
const
|
|
72
|
+
const timeoutStr = options?.timeout ?? ctx.stepTimeout;
|
|
73
|
+
const output = timeoutStr
|
|
74
|
+
? await withStepTimeout(fn, name, timeoutStr)
|
|
75
|
+
: await fn();
|
|
43
76
|
const endedAt = new Date();
|
|
44
77
|
const durationMs = endedAt.getTime() - startedAt.getTime();
|
|
45
78
|
// Record successful step
|
|
@@ -82,6 +115,15 @@ async function executeStep(ctx, name, fn) {
|
|
|
82
115
|
},
|
|
83
116
|
};
|
|
84
117
|
ctx.recordStep(result);
|
|
118
|
+
// Re-throw StepTimeoutError as-is (already has step context)
|
|
119
|
+
if (error instanceof StepTimeoutError) {
|
|
120
|
+
ctx.logger.error(`Step timed out: ${name}`, {
|
|
121
|
+
stepId,
|
|
122
|
+
error: errorMessage,
|
|
123
|
+
durationMs,
|
|
124
|
+
});
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
85
127
|
ctx.logger.error(`Step failed: ${name}`, {
|
|
86
128
|
stepId,
|
|
87
129
|
error: errorMessage,
|
|
@@ -98,6 +140,11 @@ async function executeStep(ctx, name, fn) {
|
|
|
98
140
|
}
|
|
99
141
|
/**
|
|
100
142
|
* Execute a durable sleep
|
|
143
|
+
*
|
|
144
|
+
* WHY: Use step.sleep() for long-running pauses (minutes, hours, or days).
|
|
145
|
+
* Unlike setTimeout, this is durable—the worker can restart or the server
|
|
146
|
+
* can be upgraded, and the workflow will resume exactly where it left off
|
|
147
|
+
* once the duration has elapsed.
|
|
101
148
|
*/
|
|
102
149
|
async function executeSleep(ctx, name, duration) {
|
|
103
150
|
const stepId = ctx.generateStepId(name);
|
|
@@ -164,6 +211,11 @@ async function executeSleepUntil(ctx, name, until) {
|
|
|
164
211
|
}
|
|
165
212
|
/**
|
|
166
213
|
* Execute a durable wait for event
|
|
214
|
+
*
|
|
215
|
+
* WHY: Use step.waitForEvent() to implement choreography-based orchestration.
|
|
216
|
+
* The workflow pauses durably until an external event arrives that matches
|
|
217
|
+
* the provided filter. This is the primary way to handle human-in-the-loop
|
|
218
|
+
* or asynchronous external callbacks.
|
|
167
219
|
*/
|
|
168
220
|
async function executeWaitForEvent(ctx, name, filter) {
|
|
169
221
|
const stepId = ctx.generateStepId(name);
|
|
@@ -303,6 +355,170 @@ async function executeMap(ctx, name, items, fn, options = {}) {
|
|
|
303
355
|
});
|
|
304
356
|
return executeParallel(ctx, name, branches, options);
|
|
305
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* Execute registered compensations in reverse order.
|
|
360
|
+
* Each compensation is executed as a durable step (memoized).
|
|
361
|
+
* Compensation failures are recorded but don't stop remaining compensations.
|
|
362
|
+
*/
|
|
363
|
+
export async function executeCompensations(ctx) {
|
|
364
|
+
const compensations = ctx.getCompensationsInReverse();
|
|
365
|
+
for (const { stepName, fn } of compensations) {
|
|
366
|
+
const compStepName = `compensate:${stepName}`;
|
|
367
|
+
const stepId = ctx.generateStepId(compStepName);
|
|
368
|
+
// Check memoization - skip if already completed
|
|
369
|
+
if (ctx.shouldSkipStep(stepId)) {
|
|
370
|
+
ctx.logger.debug(`Compensation memoized: ${compStepName}`, { stepId });
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
const startedAt = new Date();
|
|
374
|
+
try {
|
|
375
|
+
await fn();
|
|
376
|
+
const endedAt = new Date();
|
|
377
|
+
const durationMs = endedAt.getTime() - startedAt.getTime();
|
|
378
|
+
const result = {
|
|
379
|
+
id: stepId,
|
|
380
|
+
name: compStepName,
|
|
381
|
+
type: "compensate",
|
|
382
|
+
status: "completed",
|
|
383
|
+
started_at: startedAt.toISOString(),
|
|
384
|
+
ended_at: endedAt.toISOString(),
|
|
385
|
+
duration_ms: durationMs,
|
|
386
|
+
compensation_for: stepName,
|
|
387
|
+
};
|
|
388
|
+
ctx.recordStep(result);
|
|
389
|
+
ctx.logger.debug(`Compensation completed: ${compStepName}`, { stepId, durationMs });
|
|
390
|
+
}
|
|
391
|
+
catch (error) {
|
|
392
|
+
const endedAt = new Date();
|
|
393
|
+
const durationMs = endedAt.getTime() - startedAt.getTime();
|
|
394
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
395
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
396
|
+
const result = {
|
|
397
|
+
id: stepId,
|
|
398
|
+
name: compStepName,
|
|
399
|
+
type: "compensate",
|
|
400
|
+
status: "failed",
|
|
401
|
+
started_at: startedAt.toISOString(),
|
|
402
|
+
ended_at: endedAt.toISOString(),
|
|
403
|
+
duration_ms: durationMs,
|
|
404
|
+
compensation_for: stepName,
|
|
405
|
+
error: {
|
|
406
|
+
message: errorMessage,
|
|
407
|
+
retryable: false,
|
|
408
|
+
stack: errorStack,
|
|
409
|
+
},
|
|
410
|
+
};
|
|
411
|
+
ctx.recordStep(result);
|
|
412
|
+
ctx.logger.error(`Compensation failed: ${compStepName}`, {
|
|
413
|
+
stepId,
|
|
414
|
+
error: errorMessage,
|
|
415
|
+
durationMs,
|
|
416
|
+
});
|
|
417
|
+
// Don't throw - continue with remaining compensations
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Execute a durable invoke (calls another function and waits for result)
|
|
423
|
+
*/
|
|
424
|
+
async function executeInvoke(ctx, functionId, input, options) {
|
|
425
|
+
const stepId = ctx.generateStepId(functionId);
|
|
426
|
+
// Check memoization — completed
|
|
427
|
+
if (ctx.shouldSkipStep(stepId)) {
|
|
428
|
+
ctx.logger.debug(`Invoke memoized: ${functionId}`, { stepId });
|
|
429
|
+
return ctx.getMemoizedOutput(stepId);
|
|
430
|
+
}
|
|
431
|
+
// Check for failed invoke step — surface as InvokeError
|
|
432
|
+
const failedStepError = ctx.getFailedStep?.(stepId);
|
|
433
|
+
if (failedStepError !== undefined) {
|
|
434
|
+
throw parseInvokeError(functionId, failedStepError);
|
|
435
|
+
}
|
|
436
|
+
// Check for timed out invoke step
|
|
437
|
+
if (ctx.isStepTimedOut?.(stepId)) {
|
|
438
|
+
throw new InvokeError(functionId, undefined, "invoke timed out");
|
|
439
|
+
}
|
|
440
|
+
// Calculate timeout
|
|
441
|
+
let timeoutMs = 30000;
|
|
442
|
+
if (options?.timeout) {
|
|
443
|
+
timeoutMs = parseDuration(options.timeout);
|
|
444
|
+
}
|
|
445
|
+
ctx.logger.debug(`Invoke yielding: ${functionId}`, { stepId, timeoutMs });
|
|
446
|
+
const yieldInfo = {
|
|
447
|
+
step_id: stepId,
|
|
448
|
+
type: "invoke_function",
|
|
449
|
+
function_id: functionId,
|
|
450
|
+
input,
|
|
451
|
+
invoke_timeout_ms: timeoutMs,
|
|
452
|
+
};
|
|
453
|
+
throw new YieldSignal(yieldInfo);
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Execute a fire-and-forget invoke (calls another function without waiting)
|
|
457
|
+
*/
|
|
458
|
+
async function executeInvokeAsync(ctx, functionId, input) {
|
|
459
|
+
const stepId = ctx.generateStepId(functionId);
|
|
460
|
+
if (ctx.shouldSkipStep(stepId)) {
|
|
461
|
+
ctx.logger.debug(`InvokeAsync memoized: ${functionId}`, { stepId });
|
|
462
|
+
const output = ctx.getMemoizedOutput(stepId);
|
|
463
|
+
return { runId: output.run_id };
|
|
464
|
+
}
|
|
465
|
+
// Surface a previously failed async invoke step as an error to the caller.
|
|
466
|
+
const failedStepError = ctx.getFailedStep?.(stepId);
|
|
467
|
+
if (failedStepError !== undefined) {
|
|
468
|
+
throw parseInvokeError(functionId, failedStepError);
|
|
469
|
+
}
|
|
470
|
+
ctx.logger.debug(`InvokeAsync yielding: ${functionId}`, { stepId });
|
|
471
|
+
const yieldInfo = {
|
|
472
|
+
step_id: stepId,
|
|
473
|
+
type: "invoke_function_async",
|
|
474
|
+
function_id: functionId,
|
|
475
|
+
input,
|
|
476
|
+
};
|
|
477
|
+
throw new YieldSignal(yieldInfo);
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Parse engine error data for a failed invoke step into an InvokeError.
|
|
481
|
+
*/
|
|
482
|
+
function parseInvokeError(functionId, errorData) {
|
|
483
|
+
if (typeof errorData === "object" && errorData !== null) {
|
|
484
|
+
const e = errorData;
|
|
485
|
+
return new InvokeError(e["function_id"] || functionId, e["child_run_id"] || undefined, e["cause"] || e["message"] || "unknown error");
|
|
486
|
+
}
|
|
487
|
+
return new InvokeError(functionId, undefined, String(errorData));
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Execute a durable publish to a developer pub/sub topic.
|
|
491
|
+
* Wraps step.run() so the publish is memoized and retried like any other step.
|
|
492
|
+
*/
|
|
493
|
+
async function executePublish(ctx, topic, data) {
|
|
494
|
+
return executeStep(ctx, `publish:${topic}`, async () => {
|
|
495
|
+
const serverUrl = ctx.serverUrl;
|
|
496
|
+
if (!serverUrl) {
|
|
497
|
+
throw new Error("Server URL not configured for publish step");
|
|
498
|
+
}
|
|
499
|
+
const url = `${serverUrl}/ironflow.v1.PubSubService/Publish`;
|
|
500
|
+
const headers = {
|
|
501
|
+
"Content-Type": "application/json",
|
|
502
|
+
};
|
|
503
|
+
if (ctx.apiKey) {
|
|
504
|
+
headers["Authorization"] = `Bearer ${ctx.apiKey}`;
|
|
505
|
+
}
|
|
506
|
+
const response = await fetch(url, {
|
|
507
|
+
method: "POST",
|
|
508
|
+
headers,
|
|
509
|
+
body: JSON.stringify({ topic, data: data ?? {} }),
|
|
510
|
+
});
|
|
511
|
+
if (!response.ok) {
|
|
512
|
+
const body = await response.text();
|
|
513
|
+
throw new Error(body || `Publish failed: ${response.status}`);
|
|
514
|
+
}
|
|
515
|
+
const result = (await response.json());
|
|
516
|
+
return {
|
|
517
|
+
eventId: result.eventId,
|
|
518
|
+
sequence: parseInt(result.sequence, 10) || 0,
|
|
519
|
+
};
|
|
520
|
+
});
|
|
521
|
+
}
|
|
306
522
|
/**
|
|
307
523
|
* Convert a duration to a string representation
|
|
308
524
|
*/
|
package/dist/step.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.js","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"step.js","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { IronflowFunction } from "@ironflow/core";
|
|
2
|
+
import { type TestStep } from "./test-step.js";
|
|
3
|
+
export interface TestClientConfig {
|
|
4
|
+
functions: IronflowFunction[];
|
|
5
|
+
}
|
|
6
|
+
export interface TestRun {
|
|
7
|
+
status: "completed" | "failed";
|
|
8
|
+
steps: TestStep[];
|
|
9
|
+
output: unknown;
|
|
10
|
+
error?: Error;
|
|
11
|
+
compensationsRan: string[];
|
|
12
|
+
stepOutput(name: string): unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface TestClient {
|
|
15
|
+
mockStep(name: string, fn: () => unknown): void;
|
|
16
|
+
mockInvoke(functionId: string, fn: (data: unknown) => unknown): void;
|
|
17
|
+
sendEvent(eventName: string, data: unknown): void;
|
|
18
|
+
emit(eventName: string, data: unknown): Promise<TestRun>;
|
|
19
|
+
}
|
|
20
|
+
export declare function createTestClient(config: TestClientConfig): TestClient;
|
|
21
|
+
export type { TestStep };
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,KAAK,QAAQ,EAGd,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC;IAChD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,CAAC;IACrE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CA6GrE;AAsBD,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { createTestStepClient, } from "./test-step.js";
|
|
2
|
+
export function createTestClient(config) {
|
|
3
|
+
const stepMocks = new Map();
|
|
4
|
+
const invokeMocks = new Map();
|
|
5
|
+
const eventQueue = new Map();
|
|
6
|
+
// Index functions by trigger event
|
|
7
|
+
const functionsByEvent = new Map();
|
|
8
|
+
for (const fn of config.functions) {
|
|
9
|
+
for (const trigger of fn.config.triggers) {
|
|
10
|
+
const existing = functionsByEvent.get(trigger.event) ?? [];
|
|
11
|
+
existing.push(fn);
|
|
12
|
+
functionsByEvent.set(trigger.event, existing);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
mockStep(name, fn) {
|
|
17
|
+
stepMocks.set(name, fn);
|
|
18
|
+
},
|
|
19
|
+
mockInvoke(functionId, fn) {
|
|
20
|
+
invokeMocks.set(functionId, fn);
|
|
21
|
+
},
|
|
22
|
+
sendEvent(eventName, data) {
|
|
23
|
+
const existing = eventQueue.get(eventName) ?? [];
|
|
24
|
+
existing.push(data);
|
|
25
|
+
eventQueue.set(eventName, existing);
|
|
26
|
+
},
|
|
27
|
+
async emit(eventName, data) {
|
|
28
|
+
const fns = functionsByEvent.get(eventName);
|
|
29
|
+
if (!fns || fns.length === 0) {
|
|
30
|
+
throw new Error(`No function registered for event "${eventName}". ` +
|
|
31
|
+
`Check that your function has a trigger for this event.`);
|
|
32
|
+
}
|
|
33
|
+
const fn = fns[0];
|
|
34
|
+
const registries = { stepMocks, invokeMocks, eventQueue };
|
|
35
|
+
const state = { steps: [], compensations: [] };
|
|
36
|
+
const step = createTestStepClient(registries, state);
|
|
37
|
+
const event = {
|
|
38
|
+
id: `test-evt-${Date.now()}`,
|
|
39
|
+
name: eventName,
|
|
40
|
+
version: 1,
|
|
41
|
+
data,
|
|
42
|
+
timestamp: new Date(),
|
|
43
|
+
};
|
|
44
|
+
const noopLogger = {
|
|
45
|
+
debug: () => { },
|
|
46
|
+
info: () => { },
|
|
47
|
+
warn: () => { },
|
|
48
|
+
error: () => { },
|
|
49
|
+
};
|
|
50
|
+
const noopSecrets = {
|
|
51
|
+
get(name) {
|
|
52
|
+
throw new Error(`Secret "${name}" not available in test mode`);
|
|
53
|
+
},
|
|
54
|
+
has() {
|
|
55
|
+
return false;
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
const ctx = {
|
|
59
|
+
event,
|
|
60
|
+
step,
|
|
61
|
+
run: {
|
|
62
|
+
id: `test-run-${Date.now()}`,
|
|
63
|
+
functionId: fn.config.id,
|
|
64
|
+
attempt: 1,
|
|
65
|
+
startedAt: new Date(),
|
|
66
|
+
},
|
|
67
|
+
logger: noopLogger,
|
|
68
|
+
secrets: noopSecrets,
|
|
69
|
+
};
|
|
70
|
+
try {
|
|
71
|
+
const output = await fn.handler(ctx);
|
|
72
|
+
return buildTestRun("completed", state.steps, output, undefined, []);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
76
|
+
// Run compensations in reverse order
|
|
77
|
+
const compensationsRan = [];
|
|
78
|
+
const reversed = [...state.compensations].reverse();
|
|
79
|
+
for (const { stepName, fn: compFn } of reversed) {
|
|
80
|
+
try {
|
|
81
|
+
await compFn();
|
|
82
|
+
compensationsRan.push(stepName);
|
|
83
|
+
state.steps.push({ name: `compensate:${stepName}`, type: "compensate" });
|
|
84
|
+
}
|
|
85
|
+
catch (compErr) {
|
|
86
|
+
compensationsRan.push(stepName);
|
|
87
|
+
state.steps.push({
|
|
88
|
+
name: `compensate:${stepName}`,
|
|
89
|
+
type: "compensate",
|
|
90
|
+
error: compErr instanceof Error ? compErr : new Error(String(compErr)),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return buildTestRun("failed", state.steps, undefined, err, compensationsRan);
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function buildTestRun(status, steps, output, error, compensationsRan) {
|
|
100
|
+
return {
|
|
101
|
+
status,
|
|
102
|
+
steps,
|
|
103
|
+
output,
|
|
104
|
+
error,
|
|
105
|
+
compensationsRan,
|
|
106
|
+
stepOutput(name) {
|
|
107
|
+
const s = steps.find((step) => step.name === name);
|
|
108
|
+
return s?.output;
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,oBAAoB,GAIrB,MAAM,gBAAgB,CAAC;AAsBxB,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEhD,mCAAmC;IACnC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC/D,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,CAAC,IAAY,EAAE,EAAiB;YACtC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,UAAkB,EAAE,EAA8B;YAC3D,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,SAAS,CAAC,SAAiB,EAAE,IAAa;YACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,IAAa;YACzC,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,qCAAqC,SAAS,KAAK;oBACjD,wDAAwD,CAC3D,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;YACnB,MAAM,UAAU,GAAuB,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;YAC9E,MAAM,KAAK,GAAkB,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,oBAAoB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAErD,MAAM,KAAK,GAAkB;gBAC3B,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE;gBAC5B,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,CAAC;gBACV,IAAI;gBACJ,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;YAEF,MAAM,UAAU,GAAW;gBACzB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;gBACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;gBACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;gBACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;aAChB,CAAC;YAEF,MAAM,WAAW,GAAkB;gBACjC,GAAG,CAAC,IAAY;oBACd,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,8BAA8B,CAAC,CAAC;gBACjE,CAAC;gBACD,GAAG;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;aACF,CAAC;YAEF,MAAM,GAAG,GAAoB;gBAC3B,KAAK;gBACL,IAAI;gBACJ,GAAG,EAAE;oBACH,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE;oBAC5B,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE;oBACxB,OAAO,EAAE,CAAC;oBACV,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB;gBACD,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,WAAW;aACrB,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrC,OAAO,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEtE,qCAAqC;gBACrC,MAAM,gBAAgB,GAAa,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;gBACpD,KAAK,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;oBAChD,IAAI,CAAC;wBACH,MAAM,MAAM,EAAE,CAAC;wBACf,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAChC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC3E,CAAC;oBAAC,OAAO,OAAO,EAAE,CAAC;wBACjB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAChC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BACf,IAAI,EAAE,cAAc,QAAQ,EAAE;4BAC9B,IAAI,EAAE,YAAY;4BAClB,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;yBACvE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,MAA8B,EAC9B,KAAiB,EACjB,MAAe,EACf,KAAwB,EACxB,gBAA0B;IAE1B,OAAO;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,gBAAgB;QAChB,UAAU,CAAC,IAAY;YACrB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { StepClient } from "@ironflow/core";
|
|
2
|
+
export interface TestStep {
|
|
3
|
+
name: string;
|
|
4
|
+
type: "run" | "invoke" | "sleep" | "waitForEvent" | "compensate";
|
|
5
|
+
output?: unknown;
|
|
6
|
+
error?: Error;
|
|
7
|
+
}
|
|
8
|
+
export interface TestStepRegistries {
|
|
9
|
+
stepMocks: Map<string, () => unknown>;
|
|
10
|
+
invokeMocks: Map<string, (data: unknown) => unknown>;
|
|
11
|
+
eventQueue: Map<string, unknown[]>;
|
|
12
|
+
}
|
|
13
|
+
export interface TestStepState {
|
|
14
|
+
steps: TestStep[];
|
|
15
|
+
compensations: Array<{
|
|
16
|
+
stepName: string;
|
|
17
|
+
fn: () => Promise<void>;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
export declare function createTestStepClient(registries: TestStepRegistries, state: TestStepState): StepClient;
|
|
21
|
+
//# sourceMappingURL=test-step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-step.d.ts","sourceRoot":"","sources":["../../src/test/test-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAMX,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,YAAY,CAAC;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC;IACtC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;IACrD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,aAAa,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,kBAAkB,EAC9B,KAAK,EAAE,aAAa,GACnB,UAAU,CAsHZ"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export function createTestStepClient(registries, state) {
|
|
2
|
+
const stepClient = {
|
|
3
|
+
async run(name, _fn) {
|
|
4
|
+
const mock = registries.stepMocks.get(name);
|
|
5
|
+
if (!mock) {
|
|
6
|
+
throw new Error(`Step "${name}" was called but has no mock. ` +
|
|
7
|
+
`Use t.mockStep("${name}", fn) to provide one.`);
|
|
8
|
+
}
|
|
9
|
+
const output = await Promise.resolve(mock());
|
|
10
|
+
state.steps.push({ name, type: "run", output });
|
|
11
|
+
return output;
|
|
12
|
+
},
|
|
13
|
+
async sleep(name, _duration) {
|
|
14
|
+
state.steps.push({ name, type: "sleep" });
|
|
15
|
+
},
|
|
16
|
+
async sleepUntil(name, _until) {
|
|
17
|
+
state.steps.push({ name, type: "sleep" });
|
|
18
|
+
},
|
|
19
|
+
async waitForEvent(name, filter) {
|
|
20
|
+
const events = registries.eventQueue.get(filter.event);
|
|
21
|
+
if (!events || events.length === 0) {
|
|
22
|
+
throw new Error(`step.waitForEvent("${name}") is waiting for "${filter.event}" ` +
|
|
23
|
+
`but no events were pre-registered. ` +
|
|
24
|
+
`Use t.sendEvent("${filter.event}", data) before calling t.emit().`);
|
|
25
|
+
}
|
|
26
|
+
const data = events.shift();
|
|
27
|
+
const event = {
|
|
28
|
+
id: `test-evt-${Date.now()}`,
|
|
29
|
+
name: filter.event,
|
|
30
|
+
version: 1,
|
|
31
|
+
data: data,
|
|
32
|
+
timestamp: new Date(),
|
|
33
|
+
};
|
|
34
|
+
state.steps.push({ name, type: "waitForEvent", output: event });
|
|
35
|
+
return event;
|
|
36
|
+
},
|
|
37
|
+
async parallel(_name, branches, _options) {
|
|
38
|
+
const results = [];
|
|
39
|
+
for (const branch of branches) {
|
|
40
|
+
const result = await branch(stepClient);
|
|
41
|
+
results.push(result);
|
|
42
|
+
}
|
|
43
|
+
return results;
|
|
44
|
+
},
|
|
45
|
+
async map(_name, items, fn, _options) {
|
|
46
|
+
const results = [];
|
|
47
|
+
for (let i = 0; i < items.length; i++) {
|
|
48
|
+
const result = await fn(items[i], stepClient, i);
|
|
49
|
+
results.push(result);
|
|
50
|
+
}
|
|
51
|
+
return results;
|
|
52
|
+
},
|
|
53
|
+
compensate(stepName, fn) {
|
|
54
|
+
state.compensations.push({ stepName, fn });
|
|
55
|
+
},
|
|
56
|
+
async invoke(functionId, input, _options) {
|
|
57
|
+
const mock = registries.invokeMocks.get(functionId);
|
|
58
|
+
if (!mock) {
|
|
59
|
+
throw new Error(`step.invoke("${functionId}") was called but has no mock. ` +
|
|
60
|
+
`Use t.mockInvoke("${functionId}", fn) to provide one.`);
|
|
61
|
+
}
|
|
62
|
+
const output = await Promise.resolve(mock(input));
|
|
63
|
+
state.steps.push({ name: functionId, type: "invoke", output });
|
|
64
|
+
return output;
|
|
65
|
+
},
|
|
66
|
+
async invokeAsync(functionId, input) {
|
|
67
|
+
const mock = registries.invokeMocks.get(functionId);
|
|
68
|
+
if (!mock) {
|
|
69
|
+
throw new Error(`step.invokeAsync("${functionId}") was called but has no mock. ` +
|
|
70
|
+
`Use t.mockInvoke("${functionId}", fn) to provide one.`);
|
|
71
|
+
}
|
|
72
|
+
await Promise.resolve(mock(input));
|
|
73
|
+
const runId = `test-run-${Date.now()}`;
|
|
74
|
+
state.steps.push({ name: functionId, type: "invoke", output: { runId } });
|
|
75
|
+
return { runId };
|
|
76
|
+
},
|
|
77
|
+
async publish(_topic, _data) {
|
|
78
|
+
return { eventId: `test-msg-${Date.now()}`, sequence: 0 };
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
return stepClient;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=test-step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-step.js","sourceRoot":"","sources":["../../src/test/test-step.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Node.js-specific type definitions
|
|
3
3
|
*/
|
|
4
|
-
import type { IronflowFunction, IronflowProjection, Logger, FunctionConfig, EventDefinitionRegistry } from "@ironflow/core";
|
|
4
|
+
import type { IronflowFunction, IronflowProjection, IronflowWebhook, Logger, FunctionConfig, EventDefinitionRegistry } from "@ironflow/core";
|
|
5
5
|
/**
|
|
6
6
|
* Configuration for the serve handler
|
|
7
7
|
*/
|
|
@@ -20,6 +20,10 @@ export interface ServeConfig {
|
|
|
20
20
|
environment?: string;
|
|
21
21
|
/** Event definition registry for automatic upcasting of event data */
|
|
22
22
|
eventDefinitions?: EventDefinitionRegistry;
|
|
23
|
+
/** Ironflow server URL for emitting webhook events */
|
|
24
|
+
serverUrl?: string;
|
|
25
|
+
/** Webhook sources to handle */
|
|
26
|
+
webhooks?: IronflowWebhook[];
|
|
23
27
|
}
|
|
24
28
|
/**
|
|
25
29
|
* Handler options for incoming requests
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAM7I;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACnC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACnC,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IACpC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,8CAA8C;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,gCAAgC;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,6BAA6B;IAC7B,IAAI,IAAI,IAAI,CAAC;CACd;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,MAAM,GAAG,OAAO,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnH,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC"}
|