@ironflow/node 0.19.3 → 0.20.2

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 (91) hide show
  1. package/LICENSE +181 -0
  2. package/README.md +5 -2
  3. package/package.json +20 -14
  4. package/dist/client.d.ts +0 -924
  5. package/dist/client.d.ts.map +0 -1
  6. package/dist/client.js +0 -1526
  7. package/dist/client.js.map +0 -1
  8. package/dist/command-dedup.d.ts +0 -61
  9. package/dist/command-dedup.d.ts.map +0 -1
  10. package/dist/command-dedup.js +0 -129
  11. package/dist/command-dedup.js.map +0 -1
  12. package/dist/config-client.d.ts +0 -58
  13. package/dist/config-client.d.ts.map +0 -1
  14. package/dist/config-client.js +0 -171
  15. package/dist/config-client.js.map +0 -1
  16. package/dist/function.d.ts +0 -53
  17. package/dist/function.d.ts.map +0 -1
  18. package/dist/function.js +0 -56
  19. package/dist/function.js.map +0 -1
  20. package/dist/index.d.ts +0 -71
  21. package/dist/index.d.ts.map +0 -1
  22. package/dist/index.js +0 -70
  23. package/dist/index.js.map +0 -1
  24. package/dist/internal/context.d.ts +0 -142
  25. package/dist/internal/context.d.ts.map +0 -1
  26. package/dist/internal/context.js +0 -306
  27. package/dist/internal/context.js.map +0 -1
  28. package/dist/internal/errors.d.ts +0 -66
  29. package/dist/internal/errors.d.ts.map +0 -1
  30. package/dist/internal/errors.js +0 -29
  31. package/dist/internal/errors.js.map +0 -1
  32. package/dist/internal/run-context.d.ts +0 -10
  33. package/dist/internal/run-context.d.ts.map +0 -1
  34. package/dist/internal/run-context.js +0 -23
  35. package/dist/internal/run-context.js.map +0 -1
  36. package/dist/kv.d.ts +0 -86
  37. package/dist/kv.d.ts.map +0 -1
  38. package/dist/kv.js +0 -261
  39. package/dist/kv.js.map +0 -1
  40. package/dist/projection-runner.d.ts +0 -83
  41. package/dist/projection-runner.d.ts.map +0 -1
  42. package/dist/projection-runner.js +0 -470
  43. package/dist/projection-runner.js.map +0 -1
  44. package/dist/projection.d.ts +0 -36
  45. package/dist/projection.d.ts.map +0 -1
  46. package/dist/projection.js +0 -55
  47. package/dist/projection.js.map +0 -1
  48. package/dist/secrets.d.ts +0 -6
  49. package/dist/secrets.d.ts.map +0 -1
  50. package/dist/secrets.js +0 -19
  51. package/dist/secrets.js.map +0 -1
  52. package/dist/serve.d.ts +0 -71
  53. package/dist/serve.d.ts.map +0 -1
  54. package/dist/serve.js +0 -434
  55. package/dist/serve.js.map +0 -1
  56. package/dist/step.d.ts +0 -18
  57. package/dist/step.d.ts.map +0 -1
  58. package/dist/step.js +0 -581
  59. package/dist/step.js.map +0 -1
  60. package/dist/subscribe.d.ts +0 -164
  61. package/dist/subscribe.d.ts.map +0 -1
  62. package/dist/subscribe.js +0 -487
  63. package/dist/subscribe.js.map +0 -1
  64. package/dist/test/index.d.ts +0 -22
  65. package/dist/test/index.d.ts.map +0 -1
  66. package/dist/test/index.js +0 -112
  67. package/dist/test/index.js.map +0 -1
  68. package/dist/test/test-step.d.ts +0 -21
  69. package/dist/test/test-step.d.ts.map +0 -1
  70. package/dist/test/test-step.js +0 -83
  71. package/dist/test/test-step.js.map +0 -1
  72. package/dist/types.d.ts +0 -108
  73. package/dist/types.d.ts.map +0 -1
  74. package/dist/types.js +0 -5
  75. package/dist/types.js.map +0 -1
  76. package/dist/version.d.ts +0 -2
  77. package/dist/version.d.ts.map +0 -1
  78. package/dist/version.js +0 -4
  79. package/dist/version.js.map +0 -1
  80. package/dist/webhook.d.ts +0 -22
  81. package/dist/webhook.d.ts.map +0 -1
  82. package/dist/webhook.js +0 -23
  83. package/dist/webhook.js.map +0 -1
  84. package/dist/worker-streaming.d.ts +0 -17
  85. package/dist/worker-streaming.d.ts.map +0 -1
  86. package/dist/worker-streaming.js +0 -510
  87. package/dist/worker-streaming.js.map +0 -1
  88. package/dist/worker.d.ts +0 -28
  89. package/dist/worker.d.ts.map +0 -1
  90. package/dist/worker.js +0 -540
  91. package/dist/worker.js.map +0 -1
