@veloxts/scheduler 0.6.55 → 0.6.57

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/dist/index.d.ts CHANGED
@@ -61,3 +61,26 @@ export { createScheduler, scheduler } from './manager.js';
61
61
  export { _resetStandaloneScheduler, getScheduler, getSchedulerFromInstance, schedulerPlugin, } from './plugin.js';
62
62
  export { defineSchedule, task } from './task.js';
63
63
  export type { DayOfWeek, DayOfWeekNumber, ScheduleConstraint, ScheduledTask, SchedulerManager, SchedulerOptions, SchedulerPluginOptions, TaskBuilder, TaskContext, TaskExecution, TaskFailureCallback, TaskHandler, TaskSkipCallback, TaskSuccessCallback, } from './types.js';
64
+ /**
65
+ * DI tokens and providers for @veloxts/scheduler
66
+ *
67
+ * Use these to integrate scheduler services with the @veloxts/core DI container.
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * import { Container } from '@veloxts/core';
72
+ * import { registerSchedulerProviders, SCHEDULER_MANAGER, task } from '@veloxts/scheduler';
73
+ *
74
+ * const container = new Container();
75
+ * registerSchedulerProviders(container, {
76
+ * tasks: [
77
+ * task('cleanup', () => db.cleanup()).daily().build(),
78
+ * ],
79
+ * });
80
+ *
81
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
82
+ * scheduler.start();
83
+ * ```
84
+ */
85
+ export { registerSchedulerProviders } from './providers.js';
86
+ export { SCHEDULER_CONFIG, SCHEDULER_MANAGER } from './tokens.js';
package/dist/index.js CHANGED
@@ -63,3 +63,31 @@ export { createScheduler, scheduler } from './manager.js';
63
63
  export { _resetStandaloneScheduler, getScheduler, getSchedulerFromInstance, schedulerPlugin, } from './plugin.js';
64
64
  // Task builder
65
65
  export { defineSchedule, task } from './task.js';
