@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 +23 -0
- package/dist/index.js +28 -0
- package/dist/providers.d.ts +64 -0
- package/dist/providers.js +82 -0
- package/dist/tokens.d.ts +52 -0
- package/dist/tokens.js +58 -0
- package/package.json +2 -2
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
|
+
}
|
package/dist/tokens.d.ts
ADDED
|
@@ -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.
|
|
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.
|
|
23
|
+
"@veloxts/core": "0.6.57"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"fastify": "^5.0.0"
|