@@ -1,22 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,112 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,83 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-step.js","sourceRoot":"","sources":["../../src/test/test-step.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,oBAAoB,CAClC,UAA8B,EAC9B,KAAoB;IAEpB,MAAM,UAAU,GAAe;QAC7B,KAAK,CAAC,GAAG,CAAI,IAAY,EAAE,GAAqB;YAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,gCAAgC;oBAC3C,mBAAmB,IAAI,wBAAwB,CAClD,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,OAAO,MAAW,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,SAAmB;YAC3C,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,MAAqB;YAClD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,YAAY,CAChB,IAAY,EACZ,MAAmB;YAEnB,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,sBAAsB,IAAI,sBAAsB,MAAM,CAAC,KAAK,IAAI;oBAC9D,qCAAqC;oBACrC,oBAAoB,MAAM,CAAC,KAAK,mCAAmC,CACtE,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAG,CAAC;YAC7B,MAAM,KAAK,GAAqB;gBAC9B,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE;gBAC5B,IAAI,EAAE,MAAM,CAAC,KAAK;gBAClB,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,IAAS;gBACf,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;YACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,QAAiE,EACjE,QAA0B;YAE1B,MAAM,OAAO,GAAc,EAAE,CAAC;YAC9B,KAAK,MAAM,MAAM,IAAI,QAAsD,EAAE,CAAC;gBAC5E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,OAAY,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,GAAG,CACP,KAAa,EACb,KAAU,EACV,EAA4D,EAC5D,QAA0B;YAE1B,MAAM,OAAO,GAAQ,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,UAAU,CAAC,QAAgB,EAAE,EAAuB;YAClD,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,KAAK,CAAC,MAAM,CACV,UAAkB,EAClB,KAAe,EACf,QAA+B;YAE/B,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CACb,gBAAgB,UAAU,iCAAiC;oBACzD,qBAAqB,UAAU,wBAAwB,CAC1D,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,OAAO,MAAW,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,KAAe;YAEf,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CACb,qBAAqB,UAAU,iCAAiC;oBAC9D,qBAAqB,UAAU,wBAAwB,CAC1D,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACvC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1E,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,KAAc;YAC1C,OAAO,EAAE,OAAO,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC5D,CAAC;KACF,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,108 +0,0 @@
1
- /**
2
- * Node.js-specific type definitions
3
- */
4
- import type { IronflowFunction, IronflowProjection, IronflowWebhook, Logger, FunctionConfig, EventDefinitionRegistry } from "@ironflow/core";
5
- /**
6
- * Configuration for the serve handler
7
- */
8
- export interface ServeConfig {
9
- /** Functions to serve */
10
- functions: IronflowFunction[];
11
- /** Projections to register */
12
- projections?: IronflowProjection[];
13
- /** Signing key for webhook verification */
14
- signingKey?: string;
15
- /** Skip signature verification (dev only) */
16
- skipVerification?: boolean;
17
- /** Logger instance (or false to disable) */
18
- logger?: Logger | false;
19
- /** Target environment (default: IRONFLOW_ENV or "default") */
20
- environment?: string;
21
- /** Event definition registry for automatic upcasting of event data */
22
- eventDefinitions?: EventDefinitionRegistry;
23
- /** Ironflow server URL for emitting webhook events */
24
- serverUrl?: string;
25
- /** Webhook sources to handle */
26
- webhooks?: IronflowWebhook[];
27
- }
28
- /**
29
- * Handler options for incoming requests
30
- */
31
- export interface HandlerOptions {
32
- /** Override signing key per-request */
33
- signingKey?: string;
34
- }
35
- /**
36
- * Context available in the handler
37
- */
38
- export interface HandlerContext {
39
- /** Raw request body */
40
- rawBody: string;
41
- /** Signature from headers */
42
- signature?: string;
43
- }
44
- /**
45
- * Configuration for pull mode worker
46
- */
47
- export interface WorkerConfig {
48
- /** Ironflow server URL */
49
- serverUrl?: string;
50
- /** Functions this worker handles */
51
- functions: IronflowFunction[];
52
- /** Projections to register */
53
- projections?: IronflowProjection[];
54
- /** Maximum concurrent jobs (default: 10) */
55
- maxConcurrentJobs?: number;
56
- /** Heartbeat interval in ms (default: 30000) */
57
- heartbeatInterval?: number;
58
- /** Reconnect delay in ms (default: 5000) */
59
- reconnectDelay?: number;
60
- /** Worker labels for routing */
61
- labels?: Record<string, string>;
62
- /** Transport type: "polling" or "streaming" */
63
- transport?: "polling" | "streaming";
64
- /** Logger instance (or false to disable) */
65
- logger?: Logger | false;
66
- /** Target environment (default: IRONFLOW_ENV or "default") */
67
- environment?: string;
68
- /** Event definition registry for automatic upcasting of event data */
69
- eventDefinitions?: EventDefinitionRegistry;
70
- /** API key for authentication (default: IRONFLOW_API_KEY env var) */
71
- apiKey?: string;
72
- }
73
- /**
74
- * Worker instance interface
75
- */
76
- export interface Worker {
77
- /** Start the worker (blocks until stopped) */
78
- start(): Promise<void>;
79
- /** Gracefully drain and stop */
80
- drain(): Promise<void>;
81
- /** Force stop immediately */
82
- stop(): void;
83
- }
84
- /**
85
- * Create function configuration helper
86
- */
87
- export interface CreateFunctionConfig<TEvent = unknown> extends Omit<FunctionConfig<import("zod").ZodType>, 'schema'> {
88
- /** Schema for event validation */
89
- schema?: import("zod").ZodType<TEvent>;
90
- }
91
- /**
92
- * Context passed to the global onError handler when a client operation fails.
93
- */
94
- export interface ErrorContext {
95
- /** Client method name (e.g. "emit", "streams.append", "apiKeys.create") */
96
- method: string;
97
- /** ConnectRPC or REST endpoint path (e.g. "/ironflow.v1.IronflowService/Trigger") */
98
- endpoint: string;
99
- /** HTTP status code (undefined for connection/timeout errors) */
100
- statusCode?: number;
101
- }
102
- /**
103
- * Global error handler callback type.
104
- * Return value is awaited; if the callback throws, the error is swallowed
105
- * and logged to stderr — the original error is always re-thrown.
106
- */
107
- export type OnErrorHandler = (error: Error, context: ErrorContext) => void | Promise<void>;
108
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * Node.js-specific type definitions
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/dist/version.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare const SDK_VERSION = "0.19.3";
2
- //# sourceMappingURL=version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,WAAW,CAAC"}
package/dist/version.js DELETED
@@ -1,4 +0,0 @@
1
- // Auto-generated from package.json by scripts/sync-version.mjs
2
- // Do not edit manually; run `pnpm build` (or the prebuild hook) to regenerate.
3
- export const SDK_VERSION = "0.19.3";
4
- //# sourceMappingURL=version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC"}
package/dist/webhook.d.ts DELETED
@@ -1,22 +0,0 @@
1
- import type { WebhookConfig, IronflowWebhook } from "@ironflow/core";
2
- /**
3
- * Create a webhook source definition.
4
- *
5
- * @example
6
- * ```typescript
7
- * const stripeWebhook = createWebhook({
8
- * id: "stripe",
9
- * verify: (req) => {
10
- * const sig = req.headers["stripe-signature"];
11
- * return stripe.webhooks.constructEvent(req.body, sig, secret);
12
- * },
13
- * transform: (payload) => ({
14
- * name: `stripe.${payload.type}`,
15
- * data: payload.data.object,
16
- * idempotencyKey: payload.id,
17
- * }),
18
- * });
19
- * ```
20
- */
21
- export declare function createWebhook(config: WebhookConfig): IronflowWebhook;
22
- //# sourceMappingURL=webhook.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../src/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAErE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAEpE"}
package/dist/webhook.js DELETED
@@ -1,23 +0,0 @@
1
- /**
2
- * Create a webhook source definition.
3
- *
4
- * @example
5
- * ```typescript
6
- * const stripeWebhook = createWebhook({
7
- * id: "stripe",
8
- * verify: (req) => {
9
- * const sig = req.headers["stripe-signature"];
10
- * return stripe.webhooks.constructEvent(req.body, sig, secret);
11
- * },
12
- * transform: (payload) => ({
13
- * name: `stripe.${payload.type}`,
14
- * data: payload.data.object,
15
- * idempotencyKey: payload.id,
16
- * }),
17
- * });
18
- * ```
19
- */
20
- export function createWebhook(config) {
21
- return { config };
22
- }
23
- //# sourceMappingURL=webhook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../src/webhook.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Ironflow Streaming Worker
3
- *
4
- * ConnectRPC bidirectional streaming worker for low-latency pull mode.
5
- */
6
- import type { WorkerConfig, Worker } from "./types.js";
7
- /**
8
- * Create a streaming worker for Pull mode execution using ConnectRPC
9
- *
10
- * Uses bidirectional gRPC streaming for efficient job dispatch.
11
- *
12
- * @param config - Worker configuration
13
- * @returns Worker instance
14
- */
15
- export declare function createStreamingWorker(config: WorkerConfig): Worker;
16
- export default createStreamingWorker;
17
- //# sourceMappingURL=worker-streaming.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-streaming.d.ts","sourceRoot":"","sources":["../src/worker-streaming.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgCH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAiCvD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAElE;AA8jBD,eAAe,qBAAqB,CAAC"}