@outloud/adonis-scheduler 1.0.5 → 1.0.6

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.
@@ -17,14 +17,16 @@ var Scheduler = class {
17
17
  config;
18
18
  resolver;
19
19
  logger;
20
+ emitter;
20
21
  locks;
21
22
  definitions = [];
22
23
  state = "created";
23
24
  errorHandler;
24
- constructor(config, resolver, logger, locks) {
25
+ constructor(config, resolver, logger, emitter, locks) {
25
26
  this.config = config;
26
27
  this.resolver = resolver;
27
28
  this.logger = logger;
29
+ this.emitter = emitter;
28
30
  this.locks = locks;
29
31
  }
30
32
  register(options) {
@@ -145,15 +147,15 @@ var Scheduler = class {
145
147
  this.logger.info(`Scheduler: ${state}`);
146
148
  }
147
149
  async handleError(error, _, task) {
148
- if (task && task.onError) {
149
- await task.onError(error);
150
- return;
151
- }
152
- if (this.errorHandler) {
153
- await this.errorHandler(error, task);
154
- return;
150
+ await task.onError?.(error);
151
+ this.emitter.emit("scheduler:error", {
152
+ error,
153
+ task
154
+ });
155
+ await this.errorHandler?.(error, task);
156
+ if (!this.emitter.hasListeners("scheduler:error") && !this.errorHandler) {
157
+ throw error;
155
158
  }
156
- throw error;
157
159
  }
158
160
  async cancel(job) {
159
161
  await job.$cancel();
@@ -1,10 +1,11 @@
1
1
  import { BaseCommand } from '@adonisjs/core/ace';
2
2
  import { CommandOptions } from '@adonisjs/core/types/ace';
3
- import { a as Scheduler } from '../scheduler-BWT0Iqko.js';
3
+ import { a as Scheduler } from '../scheduler-DO35E0Fu.js';
4
4
  import '@adonisjs/core/container';
5
5
  import '@adonisjs/core/types';
6
6
  import '@adonisjs/lock/types';
7
7
  import '@adonisjs/core/logger';
8
+ import '@adonisjs/core/events';
8
9
 
9
10
  declare class SchedulerRun extends BaseCommand {
10
11
  static commandName: string;
@@ -1,4 +1,4 @@
1
- import { Scheduler } from '../chunk-BBI2I5B5.js';
1
+ import { Scheduler } from '../chunk-FOVOD6FP.js';
2
2
  import { __name } from '../chunk-SHUYVCID.js';
3
3
  import 'reflect-metadata';
4
4
  import { inject } from '@adonisjs/core';
package/build/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { S as SchedulerConfig } from './scheduler-BWT0Iqko.js';
2
- export { a as Scheduler, T as Task, b as TaskOptions } from './scheduler-BWT0Iqko.js';
1
+ import { S as SchedulerConfig } from './scheduler-DO35E0Fu.js';
2
+ export { a as Scheduler, T as Task, b as TaskOptions } from './scheduler-DO35E0Fu.js';
3
3
  import Configure from '@adonisjs/core/commands/configure';
4
4
  import '@adonisjs/core/container';
5
5
  import '@adonisjs/core/types';
6
6
  import '@adonisjs/lock/types';
7
7
  import '@adonisjs/core/logger';
8
+ import '@adonisjs/core/events';
8
9
 
9
10
  declare function configure(command: Configure): Promise<void>;
10
11
 
package/build/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Scheduler } from './chunk-BBI2I5B5.js';
1
+ export { Scheduler } from './chunk-FOVOD6FP.js';
2
2
  export { Task } from './chunk-7P6J5U6O.js';
3
3
  import { __name } from './chunk-SHUYVCID.js';
4
4
 
@@ -1,8 +1,9 @@
1
1
  import { ApplicationService } from '@adonisjs/core/types';
2
- import { a as Scheduler } from '../scheduler-BWT0Iqko.js';
2
+ import { a as Scheduler, c as SchedulerEvents } from '../scheduler-DO35E0Fu.js';
3
3
  import '@adonisjs/core/container';
4
4
  import '@adonisjs/lock/types';
5
5
  import '@adonisjs/core/logger';
6
+ import '@adonisjs/core/events';
6
7
 
7
8
  declare class SchedulerProvider {
8
9
  protected app: ApplicationService;
@@ -18,6 +19,8 @@ declare module '@adonisjs/core/types' {
18
19
  interface ContainerBindings {
19
20
  scheduler: Scheduler;
20
21
  }
22
+ interface EventsList extends SchedulerEvents {
23
+ }
21
24
  }
22
25
 
23
26
  export { SchedulerProvider as default };
@@ -1,4 +1,4 @@
1
- import { Scheduler } from '../chunk-BBI2I5B5.js';
1
+ import { Scheduler } from '../chunk-FOVOD6FP.js';
2
2
  import { __name } from '../chunk-SHUYVCID.js';
3
3
 
4
4
  // providers/scheduler.provider.ts
@@ -21,7 +21,7 @@ var SchedulerProvider = class {
21
21
  }
22
22
  register() {
23
23
  this.app.container.singleton(Scheduler, async () => {
24
- return new Scheduler(this.getConfig(), this.app.container.createResolver(), await this.app.container.make("logger"), await this.getLocks());
24
+ return new Scheduler(this.getConfig(), this.app.container.createResolver(), await this.app.container.make("logger"), await this.app.container.make("emitter"), await this.getLocks());
25
25
  });
26
26
  this.app.container.alias("scheduler", Scheduler);
27
27
  }
@@ -2,6 +2,7 @@ import { ContainerResolver } from '@adonisjs/core/container';
2
2
  import { ContainerBindings } from '@adonisjs/core/types';
3
3
  import { LockService } from '@adonisjs/lock/types';
4
4
  import { Logger } from '@adonisjs/core/logger';
5
+ import { Emitter } from '@adonisjs/core/events';
5
6
 
6
7
  interface SchedulerConfig {
7
8
  /**
@@ -45,6 +46,12 @@ interface TaskRegisterOptions extends TaskOptions {
45
46
  command: string | string[];
46
47
  }
47
48
  type ErrorHandler = (error: Error, task: Task) => (void | Promise<void>);
49
+ interface SchedulerEvents {
50
+ 'scheduler:error': {
51
+ error: Error;
52
+ task: Task;
53
+ };
54
+ }
48
55
  type MaybePromise<T> = T | Promise<T>;
49
56
  type Factory<T> = () => MaybePromise<{
50
57
  default: T;
@@ -68,11 +75,12 @@ declare class Scheduler {
68
75
  private config;
69
76
  private resolver;
70
77
  private logger;
78
+ private emitter;
71
79
  private locks?;
72
80
  private definitions;
73
81
  private state;
74
82
  private errorHandler?;
75
- constructor(config: SchedulerConfig, resolver: ContainerResolver<ContainerBindings>, logger: Logger, locks?: LockService | undefined);
83
+ constructor(config: SchedulerConfig, resolver: ContainerResolver<ContainerBindings>, logger: Logger, emitter: Emitter<any>, locks?: LockService | undefined);
76
84
  register(options: TaskRegisterOptions | Factory<typeof Task>): this;
77
85
  start(wait?: boolean): Promise<void>;
78
86
  stop(): Promise<void>;
@@ -88,4 +96,4 @@ declare class Scheduler {
88
96
  private schedule;
89
97
  }
90
98
 
91
- export { type SchedulerConfig as S, Task as T, Scheduler as a, type TaskOptions as b };
99
+ export { type SchedulerConfig as S, Task as T, Scheduler as a, type TaskOptions as b, type SchedulerEvents as c };
@@ -1,8 +1,9 @@
1
- import { a as Scheduler } from '../scheduler-BWT0Iqko.js';
1
+ import { a as Scheduler } from '../scheduler-DO35E0Fu.js';
2
2
  import '@adonisjs/core/container';
3
3
  import '@adonisjs/core/types';
4
4
  import '@adonisjs/lock/types';
5
5
  import '@adonisjs/core/logger';
6
+ import '@adonisjs/core/events';
6
7
 
7
8
  declare let scheduler: Scheduler;
8
9
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@outloud/adonis-scheduler",
3
3
  "type": "module",
4
- "version": "1.0.5",
4
+ "version": "1.0.6",
5
5
  "description": "Schedule cron jobs in AdonisJS.",
6
6
  "author": "Outloud <hello@outloud.co>",
7
7
  "contributors": [