@neofinancial/chrono 0.2.0 → 0.4.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
@@ -2,8 +2,8 @@ import { EventEmitter } from 'node:stream';
2
2
  import type { BackoffStrategyOptions } from './backoff-strategy';
3
3
  import type { Datastore, ScheduleInput, Task } from './datastore';
4
4
  import { type ChronoEventsMap } from './events';
5
- import { type Processor } from './processors';
6
5
  import type { ProcessorConfiguration } from './processors/create-processor';
6
+ import type { ProcessorEventsMap } from './processors/events';
7
7
  export type TaskMappingBase = Record<string, unknown>;
8
8
  export type ScheduleTaskInput<TaskKind, TaskData, DatastoreOptions> = ScheduleInput<TaskKind, TaskData, DatastoreOptions>;
9
9
  export type RegisterTaskHandlerInput<TaskKind, TaskData> = {
@@ -12,6 +12,7 @@ export type RegisterTaskHandlerInput<TaskKind, TaskData> = {
12
12
  backoffStrategyOptions?: BackoffStrategyOptions;
13
13
  processorConfiguration?: ProcessorConfiguration;
14
14
  };
15
+ export type RegisterTaskHandlerResponse<TaskKind extends keyof TaskMapping, TaskMapping extends TaskMappingBase> = EventEmitter<ProcessorEventsMap<TaskKind, TaskMapping>>;
15
16
  /**
16
17
  * This is a type that represents the mapping of task kinds to their respective data types.
17
18
  *
@@ -24,13 +25,13 @@ export type RegisterTaskHandlerInput<TaskKind, TaskData> = {
24
25
  *
25
26
  */
26
27
  export declare class Chrono<TaskMapping extends TaskMappingBase, DatastoreOptions> extends EventEmitter<ChronoEventsMap> {
27
- private datastore;
28
- private processors;
28
+ private readonly datastore;
29
+ private readonly processors;
29
30
  readonly exitTimeoutMs = 60000;
30
31
  constructor(datastore: Datastore<TaskMapping, DatastoreOptions>);
31
32
  start(): Promise<void>;
32
33
  stop(): Promise<void>;
33
34
  scheduleTask<TaskKind extends keyof TaskMapping>(input: ScheduleTaskInput<TaskKind, TaskMapping[TaskKind], DatastoreOptions>): Promise<Task<TaskKind, TaskMapping[TaskKind]>>;
34
35
  deleteTask<TaskKind extends keyof TaskMapping>(taskId: string): Promise<Task<TaskKind, TaskMapping[TaskKind]> | undefined>;
35
- 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>;
36
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chrono.js","sourceRoot":"","sources":["../src/chrono.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAI3C,qCAA8D;AAC9D,6CAA+D;AAE/D,yDAA2D;AAiB3D;;;;;;;;;;GAUG;AAEH,MAAa,MAA8D,SAAQ,0BAA6B;IACtG,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,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"}
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"}
package/build/index.d.ts CHANGED
@@ -1,4 +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
2
  export { ChronoEvents } from './events';
3
3
  export { ProcessorEvents } from './processors';
4
4
  export { TaskStatus, type ClaimTaskInput, type Datastore, type ScheduleInput, type Task, type DeleteInput, type DeleteOptions, type DeleteByIdempotencyKeyInput, } from './datastore';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAgF;AAAvE,gGAAA,MAAM,OAAA;AACf,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AAExB,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neofinancial/chrono",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Core package for Chrono task scheduling system",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -1,9 +0,0 @@
1
- export interface Task<T> {
2
- run(): Promise<T>;
3
- }
4
- export declare class Scheduler<T> {
5
- #private;
6
- constructor();
7
- schedule(task: Task<T>): Promise<boolean>;
8
- run(): Promise<boolean>;
9
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Scheduler = void 0;
4
- class Scheduler {
5
- #tasks = [];
6
- constructor() {
7
- this.#tasks = [];
8
- }
9
- async schedule(task) {
10
- this.#tasks.push(task);
11
- return true;
12
- }
13
- async run() {
14
- for (const task of this.#tasks) {
15
- task.run();
16
- }
17
- return true;
18
- }
19
- }
20
- exports.Scheduler = Scheduler;
21
- //# sourceMappingURL=scheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":";;;AAIA,MAAa,SAAS;IACpB,MAAM,GAAc,EAAE,CAAC;IAEvB;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,IAAa;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG;QACd,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApBD,8BAoBC"}
package/build/task.d.ts DELETED
@@ -1,33 +0,0 @@
1
- export declare const TaskStatus: {
2
- readonly PENDING: "PENDING";
3
- readonly CLAIMED: "CLAIMED";
4
- readonly COMPLETED: "COMPLETED";
5
- readonly FAILED: "FAILED";
6
- };
7
- export type TaskStatus = (typeof TaskStatus)[keyof typeof TaskStatus];
8
- export type Task<TaskKind, TaskData> = {
9
- /** A unique identifier for the task */
10
- id: string;
11
- /** A human-readable name or type for the task */
12
- kind: TaskKind;
13
- /** The current status of the task */
14
- status: TaskStatus;
15
- /** The payload or data associated with the task */
16
- data: TaskData;
17
- /** The priority level of the task (lower numbers can indicate higher priority) */
18
- priority?: number;
19
- /** A key used for idempotency to prevent duplicate processing */
20
- idempotencyKey?: string;
21
- /** The original scheduled date when the task was first intended to run */
22
- originalScheduleDate: Date;
23
- /** The current scheduled execution date, which may change if rescheduled */
24
- scheduledAt: Date;
25
- /** The date the task is mark 'claimed */
26
- claimedAt?: Date;
27
- /** The date the task is mark 'completed' */
28
- completedAt?: Date;
29
- /** The date when the task was last executed (if any) */
30
- lastExecutedAt?: Date;
31
- /** A counter to track the number of times the task has been retried */
32
- retryCount: number;
33
- };
package/build/task.js DELETED
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TaskStatus = void 0;
4
- exports.TaskStatus = {
5
- PENDING: "PENDING",
6
- CLAIMED: "CLAIMED",
7
- COMPLETED: "COMPLETED",
8
- FAILED: "FAILED",
9
- };
10
- //# sourceMappingURL=task.js.map
package/build/task.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;IACxB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACR,CAAC"}