@volontariapp/post-processors 3.0.15 → 3.1.0-snap-2aefdbd

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,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - post-processors job outbox mode batch
8
+
3
9
  ## 3.0.15
4
10
 
5
11
  ### Patch Changes
@@ -1,13 +1,13 @@
1
- import { SinglePostProcessor } from '../core/processors/single.post-processor.js';
2
- import type { PostProcessorOptions } from '../interfaces/index.js';
3
- import { CommonEventMessagingType, type IJobAuditPayload, type StreamEvent } from '@volontariapp/messaging';
1
+ import { BatchPostProcessor } from '../core/processors/batch.post-processor.js';
2
+ import type { PostProcessorOptions, BatchEventItem } from '../interfaces/index.js';
3
+ import { CommonEventMessagingType } from '@volontariapp/messaging';
4
4
  import type { DataSource } from 'typeorm';
5
5
  import type { Redis } from 'ioredis';
6
- export declare class JobOutboxFailedPostProcessor extends SinglePostProcessor<CommonEventMessagingType.JOB_OUTBOX_FAILED> {
6
+ export declare class JobOutboxFailedPostProcessor extends BatchPostProcessor<CommonEventMessagingType.JOB_OUTBOX_FAILED> {
7
7
  private readonly outboxRepository;
8
8
  private readonly db;
9
9
  constructor(db: DataSource, redisDriver: Redis, options: PostProcessorOptions);
10
10
  protected shouldProcess(eventType: CommonEventMessagingType | string): boolean;
11
- protected processEvent(event: StreamEvent<IJobAuditPayload>, messageId: string): Promise<void>;
11
+ protected processEvents(events: BatchEventItem<CommonEventMessagingType.JOB_OUTBOX_FAILED>[]): Promise<void>;
12
12
  }
13
13
  //# sourceMappingURL=job-outbox-failed.post-processor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"job-outbox-failed.post-processor.d.ts","sourceRoot":"","sources":["../../src/common/job-outbox-failed.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EACL,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AASjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,qBAAa,4BAA6B,SAAQ,mBAAmB,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;IAC/G,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;gBAEpB,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB;cAM1D,aAAa,CAAC,SAAS,EAAE,wBAAwB,GAAG,MAAM,GAAG,OAAO;cAIvE,YAAY,CAC1B,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,EACpC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAwFjB"}
1
+ {"version":3,"file":"job-outbox-failed.post-processor.d.ts","sourceRoot":"","sources":["../../src/common/job-outbox-failed.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AASnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,qBAAa,4BAA6B,SAAQ,kBAAkB,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;IAC9G,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;gBAEpB,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB;cAM1D,aAAa,CAAC,SAAS,EAAE,wBAAwB,GAAG,MAAM,GAAG,OAAO;cAIvE,aAAa,CAC3B,MAAM,EAAE,cAAc,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,EAAE,GACnE,OAAO,CAAC,IAAI,CAAC;CAuHjB"}
@@ -1,10 +1,10 @@
1
- import { SinglePostProcessor } from '../core/processors/single.post-processor.js';
2
- import { CommonEventMessagingType, } from '@volontariapp/messaging';
1
+ import { BatchPostProcessor } from '../core/processors/batch.post-processor.js';
2
+ import { CommonEventMessagingType } from '@volontariapp/messaging';
3
3
  import { JobsOutboxRepository, EventQueueWriter, EventQueueRepository } from '@volontariapp/outbox';
4
4
  import { getEventForJob } from '@volontariapp/messaging';
5
5
  import { EventQueueEntity, EventQueueModel, JobsOutboxModel, OutboxStatus, } from '@volontariapp/database';
6
6
  import { Streams } from '@volontariapp/shared';
7
- export class JobOutboxFailedPostProcessor extends SinglePostProcessor {
7
+ export class JobOutboxFailedPostProcessor extends BatchPostProcessor {
8
8
  outboxRepository;
9
9
  db;
10
10
  constructor(db, redisDriver, options) {
@@ -15,73 +15,98 @@ export class JobOutboxFailedPostProcessor extends SinglePostProcessor {
15
15
  shouldProcess(eventType) {
16
16
  return eventType === CommonEventMessagingType.JOB_OUTBOX_FAILED.toString();
17
17
  }
18
- async processEvent(event, messageId) {
19
- const jobId = event.payload.after.job_id;
20
- const jobType = event.payload.after.job_type;
21
- const errorMessage = event.payload.after.error_message;
22
- if (!jobId) {
23
- this.logger.error('Received JOB_OUTBOX_FAILED but no job_id found in payload', { messageId });
24
- return;
25
- }
26
- try {
27
- const entity = await this.outboxRepository.findById(jobId);
28
- if (!entity) {
29
- this.logger.error(`Job with id ${jobId} does not exist in outbox`, { messageId, jobId });
30
- return;
31
- }
32
- if (entity.status === OutboxStatus.FAILED) {
33
- this.logger.warn(`Job ${jobId} already marked as FAILED. Skipping to avoid duplicate events.`, { messageId, jobId });
34
- return;
35
- }
36
- const originalPayload = entity.payload;
37
- if (!jobType) {
38
- this.logger.warn(`Missing jobType for job ${jobId}. Skipping feedback event.`, {
18
+ async processEvents(events) {
19
+ await Promise.all(events.map(async ({ event, messageId }) => {
20
+ const jobId = event.payload.after.job_id;
21
+ const jobType = event.payload.after.job_type;
22
+ const errorMessage = event.payload.after.error_message;
23
+ this.logger.info(`Starting processing of JOB_OUTBOX_FAILED for job ${String(jobId)}`, {
24
+ messageId,
25
+ jobId,
26
+ });
27
+ if (!jobId) {
28
+ this.logger.error('Received JOB_OUTBOX_FAILED but no job_id found in payload', {
39
29
  messageId,
40
- jobId,
41
30
  });
31
+ return;
42
32
  }
43
- await this.db.transaction(async (manager) => {
44
- const updateResult = await manager.update(JobsOutboxModel, { id: jobId, status: OutboxStatus.PENDING }, { status: OutboxStatus.FAILED });
45
- if (updateResult.affected === 0) {
46
- this.logger.warn(`Race condition avoided: Job ${jobId} already updated or deleted.`, {
33
+ try {
34
+ const entity = await this.outboxRepository.findById(jobId);
35
+ if (!entity) {
36
+ this.logger.error(`Job with id ${jobId} does not exist in outbox`, {
47
37
  messageId,
48
38
  jobId,
49
39
  });
50
40
  return;
51
41
  }
52
- if (jobType) {
53
- try {
54
- const transactionalEventWriter = new EventQueueWriter(this.logger, new EventQueueRepository(manager.getRepository(EventQueueModel)));
55
- const eventType = getEventForJob(jobType);
56
- const eventEntity = EventQueueEntity.createEvent({
57
- type: eventType,
58
- emitter: 'ms-post-processors',
59
- emitterId: jobId,
60
- targetServices: [Streams.WS_JOBS_OUTBOX_FAILURE],
61
- payload: {
62
- status: 'FAILED',
63
- originalPayload,
64
- error: errorMessage ?? undefined,
65
- },
42
+ this.logger.info(`Job ${jobId} exists in outbox`, { messageId, jobId });
43
+ if (entity.status === OutboxStatus.FAILED) {
44
+ this.logger.warn(`Job ${jobId} already marked as FAILED. Skipping to avoid duplicate events.`, { messageId, jobId });
45
+ return;
46
+ }
47
+ const originalPayload = entity.payload;
48
+ if (!jobType) {
49
+ this.logger.warn(`Missing jobType for job ${jobId}. Skipping feedback event.`, {
50
+ messageId,
51
+ jobId,
52
+ });
53
+ }
54
+ await this.db.transaction(async (manager) => {
55
+ this.logger.info(`Attempting to mark job ${jobId} as FAILED in jobs_outbox`, {
56
+ messageId,
57
+ jobId,
58
+ });
59
+ const updateResult = await manager.update(JobsOutboxModel, { id: jobId, status: OutboxStatus.PENDING }, { status: OutboxStatus.FAILED });
60
+ if (updateResult.affected === 0) {
61
+ this.logger.warn(`Race condition avoided: Job ${jobId} already updated or deleted.`, {
62
+ messageId,
63
+ jobId,
66
64
  });
67
- await transactionalEventWriter.create(eventEntity);
65
+ return;
68
66
  }
69
- catch (mappingError) {
70
- this.logger.debug(`No feedback event emitted for failed job ${jobId} of type ${jobType}`, {
71
- error: mappingError,
72
- });
67
+ this.logger.info(`Successfully marked job ${jobId} as FAILED in jobs_outbox`, {
68
+ messageId,
69
+ jobId,
70
+ });
71
+ if (jobType) {
72
+ try {
73
+ const transactionalEventWriter = new EventQueueWriter(this.logger, new EventQueueRepository(manager.getRepository(EventQueueModel)));
74
+ const eventType = getEventForJob(jobType);
75
+ const eventEntity = EventQueueEntity.createEvent({
76
+ type: eventType,
77
+ emitter: 'ms-post-processors',
78
+ emitterId: jobId,
79
+ targetServices: [Streams.WS_JOBS_OUTBOX_FAILURE],
80
+ payload: {
81
+ status: 'FAILED',
82
+ originalPayload,
83
+ error: errorMessage ?? undefined,
84
+ },
85
+ });
86
+ await transactionalEventWriter.create(eventEntity);
87
+ this.logger.info(`Successfully created feedback event ${eventType} for job ${jobId}`, { messageId, jobId, eventType });
88
+ }
89
+ catch (mappingError) {
90
+ this.logger.debug(`No feedback event emitted for failed job ${jobId} of type ${jobType}`, {
91
+ error: mappingError,
92
+ });
93
+ }
73
94
  }
74
- }
75
- });
76
- }
77
- catch (error) {
78
- this.logger.error(`Failed to process JOB_OUTBOX_FAILED for job ${jobId}`, {
79
- messageId,
80
- jobId,
81
- error,
82
- });
83
- throw error;
84
- }
95
+ });
96
+ this.logger.info(`Finished processing JOB_OUTBOX_FAILED for job ${jobId}`, {
97
+ messageId,
98
+ jobId,
99
+ });
100
+ }
101
+ catch (error) {
102
+ this.logger.error(`Failed to process JOB_OUTBOX_FAILED for job ${jobId}`, {
103
+ messageId,
104
+ jobId,
105
+ error,
106
+ });
107
+ throw error;
108
+ }
109
+ }));
85
110
  }
86
111
  }
87
112
  //# sourceMappingURL=job-outbox-failed.post-processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"job-outbox-failed.post-processor.js","sourceRoot":"","sources":["../../src/common/job-outbox-failed.post-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job-outbox-failed.post-processor.js","sourceRoot":"","sources":["../../src/common/job-outbox-failed.post-processor.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { SinglePostProcessor } from '../core/processors/single.post-processor.js';
2
- import type { PostProcessorOptions } from '../interfaces/index.js';
3
- import { CommonEventMessagingType, type IJobAuditPayload, type StreamEvent } from '@volontariapp/messaging';
1
+ import { BatchPostProcessor } from '../core/processors/batch.post-processor.js';
2
+ import type { PostProcessorOptions, BatchEventItem } from '../interfaces/index.js';
3
+ import { CommonEventMessagingType } from '@volontariapp/messaging';
4
4
  import type { DataSource } from 'typeorm';
5
5
  import type { Redis } from 'ioredis';
6
- export declare class JobOutboxSuccessPostProcessor extends SinglePostProcessor<CommonEventMessagingType.JOB_OUTBOX_SUCCESS> {
6
+ export declare class JobOutboxSuccessPostProcessor extends BatchPostProcessor<CommonEventMessagingType.JOB_OUTBOX_SUCCESS> {
7
7
  private readonly outboxRepository;
8
8
  private readonly db;
9
9
  constructor(db: DataSource, redisDriver: Redis, options: PostProcessorOptions);
10
10
  protected shouldProcess(eventType: CommonEventMessagingType | string): boolean;
11
- protected processEvent(event: StreamEvent<IJobAuditPayload>, messageId: string): Promise<void>;
11
+ protected processEvents(events: BatchEventItem<CommonEventMessagingType.JOB_OUTBOX_SUCCESS>[]): Promise<void>;
12
12
  }
13
13
  //# sourceMappingURL=job-outbox-success.post-processor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"job-outbox-success.post-processor.d.ts","sourceRoot":"","sources":["../../src/common/job-outbox-success.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EACL,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,qBAAa,6BAA8B,SAAQ,mBAAmB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC;IACjH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;gBAEpB,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB;cAM1D,aAAa,CAAC,SAAS,EAAE,wBAAwB,GAAG,MAAM,GAAG,OAAO;cAIvE,YAAY,CAC1B,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,EACpC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CA8EjB"}
1
+ {"version":3,"file":"job-outbox-success.post-processor.d.ts","sourceRoot":"","sources":["../../src/common/job-outbox-success.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAInE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,qBAAa,6BAA8B,SAAQ,kBAAkB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC;IAChH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;gBAEpB,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB;cAM1D,aAAa,CAAC,SAAS,EAAE,wBAAwB,GAAG,MAAM,GAAG,OAAO;cAIvE,aAAa,CAC3B,MAAM,EAAE,cAAc,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,EAAE,GACpE,OAAO,CAAC,IAAI,CAAC;CA2GjB"}
@@ -1,10 +1,10 @@
1
- import { SinglePostProcessor } from '../core/processors/single.post-processor.js';
2
- import { CommonEventMessagingType, } from '@volontariapp/messaging';
1
+ import { BatchPostProcessor } from '../core/processors/batch.post-processor.js';
2
+ import { CommonEventMessagingType } from '@volontariapp/messaging';
3
3
  import { JobsOutboxRepository, EventQueueWriter, EventQueueRepository } from '@volontariapp/outbox';
4
4
  import { EventQueueEntity, EventQueueModel, JobsOutboxModel } from '@volontariapp/database';
5
5
  import { getEventForJob } from '@volontariapp/messaging';
6
6
  import { Streams } from '@volontariapp/shared';
7
- export class JobOutboxSuccessPostProcessor extends SinglePostProcessor {
7
+ export class JobOutboxSuccessPostProcessor extends BatchPostProcessor {
8
8
  outboxRepository;
9
9
  db;
10
10
  constructor(db, redisDriver, options) {
@@ -15,71 +15,94 @@ export class JobOutboxSuccessPostProcessor extends SinglePostProcessor {
15
15
  shouldProcess(eventType) {
16
16
  return eventType === CommonEventMessagingType.JOB_OUTBOX_SUCCESS.toString();
17
17
  }
18
- async processEvent(event, messageId) {
19
- const jobId = event.payload.after.job_id;
20
- const jobType = event.payload.after.job_type;
21
- if (!jobId) {
22
- this.logger.error('Received JOB_OUTBOX_SUCCESS but no job_id found in payload', {
18
+ async processEvents(events) {
19
+ await Promise.all(events.map(async ({ event, messageId }) => {
20
+ const jobId = event.payload.after.job_id;
21
+ const jobType = event.payload.after.job_type;
22
+ this.logger.info(`Starting processing of JOB_OUTBOX_SUCCESS for job ${String(jobId)}`, {
23
23
  messageId,
24
+ jobId,
24
25
  });
25
- return;
26
- }
27
- try {
28
- const exists = await this.outboxRepository.exists({ id: jobId });
29
- if (!exists) {
30
- this.logger.error(`Job with id ${jobId} does not exist in outbox`, { messageId, jobId });
31
- return;
32
- }
33
- const originalPayload = event.payload.after.result_payload?.originalPayload;
34
- if (!jobType || !originalPayload) {
35
- this.logger.warn(`Missing jobType or originalPayload for job ${jobId}. Skipping feedback event.`, {
26
+ if (!jobId) {
27
+ this.logger.error('Received JOB_OUTBOX_SUCCESS but no job_id found in payload', {
36
28
  messageId,
37
- jobId,
38
- jobType,
39
- hasOriginalPayload: !!originalPayload,
40
29
  });
30
+ return;
41
31
  }
42
- await this.db.transaction(async (manager) => {
43
- const deleteResult = await manager.delete(JobsOutboxModel, { id: jobId });
44
- if (deleteResult.affected === 0) {
45
- this.logger.warn(`Race condition avoided: Job ${jobId} already deleted.`, {
32
+ try {
33
+ const exists = await this.outboxRepository.exists({ id: jobId });
34
+ if (!exists) {
35
+ this.logger.error(`Job with id ${jobId} does not exist in outbox`, {
46
36
  messageId,
47
37
  jobId,
48
38
  });
49
39
  return;
50
40
  }
51
- if (jobType && originalPayload) {
52
- try {
53
- const transactionalEventWriter = new EventQueueWriter(this.logger, new EventQueueRepository(manager.getRepository(EventQueueModel)));
54
- const eventType = getEventForJob(jobType);
55
- const eventEntity = EventQueueEntity.createEvent({
56
- type: eventType,
57
- emitter: 'ms-post-processors',
58
- emitterId: jobId,
59
- targetServices: [Streams.WS_JOBS_OUTBOX_SUCCESS],
60
- payload: {
61
- status: 'SUCCESS',
62
- originalPayload,
63
- },
41
+ this.logger.info(`Job ${jobId} exists in outbox`, { messageId, jobId });
42
+ const originalPayload = event.payload.after.result_payload?.originalPayload;
43
+ if (!jobType || !originalPayload) {
44
+ this.logger.warn(`Missing jobType or originalPayload for job ${jobId}. Skipping feedback event.`, {
45
+ messageId,
46
+ jobId,
47
+ jobType,
48
+ hasOriginalPayload: !!originalPayload,
49
+ });
50
+ }
51
+ await this.db.transaction(async (manager) => {
52
+ this.logger.info(`Attempting to delete job ${jobId} from jobs_outbox`, {
53
+ messageId,
54
+ jobId,
55
+ });
56
+ const deleteResult = await manager.delete(JobsOutboxModel, { id: jobId });
57
+ if (deleteResult.affected === 0) {
58
+ this.logger.warn(`Race condition avoided: Job ${jobId} already deleted.`, {
59
+ messageId,
60
+ jobId,
64
61
  });
65
- await transactionalEventWriter.create(eventEntity);
62
+ return;
66
63
  }
67
- catch (mappingError) {
68
- this.logger.debug(`No feedback event emitted for job ${jobId} of type ${jobType}`, {
69
- error: mappingError,
70
- });
64
+ this.logger.info(`Successfully deleted job ${jobId} from jobs_outbox`, {
65
+ messageId,
66
+ jobId,
67
+ });
68
+ if (jobType && originalPayload) {
69
+ try {
70
+ const transactionalEventWriter = new EventQueueWriter(this.logger, new EventQueueRepository(manager.getRepository(EventQueueModel)));
71
+ const eventType = getEventForJob(jobType);
72
+ const eventEntity = EventQueueEntity.createEvent({
73
+ type: eventType,
74
+ emitter: 'ms-post-processors',
75
+ emitterId: jobId,
76
+ targetServices: [Streams.WS_JOBS_OUTBOX_SUCCESS],
77
+ payload: {
78
+ status: 'SUCCESS',
79
+ originalPayload,
80
+ },
81
+ });
82
+ await transactionalEventWriter.create(eventEntity);
83
+ this.logger.info(`Successfully created feedback event ${eventType} for job ${jobId}`, { messageId, jobId, eventType });
84
+ }
85
+ catch (mappingError) {
86
+ this.logger.debug(`No feedback event emitted for job ${jobId} of type ${jobType}`, {
87
+ error: mappingError,
88
+ });
89
+ }
71
90
  }
72
- }
73
- });
74
- }
75
- catch (error) {
76
- this.logger.error(`Failed to process JOB_OUTBOX_SUCCESS for job ${jobId}`, {
77
- messageId,
78
- jobId,
79
- error,
80
- });
81
- throw error;
82
- }
91
+ });
92
+ this.logger.info(`Finished processing JOB_OUTBOX_SUCCESS for job ${jobId}`, {
93
+ messageId,
94
+ jobId,
95
+ });
96
+ }
97
+ catch (error) {
98
+ this.logger.error(`Failed to process JOB_OUTBOX_SUCCESS for job ${jobId}`, {
99
+ messageId,
100
+ jobId,
101
+ error,
102
+ });
103
+ throw error;
104
+ }
105
+ }));
83
106
  }
84
107
  }
85
108
  //# sourceMappingURL=job-outbox-success.post-processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"job-outbox-success.post-processor.js","sourceRoot":"","sources":["../../src/common/job-outbox-success.post-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job-outbox-success.post-processor.js","sourceRoot":"","sources":["../../src/common/job-outbox-success.post-processor.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { JobOutboxFailedPostProcessor } from '../../../common/job-outbox-failed.post-processor.js';
2
- import type { StreamEvent, IJobAuditPayload } from '@volontariapp/messaging';
2
+ import type { CommonEventMessagingType } from '@volontariapp/messaging';
3
+ import type { BatchEventItem } from '../../../interfaces/index.js';
3
4
  export declare class TestFailedProcessor extends JobOutboxFailedPostProcessor {
4
- testProcessEvent(event: StreamEvent<IJobAuditPayload>, messageId: string): Promise<void>;
5
+ testProcessEvents(events: BatchEventItem<CommonEventMessagingType.JOB_OUTBOX_FAILED>[]): Promise<void>;
5
6
  getLogger(): import("@volontariapp/logger").Logger;
6
7
  }
7
8
  //# sourceMappingURL=test-job-outbox-failed.post-processor.class.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-job-outbox-failed.post-processor.class.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/classes/test-job-outbox-failed.post-processor.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE7E,qBAAa,mBAAoB,SAAQ,4BAA4B;IAC5D,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,MAAM;IAIxE,SAAS;CAGjB"}
1
+ {"version":3,"file":"test-job-outbox-failed.post-processor.class.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/classes/test-job-outbox-failed.post-processor.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,qBAAa,mBAAoB,SAAQ,4BAA4B;IAC5D,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,EAAE;IAItF,SAAS;CAGjB"}
@@ -1,7 +1,7 @@
1
1
  import { JobOutboxFailedPostProcessor } from '../../../common/job-outbox-failed.post-processor.js';
2
2
  export class TestFailedProcessor extends JobOutboxFailedPostProcessor {
3
- testProcessEvent(event, messageId) {
4
- return this.processEvent(event, messageId);
3
+ testProcessEvents(events) {
4
+ return this.processEvents(events);
5
5
  }
6
6
  getLogger() {
7
7
  return this.logger;
@@ -1 +1 @@
1
- {"version":3,"file":"test-job-outbox-failed.post-processor.class.js","sourceRoot":"","sources":["../../../../src/test/utils/classes/test-job-outbox-failed.post-processor.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AAGnG,MAAM,OAAO,mBAAoB,SAAQ,4BAA4B;IAC5D,gBAAgB,CAAC,KAAoC,EAAE,SAAiB;QAC7E,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"test-job-outbox-failed.post-processor.class.js","sourceRoot":"","sources":["../../../../src/test/utils/classes/test-job-outbox-failed.post-processor.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AAInG,MAAM,OAAO,mBAAoB,SAAQ,4BAA4B;IAC5D,iBAAiB,CAAC,MAAoE;QAC3F,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
@@ -1,7 +1,8 @@
1
1
  import { JobOutboxSuccessPostProcessor } from '../../../common/job-outbox-success.post-processor.js';
2
- import type { StreamEvent, IJobAuditPayload } from '@volontariapp/messaging';
2
+ import type { CommonEventMessagingType } from '@volontariapp/messaging';
3
+ import type { BatchEventItem } from '../../../interfaces/index.js';
3
4
  export declare class TestSuccessProcessor extends JobOutboxSuccessPostProcessor {
4
- testProcessEvent(event: StreamEvent<IJobAuditPayload>, messageId: string): Promise<void>;
5
+ testProcessEvents(events: BatchEventItem<CommonEventMessagingType.JOB_OUTBOX_SUCCESS>[]): Promise<void>;
5
6
  getLogger(): import("@volontariapp/logger").Logger;
6
7
  }
7
8
  //# sourceMappingURL=test-job-outbox-success.post-processor.class.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-job-outbox-success.post-processor.class.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/classes/test-job-outbox-success.post-processor.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAC;AACrG,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE7E,qBAAa,oBAAqB,SAAQ,6BAA6B;IAC9D,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,MAAM;IAIxE,SAAS;CAGjB"}
1
+ {"version":3,"file":"test-job-outbox-success.post-processor.class.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/classes/test-job-outbox-success.post-processor.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAC;AACrG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,qBAAa,oBAAqB,SAAQ,6BAA6B;IAC9D,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,EAAE;IAIvF,SAAS;CAGjB"}
@@ -1,7 +1,7 @@
1
1
  import { JobOutboxSuccessPostProcessor } from '../../../common/job-outbox-success.post-processor.js';
2
2
  export class TestSuccessProcessor extends JobOutboxSuccessPostProcessor {
3
- testProcessEvent(event, messageId) {
4
- return this.processEvent(event, messageId);
3
+ testProcessEvents(events) {
4
+ return this.processEvents(events);
5
5
  }
6
6
  getLogger() {
7
7
  return this.logger;
@@ -1 +1 @@
1
- {"version":3,"file":"test-job-outbox-success.post-processor.class.js","sourceRoot":"","sources":["../../../../src/test/utils/classes/test-job-outbox-success.post-processor.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAC;AAGrG,MAAM,OAAO,oBAAqB,SAAQ,6BAA6B;IAC9D,gBAAgB,CAAC,KAAoC,EAAE,SAAiB;QAC7E,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"test-job-outbox-success.post-processor.class.js","sourceRoot":"","sources":["../../../../src/test/utils/classes/test-job-outbox-success.post-processor.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAC;AAIrG,MAAM,OAAO,oBAAqB,SAAQ,6BAA6B;IAC9D,iBAAiB,CAAC,MAAqE;QAC5F,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volontariapp/post-processors",
3
- "version": "3.0.15",
3
+ "version": "3.1.0-snap-2aefdbd",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true