@neofinancial/chrono 0.1.2 → 0.3.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/build/chrono.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { EventEmitter } from 'node:stream';
2
2
  import type { BackoffStrategyOptions } from './backoff-strategy';
3
3
  import type { Datastore, ScheduleInput, Task } from './datastore';
4
- import { type Processor } from './processors';
4
+ import { type ChronoEventsMap } from './events';
5
5
  import type { ProcessorConfiguration } from './processors/create-processor';
6
+ import type { ProcessorEventsMap } from './processors/events';
6
7
  export type TaskMappingBase = Record<string, unknown>;
7
8
  export type ScheduleTaskInput<TaskKind, TaskData, DatastoreOptions> = ScheduleInput<TaskKind, TaskData, DatastoreOptions>;
8
9
  export type RegisterTaskHandlerInput<TaskKind, TaskData> = {
@@ -11,6 +12,7 @@ export type RegisterTaskHandlerInput<TaskKind, TaskData> = {
11
12
  backoffStrategyOptions?: BackoffStrategyOptions;
12
13
  processorConfiguration?: ProcessorConfiguration;
13
14
  };
15
+ export type RegisterTaskHandlerResponse<TaskKind extends keyof TaskMapping, TaskMapping extends TaskMappingBase> = EventEmitter<ProcessorEventsMap<TaskKind, TaskMapping>>;
14
16
  /**
15
17
  * This is a type that represents the mapping of task kinds to their respective data types.
16
18
  *
@@ -22,14 +24,14 @@ export type RegisterTaskHandlerInput<TaskKind, TaskData> = {
22
24
  * };
23
25
  *
24
26
  */
25
- export declare class Chrono<TaskMapping extends TaskMappingBase, DatastoreOptions> extends EventEmitter {
26
- private datastore;
27
- private processors;
27
+ export declare class Chrono<TaskMapping extends TaskMappingBase, DatastoreOptions> extends EventEmitter<ChronoEventsMap> {
28
+ private readonly datastore;
29
+ private readonly processors;
28
30
  readonly exitTimeoutMs = 60000;
29
31
  constructor(datastore: Datastore<TaskMapping, DatastoreOptions>);
30
32
  start(): Promise<void>;
31
33
  stop(): Promise<void>;
32
34
  scheduleTask<TaskKind extends keyof TaskMapping>(input: ScheduleTaskInput<TaskKind, TaskMapping[TaskKind], DatastoreOptions>): Promise<Task<TaskKind, TaskMapping[TaskKind]>>;
33
35
  deleteTask<TaskKind extends keyof TaskMapping>(taskId: string): Promise<Task<TaskKind, TaskMapping[TaskKind]> | undefined>;
34
- registerTaskHandler<TaskKind extends Extract<keyof TaskMapping, string>>(input: RegisterTaskHandlerInput<TaskKind, TaskMapping[TaskKind]>): Processor<TaskKind, TaskMapping>;
36
+ registerTaskHandler<TaskKind extends Extract<keyof TaskMapping, string>>(input: RegisterTaskHandlerInput<TaskKind, TaskMapping[TaskKind]>): RegisterTaskHandlerResponse<TaskKind, TaskMapping>;
35
37
  }
package/build/chrono.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Chrono = void 0;
4
4
  const node_stream_1 = require("node:stream");
5
+ const events_1 = require("./events");
5
6
  const processors_1 = require("./processors");
6
7
  const promise_utils_1 = require("./utils/promise-utils");
7
8
  /**
@@ -27,7 +28,7 @@ class Chrono extends node_stream_1.EventEmitter {
27
28
  for (const processor of this.processors.values()) {
28
29
  await processor.start();
29
30
  }
30
- this.emit('ready', { timestamp: new Date() });
31
+ this.emit(events_1.ChronoEvents.STARTED, { startedAt: new Date() });
31
32
  }
32
33
  async stop() {
33
34
  const stopPromises = Array.from(this.processors.values()).map((processor) => processor.stop());
@@ -35,10 +36,7 @@ class Chrono extends node_stream_1.EventEmitter {
35
36
  await (0, promise_utils_1.promiseWithTimeout)(Promise.all(stopPromises), this.exitTimeoutMs);
36
37
  }
37
38
  catch (error) {
38
- this.emit('stop:failed', { error, timestamp: new Date() });
39
- }
40
- finally {
41
- this.emit('close', { timestamp: new Date() });
39
+ this.emit(events_1.ChronoEvents.STOP_ABORTED, { error, timestamp: new Date() });
42
40
  }
43
41
  }
44
42
  async scheduleTask(input) {
@@ -1 +1 @@
1
- {"version":3,"file":"chrono.js","sourceRoot":"","sources":["../src/chrono.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAI3C,6CAA+D;AAE/D,yDAA2D;AAiB3D;;;;;;;;;;GAUG;AAEH,MAAa,MAA8D,SAAQ,0BAAY;IACrF,SAAS,CAA2C;IACpD,UAAU,GAAsE,IAAI,GAAG,EAAE,CAAC;IAEzF,aAAa,GAAG,MAAM,CAAC;IAEhC,YAAY,SAAmD;QAC7D,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/F,IAAI,CAAC;YACH,MAAM,IAAA,kCAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,KAA2E;QAE3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YACzC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;SACzC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,MAAc;QAEd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAW,MAAM,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,mBAAmB,CACxB,KAAgE;QAEhE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,4BAAe,EAAC;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;YACpD,aAAa,EAAE,KAAK,CAAC,sBAAsB;SAC5C,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE3C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAxED,wBAwEC"}
1
+ {"version":3,"file":"chrono.js","sourceRoot":"","sources":["../src/chrono.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAI3C,qCAA8D;AAC9D,6CAA+D;AAG/D,yDAA2D;AAsB3D;;;;;;;;;;GAUG;AAEH,MAAa,MAA8D,SAAQ,0BAA6B;IAC7F,SAAS,CAA2C;IACpD,UAAU,GAAsE,IAAI,GAAG,EAAE,CAAC;IAElG,aAAa,GAAG,MAAM,CAAC;IAEhC,YAAY,SAAmD;QAC7D,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,qBAAY,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/F,IAAI,CAAC;YACH,MAAM,IAAA,kCAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,qBAAY,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,KAA2E;QAE3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YACzC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;SACzC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,MAAc;QAEd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAW,MAAM,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,mBAAmB,CACxB,KAAgE;QAEhE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,4BAAe,EAAC;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;YACpD,aAAa,EAAE,KAAK,CAAC,sBAAsB;SAC5C,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE3C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAtED,wBAsEC"}
@@ -0,0 +1,16 @@
1
+ export declare const ChronoEvents: {
2
+ /** Chrono instance has started processors and begun polling tasks */
3
+ readonly STARTED: "started";
4
+ /** Chrono instance has failed to gracefully stop so shutdown has been aborted */
5
+ readonly STOP_ABORTED: "stopAborted";
6
+ };
7
+ export type ChronoEvents = (typeof ChronoEvents)[keyof typeof ChronoEvents];
8
+ export type ChronoEventsMap = {
9
+ [ChronoEvents.STARTED]: [{
10
+ startedAt: Date;
11
+ }];
12
+ [ChronoEvents.STOP_ABORTED]: [{
13
+ timestamp: Date;
14
+ error: unknown;
15
+ }];
16
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChronoEvents = void 0;
4
+ exports.ChronoEvents = {
5
+ /** Chrono instance has started processors and begun polling tasks */
6
+ STARTED: 'started',
7
+ /** Chrono instance has failed to gracefully stop so shutdown has been aborted */
8
+ STOP_ABORTED: 'stopAborted',
9
+ };
10
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,qEAAqE;IACrE,OAAO,EAAE,SAAS;IAClB,iFAAiF;IACjF,YAAY,EAAE,aAAa;CACnB,CAAC"}
package/build/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
- export { Chrono, type ScheduleTaskInput, type TaskMappingBase } from './chrono';
1
+ export { Chrono, type ScheduleTaskInput, type TaskMappingBase, type RegisterTaskHandlerInput, type RegisterTaskHandlerResponse, } from './chrono';
2
+ export { ChronoEvents } from './events';
3
+ export { ProcessorEvents } from './processors';
2
4
  export { TaskStatus, type ClaimTaskInput, type Datastore, type ScheduleInput, type Task, type DeleteInput, type DeleteOptions, type DeleteByIdempotencyKeyInput, } from './datastore';
package/build/index.js CHANGED
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TaskStatus = exports.Chrono = void 0;
3
+ exports.TaskStatus = exports.ProcessorEvents = exports.ChronoEvents = exports.Chrono = void 0;
4
4
  var chrono_1 = require("./chrono");
5
5
  Object.defineProperty(exports, "Chrono", { enumerable: true, get: function () { return chrono_1.Chrono; } });
6
+ var events_1 = require("./events");
7
+ Object.defineProperty(exports, "ChronoEvents", { enumerable: true, get: function () { return events_1.ChronoEvents; } });
8
+ var processors_1 = require("./processors");
9
+ Object.defineProperty(exports, "ProcessorEvents", { enumerable: true, get: function () { return processors_1.ProcessorEvents; } });
6
10
  var datastore_1 = require("./datastore");
7
11
  Object.defineProperty(exports, "TaskStatus", { enumerable: true, get: function () { return datastore_1.TaskStatus; } });
8
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAgF;AAAvE,gGAAA,MAAM,OAAA;AACf,yCASqB;AARnB,uGAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAMkB;AALhB,gGAAA,MAAM,OAAA;AAMR,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AAExB,yCASqB;AARnB,uGAAA,UAAU,OAAA"}
@@ -0,0 +1,50 @@
1
+ import type { Task, TaskMappingBase } from '..';
2
+ export declare const ProcessorEvents: {
3
+ /** A task has been claimed by the running processor for handling */
4
+ readonly TASK_CLAIMED: "taskClaimed";
5
+ /** A task has completed processing and successfully marked as completed */
6
+ readonly TASK_COMPLETED: "taskCompleted";
7
+ /** A task has failed during processing and being scheduled for retry */
8
+ readonly TASK_RETRY_SCHEDULED: "taskRetryScheduled";
9
+ /** A task has been marked as FAILED due to process failures exceeding max retries */
10
+ readonly TASK_FAILED: "taskFailed";
11
+ /** A task has been successfully processed but underlying data store failed to mark task as completed. Duplicate processing expected */
12
+ readonly TASK_COMPLETION_FAILURE: "taskCompletionFailure";
13
+ /** An unknown and uncaught exception occurred in processor. Processing paused for processLoopRetryIntervalMs before continuing */
14
+ readonly UNKNOWN_PROCESSING_ERROR: "unknownProcessingError";
15
+ };
16
+ export type ProcessorEvents = (typeof ProcessorEvents)[keyof typeof ProcessorEvents];
17
+ export type ProcessorEventsMap<TaskKind extends keyof TaskMapping, TaskMapping extends TaskMappingBase> = {
18
+ [ProcessorEvents.TASK_CLAIMED]: [{
19
+ task: Task<TaskKind, TaskMapping[TaskKind]>;
20
+ claimedAt: Date;
21
+ }];
22
+ [ProcessorEvents.TASK_COMPLETED]: [{
23
+ task: Task<TaskKind, TaskMapping[TaskKind]>;
24
+ completedAt: Date;
25
+ }];
26
+ [ProcessorEvents.TASK_RETRY_SCHEDULED]: [
27
+ {
28
+ task: Task<TaskKind, TaskMapping[TaskKind]>;
29
+ error: unknown;
30
+ retryScheduledAt: Date;
31
+ errorAt: Date;
32
+ }
33
+ ];
34
+ [ProcessorEvents.TASK_FAILED]: [{
35
+ task: Task<TaskKind, TaskMapping[TaskKind]>;
36
+ error: unknown;
37
+ failedAt: Date;
38
+ }];
39
+ [ProcessorEvents.TASK_COMPLETION_FAILURE]: [
40
+ {
41
+ task: Task<TaskKind, TaskMapping[TaskKind]>;
42
+ error: unknown;
43
+ failedAt: Date;
44
+ }
45
+ ];
46
+ [ProcessorEvents.UNKNOWN_PROCESSING_ERROR]: [{
47
+ error: unknown;
48
+ timestamp: Date;
49
+ }];
50
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProcessorEvents = void 0;
4
+ exports.ProcessorEvents = {
5
+ /** A task has been claimed by the running processor for handling */
6
+ TASK_CLAIMED: 'taskClaimed',
7
+ /** A task has completed processing and successfully marked as completed */
8
+ TASK_COMPLETED: 'taskCompleted',
9
+ /** A task has failed during processing and being scheduled for retry */
10
+ TASK_RETRY_SCHEDULED: 'taskRetryScheduled',
11
+ /** A task has been marked as FAILED due to process failures exceeding max retries */
12
+ TASK_FAILED: 'taskFailed',
13
+ /** A task has been successfully processed but underlying data store failed to mark task as completed. Duplicate processing expected */
14
+ TASK_COMPLETION_FAILURE: 'taskCompletionFailure',
15
+ /** An unknown and uncaught exception occurred in processor. Processing paused for processLoopRetryIntervalMs before continuing */
16
+ UNKNOWN_PROCESSING_ERROR: 'unknownProcessingError',
17
+ };
18
+ exports.ProcessorEvents.TASK_CLAIMED;
19
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/processors/events.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAG;IAC7B,oEAAoE;IACpE,YAAY,EAAE,aAAa;IAC3B,2EAA2E;IAC3E,cAAc,EAAE,eAAe;IAC/B,wEAAwE;IACxE,oBAAoB,EAAE,oBAAoB;IAC1C,qFAAqF;IACrF,WAAW,EAAE,YAAY;IACzB,uIAAuI;IACvI,uBAAuB,EAAE,uBAAuB;IAChD,kIAAkI;IAClI,wBAAwB,EAAE,wBAAwB;CAC1C,CAAC;AAiBX,uBAAe,CAAC,YAAY,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { createProcessor } from './create-processor';
2
2
  export type { Processor } from './processor';
3
+ export { ProcessorEvents } from './events';
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createProcessor = void 0;
3
+ exports.ProcessorEvents = exports.createProcessor = void 0;
4
4
  var create_processor_1 = require("./create-processor");
5
5
  Object.defineProperty(exports, "createProcessor", { enumerable: true, get: function () { return create_processor_1.createProcessor; } });
6
+ var events_1 = require("./events");
7
+ Object.defineProperty(exports, "ProcessorEvents", { enumerable: true, get: function () { return events_1.ProcessorEvents; } });
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/processors/index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/processors/index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAExB,mCAA2C;AAAlC,yGAAA,eAAe,OAAA"}
@@ -1,35 +1,7 @@
1
1
  import type { EventEmitter } from 'node:stream';
2
- import type { Task, TaskMappingBase } from '..';
3
- export type ProcessorEvents<TaskKind extends keyof TaskMapping, TaskMapping extends TaskMappingBase> = {
4
- 'task:claimed': [{
5
- task: Task<TaskKind, TaskMapping[TaskKind]>;
6
- timestamp: Date;
7
- }];
8
- 'task:completed': [{
9
- task: Task<TaskKind, TaskMapping[TaskKind]>;
10
- timestamp: Date;
11
- }];
12
- 'task:failed': [{
13
- task: Task<TaskKind, TaskMapping[TaskKind]>;
14
- error: Error;
15
- timestamp: Date;
16
- }];
17
- 'task:retry:requested': [{
18
- task: Task<TaskKind, TaskMapping[TaskKind]>;
19
- error: Error;
20
- timestamp: Date;
21
- }];
22
- 'task:completion:failed': [{
23
- task: Task<TaskKind, TaskMapping[TaskKind]>;
24
- error: Error;
25
- timestamp: Date;
26
- }];
27
- 'processloop:error': [{
28
- error: Error;
29
- timestamp: Date;
30
- }];
31
- };
32
- export interface Processor<TaskKind extends keyof TaskMapping, TaskMapping extends TaskMappingBase> extends EventEmitter<ProcessorEvents<TaskKind, TaskMapping>> {
2
+ import type { TaskMappingBase } from '..';
3
+ import type { ProcessorEventsMap } from './events';
4
+ export interface Processor<TaskKind extends keyof TaskMapping, TaskMapping extends TaskMappingBase> extends EventEmitter<ProcessorEventsMap<TaskKind, TaskMapping>> {
33
5
  start(): Promise<void>;
34
6
  stop(): Promise<void>;
35
7
  }
@@ -2,7 +2,8 @@ import { EventEmitter } from 'node:stream';
2
2
  import type { BackoffStrategy } from '../backoff-strategy';
3
3
  import type { TaskMappingBase } from '../chrono';
4
4
  import type { Datastore, Task } from '../datastore';
5
- import type { Processor, ProcessorEvents } from './processor';
5
+ import { type ProcessorEventsMap } from './events';
6
+ import type { Processor } from './processor';
6
7
  type SimpleProcessorConfig = {
7
8
  maxConcurrency: number;
8
9
  claimIntervalMs: number;
@@ -12,7 +13,7 @@ type SimpleProcessorConfig = {
12
13
  taskHandlerMaxRetries: number;
13
14
  processLoopRetryIntervalMs: number;
14
15
  };
15
- export declare class SimpleProcessor<TaskKind extends Extract<keyof TaskMapping, string>, TaskMapping extends TaskMappingBase, DatastoreOptions> extends EventEmitter<ProcessorEvents<TaskKind, TaskMapping>> implements Processor<TaskKind, TaskMapping> {
16
+ export declare class SimpleProcessor<TaskKind extends Extract<keyof TaskMapping, string>, TaskMapping extends TaskMappingBase, DatastoreOptions> extends EventEmitter<ProcessorEventsMap<TaskKind, TaskMapping>> implements Processor<TaskKind, TaskMapping> {
16
17
  private datastore;
17
18
  private taskKind;
18
19
  private handler;
@@ -4,6 +4,7 @@ exports.SimpleProcessor = void 0;
4
4
  const node_stream_1 = require("node:stream");
5
5
  const promises_1 = require("node:timers/promises");
6
6
  const promise_utils_1 = require("../utils/promise-utils");
7
+ const events_1 = require("./events");
7
8
  const DEFAULT_CONFIG = {
8
9
  maxConcurrency: 1,
9
10
  claimIntervalMs: 50,
@@ -13,6 +14,7 @@ const DEFAULT_CONFIG = {
13
14
  taskHandlerMaxRetries: 10,
14
15
  processLoopRetryIntervalMs: 20_000,
15
16
  };
17
+ const InternalProcessorEvents = { PROCESSOR_LOOP_EXIT: 'processorLoopExit' };
16
18
  class SimpleProcessor extends node_stream_1.EventEmitter {
17
19
  datastore;
18
20
  taskKind;
@@ -65,7 +67,7 @@ class SimpleProcessor extends node_stream_1.EventEmitter {
65
67
  * then waits for all process loops to finish before resolving.
66
68
  */
67
69
  async stop() {
68
- const exitPromises = this.exitChannels.map((channel) => new Promise((resolve) => channel.once('processloop:exit', resolve)));
70
+ const exitPromises = this.exitChannels.map((channel) => new Promise((resolve) => channel.once(InternalProcessorEvents.PROCESSOR_LOOP_EXIT, () => resolve(null))));
69
71
  this.stopRequested = true;
70
72
  await Promise.all(exitPromises);
71
73
  }
@@ -86,18 +88,18 @@ class SimpleProcessor extends node_stream_1.EventEmitter {
86
88
  await (0, promises_1.setTimeout)(this.config.idleIntervalMs);
87
89
  continue;
88
90
  }
89
- this.emit('task:claimed', { task, timestamp: new Date() });
91
+ this.emit(events_1.ProcessorEvents.TASK_CLAIMED, { task, claimedAt: task.claimedAt || new Date() });
90
92
  // Process the task using the handler
91
93
  await this.handleTask(task);
92
94
  // Wait a bit before claiming the next task
93
95
  await (0, promises_1.setTimeout)(this.config.claimIntervalMs);
94
96
  }
95
97
  catch (error) {
96
- this.emit('processloop:error', { error: error, timestamp: new Date() });
98
+ this.emit(events_1.ProcessorEvents.UNKNOWN_PROCESSING_ERROR, { error, timestamp: new Date() });
97
99
  await (0, promises_1.setTimeout)(this.config.processLoopRetryIntervalMs);
98
100
  }
99
101
  }
100
- exitChannel.emit('processloop:exit');
102
+ exitChannel.emit(InternalProcessorEvents.PROCESSOR_LOOP_EXIT);
101
103
  }
102
104
  /**
103
105
  * Handles a task by calling the handler and marking it as complete or failed.
@@ -119,37 +121,39 @@ class SimpleProcessor extends node_stream_1.EventEmitter {
119
121
  }
120
122
  try {
121
123
  const completedTask = await this.datastore.complete(task.id);
122
- this.emit('task:completed', {
124
+ this.emit(events_1.ProcessorEvents.TASK_COMPLETED, {
123
125
  task: completedTask,
124
- timestamp: completedTask.completedAt || new Date(),
126
+ completedAt: completedTask.completedAt || new Date(),
125
127
  });
126
128
  }
127
129
  catch (error) {
128
- this.emit('task:completion:failed', {
130
+ this.emit(events_1.ProcessorEvents.TASK_COMPLETION_FAILURE, {
129
131
  error: error,
132
+ failedAt: new Date(),
130
133
  task,
131
- timestamp: new Date(),
132
134
  });
133
135
  }
134
136
  }
135
137
  async handleTaskError(task, error) {
138
+ const failedAt = new Date();
136
139
  if (task.retryCount >= this.config.taskHandlerMaxRetries) {
137
140
  // Mark the task as failed
138
141
  await this.datastore.fail(task.id);
139
- this.emit('task:failed', {
142
+ this.emit(events_1.ProcessorEvents.TASK_FAILED, {
140
143
  task,
141
144
  error,
142
- timestamp: new Date(),
145
+ failedAt,
143
146
  });
144
147
  return;
145
148
  }
146
149
  const delay = this.backOffStrategy({ retryAttempt: task.retryCount });
147
150
  const retryAt = new Date(Date.now() + delay);
148
151
  await this.datastore.retry(task.id, retryAt);
149
- this.emit('task:retry:requested', {
152
+ this.emit(events_1.ProcessorEvents.TASK_RETRY_SCHEDULED, {
150
153
  task,
151
154
  error,
152
- timestamp: new Date(),
155
+ errorAt: failedAt,
156
+ retryScheduledAt: retryAt,
153
157
  });
154
158
  }
155
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"simple-processor.js","sourceRoot":"","sources":["../../src/processors/simple-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-processor.js","sourceRoot":"","sources":["../../src/processors/simple-processor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neofinancial/chrono",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "description": "Core package for Chrono task scheduling system",
5
5
  "private": false,
6
6
  "publishConfig": {