@ironflow/node 0.1.0-test.2 → 0.2.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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,eAAe;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAyElE,gCAAgC;AAChC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,GAGjB,MAAM,gBAAgB,CAAC;AAExB,sBAAsB;AACtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAExB,iBAAiB;AACjB,eAAe,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,eAAe;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAA+B,MAAM,wBAAwB,CAAC;AAC7F,6EAA6E;AAC7E,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAkHlD,gCAAgC;AAChC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,GAGjB,MAAM,gBAAgB,CAAC;AAExB,sBAAsB;AACtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAExB,iBAAiB;AACjB,eAAe,EAAE,QAAQ,EAAE,CAAC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Manages step memoization and resume state during function execution.
5
5
  */
6
- import type { IronflowEvent, Logger, RunInfo, PushRequest, CompletedStep, StepResult } from "@ironflow/core";
6
+ import type { IronflowEvent, Logger, RunInfo, PushRequest, CompletedStep, StepResult, EventDefinitionRegistry } from "@ironflow/core";
7
7
  /**
8
8
  * Execution context for a function invocation
9
9
  */
@@ -30,7 +30,7 @@ export declare class ExecutionContext {
30
30
  private resumeContext?;
31
31
  /** Whether we've processed the resume */
32
32
  private resumeProcessed;
33
- constructor(request: PushRequest, logger?: Logger);
33
+ constructor(request: PushRequest, logger?: Logger, eventDefinitions?: EventDefinitionRegistry);
34
34
  /**
35
35
  * Generate a unique step ID
36
36
  */
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/internal/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,OAAO,EACP,WAAW,EACX,aAAa,EAEb,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,sBAAsB;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,OAAO,CAAC,YAAY,CAAkC;IACtD,yDAAyD;IACzD,OAAO,CAAC,cAAc,CAAyC;IAC/D,wCAAwC;IACxC,OAAO,CAAC,aAAa,CAAoB;IACzC,4CAA4C;IAC5C,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,yCAAyC;IACzC,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM;IAoCjD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMpC;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;IAK7E;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI3D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKvC;;OAEG;IACH,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAQnD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,OAAO;IASzE;;OAEG;IACH,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS;IAIjC;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIlC;;OAEG;IACH,gBAAgB,IAAI,UAAU,EAAE;CAGjC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,YAAY,CAAkC;IAEtD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;gBAEW,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAKzD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMpC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAInD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,OAAO;IAIzE,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS;IAIjC,mBAAmB,IAAI,IAAI;IAI3B,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIlC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;CAI9E"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/internal/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,OAAO,EACP,WAAW,EACX,aAAa,EAEb,UAAU,EACV,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,sBAAsB;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,OAAO,CAAC,YAAY,CAAkC;IACtD,yDAAyD;IACzD,OAAO,CAAC,cAAc,CAAyC;IAC/D,wCAAwC;IACxC,OAAO,CAAC,aAAa,CAAoB;IACzC,4CAA4C;IAC5C,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,yCAAyC;IACzC,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,uBAAuB;IA6C7F;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMpC;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;IAK7E;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI3D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKvC;;OAEG;IACH,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAQnD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,OAAO;IASzE;;OAEG;IACH,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS;IAIjC;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIlC;;OAEG;IACH,gBAAgB,IAAI,UAAU,EAAE;CAGjC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,YAAY,CAAkC;IAEtD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;gBAEW,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM;IAKzD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMpC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAInD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,OAAO;IAIzE,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS;IAIjC,mBAAmB,IAAI,IAAI;IAI3B,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIlC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;CAI9E"}
@@ -29,15 +29,22 @@ export class ExecutionContext {
29
29
  resumeContext;
30
30
  /** Whether we've processed the resume */
31
31
  resumeProcessed = false;
32
- constructor(request, logger) {
32
+ constructor(request, logger, eventDefinitions) {
33
33
  this.runId = request.run_id;
34
34
  this.functionId = request.function_id;
35
35
  this.attempt = request.attempt;
36
36
  // Parse event
37
+ const eventVersion = request.event.version ?? 1;
38
+ let eventData = request.event.data;
39
+ // Apply upcasting if registry is provided
40
+ if (eventDefinitions) {
41
+ eventData = eventDefinitions.upcastEvent(request.event.name, eventData, eventVersion);
42
+ }
37
43
  this.event = {
38
44
  id: request.event.id,
39
45
  name: request.event.name,
40
- data: request.event.data,
46
+ version: eventVersion,
47
+ data: eventData,
41
48
  timestamp: new Date(request.event.timestamp),
42
49
  idempotencyKey: request.event.idempotency_key,
43
50
  source: request.event.source,
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/internal/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/internal/context.ts"],"names":[],"mappings":"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"}
package/dist/kv.d.ts ADDED
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Ironflow Node.js KV Client
3
+ *
4
+ * Key-Value store operations for the Ironflow server.
5
+ */
6
+ import type { KVBucketConfig, KVBucketInfo, KVEntry, KVPutResult } from "@ironflow/core";
7
+ /**
8
+ * Configuration for the KV client (inherited from parent client).
9
+ */
10
+ export interface KVClientConfig {
11
+ serverUrl: string;
12
+ apiKey?: string;
13
+ timeout: number;
14
+ }
15
+ /**
16
+ * KV bucket handle for key-level operations.
17
+ */
18
+ export declare class KVBucketHandle {
19
+ private readonly bucketName;
20
+ private readonly config;
21
+ constructor(bucketName: string, config: KVClientConfig);
22
+ /**
23
+ * Get a value by key.
24
+ */
25
+ get(key: string): Promise<KVEntry>;
26
+ /**
27
+ * Put a value unconditionally.
28
+ */
29
+ put(key: string, value: unknown): Promise<KVPutResult>;
30
+ /**
31
+ * Create a value only if the key doesn't exist (if-not-exists).
32
+ * Throws on conflict (HTTP 412).
33
+ */
34
+ create(key: string, value: unknown): Promise<KVPutResult>;
35
+ /**
36
+ * Update a value only if the revision matches (compare-and-swap).
37
+ * Throws on mismatch (HTTP 412).
38
+ */
39
+ update(key: string, value: unknown, revision: number): Promise<KVPutResult>;
40
+ /**
41
+ * Delete a key (soft delete / tombstone).
42
+ */
43
+ delete(key: string): Promise<void>;
44
+ /**
45
+ * Purge a key and all its history.
46
+ */
47
+ purge(key: string): Promise<void>;
48
+ /**
49
+ * List keys with an optional wildcard filter.
50
+ */
51
+ listKeys(filter?: string): Promise<string[]>;
52
+ private restRequest;
53
+ }
54
+ /**
55
+ * KV client for bucket management and key operations.
56
+ */
57
+ export declare class KVClient {
58
+ private readonly config;
59
+ constructor(config: KVClientConfig);
60
+ /**
61
+ * Create a new bucket.
62
+ */
63
+ createBucket(config: KVBucketConfig): Promise<KVBucketInfo>;
64
+ /**
65
+ * Delete a bucket.
66
+ */
67
+ deleteBucket(name: string): Promise<void>;
68
+ /**
69
+ * List all buckets.
70
+ */
71
+ listBuckets(): Promise<KVBucketInfo[]>;
72
+ /**
73
+ * Get bucket info.
74
+ */
75
+ getBucketInfo(name: string): Promise<KVBucketInfo>;
76
+ /**
77
+ * Get a bucket handle for key-level operations.
78
+ */
79
+ bucket(name: string): KVBucketHandle;
80
+ private restRequest;
81
+ }
82
+ //# sourceMappingURL=kv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../src/kv.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,OAAO,EACP,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc;IAGzC;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOxC;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ5D;;;OAGG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAS/D;;;OAGG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC;IASvB;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxC;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvC;;OAEG;IACG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YASpC,WAAW;CA6D1B;AAED;;GAEG;AACH,qBAAa,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAEnD;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IAejE;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAQ5C;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAOxD;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;YAItB,WAAW;CAgD1B"}
package/dist/kv.js ADDED
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Ironflow Node.js KV Client
3
+ *
4
+ * Key-Value store operations for the Ironflow server.
5
+ */
6
+ /**
7
+ * KV bucket handle for key-level operations.
8
+ */
9
+ export class KVBucketHandle {
10
+ bucketName;
11
+ config;
12
+ constructor(bucketName, config) {
13
+ this.bucketName = bucketName;
14
+ this.config = config;
15
+ }
16
+ /**
17
+ * Get a value by key.
18
+ */
19
+ async get(key) {
20
+ return this.restRequest("GET", `/api/v1/kv/buckets/${enc(this.bucketName)}/keys/${key}`);
21
+ }
22
+ /**
23
+ * Put a value unconditionally.
24
+ */
25
+ async put(key, value) {
26
+ return this.restRequest("PUT", `/api/v1/kv/buckets/${enc(this.bucketName)}/keys/${key}`, value);
27
+ }
28
+ /**
29
+ * Create a value only if the key doesn't exist (if-not-exists).
30
+ * Throws on conflict (HTTP 412).
31
+ */
32
+ async create(key, value) {
33
+ return this.restRequest("PUT", `/api/v1/kv/buckets/${enc(this.bucketName)}/keys/${key}`, value, { "If-None-Match": "*" });
34
+ }
35
+ /**
36
+ * Update a value only if the revision matches (compare-and-swap).
37
+ * Throws on mismatch (HTTP 412).
38
+ */
39
+ async update(key, value, revision) {
40
+ return this.restRequest("PUT", `/api/v1/kv/buckets/${enc(this.bucketName)}/keys/${key}`, value, { "If-Match": String(revision) });
41
+ }
42
+ /**
43
+ * Delete a key (soft delete / tombstone).
44
+ */
45
+ async delete(key) {
46
+ await this.restRequest("DELETE", `/api/v1/kv/buckets/${enc(this.bucketName)}/keys/${key}`);
47
+ }
48
+ /**
49
+ * Purge a key and all its history.
50
+ */
51
+ async purge(key) {
52
+ await this.restRequest("DELETE", `/api/v1/kv/buckets/${enc(this.bucketName)}/keys/${key}?purge=true`);
53
+ }
54
+ /**
55
+ * List keys with an optional wildcard filter.
56
+ */
57
+ async listKeys(filter) {
58
+ let path = `/api/v1/kv/buckets/${enc(this.bucketName)}/keys`;
59
+ if (filter) {
60
+ path += `?filter=${encodeURIComponent(filter)}`;
61
+ }
62
+ const result = await this.restRequest("GET", path);
63
+ return result.keys;
64
+ }
65
+ async restRequest(method, path, body, extraHeaders) {
66
+ const url = `${this.config.serverUrl}${path}`;
67
+ const headers = {};
68
+ if (body !== undefined) {
69
+ headers["Content-Type"] =
70
+ typeof body === "string" || body instanceof Uint8Array
71
+ ? "application/octet-stream"
72
+ : "application/json";
73
+ }
74
+ if (this.config.apiKey) {
75
+ headers["Authorization"] = `Bearer ${this.config.apiKey}`;
76
+ }
77
+ if (extraHeaders) {
78
+ Object.assign(headers, extraHeaders);
79
+ }
80
+ const controller = new AbortController();
81
+ const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
82
+ try {
83
+ const response = await fetch(url, {
84
+ method,
85
+ headers,
86
+ body: body !== undefined
87
+ ? typeof body === "string" || body instanceof Uint8Array
88
+ ? body
89
+ : JSON.stringify(body)
90
+ : undefined,
91
+ signal: controller.signal,
92
+ });
93
+ if (!response.ok) {
94
+ const errorBody = await response.text();
95
+ let errorMessage = `KV request failed with status ${response.status}`;
96
+ try {
97
+ const errorJson = JSON.parse(errorBody);
98
+ if (errorJson.error)
99
+ errorMessage = errorJson.error;
100
+ }
101
+ catch {
102
+ if (errorBody)
103
+ errorMessage = errorBody;
104
+ }
105
+ throw new Error(errorMessage);
106
+ }
107
+ if (response.status === 204) {
108
+ return undefined;
109
+ }
110
+ return response.json();
111
+ }
112
+ finally {
113
+ clearTimeout(timeoutId);
114
+ }
115
+ }
116
+ }
117
+ /**
118
+ * KV client for bucket management and key operations.
119
+ */
120
+ export class KVClient {
121
+ config;
122
+ constructor(config) {
123
+ this.config = config;
124
+ }
125
+ /**
126
+ * Create a new bucket.
127
+ */
128
+ async createBucket(config) {
129
+ const body = { name: config.name };
130
+ if (config.description)
131
+ body.description = config.description;
132
+ if (config.ttlSeconds)
133
+ body.ttl_seconds = config.ttlSeconds;
134
+ if (config.maxValueSize)
135
+ body.max_value_size = config.maxValueSize;
136
+ if (config.maxBytes)
137
+ body.max_bytes = config.maxBytes;
138
+ if (config.history)
139
+ body.history = config.history;
140
+ return this.restRequest("POST", "/api/v1/kv/buckets", body);
141
+ }
142
+ /**
143
+ * Delete a bucket.
144
+ */
145
+ async deleteBucket(name) {
146
+ await this.restRequest("DELETE", `/api/v1/kv/buckets/${enc(name)}`);
147
+ }
148
+ /**
149
+ * List all buckets.
150
+ */
151
+ async listBuckets() {
152
+ const result = await this.restRequest("GET", "/api/v1/kv/buckets");
153
+ return result.buckets;
154
+ }
155
+ /**
156
+ * Get bucket info.
157
+ */
158
+ async getBucketInfo(name) {
159
+ return this.restRequest("GET", `/api/v1/kv/buckets/${enc(name)}`);
160
+ }
161
+ /**
162
+ * Get a bucket handle for key-level operations.
163
+ */
164
+ bucket(name) {
165
+ return new KVBucketHandle(name, this.config);
166
+ }
167
+ async restRequest(method, path, body) {
168
+ const url = `${this.config.serverUrl}${path}`;
169
+ const headers = {};
170
+ if (body !== undefined) {
171
+ headers["Content-Type"] = "application/json";
172
+ }
173
+ if (this.config.apiKey) {
174
+ headers["Authorization"] = `Bearer ${this.config.apiKey}`;
175
+ }
176
+ const controller = new AbortController();
177
+ const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
178
+ try {
179
+ const response = await fetch(url, {
180
+ method,
181
+ headers,
182
+ body: body !== undefined ? JSON.stringify(body) : undefined,
183
+ signal: controller.signal,
184
+ });
185
+ if (!response.ok) {
186
+ const errorBody = await response.text();
187
+ let errorMessage = `KV request failed with status ${response.status}`;
188
+ try {
189
+ const errorJson = JSON.parse(errorBody);
190
+ if (errorJson.error)
191
+ errorMessage = errorJson.error;
192
+ }
193
+ catch {
194
+ if (errorBody)
195
+ errorMessage = errorBody;
196
+ }
197
+ throw new Error(errorMessage);
198
+ }
199
+ if (response.status === 204) {
200
+ return undefined;
201
+ }
202
+ return response.json();
203
+ }
204
+ finally {
205
+ clearTimeout(timeoutId);
206
+ }
207
+ }
208
+ }
209
+ function enc(s) {
210
+ return encodeURIComponent(s);
211
+ }
212
+ //# sourceMappingURL=kv.js.map
package/dist/kv.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv.js","sourceRoot":"","sources":["../src/kv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Projection Runner
3
+ *
4
+ * A poll-loop runner that processes events for a single projection.
5
+ * Follows the same pattern as the worker polling loop in worker.ts.
6
+ *
7
+ * - Registers the projection with the server
8
+ * - Polls for events via ConnectRPC
9
+ * - Runs the handler (managed: reducer + save state, external: side-effect + ack)
10
+ * - Backs off when idle (1s -> 2s -> 4s, max 10s)
11
+ * - Supports graceful shutdown via AbortSignal
12
+ */
13
+ import type { IronflowProjection, Logger } from "@ironflow/core";
14
+ export interface ProjectionRunnerConfig {
15
+ projection: IronflowProjection<any, any>;
16
+ baseUrl: string;
17
+ headers: Record<string, string>;
18
+ logger: Logger;
19
+ signal?: AbortSignal;
20
+ }
21
+ export declare class ProjectionRunner {
22
+ private config;
23
+ private running;
24
+ private backoffMs;
25
+ constructor(config: ProjectionRunnerConfig);
26
+ register(): Promise<void>;
27
+ start(): Promise<void>;
28
+ stop(): Promise<void>;
29
+ private poll;
30
+ private buildContext;
31
+ private saveState;
32
+ private ackEvents;
33
+ private sleep;
34
+ }
35
+ export declare function createProjectionRunner(config: ProjectionRunnerConfig): ProjectionRunner;
36
+ //# sourceMappingURL=projection-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-runner.d.ts","sourceRoot":"","sources":["../src/projection-runner.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAElB,MAAM,EAGP,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,sBAAsB;IAErC,UAAU,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAkBD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAQ;gBAEb,MAAM,EAAE,sBAAsB;IAIpC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAIb,IAAI;IA2FlB,OAAO,CAAC,YAAY;YAgBN,SAAS;YA0BT,SAAS;IAoBvB,OAAO,CAAC,KAAK;CAad;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CAEvF"}
@@ -0,0 +1,173 @@
1
+ // sdk/js/node/src/projection-runner.ts
2
+ export class ProjectionRunner {
3
+ config;
4
+ running = false;
5
+ backoffMs = 1000;
6
+ constructor(config) {
7
+ this.config = config;
8
+ }
9
+ async register() {
10
+ const { projection, baseUrl, headers } = this.config;
11
+ const resp = await fetch(`${baseUrl}/ironflow.v1.ProjectionService/RegisterProjection`, {
12
+ method: "POST",
13
+ headers: { ...headers, "Content-Type": "application/json" },
14
+ body: JSON.stringify({
15
+ name: projection.config.name,
16
+ events: projection.config.events,
17
+ mode: projection.config.mode,
18
+ version: 1,
19
+ partitionKey: projection.config.partitionKey || "",
20
+ }),
21
+ });
22
+ if (!resp.ok) {
23
+ throw new Error(`Failed to register projection: ${resp.status}`);
24
+ }
25
+ }
26
+ async start() {
27
+ this.running = true;
28
+ await this.register();
29
+ this.config.logger.info(`Projection runner started: ${this.config.projection.config.name}`);
30
+ while (this.running && !this.config.signal?.aborted) {
31
+ try {
32
+ const processed = await this.poll();
33
+ if (processed > 0) {
34
+ this.backoffMs = 1000; // Reset backoff
35
+ }
36
+ else {
37
+ // Backoff on empty poll
38
+ await this.sleep(this.backoffMs);
39
+ this.backoffMs = Math.min(this.backoffMs * 2, 10000);
40
+ }
41
+ }
42
+ catch (err) {
43
+ this.config.logger.error(`Projection poll error: ${err}`);
44
+ await this.sleep(this.backoffMs);
45
+ this.backoffMs = Math.min(this.backoffMs * 2, 10000);
46
+ }
47
+ }
48
+ }
49
+ async stop() {
50
+ this.running = false;
51
+ }
52
+ async poll() {
53
+ const { projection, baseUrl, headers } = this.config;
54
+ const resp = await fetch(`${baseUrl}/ironflow.v1.ProjectionService/PollProjectionEvents`, {
55
+ method: "POST",
56
+ headers: { ...headers, "Content-Type": "application/json" },
57
+ body: JSON.stringify({
58
+ name: projection.config.name,
59
+ batchSize: projection.config.batchSize || 100,
60
+ }),
61
+ });
62
+ if (!resp.ok)
63
+ throw new Error(`Poll failed: ${resp.status}`);
64
+ const data = (await resp.json());
65
+ const events = data.events || [];
66
+ if (events.length === 0)
67
+ return 0;
68
+ const projConfig = projection.config;
69
+ if (projConfig.mode === "managed") {
70
+ // Managed mode: group events by partition, run reducer per partition, save each.
71
+ const partitions = new Map();
72
+ for (const event of events) {
73
+ const pk = event.metadata?.["__partition"] || "__global__";
74
+ if (!partitions.has(pk)) {
75
+ partitions.set(pk, {
76
+ events: [],
77
+ lastEventId: "",
78
+ lastEventSeq: 0,
79
+ });
80
+ }
81
+ partitions.get(pk).events.push(event);
82
+ }
83
+ for (const [pk, batch] of partitions) {
84
+ // Use currentState from server only for __global__ (non-partitioned).
85
+ let state = pk === "__global__" && data.currentState != null
86
+ ? data.currentState
87
+ : projConfig.initialState
88
+ ? projConfig.initialState()
89
+ : {};
90
+ for (const event of batch.events) {
91
+ const ctx = this.buildContext(event);
92
+ state = projConfig.handler(state, event, ctx);
93
+ batch.lastEventId = event.id;
94
+ batch.lastEventSeq = event.seq;
95
+ batch.lastEventTime = event.timestamp;
96
+ }
97
+ await this.saveState(state, batch.lastEventId, batch.lastEventSeq, batch.lastEventTime, pk);
98
+ }
99
+ }
100
+ else {
101
+ // External mode: run handler for each event, then ack
102
+ let lastEventId = "";
103
+ let lastEventSeq = 0;
104
+ for (const event of events) {
105
+ const ctx = this.buildContext(event);
106
+ await projConfig.handler(event, ctx);
107
+ lastEventId = event.id;
108
+ lastEventSeq = event.seq;
109
+ }
110
+ await this.ackEvents(lastEventId, lastEventSeq);
111
+ }
112
+ return events.length;
113
+ }
114
+ buildContext(event) {
115
+ return {
116
+ event: {
117
+ id: event.id,
118
+ name: event.name,
119
+ seq: event.seq || 0,
120
+ timestamp: event.timestamp ? new Date(event.timestamp) : new Date(),
121
+ },
122
+ projection: {
123
+ name: this.config.projection.config.name,
124
+ version: 1,
125
+ },
126
+ logger: this.config.logger,
127
+ };
128
+ }
129
+ async saveState(state, lastEventId, lastEventSeq, lastEventTime, partitionKey) {
130
+ const { baseUrl, headers, projection } = this.config;
131
+ const resp = await fetch(`${baseUrl}/ironflow.v1.ProjectionService/SaveProjectionState`, {
132
+ method: "POST",
133
+ headers: { ...headers, "Content-Type": "application/json" },
134
+ body: JSON.stringify({
135
+ name: projection.config.name,
136
+ partitionKey: partitionKey ?? "",
137
+ state,
138
+ lastEventId,
139
+ lastEventSeq,
140
+ lastEventTime,
141
+ }),
142
+ });
143
+ if (!resp.ok)
144
+ throw new Error(`Save state failed: ${resp.status}`);
145
+ }
146
+ async ackEvents(lastEventId, lastEventSeq) {
147
+ const { baseUrl, headers, projection } = this.config;
148
+ const resp = await fetch(`${baseUrl}/ironflow.v1.ProjectionService/AckProjectionEvents`, {
149
+ method: "POST",
150
+ headers: { ...headers, "Content-Type": "application/json" },
151
+ body: JSON.stringify({
152
+ name: projection.config.name,
153
+ lastEventId,
154
+ lastEventSeq,
155
+ }),
156
+ });
157
+ if (!resp.ok)
158
+ throw new Error(`Ack events failed: ${resp.status}`);
159
+ }
160
+ sleep(ms) {
161
+ return new Promise((resolve) => {
162
+ const timer = setTimeout(resolve, ms);
163
+ this.config.signal?.addEventListener("abort", () => {
164
+ clearTimeout(timer);
165
+ resolve();
166
+ }, { once: true });
167
+ });
168
+ }
169
+ }
170
+ export function createProjectionRunner(config) {
171
+ return new ProjectionRunner(config);
172
+ }
173
+ //# sourceMappingURL=projection-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-runner.js","sourceRoot":"","sources":["../src/projection-runner.ts"],"names":[],"mappings":"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"}