66
+ // ============================================================================
67
+ // Dependency Injection
68
+ // ============================================================================
69
+ /**
70
+ * DI tokens and providers for @veloxts/scheduler
71
+ *
72
+ * Use these to integrate scheduler services with the @veloxts/core DI container.
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * import { Container } from '@veloxts/core';
77
+ * import { registerSchedulerProviders, SCHEDULER_MANAGER, task } from '@veloxts/scheduler';
78
+ *
79
+ * const container = new Container();
80
+ * registerSchedulerProviders(container, {
81
+ * tasks: [
82
+ * task('cleanup', () => db.cleanup()).daily().build(),
83
+ * ],
84
+ * });
85
+ *
86
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
87
+ * scheduler.start();
88
+ * ```
89
+ */
90
+ // Provider exports - factory functions for registering services
91
+ export { registerSchedulerProviders } from './providers.js';
92
+ // Token exports - unique identifiers for DI resolution
93
+ export { SCHEDULER_CONFIG, SCHEDULER_MANAGER } from './tokens.js';
@@ -0,0 +1,64 @@
1
+ /**
2
+ * DI Providers for @veloxts/scheduler
3
+ *
4
+ * Factory provider functions for registering scheduler services with the DI container.
5
+ * These providers allow services to be managed by the container for testability and flexibility.
6
+ *
7
+ * @module scheduler/providers
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { Container } from '@veloxts/core';
12
+ * import { registerSchedulerProviders, SCHEDULER_MANAGER, task } from '@veloxts/scheduler';
13
+ *
14
+ * const container = new Container();
15
+ * registerSchedulerProviders(container, {
16
+ * tasks: [
17
+ * task('cleanup', () => db.cleanup()).daily().at('02:00').build(),
18
+ * ],
19
+ * timezone: 'America/New_York',
20
+ * });
21
+ *
22
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
23
+ * scheduler.start();
24
+ * ```
25
+ */
26
+ import type { Container } from '@veloxts/core';
27
+ import type { SchedulerPluginOptions } from './types.js';
28
+ /**
29
+ * Registers scheduler providers with a container
30
+ *
31
+ * Unlike other VeloxTS packages, the scheduler manager is created synchronously.
32
+ *
33
+ * @param container - The DI container to register providers with
34
+ * @param config - Scheduler plugin options (tasks, timezone, callbacks, etc.)
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * import { Container } from '@veloxts/core';
39
+ * import { registerSchedulerProviders, SCHEDULER_MANAGER, task } from '@veloxts/scheduler';
40
+ *
41
+ * const container = new Container();
42
+ *
43
+ * registerSchedulerProviders(container, {
44
+ * tasks: [
45
+ * task('cleanup-expired-tokens', async () => {
46
+ * await db.token.deleteMany({ where: { expiresAt: { lt: new Date() } } });
47
+ * }).daily().at('02:00').build(),
48
+ *
49
+ * task('send-daily-digest', async () => {
50
+ * await sendDigest();
51
+ * }).daily().at('09:00').weekdays().build(),
52
+ * ],
53
+ * timezone: 'UTC',
54
+ * debug: false,
55
+ * onTaskComplete: (task, ctx, duration) => {
56
+ * console.log(`Task ${task.name} completed in ${duration}ms`);
57
+ * },
58
+ * });
59
+ *
60
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
61
+ * scheduler.start();
62
+ * ```
63
+ */
64
+ export declare function registerSchedulerProviders(container: Container, config: SchedulerPluginOptions): void;
@@ -0,0 +1,82 @@
1
+ /**
2
+ * DI Providers for @veloxts/scheduler
3
+ *
4
+ * Factory provider functions for registering scheduler services with the DI container.
5
+ * These providers allow services to be managed by the container for testability and flexibility.
6
+ *
7
+ * @module scheduler/providers
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { Container } from '@veloxts/core';
12
+ * import { registerSchedulerProviders, SCHEDULER_MANAGER, task } from '@veloxts/scheduler';
13
+ *
14
+ * const container = new Container();
15
+ * registerSchedulerProviders(container, {
16
+ * tasks: [
17
+ * task('cleanup', () => db.cleanup()).daily().at('02:00').build(),
18
+ * ],
19
+ * timezone: 'America/New_York',
20
+ * });
21
+ *
22
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
23
+ * scheduler.start();
24
+ * ```
25
+ */
26
+ import { createScheduler } from './manager.js';
27
+ import { SCHEDULER_CONFIG, SCHEDULER_MANAGER } from './tokens.js';
28
+ // ============================================================================
29
+ // Bulk Registration Helpers
30
+ // ============================================================================
31
+ /**
32
+ * Registers scheduler providers with a container
33
+ *
34
+ * Unlike other VeloxTS packages, the scheduler manager is created synchronously.
35
+ *
36
+ * @param container - The DI container to register providers with
37
+ * @param config - Scheduler plugin options (tasks, timezone, callbacks, etc.)
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * import { Container } from '@veloxts/core';
42
+ * import { registerSchedulerProviders, SCHEDULER_MANAGER, task } from '@veloxts/scheduler';
43
+ *
44
+ * const container = new Container();
45
+ *
46
+ * registerSchedulerProviders(container, {
47
+ * tasks: [
48
+ * task('cleanup-expired-tokens', async () => {
49
+ * await db.token.deleteMany({ where: { expiresAt: { lt: new Date() } } });
50
+ * }).daily().at('02:00').build(),
51
+ *
52
+ * task('send-daily-digest', async () => {
53
+ * await sendDigest();
54
+ * }).daily().at('09:00').weekdays().build(),
55
+ * ],
56
+ * timezone: 'UTC',
57
+ * debug: false,
58
+ * onTaskComplete: (task, ctx, duration) => {
59
+ * console.log(`Task ${task.name} completed in ${duration}ms`);
60
+ * },
61
+ * });
62
+ *
63
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
64
+ * scheduler.start();
65
+ * ```
66
+ */
67
+ export function registerSchedulerProviders(container, config) {
68
+ // Register config
69
+ container.register({
70
+ provide: SCHEDULER_CONFIG,
71
+ useValue: config,
72
+ });
73
+ // Extract tasks and options from config
74
+ const { tasks, autoStart: _autoStart, ...options } = config;
75
+ // Create scheduler manager (synchronous operation)
76
+ const schedulerManager = createScheduler(tasks, options);
77
+ // Register the scheduler manager instance
78
+ container.register({
79
+ provide: SCHEDULER_MANAGER,
80
+ useValue: schedulerManager,
81
+ });
82
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * DI Tokens for @veloxts/scheduler
3
+ *
4
+ * Symbol-based tokens for type-safe dependency injection.
5
+ * These tokens allow scheduler services to be registered, resolved, and mocked via the DI container.
6
+ *
7
+ * @module scheduler/tokens
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { Container } from '@veloxts/core';
12
+ * import { SCHEDULER_MANAGER, registerSchedulerProviders, task } from '@veloxts/scheduler';
13
+ *
14
+ * const container = new Container();
15
+ * registerSchedulerProviders(container, {
16
+ * tasks: [
17
+ * task('cleanup', () => db.cleanup()).daily().build(),
18
+ * ],
19
+ * });
20
+ *
21
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
22
+ * scheduler.start();
23
+ * ```
24
+ */
25
+ import type { SchedulerManager, SchedulerPluginOptions } from './types.js';
26
+ /**
27
+ * Scheduler manager token
28
+ *
29
+ * The main scheduler manager instance for scheduling and managing tasks.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
34
+ * scheduler.start();
35
+ * const tasks = scheduler.getTasks();
36
+ * await scheduler.runTask('cleanup');
37
+ * ```
38
+ */
39
+ export declare const SCHEDULER_MANAGER: import("@veloxts/core").SymbolToken<SchedulerManager>;
40
+ /**
41
+ * Scheduler configuration token
42
+ *
43
+ * Contains scheduler plugin options including tasks, timezone, and callbacks.
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const config = container.resolve(SCHEDULER_CONFIG);
48
+ * console.log(config.timezone); // 'UTC'
49
+ * console.log(config.tasks.length); // 3
50
+ * ```
51
+ */
52
+ export declare const SCHEDULER_CONFIG: import("@veloxts/core").SymbolToken<SchedulerPluginOptions>;
package/dist/tokens.js ADDED
@@ -0,0 +1,58 @@
1
+ /**
2
+ * DI Tokens for @veloxts/scheduler
3
+ *
4
+ * Symbol-based tokens for type-safe dependency injection.
5
+ * These tokens allow scheduler services to be registered, resolved, and mocked via the DI container.
6
+ *
7
+ * @module scheduler/tokens
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { Container } from '@veloxts/core';
12
+ * import { SCHEDULER_MANAGER, registerSchedulerProviders, task } from '@veloxts/scheduler';
13
+ *
14
+ * const container = new Container();
15
+ * registerSchedulerProviders(container, {
16
+ * tasks: [
17
+ * task('cleanup', () => db.cleanup()).daily().build(),
18
+ * ],
19
+ * });
20
+ *
21
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
22
+ * scheduler.start();
23
+ * ```
24
+ */
25
+ import { token } from '@veloxts/core';
26
+ // ============================================================================
27
+ // Core Scheduler Tokens
28
+ // ============================================================================
29
+ /**
30
+ * Scheduler manager token
31
+ *
32
+ * The main scheduler manager instance for scheduling and managing tasks.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const scheduler = container.resolve(SCHEDULER_MANAGER);
37
+ * scheduler.start();
38
+ * const tasks = scheduler.getTasks();
39
+ * await scheduler.runTask('cleanup');
40
+ * ```
41
+ */
42
+ export const SCHEDULER_MANAGER = token.symbol('SCHEDULER_MANAGER');
43
+ // ============================================================================
44
+ // Configuration Tokens
45
+ // ============================================================================
46
+ /**
47
+ * Scheduler configuration token
48
+ *
49
+ * Contains scheduler plugin options including tasks, timezone, and callbacks.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const config = container.resolve(SCHEDULER_CONFIG);
54
+ * console.log(config.timezone); // 'UTC'
55
+ * console.log(config.tasks.length); // 3
56
+ * ```
57
+ */
58
+ export const SCHEDULER_CONFIG = token.symbol('SCHEDULER_CONFIG');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veloxts/scheduler",
3
- "version": "0.6.55",
3
+ "version": "0.6.57",
4
4
  "description": "Task scheduling for VeloxTS framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,7 +20,7 @@
20
20
  "dependencies": {
21
21
  "cron": "3.5.0",
22
22
  "fastify-plugin": "5.1.0",
23
- "@veloxts/core": "0.6.55"
23
+ "@veloxts/core": "0.6.57"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "fastify": "^5.0.0"