@flowcore/pathways 0.14.0 → 0.15.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/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.15.0](https://github.com/flowcore-io/flowcore-pathways/compare/v0.14.0...v0.15.0) (2025-05-27)
4
+
5
+
6
+ ### Features
7
+
8
+ * file writer + changes to write and writeBatch args ([5cbbb8f](https://github.com/flowcore-io/flowcore-pathways/commit/5cbbb8f83c5b8cdba11436565c4d36c1ad3faa61))
9
+ * unified write method ([19f00bd](https://github.com/flowcore-io/flowcore-pathways/commit/19f00bd550d5b167e0104d9c8ef5a2751a909041))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * fix session pathway ([5b8b1a0](https://github.com/flowcore-io/flowcore-pathways/commit/5b8b1a0b846f97adb679ce79ddd61bdc8868caf9))
15
+ * fix types ([2235058](https://github.com/flowcore-io/flowcore-pathways/commit/22350588845db0a1e320d80928653210048b9a29))
16
+ * update readme ([2285c96](https://github.com/flowcore-io/flowcore-pathways/commit/2285c960d9f3d95c09092c91ab8b93b4fc98a94f))
17
+ * update tests and readme ([c3af713](https://github.com/flowcore-io/flowcore-pathways/commit/c3af7133196bb5da5cf7f342c2922bb7ad778fe9))
18
+
3
19
  ## [0.14.0](https://github.com/flowcore-io/flowcore-pathways/compare/v0.13.2...v0.14.0) (2025-05-23)
4
20
 
5
21
 
package/README.md CHANGED
@@ -88,9 +88,11 @@ pathways
88
88
 
89
89
  // You can write to another pathway if needed
90
90
  await pathways.write("notifications/sent", {
91
- userId: event.payload.id,
92
- message: `Welcome ${event.payload.name}!`,
93
- channel: "email",
91
+ data: {
92
+ userId: event.payload.id,
93
+ message: `Welcome ${event.payload.name}!`,
94
+ channel: "email",
95
+ },
94
96
  })
95
97
  })
96
98
  ```
@@ -182,31 +184,32 @@ Send events to pathways:
182
184
  ```typescript
183
185
  // Basic write
184
186
  const eventId = await pathways.write("order/placed", {
185
- orderId: "ord-123",
186
- userId: "user-456",
187
- total: 99.99,
188
- items: [
189
- { id: "item-1", quantity: 2 },
190
- ],
187
+ data: {
188
+ orderId: "ord-123",
189
+ userId: "user-456",
190
+ total: 99.99,
191
+ items: [
192
+ { id: "item-1", quantity: 2 },
193
+ ],
194
+ },
191
195
  })
192
196
 
193
197
  // Write with metadata
194
- const eventId2 = await pathways.write(
195
- "order/placed",
196
- orderData,
197
- {
198
+ const eventId2 = await pathways.write("order/placed", {
199
+ data: orderData,
200
+ metadata: {
198
201
  correlationId: "corr-789",
199
202
  source: "checkout-service",
200
203
  },
201
- )
204
+ })
202
205
 
203
206
  // Fire-and-forget mode (doesn't wait for processing)
204
- const eventId3 = await pathways.write(
205
- "order/placed",
206
- orderData,
207
- undefined,
208
- { fireAndForget: true },
209
- )
207
+ const eventId3 = await pathways.write("order/placed", {
208
+ data: orderData,
209
+ options: {
210
+ fireAndForget: true,
211
+ },
212
+ })
210
213
  ```
211
214
 
212
215
  ### Error Handling
@@ -486,19 +489,19 @@ Events written through a session builder automatically include the session ID:
486
489
  ```typescript
487
490
  // Write an event with session context
488
491
  await session.write("order/placed", {
489
- orderId: "ord-123",
490
- userId: "user-456",
491
- total: 99.99,
492
- items: [{ id: "item-1", quantity: 2 }],
492
+ data: {
493
+ orderId: "ord-123",
494
+ userId: "user-456",
495
+ total: 99.99,
496
+ items: [{ id: "item-1", quantity: 2 }],
497
+ },
493
498
  })
494
499
 
495
500
  // You can override the session ID for a specific write
496
- await session.write(
497
- "order/placed",
498
- orderData,
499
- {}, // No metadata
500
- { sessionId: "different-session" },
501
- )
501
+ await session.write("order/placed", {
502
+ data: orderData,
503
+ options: { sessionId: "different-session" },
504
+ })
502
505
  ```
503
506
 
504
507
  #### Session ID in Audit Events
@@ -513,7 +516,7 @@ pathways.withAudit((path, event) => {
513
516
  })
514
517
 
515
518
  // Now when writing events through a session
516
- await session.write("order/placed", orderData)
519
+ await session.write("order/placed", { data: orderData })
517
520
  // The session ID is automatically included in the audit metadata
518
521
  ```
519
522
 
@@ -1,8 +1,9 @@
1
- import { z, type ZodTypeAny } from "zod";
1
+ import { type AnyZodObject, z } from "zod";
2
2
  import type { WebhookSendOptions } from "@flowcore/sdk-transformer-core";
3
3
  import type { FlowcoreEvent } from "../contracts/event.js";
4
4
  import type { Logger } from "./logger.js";
5
5
  import type { EventMetadata, PathwayContract, PathwayKey, PathwayState, PathwayWriteOptions, WritablePathway } from "./types.js";
6
+ import { FileEventSchema, FileInputSchema } from "./types.js";
6
7
  /**
7
8
  * Defines the mode for auditing pathway operations
8
9
  * - "user": Normal user-initiated operations
@@ -130,7 +131,9 @@ export declare class PathwaysBuilder<TPathway extends Record<string, {
130
131
  private readonly globalErrorSubject;
131
132
  private readonly writers;
132
133
  private readonly batchWriters;
134
+ private readonly fileWriters;
133
135
  private readonly schemas;
136
+ private readonly inputSchemas;
134
137
  private readonly writable;
135
138
  private readonly timeouts;
136
139
  private readonly maxRetries;
@@ -247,13 +250,14 @@ export declare class PathwaysBuilder<TPathway extends Record<string, {
247
250
  * @param contract The pathway contract describing the pathway
248
251
  * @returns The PathwaysBuilder instance with the new pathway registered
249
252
  */
250
- register<F extends string, E extends string, S extends ZodTypeAny, W extends boolean = true>(contract: PathwayContract<F, E, S> & {
253
+ register<F extends string, E extends string, S extends AnyZodObject = AnyZodObject, W extends boolean = true, FP extends boolean = false>(contract: PathwayContract<F, E, S> & {
251
254
  writable?: W;
252
255
  maxRetries?: number;
253
256
  retryDelayMs?: number;
257
+ isFilePathway?: FP;
254
258
  }): PathwaysBuilder<TPathway & Record<PathwayKey<F, E>, {
255
- output: z.infer<S>;
256
- input: z.input<S>;
259
+ output: FP extends true ? z.infer<typeof FileEventSchema> & z.infer<S> : z.infer<S>;
260
+ input: FP extends true ? z.input<typeof FileInputSchema> & z.input<S> : z.input<S>;
257
261
  }>, TWritablePaths | WritablePathway<PathwayKey<F, E>, W>>;
258
262
  /**
259
263
  * Gets a pathway instance by its path
@@ -301,8 +305,12 @@ export declare class PathwaysBuilder<TPathway extends Record<string, {
301
305
  * @param options Optional write options
302
306
  * @returns A promise that resolves to the event ID(s)
303
307
  */
304
- write<TPath extends TWritablePaths>(path: TPath, inputData: TPathway[TPath]["input"], metadata?: EventMetadata, options?: PathwayWriteOptions): Promise<string | string[]>;
305
- writeBatch<TPath extends TWritablePaths>(path: TPath, inputData: TPathway[TPath]["input"][], metadata?: EventMetadata, options?: PathwayWriteOptions): Promise<string | string[]>;
308
+ write<TPath extends TWritablePaths, B extends boolean = false>(path: TPath, input: {
309
+ batch?: B;
310
+ data: B extends true ? TPathway[TPath]["input"][] : TPathway[TPath]["input"];
311
+ metadata?: EventMetadata;
312
+ options?: PathwayWriteOptions;
313
+ }): Promise<string | string[]>;
306
314
  /**
307
315
  * Waits for a specific event to be processed
308
316
  *
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/pathways/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/pathways/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAIvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,UAAU,EACV,YAAY,EACZ,mBAAmB,EAInB,eAAe,EAChB,MAAM,YAAY,CAAA;AASnB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAuB7D;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEzC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;AAEvE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,KAAK,CAAA;CAC3B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAE9E;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,CAAC,EAAE,QAAQ,CAAA;CACxB,CAAA;AAOD;;;;;;GAMG;AAEH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,cAAc,GAAG,SAAS,CAAA;IAElF;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC7E;AAED;;;GAGG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD;;;OAGG;IACH,OAAO,CAAC,KAAK,CAA0D;IAEvE;;OAEG;;IAKH;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAQ5C;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,SAAgB,GAAG,IAAI;CAerE;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe,CAE1B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,EAAE,EACzE,cAAc,SAAS,MAAM,QAAQ,GAAG,KAAK;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGxB;IACD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAGhC;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI5B;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyE;IAC5G,OAAO,CAAC,QAAQ,CAAC,OAAO,CAIrB;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAI1B;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG3B;IACD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmF;IAC3G,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmF;IAChH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyE;IAClG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuE;IAChG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuE;IAClG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuE;IACnG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0B;IAChE,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,gBAAgB,CAAqC;IAG7D,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,cAAc,CAAC,CAAgB;IAGvC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAmC;IAGxE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAG/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IAEjD;;;;;;;;;;;;;OAaG;gBACS,EACV,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,0BAA0B,EAC1B,4BAA4B,EAC5B,QAAQ,GACT,EAAE;QACD,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,0BAA0B,CAAC,EAAE,OAAO,CAAA;QACpC,4BAA4B,CAAC,EAAE,mBAAmB,CAAA;QAClD,QAAQ,CAAC,EAAE,cAAc,CAAA;KAC1B;IA2CD;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAMhF;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAM3E;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAMrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,GACvB,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAU5C;;;;OAIG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAQrE;;;;;OAKG;IACU,OAAO,CAAC,OAAO,EAAE,MAAM,QAAQ,EAAE,IAAI,EAAE,aAAa;IAgJjE;;;;;;;;OAQG;IACH,QAAQ,CACN,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,YAAY,GAAG,YAAY,EACrC,CAAC,SAAS,OAAO,GAAG,IAAI,EACxB,EAAE,SAAS,OAAO,GAAG,KAAK,EAE1B,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;QACnC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACZ,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,aAAa,CAAC,EAAE,EAAE,CAAA;KACnB,GACA,eAAe,CACd,QAAQ,GACR,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACzB,MAAM,EAAE,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACnF,KAAK,EAAE,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACnF,CAAC,EACF,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACtD;IA4ED;;;;;;OAMG;IACH,GAAG,CAAC,KAAK,SAAS,MAAM,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IAKzE;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,SAAS,MAAM,QAAQ,EACjC,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACjF,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAsB5C;;;;;OAKG;IACH,SAAS,CAAC,KAAK,SAAS,MAAM,QAAQ,EACpC,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAClE,IAAI,GAAE,QAAQ,GAAG,OAAO,GAAG,KAAgB,GAC1C,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IA8B5C;;;;OAIG;IACH,OAAO,CAAC,KAAK,SAAS,MAAM,QAAQ,EAClC,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,GAC/E,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAqB5C;;;OAGG;IACH,UAAU,CACR,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACrE,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAQ5C;;;;;;;OAOG;IACG,KAAK,CAAC,KAAK,SAAS,cAAc,EAAE,CAAC,SAAS,OAAO,GAAG,KAAK,EACjE,IAAI,EAAE,KAAK,EACX,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,CAAC,CAAA;QACT,IAAI,EAAE,CAAC,SAAS,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAA;QAC5E,QAAQ,CAAC,EAAE,aAAa,CAAA;QACxB,OAAO,CAAC,EAAE,mBAAmB,CAAA;KAC9B,GACA,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;IAuJ7B;;;;;;;;;;OAUG;YACW,2BAA2B;CA4C1C"}
@@ -1,9 +1,11 @@
1
1
  import { z } from "zod";
2
+ import { fileTypeFromBuffer } from "file-type";
2
3
  import { Subject } from "rxjs";
3
4
  import { WebhookBuilder } from "../compatibility/flowcore-transformer-core.sdk.js";
4
5
  import { InternalPathwayState } from "./internal-pathway.state.js";
5
6
  import { NoopLogger } from "./logger.js";
6
7
  import { AUDIT_ENTITY_TYPE, AUDIT_MODE, AUDIT_ON_BEHALF_OF, AUDIT_SYSTEM_MODE, AUDIT_USER_ID, AUDIT_USER_MODE, } from "./constants.js";
8
+ import { FileEventSchema, FileInputSchema } from "./types.js";
7
9
  /**
8
10
  * Default timeout for pathway processing in milliseconds (10 seconds)
9
11
  */
@@ -152,12 +154,24 @@ export class PathwaysBuilder {
152
154
  writable: true,
153
155
  value: {}
154
156
  });
157
+ Object.defineProperty(this, "fileWriters", {
158
+ enumerable: true,
159
+ configurable: true,
160
+ writable: true,
161
+ value: {}
162
+ });
155
163
  Object.defineProperty(this, "schemas", {
156
164
  enumerable: true,
157
165
  configurable: true,
158
166
  writable: true,
159
167
  value: {}
160
168
  });
169
+ Object.defineProperty(this, "inputSchemas", {
170
+ enumerable: true,
171
+ configurable: true,
172
+ writable: true,
173
+ value: {}
174
+ });
161
175
  Object.defineProperty(this, "writable", {
162
176
  enumerable: true,
163
177
  configurable: true,
@@ -541,7 +555,7 @@ export class PathwaysBuilder {
541
555
  if (writable) {
542
556
  if (contract.isFilePathway) {
543
557
  this.filePathways.add(path);
544
- this.writers[path] = this.webhookBuilderFactory()
558
+ this.fileWriters[path] = this.webhookBuilderFactory()
545
559
  .buildFileWebhook(contract.flowType, contract.eventType).send;
546
560
  }
547
561
  else {
@@ -561,13 +575,21 @@ export class PathwaysBuilder {
561
575
  if (contract.retryDelayMs !== undefined) {
562
576
  this.retryDelays[path] = contract.retryDelayMs;
563
577
  }
564
- this.schemas[path] = contract.schema;
578
+ if (contract.isFilePathway) {
579
+ this.schemas[path] = (contract.schema ?? z.object({})).merge(FileEventSchema);
580
+ this.inputSchemas[path] = (contract.schema ?? z.object({})).merge(FileInputSchema);
581
+ }
582
+ else {
583
+ this.schemas[path] = contract.schema ?? z.object({});
584
+ this.inputSchemas[path] = contract.schema ?? z.object({});
585
+ }
565
586
  this.writable[path] = writable;
566
587
  this.logger.info(`Pathway registered successfully`, {
567
588
  pathway: path,
568
589
  flowType: contract.flowType,
569
590
  eventType: contract.eventType,
570
591
  writable,
592
+ isFilePathway: contract.isFilePathway,
571
593
  });
572
594
  return this;
573
595
  }
@@ -678,8 +700,14 @@ export class PathwaysBuilder {
678
700
  * @param options Optional write options
679
701
  * @returns A promise that resolves to the event ID(s)
680
702
  */
681
- async write(path, inputData, metadata, options) {
703
+ async write(path, input) {
682
704
  const pathStr = String(path);
705
+ const { data: inputData, metadata, options, batch } = input;
706
+ if (batch && this.filePathways.has(path)) {
707
+ const error = `Batch is not possible for file pathways. Pathway ${pathStr} is a file pathway`;
708
+ this.logger.error(error);
709
+ throw new Error(error);
710
+ }
683
711
  this.logger.debug(`Writing to pathway`, {
684
712
  pathway: pathStr,
685
713
  metadata,
@@ -698,7 +726,7 @@ export class PathwaysBuilder {
698
726
  this.logger.error(error);
699
727
  throw new Error(error);
700
728
  }
701
- const schema = this.schemas[path];
729
+ const schema = batch ? z.array(this.inputSchemas[path]) : this.inputSchemas[path];
702
730
  const parsedData = schema.safeParse(inputData);
703
731
  if (!parsedData.success) {
704
732
  const errorMessage = `Invalid data for pathway ${pathStr}`;
@@ -762,13 +790,22 @@ export class PathwaysBuilder {
762
790
  }
763
791
  }
764
792
  let eventIds = [];
765
- if (this.filePathways.has(path)) {
766
- this.logger.debug(`Writing file data to pathway`, { pathway: pathStr });
767
- const fileData = data;
768
- eventIds = await this.writers[path](fileData, finalMetadata, options);
793
+ this.logger.debug(`Writing webhook data to pathway`, { pathway: pathStr, batch });
794
+ if (batch) {
795
+ eventIds = await this.batchWriters[path](data, finalMetadata, options);
796
+ }
797
+ else if (this.filePathways.has(path)) {
798
+ const { fileId, fileName, fileContent, ...additionalProperties } = data;
799
+ const fileType = await fileTypeFromBuffer(fileContent);
800
+ eventIds = await this.fileWriters[path]({
801
+ fileId,
802
+ fileName,
803
+ fileType: fileType?.mime ?? "application/octet-stream",
804
+ fileContent: new Blob([fileContent]),
805
+ additionalProperties,
806
+ }, finalMetadata, options);
769
807
  }
770
808
  else {
771
- this.logger.debug(`Writing webhook data to pathway`, { pathway: pathStr });
772
809
  eventIds = await this.writers[path](data, finalMetadata, options);
773
810
  }
774
811
  this.logger[this.logLevel.writeSuccess](`Successfully wrote to pathway`, {
@@ -787,108 +824,6 @@ export class PathwaysBuilder {
787
824
  }
788
825
  return eventIds;
789
826
  }
790
- async writeBatch(path, inputData, metadata, options) {
791
- const pathStr = String(path);
792
- this.logger.debug(`Writing batch to pathway`, {
793
- pathway: pathStr,
794
- metadata,
795
- options: {
796
- fireAndForget: options?.fireAndForget,
797
- sessionId: options?.sessionId,
798
- },
799
- });
800
- if (!this.pathways[path]) {
801
- const error = `Pathway ${pathStr} not found`;
802
- this.logger.error(error);
803
- throw new Error(error);
804
- }
805
- if (!this.writable[path]) {
806
- const error = `Pathway ${pathStr} is not writable`;
807
- this.logger.error(error);
808
- throw new Error(error);
809
- }
810
- const schema = this.schemas[path];
811
- const parsedData = z.array(schema).safeParse(inputData);
812
- if (!parsedData.success) {
813
- const errorMessage = `Invalid batch data for pathway ${pathStr}`;
814
- this.logger.error(errorMessage, new Error(errorMessage), {
815
- pathway: pathStr,
816
- schema: schema.toString(),
817
- });
818
- throw new Error(errorMessage);
819
- }
820
- const data = parsedData.data;
821
- // Create a copy of the metadata to avoid modifying the original
822
- const finalMetadata = metadata ? { ...metadata } : {};
823
- // Check for session-specific user resolver
824
- let userId;
825
- if (options?.sessionId) {
826
- const sessionUserResolver = this.getSessionUserResolver(options.sessionId);
827
- if (sessionUserResolver) {
828
- try {
829
- userId = await sessionUserResolver();
830
- this.logger.debug(`Using session-specific user resolver`, {
831
- pathway: pathStr,
832
- sessionId: options.sessionId,
833
- userId,
834
- });
835
- }
836
- catch (error) {
837
- this.logger.error(`Error resolving session user ID`, error instanceof Error ? error : new Error(String(error)), {
838
- pathway: pathStr,
839
- sessionId: options.sessionId,
840
- });
841
- }
842
- }
843
- }
844
- // Process audit metadata if audit is configured
845
- if (this.userIdResolver) {
846
- // Only use global resolver if we don't already have a user ID from a session resolver
847
- if (!userId) {
848
- this.logger.debug(`Resolving user ID for audit metadata`, { pathway: pathStr });
849
- userId = await this.userIdResolver();
850
- }
851
- }
852
- // Determine the audit mode: default is "user" unless explicitly specified as "system"
853
- const auditMode = options?.auditMode ?? "user";
854
- this.logger.debug(`Adding audit metadata`, {
855
- pathway: pathStr,
856
- auditMode,
857
- userId,
858
- });
859
- if (userId) {
860
- // Add appropriate audit metadata based on mode
861
- if (auditMode === AUDIT_SYSTEM_MODE) {
862
- finalMetadata[AUDIT_USER_ID] = "system";
863
- finalMetadata[AUDIT_ON_BEHALF_OF] = userId.entityId;
864
- finalMetadata[AUDIT_MODE] = "system";
865
- finalMetadata[AUDIT_ENTITY_TYPE] = userId.entityType;
866
- }
867
- else {
868
- finalMetadata[AUDIT_USER_ID] = userId.entityId;
869
- finalMetadata[AUDIT_MODE] = AUDIT_USER_MODE; // Always set mode for user
870
- finalMetadata[AUDIT_ENTITY_TYPE] = userId.entityType;
871
- }
872
- }
873
- let eventIds = [];
874
- this.logger.debug(`Writing batch webhook data to pathway`, { pathway: pathStr });
875
- eventIds = await this.batchWriters[path](data, finalMetadata, options);
876
- this.logger[this.logLevel.writeSuccess](`Successfully wrote to pathway`, {
877
- pathway: pathStr,
878
- eventIds: Array.isArray(eventIds) ? eventIds : [eventIds],
879
- fireAndForget: options?.fireAndForget,
880
- });
881
- if (!options?.fireAndForget) {
882
- this.logger.debug(`Waiting for pathway to be processed`, {
883
- pathway: pathStr,
884
- eventIds: Array.isArray(eventIds) ? eventIds : [eventIds],
885
- });
886
- await Promise.all(Array.isArray(eventIds)
887
- ? eventIds.map((id) => this.waitForPathwayToBeProcessed(id))
888
- : [this.waitForPathwayToBeProcessed(eventIds)]);
889
- }
890
- return eventIds;
891
- }
892
827
  /**
893
828
  * Waits for a specific event to be processed
894
829
  *
@@ -133,6 +133,6 @@ export class SessionPathwayBuilder {
133
133
  // Always include the session ID in the options
134
134
  finalOptions.sessionId = options?.sessionId ?? this.sessionId;
135
135
  // The PathwaysBuilder will handle session-specific user resolvers
136
- return await this.pathwaysBuilder.write(path, data, metadata, finalOptions);
136
+ return await this.pathwaysBuilder.write(path, { data, metadata, options: finalOptions });
137
137
  }
138
138
  }
@@ -1,5 +1,6 @@
1
- import type { ZodTypeAny } from "zod";
1
+ import { type AnyZodObject, z } from "zod";
2
2
  import type { WebhookFileData, WebhookSendOptions } from "@flowcore/sdk-transformer-core";
3
+ import { Buffer } from "node:buffer";
3
4
  /**
4
5
  * Helper type to create a custom type error for non-writable pathways
5
6
  * @template T The string type to create an error for
@@ -13,7 +14,7 @@ type NonWritablePathwayError<T extends string> = T & {
13
14
  * @template E The event type
14
15
  * @template T The schema type
15
16
  */
16
- export interface PathwayContract<F extends string, E extends string, T extends ZodTypeAny> {
17
+ export interface PathwayContract<F extends string, E extends string, T extends AnyZodObject> {
17
18
  /**
18
19
  * The flow type for this pathway
19
20
  */
@@ -25,7 +26,7 @@ export interface PathwayContract<F extends string, E extends string, T extends Z
25
26
  /**
26
27
  * The schema that defines the structure of events for this pathway
27
28
  */
28
- schema: T;
29
+ schema?: T;
29
30
  /**
30
31
  * Whether the pathway is writable. Use `false as const` to make the pathway non-writable at compile time.
31
32
  * @example
@@ -143,5 +144,21 @@ export type PathwayWriteOptions = WebhookSendOptions & {
143
144
  */
144
145
  sessionId?: string;
145
146
  };
147
+ export declare const FileInputSchema: z.ZodObject<{
148
+ fileId: z.ZodString;
149
+ fileName: z.ZodString;
150
+ fileContent: z.ZodType<Buffer>;
151
+ }>;
152
+ export declare const FileEventSchema: z.ZodObject<{
153
+ fileName: z.ZodString;
154
+ fileType: z.ZodString;
155
+ fileSize: z.ZodNumber;
156
+ data: z.ZodString;
157
+ part: z.ZodNumber;
158
+ totalParts: z.ZodNumber;
159
+ checksum: z.ZodString;
160
+ hashType: z.ZodString;
161
+ fileId: z.ZodString;
162
+ }>;
146
163
  export {};
147
164
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pathways/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEzF;;;GAGG;AACH,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IACnD,QAAQ,CAAC,yBAAyB,EAChC,wGAAwG,CAAA;CAC3G,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,UAAU;IACvF;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,CAAC,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,CAAC,CAAA;IAET;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAG;AAEjE;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,YAAY,IAAI,CACtC,OAAO,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,YAAY,IAAI,CAC3C,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAEtB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,eAAe,EACxB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAEtB;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,IAAI,UAAU,SAAS,KAAK,GAChG,uBAAuB,CAAC,CAAC,CAAC,GAC1B,CAAC,CAAA;AAEL;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;;OAIG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE5D;;;OAGG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAE7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pathways/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1,18 @@
1
- export {};
1
+ import { z } from "zod";
2
+ import { Buffer } from "node:buffer";
3
+ export const FileInputSchema = z.object({
4
+ fileId: z.string(),
5
+ fileName: z.string(),
6
+ fileContent: z.instanceof(Buffer),
7
+ });
8
+ export const FileEventSchema = z.object({
9
+ fileName: z.string(),
10
+ fileType: z.string(),
11
+ fileSize: z.number(),
12
+ data: z.string(),
13
+ part: z.number(),
14
+ totalParts: z.number(),
15
+ checksum: z.string(),
16
+ hashType: z.string(),
17
+ fileId: z.string(),
18
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowcore/pathways",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "A TypeScript Library for creating Flowcore Pathways, simplifying the integration with the flowcore platform",
5
5
  "homepage": "https://github.com/flowcore-io/flowcore-pathways#readme",
6
6
  "repository": {
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@flowcore/sdk-transformer-core": "^2.3.6",
27
+ "file-type": "^21.0.0",
27
28
  "node-cache": "5.1.2",
28
29
  "postgres": "^3.4.3",
29
30
  "rxjs": "^7.8.1",
@@ -1,8 +1,9 @@
1
- import { z, type ZodTypeAny } from "zod";
1
+ import { type AnyZodObject, z } from "zod";
2
2
  import type { WebhookSendOptions } from "@flowcore/sdk-transformer-core";
3
3
  import type { FlowcoreEvent } from "../contracts/event.js";
4
4
  import type { Logger } from "./logger.js";
5
5
  import type { EventMetadata, PathwayContract, PathwayKey, PathwayState, PathwayWriteOptions, WritablePathway } from "./types.js";
6
+ import { FileEventSchema, FileInputSchema } from "./types.js";
6
7
  /**
7
8
  * Defines the mode for auditing pathway operations
8
9
  * - "user": Normal user-initiated operations
@@ -130,7 +131,9 @@ export declare class PathwaysBuilder<TPathway extends Record<string, {
130
131
  private readonly globalErrorSubject;
131
132
  private readonly writers;
132
133
  private readonly batchWriters;
134
+ private readonly fileWriters;
133
135
  private readonly schemas;
136
+ private readonly inputSchemas;
134
137
  private readonly writable;
135
138
  private readonly timeouts;
136
139
  private readonly maxRetries;
@@ -247,13 +250,14 @@ export declare class PathwaysBuilder<TPathway extends Record<string, {
247
250
  * @param contract The pathway contract describing the pathway
248
251
  * @returns The PathwaysBuilder instance with the new pathway registered
249
252
  */
250
- register<F extends string, E extends string, S extends ZodTypeAny, W extends boolean = true>(contract: PathwayContract<F, E, S> & {
253
+ register<F extends string, E extends string, S extends AnyZodObject = AnyZodObject, W extends boolean = true, FP extends boolean = false>(contract: PathwayContract<F, E, S> & {
251
254
  writable?: W;
252
255
  maxRetries?: number;
253
256
  retryDelayMs?: number;
257
+ isFilePathway?: FP;
254
258
  }): PathwaysBuilder<TPathway & Record<PathwayKey<F, E>, {
255
- output: z.infer<S>;
256
- input: z.input<S>;
259
+ output: FP extends true ? z.infer<typeof FileEventSchema> & z.infer<S> : z.infer<S>;
260
+ input: FP extends true ? z.input<typeof FileInputSchema> & z.input<S> : z.input<S>;
257
261
  }>, TWritablePaths | WritablePathway<PathwayKey<F, E>, W>>;
258
262
  /**
259
263
  * Gets a pathway instance by its path
@@ -301,8 +305,12 @@ export declare class PathwaysBuilder<TPathway extends Record<string, {
301
305
  * @param options Optional write options
302
306
  * @returns A promise that resolves to the event ID(s)
303
307
  */
304
- write<TPath extends TWritablePaths>(path: TPath, inputData: TPathway[TPath]["input"], metadata?: EventMetadata, options?: PathwayWriteOptions): Promise<string | string[]>;
305
- writeBatch<TPath extends TWritablePaths>(path: TPath, inputData: TPathway[TPath]["input"][], metadata?: EventMetadata, options?: PathwayWriteOptions): Promise<string | string[]>;
308
+ write<TPath extends TWritablePaths, B extends boolean = false>(path: TPath, input: {
309
+ batch?: B;
310
+ data: B extends true ? TPathway[TPath]["input"][] : TPathway[TPath]["input"];
311
+ metadata?: EventMetadata;
312
+ options?: PathwayWriteOptions;
313
+ }): Promise<string | string[]>;
306
314
  /**
307
315
  * Waits for a specific event to be processed
308
316
  *
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/pathways/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/pathways/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAIvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,UAAU,EACV,YAAY,EACZ,mBAAmB,EAInB,eAAe,EAChB,MAAM,YAAY,CAAA;AASnB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAuB7D;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEzC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;AAEvE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,KAAK,CAAA;CAC3B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAE9E;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,CAAC,EAAE,QAAQ,CAAA;CACxB,CAAA;AAOD;;;;;;GAMG;AAEH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,cAAc,GAAG,SAAS,CAAA;IAElF;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC7E;AAED;;;GAGG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD;;;OAGG;IACH,OAAO,CAAC,KAAK,CAA0D;IAEvE;;OAEG;;IAKH;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAQ5C;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,SAAgB,GAAG,IAAI;CAerE;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe,CAE1B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,EAAE,EACzE,cAAc,SAAS,MAAM,QAAQ,GAAG,KAAK;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGxB;IACD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAGhC;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI5B;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyE;IAC5G,OAAO,CAAC,QAAQ,CAAC,OAAO,CAIrB;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAI1B;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG3B;IACD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmF;IAC3G,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmF;IAChH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyE;IAClG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuE;IAChG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuE;IAClG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuE;IACnG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0B;IAChE,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,gBAAgB,CAAqC;IAG7D,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,cAAc,CAAC,CAAgB;IAGvC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAmC;IAGxE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAG/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IAEjD;;;;;;;;;;;;;OAaG;gBACS,EACV,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,0BAA0B,EAC1B,4BAA4B,EAC5B,QAAQ,GACT,EAAE;QACD,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,0BAA0B,CAAC,EAAE,OAAO,CAAA;QACpC,4BAA4B,CAAC,EAAE,mBAAmB,CAAA;QAClD,QAAQ,CAAC,EAAE,cAAc,CAAA;KAC1B;IA2CD;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAMhF;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAM3E;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAMrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,GACvB,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAU5C;;;;OAIG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAQrE;;;;;OAKG;IACU,OAAO,CAAC,OAAO,EAAE,MAAM,QAAQ,EAAE,IAAI,EAAE,aAAa;IAgJjE;;;;;;;;OAQG;IACH,QAAQ,CACN,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,YAAY,GAAG,YAAY,EACrC,CAAC,SAAS,OAAO,GAAG,IAAI,EACxB,EAAE,SAAS,OAAO,GAAG,KAAK,EAE1B,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;QACnC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACZ,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,aAAa,CAAC,EAAE,EAAE,CAAA;KACnB,GACA,eAAe,CACd,QAAQ,GACR,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACzB,MAAM,EAAE,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACnF,KAAK,EAAE,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACnF,CAAC,EACF,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACtD;IA4ED;;;;;;OAMG;IACH,GAAG,CAAC,KAAK,SAAS,MAAM,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IAKzE;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,SAAS,MAAM,QAAQ,EACjC,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACjF,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAsB5C;;;;;OAKG;IACH,SAAS,CAAC,KAAK,SAAS,MAAM,QAAQ,EACpC,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAClE,IAAI,GAAE,QAAQ,GAAG,OAAO,GAAG,KAAgB,GAC1C,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IA8B5C;;;;OAIG;IACH,OAAO,CAAC,KAAK,SAAS,MAAM,QAAQ,EAClC,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,GAC/E,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAqB5C;;;OAGG;IACH,UAAU,CACR,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACrE,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAQ5C;;;;;;;OAOG;IACG,KAAK,CAAC,KAAK,SAAS,cAAc,EAAE,CAAC,SAAS,OAAO,GAAG,KAAK,EACjE,IAAI,EAAE,KAAK,EACX,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,CAAC,CAAA;QACT,IAAI,EAAE,CAAC,SAAS,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAA;QAC5E,QAAQ,CAAC,EAAE,aAAa,CAAA;QACxB,OAAO,CAAC,EAAE,mBAAmB,CAAA;KAC9B,GACA,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;IAuJ7B;;;;;;;;;;OAUG;YACW,2BAA2B;CA4C1C"}
@@ -2,11 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PathwaysBuilder = exports.SessionUser = void 0;
4
4
  const zod_1 = require("zod");
5
+ const file_type_1 = require("file-type");
5
6
  const rxjs_1 = require("rxjs");
6
7
  const flowcore_transformer_core_sdk_js_1 = require("../compatibility/flowcore-transformer-core.sdk.js");
7
8
  const internal_pathway_state_js_1 = require("./internal-pathway.state.js");
8
9
  const logger_js_1 = require("./logger.js");
9
10
  const constants_js_1 = require("./constants.js");
11
+ const types_js_1 = require("./types.js");
10
12
  /**
11
13
  * Default timeout for pathway processing in milliseconds (10 seconds)
12
14
  */
@@ -156,12 +158,24 @@ class PathwaysBuilder {
156
158
  writable: true,
157
159
  value: {}
158
160
  });
161
+ Object.defineProperty(this, "fileWriters", {
162
+ enumerable: true,
163
+ configurable: true,
164
+ writable: true,
165
+ value: {}
166
+ });
159
167
  Object.defineProperty(this, "schemas", {
160
168
  enumerable: true,
161
169
  configurable: true,
162
170
  writable: true,
163
171
  value: {}
164
172
  });
173
+ Object.defineProperty(this, "inputSchemas", {
174
+ enumerable: true,
175
+ configurable: true,
176
+ writable: true,
177
+ value: {}
178
+ });
165
179
  Object.defineProperty(this, "writable", {
166
180
  enumerable: true,
167
181
  configurable: true,
@@ -545,7 +559,7 @@ class PathwaysBuilder {
545
559
  if (writable) {
546
560
  if (contract.isFilePathway) {
547
561
  this.filePathways.add(path);
548
- this.writers[path] = this.webhookBuilderFactory()
562
+ this.fileWriters[path] = this.webhookBuilderFactory()
549
563
  .buildFileWebhook(contract.flowType, contract.eventType).send;
550
564
  }
551
565
  else {
@@ -565,13 +579,21 @@ class PathwaysBuilder {
565
579
  if (contract.retryDelayMs !== undefined) {
566
580
  this.retryDelays[path] = contract.retryDelayMs;
567
581
  }
568
- this.schemas[path] = contract.schema;
582
+ if (contract.isFilePathway) {
583
+ this.schemas[path] = (contract.schema ?? zod_1.z.object({})).merge(types_js_1.FileEventSchema);
584
+ this.inputSchemas[path] = (contract.schema ?? zod_1.z.object({})).merge(types_js_1.FileInputSchema);
585
+ }
586
+ else {
587
+ this.schemas[path] = contract.schema ?? zod_1.z.object({});
588
+ this.inputSchemas[path] = contract.schema ?? zod_1.z.object({});
589
+ }
569
590
  this.writable[path] = writable;
570
591
  this.logger.info(`Pathway registered successfully`, {
571
592
  pathway: path,
572
593
  flowType: contract.flowType,
573
594
  eventType: contract.eventType,
574
595
  writable,
596
+ isFilePathway: contract.isFilePathway,
575
597
  });
576
598
  return this;
577
599
  }
@@ -682,8 +704,14 @@ class PathwaysBuilder {
682
704
  * @param options Optional write options
683
705
  * @returns A promise that resolves to the event ID(s)
684
706
  */
685
- async write(path, inputData, metadata, options) {
707
+ async write(path, input) {
686
708
  const pathStr = String(path);
709
+ const { data: inputData, metadata, options, batch } = input;
710
+ if (batch && this.filePathways.has(path)) {
711
+ const error = `Batch is not possible for file pathways. Pathway ${pathStr} is a file pathway`;
712
+ this.logger.error(error);
713
+ throw new Error(error);
714
+ }
687
715
  this.logger.debug(`Writing to pathway`, {
688
716
  pathway: pathStr,
689
717
  metadata,
@@ -702,7 +730,7 @@ class PathwaysBuilder {
702
730
  this.logger.error(error);
703
731
  throw new Error(error);
704
732
  }
705
- const schema = this.schemas[path];
733
+ const schema = batch ? zod_1.z.array(this.inputSchemas[path]) : this.inputSchemas[path];
706
734
  const parsedData = schema.safeParse(inputData);
707
735
  if (!parsedData.success) {
708
736
  const errorMessage = `Invalid data for pathway ${pathStr}`;
@@ -766,13 +794,22 @@ class PathwaysBuilder {
766
794
  }
767
795
  }
768
796
  let eventIds = [];
769
- if (this.filePathways.has(path)) {
770
- this.logger.debug(`Writing file data to pathway`, { pathway: pathStr });
771
- const fileData = data;
772
- eventIds = await this.writers[path](fileData, finalMetadata, options);
797
+ this.logger.debug(`Writing webhook data to pathway`, { pathway: pathStr, batch });
798
+ if (batch) {
799
+ eventIds = await this.batchWriters[path](data, finalMetadata, options);
800
+ }
801
+ else if (this.filePathways.has(path)) {
802
+ const { fileId, fileName, fileContent, ...additionalProperties } = data;
803
+ const fileType = await (0, file_type_1.fileTypeFromBuffer)(fileContent);
804
+ eventIds = await this.fileWriters[path]({
805
+ fileId,
806
+ fileName,
807
+ fileType: fileType?.mime ?? "application/octet-stream",
808
+ fileContent: new Blob([fileContent]),
809
+ additionalProperties,
810
+ }, finalMetadata, options);
773
811
  }
774
812
  else {
775
- this.logger.debug(`Writing webhook data to pathway`, { pathway: pathStr });
776
813
  eventIds = await this.writers[path](data, finalMetadata, options);
777
814
  }
778
815
  this.logger[this.logLevel.writeSuccess](`Successfully wrote to pathway`, {
@@ -791,108 +828,6 @@ class PathwaysBuilder {
791
828
  }
792
829
  return eventIds;
793
830
  }
794
- async writeBatch(path, inputData, metadata, options) {
795
- const pathStr = String(path);
796
- this.logger.debug(`Writing batch to pathway`, {
797
- pathway: pathStr,
798
- metadata,
799
- options: {
800
- fireAndForget: options?.fireAndForget,
801
- sessionId: options?.sessionId,
802
- },
803
- });
804
- if (!this.pathways[path]) {
805
- const error = `Pathway ${pathStr} not found`;
806
- this.logger.error(error);
807
- throw new Error(error);
808
- }
809
- if (!this.writable[path]) {
810
- const error = `Pathway ${pathStr} is not writable`;
811
- this.logger.error(error);
812
- throw new Error(error);
813
- }
814
- const schema = this.schemas[path];
815
- const parsedData = zod_1.z.array(schema).safeParse(inputData);
816
- if (!parsedData.success) {
817
- const errorMessage = `Invalid batch data for pathway ${pathStr}`;
818
- this.logger.error(errorMessage, new Error(errorMessage), {
819
- pathway: pathStr,
820
- schema: schema.toString(),
821
- });
822
- throw new Error(errorMessage);
823
- }
824
- const data = parsedData.data;
825
- // Create a copy of the metadata to avoid modifying the original
826
- const finalMetadata = metadata ? { ...metadata } : {};
827
- // Check for session-specific user resolver
828
- let userId;
829
- if (options?.sessionId) {
830
- const sessionUserResolver = this.getSessionUserResolver(options.sessionId);
831
- if (sessionUserResolver) {
832
- try {
833
- userId = await sessionUserResolver();
834
- this.logger.debug(`Using session-specific user resolver`, {
835
- pathway: pathStr,
836
- sessionId: options.sessionId,
837
- userId,
838
- });
839
- }
840
- catch (error) {
841
- this.logger.error(`Error resolving session user ID`, error instanceof Error ? error : new Error(String(error)), {
842
- pathway: pathStr,
843
- sessionId: options.sessionId,
844
- });
845
- }
846
- }
847
- }
848
- // Process audit metadata if audit is configured
849
- if (this.userIdResolver) {
850
- // Only use global resolver if we don't already have a user ID from a session resolver
851
- if (!userId) {
852
- this.logger.debug(`Resolving user ID for audit metadata`, { pathway: pathStr });
853
- userId = await this.userIdResolver();
854
- }
855
- }
856
- // Determine the audit mode: default is "user" unless explicitly specified as "system"
857
- const auditMode = options?.auditMode ?? "user";
858
- this.logger.debug(`Adding audit metadata`, {
859
- pathway: pathStr,
860
- auditMode,
861
- userId,
862
- });
863
- if (userId) {
864
- // Add appropriate audit metadata based on mode
865
- if (auditMode === constants_js_1.AUDIT_SYSTEM_MODE) {
866
- finalMetadata[constants_js_1.AUDIT_USER_ID] = "system";
867
- finalMetadata[constants_js_1.AUDIT_ON_BEHALF_OF] = userId.entityId;
868
- finalMetadata[constants_js_1.AUDIT_MODE] = "system";
869
- finalMetadata[constants_js_1.AUDIT_ENTITY_TYPE] = userId.entityType;
870
- }
871
- else {
872
- finalMetadata[constants_js_1.AUDIT_USER_ID] = userId.entityId;
873
- finalMetadata[constants_js_1.AUDIT_MODE] = constants_js_1.AUDIT_USER_MODE; // Always set mode for user
874
- finalMetadata[constants_js_1.AUDIT_ENTITY_TYPE] = userId.entityType;
875
- }
876
- }
877
- let eventIds = [];
878
- this.logger.debug(`Writing batch webhook data to pathway`, { pathway: pathStr });
879
- eventIds = await this.batchWriters[path](data, finalMetadata, options);
880
- this.logger[this.logLevel.writeSuccess](`Successfully wrote to pathway`, {
881
- pathway: pathStr,
882
- eventIds: Array.isArray(eventIds) ? eventIds : [eventIds],
883
- fireAndForget: options?.fireAndForget,
884
- });
885
- if (!options?.fireAndForget) {
886
- this.logger.debug(`Waiting for pathway to be processed`, {
887
- pathway: pathStr,
888
- eventIds: Array.isArray(eventIds) ? eventIds : [eventIds],
889
- });
890
- await Promise.all(Array.isArray(eventIds)
891
- ? eventIds.map((id) => this.waitForPathwayToBeProcessed(id))
892
- : [this.waitForPathwayToBeProcessed(eventIds)]);
893
- }
894
- return eventIds;
895
- }
896
831
  /**
897
832
  * Waits for a specific event to be processed
898
833
  *
@@ -136,7 +136,7 @@ class SessionPathwayBuilder {
136
136
  // Always include the session ID in the options
137
137
  finalOptions.sessionId = options?.sessionId ?? this.sessionId;
138
138
  // The PathwaysBuilder will handle session-specific user resolvers
139
- return await this.pathwaysBuilder.write(path, data, metadata, finalOptions);
139
+ return await this.pathwaysBuilder.write(path, { data, metadata, options: finalOptions });
140
140
  }
141
141
  }
142
142
  exports.SessionPathwayBuilder = SessionPathwayBuilder;
@@ -1,5 +1,6 @@
1
- import type { ZodTypeAny } from "zod";
1
+ import { type AnyZodObject, z } from "zod";
2
2
  import type { WebhookFileData, WebhookSendOptions } from "@flowcore/sdk-transformer-core";
3
+ import { Buffer } from "node:buffer";
3
4
  /**
4
5
  * Helper type to create a custom type error for non-writable pathways
5
6
  * @template T The string type to create an error for
@@ -13,7 +14,7 @@ type NonWritablePathwayError<T extends string> = T & {
13
14
  * @template E The event type
14
15
  * @template T The schema type
15
16
  */
16
- export interface PathwayContract<F extends string, E extends string, T extends ZodTypeAny> {
17
+ export interface PathwayContract<F extends string, E extends string, T extends AnyZodObject> {
17
18
  /**
18
19
  * The flow type for this pathway
19
20
  */
@@ -25,7 +26,7 @@ export interface PathwayContract<F extends string, E extends string, T extends Z
25
26
  /**
26
27
  * The schema that defines the structure of events for this pathway
27
28
  */
28
- schema: T;
29
+ schema?: T;
29
30
  /**
30
31
  * Whether the pathway is writable. Use `false as const` to make the pathway non-writable at compile time.
31
32
  * @example
@@ -143,5 +144,21 @@ export type PathwayWriteOptions = WebhookSendOptions & {
143
144
  */
144
145
  sessionId?: string;
145
146
  };
147
+ export declare const FileInputSchema: z.ZodObject<{
148
+ fileId: z.ZodString;
149
+ fileName: z.ZodString;
150
+ fileContent: z.ZodType<Buffer>;
151
+ }>;
152
+ export declare const FileEventSchema: z.ZodObject<{
153
+ fileName: z.ZodString;
154
+ fileType: z.ZodString;
155
+ fileSize: z.ZodNumber;
156
+ data: z.ZodString;
157
+ part: z.ZodNumber;
158
+ totalParts: z.ZodNumber;
159
+ checksum: z.ZodString;
160
+ hashType: z.ZodString;
161
+ fileId: z.ZodString;
162
+ }>;
146
163
  export {};
147
164
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pathways/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEzF;;;GAGG;AACH,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IACnD,QAAQ,CAAC,yBAAyB,EAChC,wGAAwG,CAAA;CAC3G,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,UAAU;IACvF;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,CAAC,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,CAAC,CAAA;IAET;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAG;AAEjE;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,YAAY,IAAI,CACtC,OAAO,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,YAAY,IAAI,CAC3C,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAEtB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,eAAe,EACxB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAEtB;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,IAAI,UAAU,SAAS,KAAK,GAChG,uBAAuB,CAAC,CAAC,CAAC,GAC1B,CAAC,CAAA;AAEL;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;;OAIG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE5D;;;OAGG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAE7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pathways/types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileEventSchema = exports.FileInputSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const node_buffer_1 = require("node:buffer");
6
+ exports.FileInputSchema = zod_1.z.object({
7
+ fileId: zod_1.z.string(),
8
+ fileName: zod_1.z.string(),
9
+ fileContent: zod_1.z.instanceof(node_buffer_1.Buffer),
10
+ });
11
+ exports.FileEventSchema = zod_1.z.object({
12
+ fileName: zod_1.z.string(),
13
+ fileType: zod_1.z.string(),
14
+ fileSize: zod_1.z.number(),
15
+ data: zod_1.z.string(),
16
+ part: zod_1.z.number(),
17
+ totalParts: zod_1.z.number(),
18
+ checksum: zod_1.z.string(),
19
+ hashType: zod_1.z.string(),
20
+ fileId: zod_1.z.string(),
21
+ });