@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.
Files changed (43) hide show
  1. package/dist/client.d.ts +147 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +273 -2
  4. package/dist/client.js.map +1 -1
  5. package/dist/index.d.ts +3 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/internal/context.d.ts +45 -1
  10. package/dist/internal/context.d.ts.map +1 -1
  11. package/dist/internal/context.js +89 -1
  12. package/dist/internal/context.js.map +1 -1
  13. package/dist/internal/errors.d.ts +20 -1
  14. package/dist/internal/errors.d.ts.map +1 -1
  15. package/dist/internal/errors.js.map +1 -1
  16. package/dist/serve.d.ts.map +1 -1
  17. package/dist/serve.js +104 -4
  18. package/dist/serve.js.map +1 -1
  19. package/dist/step.d.ts +7 -1
  20. package/dist/step.d.ts.map +1 -1
  21. package/dist/step.js +221 -5
  22. package/dist/step.js.map +1 -1
  23. package/dist/test/index.d.ts +22 -0
  24. package/dist/test/index.d.ts.map +1 -0
  25. package/dist/test/index.js +112 -0
  26. package/dist/test/index.js.map +1 -0
  27. package/dist/test/test-step.d.ts +21 -0
  28. package/dist/test/test-step.d.ts.map +1 -0
  29. package/dist/test/test-step.js +83 -0
  30. package/dist/test/test-step.js.map +1 -0
  31. package/dist/types.d.ts +5 -1
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/webhook.d.ts +22 -0
  34. package/dist/webhook.d.ts.map +1 -0
  35. package/dist/webhook.js +23 -0
  36. package/dist/webhook.js.map +1 -0
  37. package/dist/worker-streaming.d.ts.map +1 -1
  38. package/dist/worker-streaming.js +29 -7
  39. package/dist/worker-streaming.js.map +1 -1
  40. package/dist/worker.d.ts.map +1 -1
  41. package/dist/worker.js +23 -10
  42. package/dist/worker.js.map +1 -1
  43. 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 output = await fn();
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":"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"}
@@ -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
@@ -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;AAM5H;;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;CAC5C;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"}
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"}