@forklaunch/interfaces-worker 1.0.1 → 1.0.3

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.
@@ -0,0 +1,90 @@
1
+ import type { WorkerEventEntity } from '../types/workerEventEntity.types';
2
+ import type {
3
+ WorkerProcessFunction,
4
+ WorkerProcessFailureResult,
5
+ WorkerFailureHandler
6
+ } from '../types/worker.consumer.types';
7
+ import type {
8
+ EventEncryptor,
9
+ EncryptedEventEnvelope
10
+ } from '../types/eventEncryptor.types';
11
+ import type { WorkerConsumer } from './worker.consumer.interface';
12
+
13
+ /**
14
+ * Wraps a WorkerConsumer that reads EncryptedEventEnvelope and exposes
15
+ * the decrypted user-typed event T.
16
+ */
17
+ export class DecryptingWorkerConsumer<T extends WorkerEventEntity>
18
+ implements WorkerConsumer<T>
19
+ {
20
+ constructor(
21
+ private readonly inner: WorkerConsumer<EncryptedEventEnvelope>,
22
+ private readonly encryptor: EventEncryptor
23
+ ) {}
24
+
25
+ async peekEvents(): Promise<T[]> {
26
+ const events = await this.inner.peekEvents();
27
+ return events.map((event) => decryptEvent<T>(event, this.encryptor));
28
+ }
29
+
30
+ async start(): Promise<void> {
31
+ await this.inner.start();
32
+ }
33
+ }
34
+
35
+ /**
36
+ * Wraps a user-typed WorkerProcessFunction to accept EncryptedEventEnvelope,
37
+ * decrypt before processing, and map failures back to the envelope type.
38
+ */
39
+ export function withDecryption<T extends WorkerEventEntity>(
40
+ processFn: WorkerProcessFunction<T>,
41
+ encryptor: EventEncryptor
42
+ ): WorkerProcessFunction<EncryptedEventEnvelope> {
43
+ return async (events: EncryptedEventEnvelope[]) => {
44
+ const decrypted = events.map((e) => decryptEvent<T>(e, encryptor));
45
+ const failures = await processFn(decrypted);
46
+ // Map failures back: find the original envelope by id
47
+ return failures.map((f) => ({
48
+ value: events.find((e) => e.id === f.value.id)!,
49
+ error: f.error
50
+ }));
51
+ };
52
+ }
53
+
54
+ /**
55
+ * Wraps a user-typed WorkerFailureHandler to accept EncryptedEventEnvelope failures,
56
+ * decrypting before passing to the user handler.
57
+ */
58
+ export function withDecryptionFailureHandler<T extends WorkerEventEntity>(
59
+ handler: WorkerFailureHandler<T>,
60
+ encryptor: EventEncryptor
61
+ ): WorkerFailureHandler<EncryptedEventEnvelope> {
62
+ return async (results: WorkerProcessFailureResult<EncryptedEventEnvelope>[]) => {
63
+ const decrypted = results.map((r) => ({
64
+ ...r,
65
+ value: decryptEvent<T>(r.value, encryptor)
66
+ }));
67
+ return handler(decrypted);
68
+ };
69
+ }
70
+
71
+ function decryptEvent<T extends WorkerEventEntity>(
72
+ envelope: EncryptedEventEnvelope,
73
+ encryptor: EventEncryptor
74
+ ): T {
75
+ const { id, tenantId, retryCount, processed, createdAt, updatedAt, encryptedPayload } =
76
+ envelope;
77
+
78
+ const decrypted = encryptor.decrypt(encryptedPayload, tenantId);
79
+ const payload = JSON.parse(decrypted!);
80
+
81
+ return {
82
+ id,
83
+ tenantId,
84
+ retryCount,
85
+ processed,
86
+ createdAt,
87
+ updatedAt,
88
+ ...payload
89
+ } as T;
90
+ }
@@ -0,0 +1,52 @@
1
+ import type { WorkerEventEntity } from '../types/workerEventEntity.types';
2
+ import type {
3
+ EventEncryptor,
4
+ EncryptedEventEnvelope
5
+ } from '../types/eventEncryptor.types';
6
+ import type { WorkerProducer } from './worker.producer.interface';
7
+
8
+ /**
9
+ * Wraps any WorkerProducer to encrypt the entire event payload before enqueueing.
10
+ * Base WorkerEventEntity fields (id, tenantId, retryCount, processed, createdAt,
11
+ * updatedAt) are preserved in the clear for queue infrastructure. All remaining
12
+ * fields are JSON-serialized and encrypted into a single `encryptedPayload` field.
13
+ *
14
+ * The inner producer operates on EncryptedEventEnvelope, while the outer
15
+ * interface accepts the full user-typed event T.
16
+ */
17
+ export class EncryptingWorkerProducer<T extends WorkerEventEntity>
18
+ implements WorkerProducer<T>
19
+ {
20
+ constructor(
21
+ private readonly inner: WorkerProducer<EncryptedEventEnvelope>,
22
+ private readonly encryptor: EventEncryptor
23
+ ) {}
24
+
25
+ async enqueueJob(job: T): Promise<void> {
26
+ await this.inner.enqueueJob(encryptEvent(job, this.encryptor));
27
+ }
28
+
29
+ async enqueueBatchJobs(jobs: T[]): Promise<void> {
30
+ await this.inner.enqueueBatchJobs(
31
+ jobs.map((job) => encryptEvent(job, this.encryptor))
32
+ );
33
+ }
34
+ }
35
+
36
+ function encryptEvent<T extends WorkerEventEntity>(
37
+ event: T,
38
+ encryptor: EventEncryptor
39
+ ): EncryptedEventEnvelope {
40
+ const { id, tenantId, retryCount, processed, createdAt, updatedAt, ...payload } =
41
+ event as WorkerEventEntity & Record<string, unknown>;
42
+
43
+ return {
44
+ id,
45
+ tenantId,
46
+ retryCount,
47
+ processed,
48
+ createdAt,
49
+ updatedAt,
50
+ encryptedPayload: encryptor.encrypt(JSON.stringify(payload), tenantId)!
51
+ };
52
+ }
@@ -1,2 +1,4 @@
1
1
  export * from './worker.consumer.interface';
