@cloudnux/local-cloud-provider 0.1.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/dist/index.d.mts +11 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +55728 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +55723 -0
- package/dist/index.mjs.map +1 -0
- package/dist/queue-plugin/index.d.mts +83 -0
- package/dist/queue-plugin/index.d.ts +83 -0
- package/dist/queue-plugin/index.js +2200 -0
- package/dist/queue-plugin/index.js.map +1 -0
- package/dist/queue-plugin/index.mjs +2190 -0
- package/dist/queue-plugin/index.mjs.map +1 -0
- package/dist/schedule-plugin/index.d.mts +111 -0
- package/dist/schedule-plugin/index.d.ts +111 -0
- package/dist/schedule-plugin/index.js +10334 -0
- package/dist/schedule-plugin/index.js.map +1 -0
- package/dist/schedule-plugin/index.mjs +10330 -0
- package/dist/schedule-plugin/index.mjs.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { FastifyPluginOptions, FastifyPluginAsync } from 'fastify';
|
|
2
|
+
|
|
3
|
+
interface ScheduledJob {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
cronExpression?: string;
|
|
7
|
+
intervalMs?: number;
|
|
8
|
+
delayMs?: number;
|
|
9
|
+
nextRun: Date;
|
|
10
|
+
lastRun?: Date;
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
runCount: number;
|
|
13
|
+
maxRuns?: number;
|
|
14
|
+
metadata?: Record<string, any>;
|
|
15
|
+
createdAt: Date;
|
|
16
|
+
timezone?: string;
|
|
17
|
+
}
|
|
18
|
+
interface JobExecution {
|
|
19
|
+
id: string;
|
|
20
|
+
jobId: string;
|
|
21
|
+
startTime: Date;
|
|
22
|
+
endTime?: Date;
|
|
23
|
+
status: 'running' | 'completed' | 'failed';
|
|
24
|
+
error?: string;
|
|
25
|
+
result?: any;
|
|
26
|
+
}
|
|
27
|
+
interface SchedulerService {
|
|
28
|
+
job: ScheduledJob;
|
|
29
|
+
handler: JobHandler;
|
|
30
|
+
timerId?: NodeJS.Timeout;
|
|
31
|
+
isRunning: boolean;
|
|
32
|
+
}
|
|
33
|
+
type JobHandler = (job: ScheduledJob, execution: JobExecution) => Promise<void>;
|
|
34
|
+
interface JobDefinition {
|
|
35
|
+
name: string;
|
|
36
|
+
cronExpression?: string;
|
|
37
|
+
intervalMs?: number;
|
|
38
|
+
delayMs?: number;
|
|
39
|
+
handler: JobHandler;
|
|
40
|
+
enabled?: boolean;
|
|
41
|
+
maxRuns?: number;
|
|
42
|
+
metadata?: Record<string, any>;
|
|
43
|
+
timezone?: string;
|
|
44
|
+
}
|
|
45
|
+
interface SchedulerConfig {
|
|
46
|
+
persistence: {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
directory: string;
|
|
49
|
+
saveInterval: number;
|
|
50
|
+
};
|
|
51
|
+
execution: {
|
|
52
|
+
maxConcurrent: number;
|
|
53
|
+
defaultTimeout: number;
|
|
54
|
+
retryOnError: boolean;
|
|
55
|
+
maxRetries: number;
|
|
56
|
+
};
|
|
57
|
+
cleanup: {
|
|
58
|
+
maxExecutionHistory: number;
|
|
59
|
+
cleanupInterval: number;
|
|
60
|
+
};
|
|
61
|
+
restartBehavior: {
|
|
62
|
+
preserveNaturalTiming: boolean;
|
|
63
|
+
skipMissedRuns: boolean;
|
|
64
|
+
maxTimingDrift: number;
|
|
65
|
+
rapidRestartThreshold: number;
|
|
66
|
+
};
|
|
67
|
+
cron: {
|
|
68
|
+
defaultTimezone?: string;
|
|
69
|
+
logCronDetails: boolean;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
interface SchedulerPluginOptions extends FastifyPluginOptions {
|
|
73
|
+
prefix?: string;
|
|
74
|
+
config?: Partial<SchedulerConfig>;
|
|
75
|
+
}
|
|
76
|
+
interface SchedulerState {
|
|
77
|
+
schedulers: Record<string, SchedulerService>;
|
|
78
|
+
executions: Record<string, JobExecution>;
|
|
79
|
+
executionHistory: JobExecution[];
|
|
80
|
+
isShuttingDown: boolean;
|
|
81
|
+
runningExecutions: number;
|
|
82
|
+
cleanupInterval?: NodeJS.Timeout;
|
|
83
|
+
lastRestartTime: Date;
|
|
84
|
+
config: SchedulerConfig;
|
|
85
|
+
}
|
|
86
|
+
interface SchedulerManager {
|
|
87
|
+
addJob: (jobDefinition: JobDefinition) => Promise<string>;
|
|
88
|
+
removeJob: (jobName: string) => Promise<void>;
|
|
89
|
+
hasJob: (jobName: string) => boolean;
|
|
90
|
+
listJobs: () => string[];
|
|
91
|
+
getJobStats: (jobName: string) => SchedulerService | null;
|
|
92
|
+
enableJob: (jobName: string) => Promise<void>;
|
|
93
|
+
disableJob: (jobName: string) => Promise<void>;
|
|
94
|
+
triggerJob: (jobName: string) => Promise<void>;
|
|
95
|
+
getJobsMap: () => Record<string, SchedulerService>;
|
|
96
|
+
}
|
|
97
|
+
interface SchedulerDecoratorOptions {
|
|
98
|
+
state: SchedulerState;
|
|
99
|
+
scheduleJobFn: (scheduler: SchedulerService) => SchedulerService;
|
|
100
|
+
executeJob: (scheduler: SchedulerService) => Promise<void>;
|
|
101
|
+
config: SchedulerConfig;
|
|
102
|
+
}
|
|
103
|
+
declare module 'fastify' {
|
|
104
|
+
interface FastifyInstance {
|
|
105
|
+
scheduler: SchedulerManager;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
declare const schedulerPlugin: FastifyPluginAsync<SchedulerPluginOptions>;
|
|
110
|
+
|
|
111
|
+
export { type JobDefinition, type JobExecution, type JobHandler, type ScheduledJob, type SchedulerConfig, type SchedulerDecoratorOptions, type SchedulerManager, type SchedulerPluginOptions, type SchedulerService, type SchedulerState, schedulerPlugin };
|