@venturialstd/workflow 0.1.155 → 0.1.157
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/README.md +238 -238
- package/dist/dtos/create-workflow-job.dto.d.ts +10 -0
- package/dist/dtos/create-workflow-job.dto.d.ts.map +1 -0
- package/dist/dtos/create-workflow-job.dto.js +58 -0
- package/dist/dtos/create-workflow-job.dto.js.map +1 -0
- package/dist/dtos/index.d.ts +2 -0
- package/dist/dtos/index.d.ts.map +1 -1
- package/dist/dtos/index.js +2 -0
- package/dist/dtos/index.js.map +1 -1
- package/dist/dtos/update-workflow-job.dto.d.ts +8 -0
- package/dist/dtos/update-workflow-job.dto.d.ts.map +1 -0
- package/dist/dtos/update-workflow-job.dto.js +46 -0
- package/dist/dtos/update-workflow-job.dto.js.map +1 -0
- package/dist/entities/workflow-job.entity.d.ts +17 -0
- package/dist/entities/workflow-job.entity.d.ts.map +1 -0
- package/dist/entities/workflow-job.entity.js +108 -0
- package/dist/entities/workflow-job.entity.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/index.d.ts +1 -0
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +5 -1
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/jobs/adapters/ioredis-lock.adapter.d.ts +4 -0
- package/dist/modules/jobs/adapters/ioredis-lock.adapter.d.ts.map +1 -0
- package/dist/modules/jobs/adapters/ioredis-lock.adapter.js +33 -0
- package/dist/modules/jobs/adapters/ioredis-lock.adapter.js.map +1 -0
- package/dist/modules/jobs/controllers/workflow-job.controller.d.ts +21 -0
- package/dist/modules/jobs/controllers/workflow-job.controller.d.ts.map +1 -0
- package/dist/modules/jobs/controllers/workflow-job.controller.js +130 -0
- package/dist/modules/jobs/controllers/workflow-job.controller.js.map +1 -0
- package/dist/modules/jobs/jobs-nest.module.d.ts +25 -0
- package/dist/modules/jobs/jobs-nest.module.d.ts.map +1 -0
- package/dist/modules/jobs/jobs-nest.module.js +188 -0
- package/dist/modules/jobs/jobs-nest.module.js.map +1 -0
- package/dist/modules/jobs/processors/workflow-job.processor.d.ts +28 -0
- package/dist/modules/jobs/processors/workflow-job.processor.d.ts.map +1 -0
- package/dist/modules/jobs/processors/workflow-job.processor.js +147 -0
- package/dist/modules/jobs/processors/workflow-job.processor.js.map +1 -0
- package/dist/modules/jobs/services/distributed-lock.service.d.ts +15 -0
- package/dist/modules/jobs/services/distributed-lock.service.d.ts.map +1 -0
- package/dist/modules/jobs/services/distributed-lock.service.js +49 -0
- package/dist/modules/jobs/services/distributed-lock.service.js.map +1 -0
- package/dist/modules/jobs/services/index.d.ts +4 -0
- package/dist/modules/jobs/services/index.d.ts.map +1 -0
- package/dist/modules/jobs/services/index.js +20 -0
- package/dist/modules/jobs/services/index.js.map +1 -0
- package/dist/modules/jobs/services/job-scheduler.service.d.ts +38 -0
- package/dist/modules/jobs/services/job-scheduler.service.d.ts.map +1 -0
- package/dist/modules/jobs/services/job-scheduler.service.js +112 -0
- package/dist/modules/jobs/services/job-scheduler.service.js.map +1 -0
- package/dist/modules/jobs/services/workflow-job.service.d.ts +26 -0
- package/dist/modules/jobs/services/workflow-job.service.d.ts.map +1 -0
- package/dist/modules/jobs/services/workflow-job.service.js +148 -0
- package/dist/modules/jobs/services/workflow-job.service.js.map +1 -0
- package/dist/modules/schedule/schedule-nest.module.d.ts +7 -0
- package/dist/modules/schedule/schedule-nest.module.d.ts.map +1 -0
- package/dist/modules/schedule/schedule-nest.module.js +36 -0
- package/dist/modules/schedule/schedule-nest.module.js.map +1 -0
- package/dist/modules/schedule/schedule.module.d.ts +3 -0
- package/dist/modules/schedule/schedule.module.d.ts.map +1 -0
- package/dist/modules/schedule/schedule.module.js +14 -0
- package/dist/modules/schedule/schedule.module.js.map +1 -0
- package/dist/modules/schedule/services/index.d.ts +2 -0
- package/dist/modules/schedule/services/index.d.ts.map +1 -0
- package/dist/modules/schedule/services/index.js +18 -0
- package/dist/modules/schedule/services/index.js.map +1 -0
- package/dist/modules/schedule/services/schedule-trigger.service.d.ts +13 -0
- package/dist/modules/schedule/services/schedule-trigger.service.d.ts.map +1 -0
- package/dist/modules/schedule/services/schedule-trigger.service.js +95 -0
- package/dist/modules/schedule/services/schedule-trigger.service.js.map +1 -0
- package/dist/modules/schedule/triggers/index.d.ts +2 -0
- package/dist/modules/schedule/triggers/index.d.ts.map +1 -0
- package/dist/modules/schedule/triggers/index.js +18 -0
- package/dist/modules/schedule/triggers/index.js.map +1 -0
- package/dist/modules/schedule/triggers/schedule.trigger.d.ts +9 -0
- package/dist/modules/schedule/triggers/schedule.trigger.d.ts.map +1 -0
- package/dist/modules/schedule/triggers/schedule.trigger.js +102 -0
- package/dist/modules/schedule/triggers/schedule.trigger.js.map +1 -0
- package/dist/realtime/index.d.ts +5 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +21 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/realtime/workflow-realtime.gateway.d.ts +54 -0
- package/dist/realtime/workflow-realtime.gateway.d.ts.map +1 -0
- package/dist/realtime/workflow-realtime.gateway.js +218 -0
- package/dist/realtime/workflow-realtime.gateway.js.map +1 -0
- package/dist/realtime/workflow-socket-auth.adapter.d.ts +9 -0
- package/dist/realtime/workflow-socket-auth.adapter.d.ts.map +1 -0
- package/dist/realtime/workflow-socket-auth.adapter.js +37 -0
- package/dist/realtime/workflow-socket-auth.adapter.js.map +1 -0
- package/dist/realtime/workflow-socket-auth.interface.d.ts +6 -0
- package/dist/realtime/workflow-socket-auth.interface.d.ts.map +1 -0
- package/dist/realtime/workflow-socket-auth.interface.js +5 -0
- package/dist/realtime/workflow-socket-auth.interface.js.map +1 -0
- package/dist/realtime/workflow-socket.types.d.ts +18 -0
- package/dist/realtime/workflow-socket.types.d.ts.map +1 -0
- package/dist/realtime/workflow-socket.types.js +3 -0
- package/dist/realtime/workflow-socket.types.js.map +1 -0
- package/dist/services/workflow-bulk-credential.service.d.ts.map +1 -1
- package/dist/services/workflow-bulk-credential.service.js +15 -1
- package/dist/services/workflow-bulk-credential.service.js.map +1 -1
- package/dist/workflow-core.module.d.ts.map +1 -1
- package/dist/workflow-core.module.js +4 -0
- package/dist/workflow-core.module.js.map +1 -1
- package/package.json +118 -109
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.JobSchedulerService = exports.JOB_NAME_EXECUTE = exports.JOB_NAME_TICK = exports.WORKFLOW_JOBS_QUEUE_NAME = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const cron_parser_1 = require("cron-parser");
|
|
18
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
19
|
+
const typeorm_2 = require("typeorm");
|
|
20
|
+
const workflow_job_entity_1 = require("../../../entities/workflow-job.entity");
|
|
21
|
+
exports.WORKFLOW_JOBS_QUEUE_NAME = 'workflow-jobs';
|
|
22
|
+
exports.JOB_NAME_TICK = 'tick';
|
|
23
|
+
exports.JOB_NAME_EXECUTE = 'execute';
|
|
24
|
+
let JobSchedulerService = class JobSchedulerService {
|
|
25
|
+
jobRepo;
|
|
26
|
+
queue;
|
|
27
|
+
repeatJobKey = null;
|
|
28
|
+
constructor(jobRepo, queue) {
|
|
29
|
+
this.jobRepo = jobRepo;
|
|
30
|
+
this.queue = queue;
|
|
31
|
+
}
|
|
32
|
+
async onModuleInit() {
|
|
33
|
+
await this.initialize();
|
|
34
|
+
}
|
|
35
|
+
async initialize() {
|
|
36
|
+
const repeatableJobs = await this.queue.getRepeatableJobs();
|
|
37
|
+
const tickJob = repeatableJobs.find((j) => j.name === exports.JOB_NAME_TICK);
|
|
38
|
+
if (!tickJob) {
|
|
39
|
+
const added = await this.queue.add(exports.JOB_NAME_TICK, {}, { repeat: { pattern: '0 * * * * *' }, jobId: 'workflow-jobs-tick' });
|
|
40
|
+
this.repeatJobKey = added.repeatJobKey ?? null;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.repeatJobKey = tickJob.key;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async scheduleJob(job) {
|
|
47
|
+
if (!job.isActive)
|
|
48
|
+
return;
|
|
49
|
+
const next = this.getNextRun(job);
|
|
50
|
+
if (next) {
|
|
51
|
+
await this.jobRepo.update(job.id, { nextExecutionAt: next });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async unscheduleJob(jobId) {
|
|
55
|
+
await this.jobRepo.update(jobId, { nextExecutionAt: undefined });
|
|
56
|
+
}
|
|
57
|
+
async runTick() {
|
|
58
|
+
const now = new Date();
|
|
59
|
+
const jobs = await this.jobRepo.find({ where: { isActive: true } });
|
|
60
|
+
for (const job of jobs) {
|
|
61
|
+
try {
|
|
62
|
+
const next = this.getNextRun(job);
|
|
63
|
+
if (!next)
|
|
64
|
+
continue;
|
|
65
|
+
if (next.getTime() <= now.getTime() + 60_000) {
|
|
66
|
+
const tickTs = Math.floor(next.getTime() / 60_000) * 60_000;
|
|
67
|
+
await this.queue.add(exports.JOB_NAME_EXECUTE, {
|
|
68
|
+
jobId: job.id,
|
|
69
|
+
tickTimestamp: tickTs,
|
|
70
|
+
}, {
|
|
71
|
+
jobId: `${job.id}:${tickTs}`,
|
|
72
|
+
removeOnComplete: 1000,
|
|
73
|
+
removeOnFail: 100,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async triggerJobNow(job, executionId) {
|
|
82
|
+
await this.queue.add(exports.JOB_NAME_EXECUTE, {
|
|
83
|
+
jobId: job.id,
|
|
84
|
+
executionId,
|
|
85
|
+
manual: true,
|
|
86
|
+
}, {
|
|
87
|
+
jobId: executionId,
|
|
88
|
+
removeOnComplete: 1000,
|
|
89
|
+
removeOnFail: 100,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
getNextRun(job) {
|
|
93
|
+
try {
|
|
94
|
+
const interval = (0, cron_parser_1.parseExpression)(job.cronExpression, {
|
|
95
|
+
currentDate: new Date(),
|
|
96
|
+
tz: job.timezone || 'UTC',
|
|
97
|
+
});
|
|
98
|
+
const next = interval.next();
|
|
99
|
+
return next ? next.toDate() : null;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
exports.JobSchedulerService = JobSchedulerService;
|
|
107
|
+
exports.JobSchedulerService = JobSchedulerService = __decorate([
|
|
108
|
+
(0, common_1.Injectable)(),
|
|
109
|
+
__param(0, (0, typeorm_1.InjectRepository)(workflow_job_entity_1.WorkflowJob)),
|
|
110
|
+
__metadata("design:paramtypes", [typeorm_2.Repository, Object])
|
|
111
|
+
], JobSchedulerService);
|
|
112
|
+
//# sourceMappingURL=job-scheduler.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-scheduler.service.js","sourceRoot":"","sources":["../../../../src/modules/jobs/services/job-scheduler.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TypeOrmCrudService } from '@dataui/crud-typeorm';
|
|
2
|
+
import { Repository } from 'typeorm';
|
|
3
|
+
import { CreateWorkflowJobDto } from '../../../dtos/create-workflow-job.dto';
|
|
4
|
+
import { UpdateWorkflowJobDto } from '../../../dtos/update-workflow-job.dto';
|
|
5
|
+
import { WorkflowExecution } from '../../../entities/workflow-execution.entity';
|
|
6
|
+
import { WorkflowJob } from '../../../entities/workflow-job.entity';
|
|
7
|
+
import { JobSchedulerService } from './job-scheduler.service';
|
|
8
|
+
export declare class WorkflowJobService extends TypeOrmCrudService<WorkflowJob> {
|
|
9
|
+
readonly repo: Repository<WorkflowJob>;
|
|
10
|
+
private readonly executionRepo;
|
|
11
|
+
private readonly jobSchedulerService;
|
|
12
|
+
constructor(repo: Repository<WorkflowJob>, executionRepo: Repository<WorkflowExecution>, jobSchedulerService: JobSchedulerService);
|
|
13
|
+
findMany(): Promise<WorkflowJob[]>;
|
|
14
|
+
createJob(dto: CreateWorkflowJobDto): Promise<WorkflowJob>;
|
|
15
|
+
updateJob(id: string, dto: UpdateWorkflowJobDto): Promise<WorkflowJob>;
|
|
16
|
+
toggleJob(id: string, isActive: boolean): Promise<WorkflowJob>;
|
|
17
|
+
getExecutionHistory(jobId: string, limit?: number): Promise<WorkflowExecution[]>;
|
|
18
|
+
manualTrigger(id: string): Promise<{
|
|
19
|
+
executionId: string;
|
|
20
|
+
}>;
|
|
21
|
+
markExecuted(id: string, lastExecutedAt: Date, nextExecutionAt?: Date): Promise<void>;
|
|
22
|
+
findByWorkflowAndTrigger(workflowId: string, triggerNodeId?: string): Promise<WorkflowJob | null>;
|
|
23
|
+
deleteJob(id: string): Promise<void>;
|
|
24
|
+
static triggeredByForJob(jobId: string): string;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=workflow-job.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-job.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/jobs/services/workflow-job.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAI9D,qBACa,kBAAmB,SAAQ,kBAAkB,CAAC,WAAW,CAAC;aAGnD,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;IAE7C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAHpB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAE5B,aAAa,EAAE,UAAU,CAAC,iBAAiB,CAAC,EAC5C,mBAAmB,EAAE,mBAAmB;IAKrD,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIlC,SAAS,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAe1D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IActE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAgB9D,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAYzB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IA0B3D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrF,wBAAwB,CAC5B,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAOxB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAGhD"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var WorkflowJobService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.WorkflowJobService = void 0;
|
|
17
|
+
const crud_typeorm_1 = require("@dataui/crud-typeorm");
|
|
18
|
+
const common_1 = require("@nestjs/common");
|
|
19
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
20
|
+
const typeorm_2 = require("typeorm");
|
|
21
|
+
const workflow_constant_1 = require("../../../constants/workflow.constant");
|
|
22
|
+
const workflow_execution_entity_1 = require("../../../entities/workflow-execution.entity");
|
|
23
|
+
const workflow_job_entity_1 = require("../../../entities/workflow-job.entity");
|
|
24
|
+
const job_scheduler_service_1 = require("./job-scheduler.service");
|
|
25
|
+
const TRIGGERED_BY_PREFIX = 'schedule:';
|
|
26
|
+
let WorkflowJobService = WorkflowJobService_1 = class WorkflowJobService extends crud_typeorm_1.TypeOrmCrudService {
|
|
27
|
+
repo;
|
|
28
|
+
executionRepo;
|
|
29
|
+
jobSchedulerService;
|
|
30
|
+
constructor(repo, executionRepo, jobSchedulerService) {
|
|
31
|
+
super(repo);
|
|
32
|
+
this.repo = repo;
|
|
33
|
+
this.executionRepo = executionRepo;
|
|
34
|
+
this.jobSchedulerService = jobSchedulerService;
|
|
35
|
+
}
|
|
36
|
+
async findMany() {
|
|
37
|
+
return this.repo.find({ order: { createdAt: 'DESC' } });
|
|
38
|
+
}
|
|
39
|
+
async createJob(dto) {
|
|
40
|
+
const job = this.repo.create({
|
|
41
|
+
workflowId: dto.workflowId,
|
|
42
|
+
triggerNodeId: dto.triggerNodeId,
|
|
43
|
+
name: dto.name,
|
|
44
|
+
cronExpression: dto.cronExpression,
|
|
45
|
+
timezone: dto.timezone ?? 'UTC',
|
|
46
|
+
isActive: dto.isActive ?? true,
|
|
47
|
+
payload: dto.payload ?? undefined,
|
|
48
|
+
});
|
|
49
|
+
const saved = await this.repo.save(job);
|
|
50
|
+
await this.jobSchedulerService.scheduleJob(saved);
|
|
51
|
+
return saved;
|
|
52
|
+
}
|
|
53
|
+
async updateJob(id, dto) {
|
|
54
|
+
const job = await this.repo.findOne({ where: { id } });
|
|
55
|
+
if (!job)
|
|
56
|
+
throw new common_1.NotFoundException(`WorkflowJob with id "${id}" not found`);
|
|
57
|
+
if (dto.name !== undefined)
|
|
58
|
+
job.name = dto.name;
|
|
59
|
+
if (dto.cronExpression !== undefined)
|
|
60
|
+
job.cronExpression = dto.cronExpression;
|
|
61
|
+
if (dto.timezone !== undefined)
|
|
62
|
+
job.timezone = dto.timezone;
|
|
63
|
+
if (dto.isActive !== undefined)
|
|
64
|
+
job.isActive = dto.isActive;
|
|
65
|
+
if (dto.payload !== undefined)
|
|
66
|
+
job.payload = dto.payload;
|
|
67
|
+
const saved = await this.repo.save(job);
|
|
68
|
+
await this.jobSchedulerService.unscheduleJob(id);
|
|
69
|
+
await this.jobSchedulerService.scheduleJob(saved);
|
|
70
|
+
return saved;
|
|
71
|
+
}
|
|
72
|
+
async toggleJob(id, isActive) {
|
|
73
|
+
const job = await this.repo.findOne({ where: { id } });
|
|
74
|
+
if (!job)
|
|
75
|
+
throw new common_1.NotFoundException(`WorkflowJob with id "${id}" not found`);
|
|
76
|
+
job.isActive = isActive;
|
|
77
|
+
const saved = await this.repo.save(job);
|
|
78
|
+
if (isActive) {
|
|
79
|
+
await this.jobSchedulerService.scheduleJob(saved);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
await this.jobSchedulerService.unscheduleJob(id);
|
|
83
|
+
}
|
|
84
|
+
return saved;
|
|
85
|
+
}
|
|
86
|
+
async getExecutionHistory(jobId, limit = 50) {
|
|
87
|
+
const triggeredBy = TRIGGERED_BY_PREFIX + jobId;
|
|
88
|
+
return this.executionRepo.find({
|
|
89
|
+
where: { triggeredBy },
|
|
90
|
+
order: { createdAt: 'DESC' },
|
|
91
|
+
take: limit,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async manualTrigger(id) {
|
|
95
|
+
const job = await this.repo.findOne({ where: { id } });
|
|
96
|
+
if (!job)
|
|
97
|
+
throw new common_1.NotFoundException(`WorkflowJob with id "${id}" not found`);
|
|
98
|
+
const triggeredBy = WorkflowJobService_1.triggeredByForJob(job.id);
|
|
99
|
+
const inputData = {
|
|
100
|
+
triggerNodeId: job.triggerNodeId,
|
|
101
|
+
schedule: {
|
|
102
|
+
jobId: job.id,
|
|
103
|
+
cronExpression: job.cronExpression,
|
|
104
|
+
timezone: job.timezone,
|
|
105
|
+
payload: job.payload,
|
|
106
|
+
},
|
|
107
|
+
...(job.payload && typeof job.payload === 'object' ? job.payload : {}),
|
|
108
|
+
};
|
|
109
|
+
const execution = this.executionRepo.create({
|
|
110
|
+
workflowId: job.workflowId,
|
|
111
|
+
status: workflow_constant_1.EXECUTION_STATUS.PENDING,
|
|
112
|
+
triggeredBy,
|
|
113
|
+
inputData,
|
|
114
|
+
});
|
|
115
|
+
const saved = await this.executionRepo.save(execution);
|
|
116
|
+
await this.jobSchedulerService.triggerJobNow(job, saved.id);
|
|
117
|
+
return { executionId: saved.id };
|
|
118
|
+
}
|
|
119
|
+
async markExecuted(id, lastExecutedAt, nextExecutionAt) {
|
|
120
|
+
await this.repo.update(id, {
|
|
121
|
+
lastExecutedAt,
|
|
122
|
+
...(nextExecutionAt != null && { nextExecutionAt }),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
async findByWorkflowAndTrigger(workflowId, triggerNodeId) {
|
|
126
|
+
const where = { workflowId };
|
|
127
|
+
if (triggerNodeId != null)
|
|
128
|
+
where.triggerNodeId = triggerNodeId;
|
|
129
|
+
return this.repo.findOne({ where });
|
|
130
|
+
}
|
|
131
|
+
async deleteJob(id) {
|
|
132
|
+
await this.jobSchedulerService.unscheduleJob(id);
|
|
133
|
+
await this.repo.delete(id);
|
|
134
|
+
}
|
|
135
|
+
static triggeredByForJob(jobId) {
|
|
136
|
+
return TRIGGERED_BY_PREFIX + jobId;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
exports.WorkflowJobService = WorkflowJobService;
|
|
140
|
+
exports.WorkflowJobService = WorkflowJobService = WorkflowJobService_1 = __decorate([
|
|
141
|
+
(0, common_1.Injectable)(),
|
|
142
|
+
__param(0, (0, typeorm_1.InjectRepository)(workflow_job_entity_1.WorkflowJob)),
|
|
143
|
+
__param(1, (0, typeorm_1.InjectRepository)(workflow_execution_entity_1.WorkflowExecution)),
|
|
144
|
+
__metadata("design:paramtypes", [typeorm_2.Repository,
|
|
145
|
+
typeorm_2.Repository,
|
|
146
|
+
job_scheduler_service_1.JobSchedulerService])
|
|
147
|
+
], WorkflowJobService);
|
|
148
|
+
//# sourceMappingURL=workflow-job.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-job.service.js","sourceRoot":"","sources":["../../../../src/modules/jobs/services/workflow-job.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAA0D;AAC1D,2CAA+D;AAC/D,6CAAmD;AACnD,qCAAqC;AAErC,4EAAwE;AAGxE,2FAAgF;AAChF,+EAAoE;AACpE,mEAA8D;AAE9D,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAGjC,IAAM,kBAAkB,0BAAxB,MAAM,kBAAmB,SAAQ,iCAA+B;IAGnD;IAEC;IACA;IALnB,YAEkB,IAA6B,EAE5B,aAA4C,EAC5C,mBAAwC;QAEzD,KAAK,CAAC,IAAI,CAAC,CAAC;QALI,SAAI,GAAJ,IAAI,CAAyB;QAE5B,kBAAa,GAAb,aAAa,CAA+B;QAC5C,wBAAmB,GAAnB,mBAAmB,CAAqB;IAG3D,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAyB;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK;YAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI;YAC9B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;SAClC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU,EAAE,GAAyB;QACnD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,0BAAiB,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;QAC/E,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAChD,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS;YAAE,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QAC9E,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;YAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC5D,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;YAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC5D,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU,EAAE,QAAiB;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,0BAAiB,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;QAC/E,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAKD,KAAK,CAAC,mBAAmB,CACvB,KAAa,EACb,QAAgB,EAAE;QAElB,MAAM,WAAW,GAAG,mBAAmB,GAAG,KAAK,CAAC;QAChD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAC7B,KAAK,EAAE,EAAE,WAAW,EAAE;YACtB,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;YAC5B,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAKD,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,0BAAiB,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;QAC/E,MAAM,WAAW,GAAG,oBAAkB,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,SAAS,GAA4B;YACzC,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,QAAQ,EAAE;gBACR,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,cAAc,EAAE,GAAG,CAAC,cAAc;gBAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB;YACD,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAC1C,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,MAAM,EAAE,oCAAgB,CAAC,OAAO;YAChC,WAAW;YACX,SAAS;SACV,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IACnC,CAAC;IAGD,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,cAAoB,EAAE,eAAsB;QACzE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;YACzB,cAAc;YACd,GAAG,CAAC,eAAe,IAAI,IAAI,IAAI,EAAE,eAAe,EAAE,CAAC;SACpD,CAAC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,wBAAwB,CAC5B,UAAkB,EAClB,aAAsB;QAEtB,MAAM,KAAK,GAAmD,EAAE,UAAU,EAAE,CAAC;QAC7E,IAAI,aAAa,IAAI,IAAI;YAAE,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IAGD,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,KAAa;QACpC,OAAO,mBAAmB,GAAG,KAAK,CAAC;IACrC,CAAC;CACF,CAAA;AA/HY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,iCAAW,CAAC,CAAA;IAE7B,WAAA,IAAA,0BAAgB,EAAC,6CAAiB,CAAC,CAAA;qCADd,oBAAU;QAEA,oBAAU;QACJ,2CAAmB;GANhD,kBAAkB,CA+H9B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DynamicModule } from '@nestjs/common';
|
|
2
|
+
import type { WorkflowJobsModuleOptions, WorkflowJobsModuleAsyncOptions } from '../jobs/jobs-nest.module';
|
|
3
|
+
export declare class ScheduleNestModule {
|
|
4
|
+
static forRoot(options: WorkflowJobsModuleOptions): DynamicModule;
|
|
5
|
+
static forRootAsync(options: WorkflowJobsModuleAsyncOptions): DynamicModule;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=schedule-nest.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-nest.module.d.ts","sourceRoot":"","sources":["../../../src/modules/schedule/schedule-nest.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAEvD,OAAO,KAAK,EACV,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,0BAA0B,CAAC;AAIlC,qBACa,kBAAkB;IAK7B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,aAAa;IAYjE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,8BAA8B,GAAG,aAAa;CAQ5E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var ScheduleNestModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ScheduleNestModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const jobs_nest_module_1 = require("../jobs/jobs-nest.module");
|
|
13
|
+
const schedule_trigger_service_1 = require("./services/schedule-trigger.service");
|
|
14
|
+
let ScheduleNestModule = ScheduleNestModule_1 = class ScheduleNestModule {
|
|
15
|
+
static forRoot(options) {
|
|
16
|
+
return {
|
|
17
|
+
module: ScheduleNestModule_1,
|
|
18
|
+
imports: [jobs_nest_module_1.JobsNestModule.forRoot(options)],
|
|
19
|
+
providers: [schedule_trigger_service_1.ScheduleTriggerService],
|
|
20
|
+
exports: [schedule_trigger_service_1.ScheduleTriggerService],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
static forRootAsync(options) {
|
|
24
|
+
return {
|
|
25
|
+
module: ScheduleNestModule_1,
|
|
26
|
+
imports: [jobs_nest_module_1.JobsNestModule.forRootAsync(options)],
|
|
27
|
+
providers: [schedule_trigger_service_1.ScheduleTriggerService],
|
|
28
|
+
exports: [schedule_trigger_service_1.ScheduleTriggerService],
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.ScheduleNestModule = ScheduleNestModule;
|
|
33
|
+
exports.ScheduleNestModule = ScheduleNestModule = ScheduleNestModule_1 = __decorate([
|
|
34
|
+
(0, common_1.Module)({})
|
|
35
|
+
], ScheduleNestModule);
|
|
36
|
+
//# sourceMappingURL=schedule-nest.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-nest.module.js","sourceRoot":"","sources":["../../../src/modules/schedule/schedule-nest.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AAMvD,+DAA0D;AAC1D,kFAA6E;AAGtE,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAK7B,MAAM,CAAC,OAAO,CAAC,OAAkC;QAC/C,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE,CAAC,iCAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,SAAS,EAAE,CAAC,iDAAsB,CAAC;YACnC,OAAO,EAAE,CAAC,iDAAsB,CAAC;SAClC,CAAC;IACJ,CAAC;IAKD,MAAM,CAAC,YAAY,CAAC,OAAuC;QACzD,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE,CAAC,iCAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/C,SAAS,EAAE,CAAC,iDAAsB,CAAC;YACnC,OAAO,EAAE,CAAC,iDAAsB,CAAC;SAClC,CAAC;IACJ,CAAC;CACF,CAAA;AAzBY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,kBAAkB,CAyB9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.module.d.ts","sourceRoot":"","sources":["../../../src/modules/schedule/schedule.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGpD,eAAO,MAAM,cAAc,EAAE,wBAQ5B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scheduleModule = void 0;
|
|
4
|
+
const schedule_trigger_1 = require("./triggers/schedule.trigger");
|
|
5
|
+
exports.scheduleModule = {
|
|
6
|
+
key: 'schedule',
|
|
7
|
+
name: 'Schedule',
|
|
8
|
+
description: 'Run workflows on a cron schedule (exactly-once across instances)',
|
|
9
|
+
icon: '⏰',
|
|
10
|
+
version: '1.0.0',
|
|
11
|
+
actions: [],
|
|
12
|
+
triggers: [schedule_trigger_1.scheduleTrigger],
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=schedule.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.module.js","sourceRoot":"","sources":["../../../src/modules/schedule/schedule.module.ts"],"names":[],"mappings":";;;AACA,kEAA8D;AAEjD,QAAA,cAAc,GAA6B;IACtD,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,kEAAkE;IAC/E,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,CAAC,kCAAe,CAAC;CAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/schedule/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./schedule-trigger.service"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/schedule/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IWorkflowActionService, WorkflowActionContext } from '../../types';
|
|
2
|
+
import { WorkflowJobService } from '../../jobs/services/workflow-job.service';
|
|
3
|
+
export declare class ScheduleTriggerService implements IWorkflowActionService {
|
|
4
|
+
private readonly workflowJobService;
|
|
5
|
+
private readonly logger;
|
|
6
|
+
constructor(workflowJobService: WorkflowJobService);
|
|
7
|
+
perform(inputs: Record<string, unknown>, context: WorkflowActionContext): Promise<Record<string, unknown>>;
|
|
8
|
+
performSubscribe(inputs: Record<string, unknown>, context: WorkflowActionContext, nodeId: string): Promise<{
|
|
9
|
+
jobId: string;
|
|
10
|
+
}>;
|
|
11
|
+
performUnsubscribe(_inputs: Record<string, unknown>, context: WorkflowActionContext, nodeId: string): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=schedule-trigger.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-trigger.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/schedule/services/schedule-trigger.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAkB9E,qBACa,sBAAuB,YAAW,sBAAsB;IAGvD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAF/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;gBAErC,kBAAkB,EAAE,kBAAkB;IAE7D,OAAO,CACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAW7B,gBAAgB,CACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA6CvB,kBAAkB,CACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;CAUjB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var ScheduleTriggerService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.ScheduleTriggerService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const workflow_job_service_1 = require("../../jobs/services/workflow-job.service");
|
|
16
|
+
const schedule_trigger_1 = require("../triggers/schedule.trigger");
|
|
17
|
+
function resolveCronExpression(inputs) {
|
|
18
|
+
const preset = inputs.schedulePreset;
|
|
19
|
+
if (!preset)
|
|
20
|
+
return undefined;
|
|
21
|
+
if (preset === schedule_trigger_1.SCHEDULE_PRESET_CUSTOM) {
|
|
22
|
+
const custom = inputs.customCronExpression?.trim();
|
|
23
|
+
return custom || undefined;
|
|
24
|
+
}
|
|
25
|
+
return preset;
|
|
26
|
+
}
|
|
27
|
+
let ScheduleTriggerService = ScheduleTriggerService_1 = class ScheduleTriggerService {
|
|
28
|
+
workflowJobService;
|
|
29
|
+
logger = new common_1.Logger(ScheduleTriggerService_1.name);
|
|
30
|
+
constructor(workflowJobService) {
|
|
31
|
+
this.workflowJobService = workflowJobService;
|
|
32
|
+
}
|
|
33
|
+
async perform(inputs, context) {
|
|
34
|
+
const scheduledAt = context.context?.scheduledAt ?? new Date().toISOString();
|
|
35
|
+
const jobId = context.context?.jobId;
|
|
36
|
+
const payload = context.context?.payload ?? {};
|
|
37
|
+
return {
|
|
38
|
+
scheduledAt,
|
|
39
|
+
jobId: jobId ?? '',
|
|
40
|
+
payload,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async performSubscribe(inputs, context, nodeId) {
|
|
44
|
+
const workflowId = context.workflowId;
|
|
45
|
+
if (!workflowId) {
|
|
46
|
+
throw new Error('Workflow ID is required to subscribe schedule trigger');
|
|
47
|
+
}
|
|
48
|
+
const cronExpression = resolveCronExpression(inputs);
|
|
49
|
+
if (!cronExpression) {
|
|
50
|
+
throw new Error('Schedule is required. Choose "When to run" or, for Custom, fill in "Custom schedule".');
|
|
51
|
+
}
|
|
52
|
+
const timezone = inputs.timezone?.trim() || 'UTC';
|
|
53
|
+
const enabled = inputs.enabled !== false;
|
|
54
|
+
const existing = await this.workflowJobService.findByWorkflowAndTrigger(workflowId, nodeId);
|
|
55
|
+
const name = `Schedule ${workflowId.slice(0, 8)}`;
|
|
56
|
+
const payload = inputs.payload;
|
|
57
|
+
if (existing) {
|
|
58
|
+
const updated = await this.workflowJobService.updateJob(existing.id, {
|
|
59
|
+
cronExpression,
|
|
60
|
+
timezone,
|
|
61
|
+
isActive: enabled,
|
|
62
|
+
payload,
|
|
63
|
+
});
|
|
64
|
+
this.logger.log(`Updated schedule job ${updated.id} for workflow ${workflowId}`);
|
|
65
|
+
return { jobId: updated.id };
|
|
66
|
+
}
|
|
67
|
+
const job = await this.workflowJobService.createJob({
|
|
68
|
+
workflowId,
|
|
69
|
+
triggerNodeId: nodeId,
|
|
70
|
+
name,
|
|
71
|
+
cronExpression,
|
|
72
|
+
timezone,
|
|
73
|
+
isActive: enabled,
|
|
74
|
+
payload,
|
|
75
|
+
});
|
|
76
|
+
this.logger.log(`Created schedule job ${job.id} for workflow ${workflowId}`);
|
|
77
|
+
return { jobId: job.id };
|
|
78
|
+
}
|
|
79
|
+
async performUnsubscribe(_inputs, context, nodeId) {
|
|
80
|
+
const workflowId = context.workflowId;
|
|
81
|
+
if (!workflowId)
|
|
82
|
+
return;
|
|
83
|
+
const job = await this.workflowJobService.findByWorkflowAndTrigger(workflowId, nodeId);
|
|
84
|
+
if (job) {
|
|
85
|
+
await this.workflowJobService.toggleJob(job.id, false);
|
|
86
|
+
this.logger.log(`Disabled schedule job ${job.id} for workflow ${workflowId}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
exports.ScheduleTriggerService = ScheduleTriggerService;
|
|
91
|
+
exports.ScheduleTriggerService = ScheduleTriggerService = ScheduleTriggerService_1 = __decorate([
|
|
92
|
+
(0, common_1.Injectable)(),
|
|
93
|
+
__metadata("design:paramtypes", [workflow_job_service_1.WorkflowJobService])
|
|
94
|
+
], ScheduleTriggerService);
|
|
95
|
+
//# sourceMappingURL=schedule-trigger.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-trigger.service.js","sourceRoot":"","sources":["../../../../src/modules/schedule/services/schedule-trigger.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/schedule/triggers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./schedule.trigger"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/schedule/triggers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { WorkflowActionTrigger } from '../../types';
|
|
2
|
+
export declare const TRIGGER_KEY_SCHEDULE = "schedule";
|
|
3
|
+
export declare const SCHEDULE_PRESET_CUSTOM = "__custom__";
|
|
4
|
+
export declare const SCHEDULE_PRESET_OPTIONS: Array<{
|
|
5
|
+
label: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const scheduleTrigger: WorkflowActionTrigger;
|
|
9
|
+
//# sourceMappingURL=schedule.trigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.trigger.d.ts","sourceRoot":"","sources":["../../../../src/modules/schedule/triggers/schedule.trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAGrB,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAG/C,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAGnD,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAU3E,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,qBA8F7B,CAAC"}
|