2
2
  export * from './worker.producer.interface';
3
+ export * from './encryptingWorker.producer';
4
+ export * from './decryptingWorker.consumer';
@@ -0,0 +1,20 @@
1
+ import type { WorkerEventEntity } from './workerEventEntity.types';
2
+
3
+ /**
4
+ * Minimal encryptor interface for worker event payload encryption.
5
+ * Keeps interfaces-worker free of @forklaunch/core dependency.
6
+ * Implement with FieldEncryptor from @forklaunch/core/persistence.
7
+ */
8
+ export interface EventEncryptor {
9
+ encrypt(plaintext: string | null, tenantId: string): string | null;
10
+ decrypt(ciphertext: string | null, tenantId: string): string | null;
11
+ }
12
+
13
+ /**
14
+ * The on-wire shape stored in the queue. Base fields are in the clear
15
+ * for queue infrastructure (retry logic, dedup, etc.). The user's
16
+ * payload fields are serialized and encrypted into `encryptedPayload`.
17
+ */
18
+ export type EncryptedEventEnvelope = WorkerEventEntity & {
19
+ encryptedPayload: string;
20
+ };
@@ -1,2 +1,3 @@
1
1
  export * from './worker.consumer.types';
2
2
  export * from './workerEventEntity.types';
3
+ export * from './eventEncryptor.types';
@@ -1,5 +1,6 @@
1
1
  export type WorkerEventEntity = {
2
2
  id: string;
3
+ tenantId: string;
3
4
  retryCount: number;
4
5
  processed: boolean;
5
6
  createdAt: Date;
@@ -1,3 +1,5 @@
1
+ import { WorkerEventEntity, EncryptedEventEnvelope, EventEncryptor, WorkerProcessFunction, WorkerFailureHandler } from '../types/index.mjs';
2
+
1
3
  interface WorkerConsumer<T> {
2
4
  peekEvents: () => Promise<T[]>;
3
5
  start: () => Promise<void>;
@@ -8,4 +10,43 @@ interface WorkerProducer<T> {
8
10
  enqueueBatchJobs: (jobs: T[]) => Promise<void>;
9
11
  }
10
12
 
11
- export type { WorkerConsumer, WorkerProducer };
13
+ /**
14
+ * Wraps any WorkerProducer to encrypt the entire event payload before enqueueing.
15
+ * Base WorkerEventEntity fields (id, tenantId, retryCount, processed, createdAt,
16
+ * updatedAt) are preserved in the clear for queue infrastructure. All remaining
17
+ * fields are JSON-serialized and encrypted into a single `encryptedPayload` field.
18
+ *
19
+ * The inner producer operates on EncryptedEventEnvelope, while the outer
20
+ * interface accepts the full user-typed event T.
21
+ */
22
+ declare class EncryptingWorkerProducer<T extends WorkerEventEntity> implements WorkerProducer<T> {
23
+ private readonly inner;
24
+ private readonly encryptor;
25
+ constructor(inner: WorkerProducer<EncryptedEventEnvelope>, encryptor: EventEncryptor);
26
+ enqueueJob(job: T): Promise<void>;
27
+ enqueueBatchJobs(jobs: T[]): Promise<void>;
28
+ }
29
+
30
+ /**
31
+ * Wraps a WorkerConsumer that reads EncryptedEventEnvelope and exposes
32
+ * the decrypted user-typed event T.
33
+ */
34
+ declare class DecryptingWorkerConsumer<T extends WorkerEventEntity> implements WorkerConsumer<T> {
35
+ private readonly inner;
36
+ private readonly encryptor;
37
+ constructor(inner: WorkerConsumer<EncryptedEventEnvelope>, encryptor: EventEncryptor);
38
+ peekEvents(): Promise<T[]>;
39
+ start(): Promise<void>;
40
+ }
41
+ /**
42
+ * Wraps a user-typed WorkerProcessFunction to accept EncryptedEventEnvelope,
43
+ * decrypt before processing, and map failures back to the envelope type.
44
+ */
45
+ declare function withDecryption<T extends WorkerEventEntity>(processFn: WorkerProcessFunction<T>, encryptor: EventEncryptor): WorkerProcessFunction<EncryptedEventEnvelope>;
46
+ /**
47
+ * Wraps a user-typed WorkerFailureHandler to accept EncryptedEventEnvelope failures,
48
+ * decrypting before passing to the user handler.
49
+ */
50
+ declare function withDecryptionFailureHandler<T extends WorkerEventEntity>(handler: WorkerFailureHandler<T>, encryptor: EventEncryptor): WorkerFailureHandler<EncryptedEventEnvelope>;
51
+
52
+ export { DecryptingWorkerConsumer, EncryptingWorkerProducer, type WorkerConsumer, type WorkerProducer, withDecryption, withDecryptionFailureHandler };
@@ -1,3 +1,5 @@
1
+ import { WorkerEventEntity, EncryptedEventEnvelope, EventEncryptor, WorkerProcessFunction, WorkerFailureHandler } from '../types/index.js';
2
+
1
3
  interface WorkerConsumer<T> {
2
4
  peekEvents: () => Promise<T[]>;
3
5
  start: () => Promise<void>;
@@ -8,4 +10,43 @@ interface WorkerProducer<T> {
8
10
  enqueueBatchJobs: (jobs: T[]) => Promise<void>;
9
11
  }
10
12
 
11
- export type { WorkerConsumer, WorkerProducer };
13
+ /**
14
+ * Wraps any WorkerProducer to encrypt the entire event payload before enqueueing.
15
+ * Base WorkerEventEntity fields (id, tenantId, retryCount, processed, createdAt,
16
+ * updatedAt) are preserved in the clear for queue infrastructure. All remaining
17
+ * fields are JSON-serialized and encrypted into a single `encryptedPayload` field.
18
+ *
19
+ * The inner producer operates on EncryptedEventEnvelope, while the outer
20
+ * interface accepts the full user-typed event T.
21
+ */
22
+ declare class EncryptingWorkerProducer<T extends WorkerEventEntity> implements WorkerProducer<T> {
23
+ private readonly inner;
24
+ private readonly encryptor;
25
+ constructor(inner: WorkerProducer<EncryptedEventEnvelope>, encryptor: EventEncryptor);
26
+ enqueueJob(job: T): Promise<void>;
27
+ enqueueBatchJobs(jobs: T[]): Promise<void>;
28
+ }
29
+
30
+ /**
31
+ * Wraps a WorkerConsumer that reads EncryptedEventEnvelope and exposes
32
+ * the decrypted user-typed event T.
33
+ */
34
+ declare class DecryptingWorkerConsumer<T extends WorkerEventEntity> implements WorkerConsumer<T> {
35
+ private readonly inner;
36
+ private readonly encryptor;
37
+ constructor(inner: WorkerConsumer<EncryptedEventEnvelope>, encryptor: EventEncryptor);
38
+ peekEvents(): Promise<T[]>;
39
+ start(): Promise<void>;
40
+ }
41
+ /**
42
+ * Wraps a user-typed WorkerProcessFunction to accept EncryptedEventEnvelope,
43
+ * decrypt before processing, and map failures back to the envelope type.
44
+ */
45
+ declare function withDecryption<T extends WorkerEventEntity>(processFn: WorkerProcessFunction<T>, encryptor: EventEncryptor): WorkerProcessFunction<EncryptedEventEnvelope>;
46
+ /**
47
+ * Wraps a user-typed WorkerFailureHandler to accept EncryptedEventEnvelope failures,
48
+ * decrypting before passing to the user handler.
49
+ */
50
+ declare function withDecryptionFailureHandler<T extends WorkerEventEntity>(handler: WorkerFailureHandler<T>, encryptor: EventEncryptor): WorkerFailureHandler<EncryptedEventEnvelope>;
51
+
52
+ export { DecryptingWorkerConsumer, EncryptingWorkerProducer, type WorkerConsumer, type WorkerProducer, withDecryption, withDecryptionFailureHandler };
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
6
10
  var __copyProps = (to, from, except, desc) => {
7
11
  if (from && typeof from === "object" || typeof from === "function") {
8
12
  for (let key of __getOwnPropNames(from))
@@ -15,4 +19,93 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
15
19
 
16
20
  // interfaces/index.ts
17
21
  var interfaces_exports = {};
22
+ __export(interfaces_exports, {
23
+ DecryptingWorkerConsumer: () => DecryptingWorkerConsumer,
24
+ EncryptingWorkerProducer: () => EncryptingWorkerProducer,
25
+ withDecryption: () => withDecryption,
26
+ withDecryptionFailureHandler: () => withDecryptionFailureHandler
27
+ });
18
28
  module.exports = __toCommonJS(interfaces_exports);
29
+
30
+ // interfaces/encryptingWorker.producer.ts
31
+ var EncryptingWorkerProducer = class {
32
+ constructor(inner, encryptor) {
33
+ this.inner = inner;
34
+ this.encryptor = encryptor;
35
+ }
36
+ async enqueueJob(job) {
37
+ await this.inner.enqueueJob(encryptEvent(job, this.encryptor));
38
+ }
39
+ async enqueueBatchJobs(jobs) {
40
+ await this.inner.enqueueBatchJobs(
41
+ jobs.map((job) => encryptEvent(job, this.encryptor))
42
+ );
43
+ }
44
+ };
45
+ function encryptEvent(event, encryptor) {
46
+ const { id, tenantId, retryCount, processed, createdAt, updatedAt, ...payload } = event;
47
+ return {
48
+ id,
49
+ tenantId,
50
+ retryCount,
51
+ processed,
52
+ createdAt,
53
+ updatedAt,
54
+ encryptedPayload: encryptor.encrypt(JSON.stringify(payload), tenantId)
55
+ };
56
+ }
57
+
58
+ // interfaces/decryptingWorker.consumer.ts
59
+ var DecryptingWorkerConsumer = class {
60
+ constructor(inner, encryptor) {
61
+ this.inner = inner;
62
+ this.encryptor = encryptor;
63
+ }
64
+ async peekEvents() {
65
+ const events = await this.inner.peekEvents();
66
+ return events.map((event) => decryptEvent(event, this.encryptor));
67
+ }
68
+ async start() {
69
+ await this.inner.start();
70
+ }
71
+ };
72
+ function withDecryption(processFn, encryptor) {
73
+ return async (events) => {
74
+ const decrypted = events.map((e) => decryptEvent(e, encryptor));
75
+ const failures = await processFn(decrypted);
76
+ return failures.map((f) => ({
77
+ value: events.find((e) => e.id === f.value.id),
78
+ error: f.error
79
+ }));
80
+ };
81
+ }
82
+ function withDecryptionFailureHandler(handler, encryptor) {
83
+ return async (results) => {
84
+ const decrypted = results.map((r) => ({
85
+ ...r,
86
+ value: decryptEvent(r.value, encryptor)
87
+ }));
88
+ return handler(decrypted);
89
+ };
90
+ }
91
+ function decryptEvent(envelope, encryptor) {
92
+ const { id, tenantId, retryCount, processed, createdAt, updatedAt, encryptedPayload } = envelope;
93
+ const decrypted = encryptor.decrypt(encryptedPayload, tenantId);
94
+ const payload = JSON.parse(decrypted);
95
+ return {
96
+ id,
97
+ tenantId,
98
+ retryCount,
99
+ processed,
100
+ createdAt,
101
+ updatedAt,
102
+ ...payload
103
+ };
104
+ }
105
+ // Annotate the CommonJS export names for ESM import in node:
106
+ 0 && (module.exports = {
107
+ DecryptingWorkerConsumer,
108
+ EncryptingWorkerProducer,
109
+ withDecryption,
110
+ withDecryptionFailureHandler
111
+ });
@@ -0,0 +1,81 @@
1
+ // interfaces/encryptingWorker.producer.ts
2
+ var EncryptingWorkerProducer = class {
3
+ constructor(inner, encryptor) {
4
+ this.inner = inner;
5
+ this.encryptor = encryptor;
6
+ }
7
+ async enqueueJob(job) {
8
+ await this.inner.enqueueJob(encryptEvent(job, this.encryptor));
9
+ }
10
+ async enqueueBatchJobs(jobs) {
11
+ await this.inner.enqueueBatchJobs(
12
+ jobs.map((job) => encryptEvent(job, this.encryptor))
13
+ );
14
+ }
15
+ };
16
+ function encryptEvent(event, encryptor) {
17
+ const { id, tenantId, retryCount, processed, createdAt, updatedAt, ...payload } = event;
18
+ return {
19
+ id,
20
+ tenantId,
21
+ retryCount,
22
+ processed,
23
+ createdAt,
24
+ updatedAt,
25
+ encryptedPayload: encryptor.encrypt(JSON.stringify(payload), tenantId)
26
+ };
27
+ }
28
+
29
+ // interfaces/decryptingWorker.consumer.ts
30
+ var DecryptingWorkerConsumer = class {
31
+ constructor(inner, encryptor) {
32
+ this.inner = inner;
33
+ this.encryptor = encryptor;
34
+ }
35
+ async peekEvents() {
36
+ const events = await this.inner.peekEvents();
37
+ return events.map((event) => decryptEvent(event, this.encryptor));
38
+ }
39
+ async start() {
40
+ await this.inner.start();
41
+ }
42
+ };
43
+ function withDecryption(processFn, encryptor) {
44
+ return async (events) => {
45
+ const decrypted = events.map((e) => decryptEvent(e, encryptor));
46
+ const failures = await processFn(decrypted);
47
+ return failures.map((f) => ({
48
+ value: events.find((e) => e.id === f.value.id),
49
+ error: f.error
50
+ }));
51
+ };
52
+ }
53
+ function withDecryptionFailureHandler(handler, encryptor) {
54
+ return async (results) => {
55
+ const decrypted = results.map((r) => ({
56
+ ...r,
57
+ value: decryptEvent(r.value, encryptor)
58
+ }));
59
+ return handler(decrypted);
60
+ };
61
+ }
62
+ function decryptEvent(envelope, encryptor) {
63
+ const { id, tenantId, retryCount, processed, createdAt, updatedAt, encryptedPayload } = envelope;
64
+ const decrypted = encryptor.decrypt(encryptedPayload, tenantId);
65
+ const payload = JSON.parse(decrypted);
66
+ return {
67
+ id,
68
+ tenantId,
69
+ retryCount,
70
+ processed,
71
+ createdAt,
72
+ updatedAt,
73
+ ...payload
74
+ };
75
+ }
76
+ export {
77
+ DecryptingWorkerConsumer,
78
+ EncryptingWorkerProducer,
79
+ withDecryption,
80
+ withDecryptionFailureHandler
81
+ };
@@ -1,16 +1,35 @@
1
- type WorkerProcessFailureResult<T> = {
2
- value: T;
3
- error: Error;
4
- };
5
- type WorkerProcessFunction<T> = (events: T[]) => Promise<WorkerProcessFailureResult<T>[]>;
6
- type WorkerFailureHandler<T> = (results: WorkerProcessFailureResult<T>[]) => Promise<void>;
7
-
8
1
  type WorkerEventEntity = {
9
2
  id: string;
3
+ tenantId: string;
10
4
  retryCount: number;
11
5
  processed: boolean;
12
6
  createdAt: Date;
13
7
  updatedAt: Date;
14
8
  };
15
9
 
16
- export type { WorkerEventEntity, WorkerFailureHandler, WorkerProcessFailureResult, WorkerProcessFunction };
10
+ /**
11
+ * Minimal encryptor interface for worker event payload encryption.
12
+ * Keeps interfaces-worker free of @forklaunch/core dependency.
13
+ * Implement with FieldEncryptor from @forklaunch/core/persistence.
14
+ */
15
+ interface EventEncryptor {
16
+ encrypt(plaintext: string | null, tenantId: string): string | null;
17
+ decrypt(ciphertext: string | null, tenantId: string): string | null;
18
+ }
19
+ /**
20
+ * The on-wire shape stored in the queue. Base fields are in the clear
21
+ * for queue infrastructure (retry logic, dedup, etc.). The user's
22
+ * payload fields are serialized and encrypted into `encryptedPayload`.
23
+ */
24
+ type EncryptedEventEnvelope = WorkerEventEntity & {
25
+ encryptedPayload: string;
26
+ };
27
+
28
+ type WorkerProcessFailureResult<T> = {
29
+ value: T;
30
+ error: Error;
31
+ };
32
+ type WorkerProcessFunction<T> = (events: T[]) => Promise<WorkerProcessFailureResult<T>[]>;
33
+ type WorkerFailureHandler<T> = (results: WorkerProcessFailureResult<T>[]) => Promise<void>;
34
+
35
+ export type { EncryptedEventEnvelope, EventEncryptor, WorkerEventEntity, WorkerFailureHandler, WorkerProcessFailureResult, WorkerProcessFunction };
@@ -1,16 +1,35 @@
1
- type WorkerProcessFailureResult<T> = {
2
- value: T;
3
- error: Error;
4
- };
5
- type WorkerProcessFunction<T> = (events: T[]) => Promise<WorkerProcessFailureResult<T>[]>;
6
- type WorkerFailureHandler<T> = (results: WorkerProcessFailureResult<T>[]) => Promise<void>;
7
-
8
1
  type WorkerEventEntity = {
9
2
  id: string;
3
+ tenantId: string;
10
4
  retryCount: number;
11
5
  processed: boolean;
12
6
  createdAt: Date;
13
7
  updatedAt: Date;
14
8
  };
15
9
 
16
- export type { WorkerEventEntity, WorkerFailureHandler, WorkerProcessFailureResult, WorkerProcessFunction };
10
+ /**
11
+ * Minimal encryptor interface for worker event payload encryption.
12
+ * Keeps interfaces-worker free of @forklaunch/core dependency.
13
+ * Implement with FieldEncryptor from @forklaunch/core/persistence.
14
+ */
15
+ interface EventEncryptor {
16
+ encrypt(plaintext: string | null, tenantId: string): string | null;
17
+ decrypt(ciphertext: string | null, tenantId: string): string | null;
18
+ }
19
+ /**
20
+ * The on-wire shape stored in the queue. Base fields are in the clear
21
+ * for queue infrastructure (retry logic, dedup, etc.). The user's
22
+ * payload fields are serialized and encrypted into `encryptedPayload`.
23
+ */
24
+ type EncryptedEventEnvelope = WorkerEventEntity & {
25
+ encryptedPayload: string;
26
+ };
27
+
28
+ type WorkerProcessFailureResult<T> = {
29
+ value: T;
30
+ error: Error;
31
+ };
32
+ type WorkerProcessFunction<T> = (events: T[]) => Promise<WorkerProcessFailureResult<T>[]>;
33
+ type WorkerFailureHandler<T> = (results: WorkerProcessFailureResult<T>[]) => Promise<void>;
34
+
35
+ export type { EncryptedEventEnvelope, EventEncryptor, WorkerEventEntity, WorkerFailureHandler, WorkerProcessFailureResult, WorkerProcessFunction };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forklaunch/interfaces-worker",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Worker interfaces for forklaunch",
5
5
  "homepage": "https://github.com/forklaunch/forklaunch-js#readme",
6
6
  "bugs": {