nestjs-temporal-core 3.0.0 → 3.0.3
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 +271 -150
- package/dist/client/temporal-client.module.d.ts +9 -3
- package/dist/client/temporal-client.module.js +43 -13
- package/dist/client/temporal-client.module.js.map +1 -1
- package/dist/client/temporal-client.service.d.ts +10 -3
- package/dist/client/temporal-client.service.js +15 -6
- package/dist/client/temporal-client.service.js.map +1 -1
- package/dist/client/temporal-schedule.service.d.ts +21 -5
- package/dist/client/temporal-schedule.service.js +42 -10
- package/dist/client/temporal-schedule.service.js.map +1 -1
- package/dist/constants.d.ts +47 -70
- package/dist/constants.js +51 -74
- package/dist/constants.js.map +1 -1
- package/dist/decorators/activity.decorator.d.ts +3 -0
- package/dist/decorators/activity.decorator.js +39 -0
- package/dist/decorators/activity.decorator.js.map +1 -0
- package/dist/decorators/index.d.ts +4 -5
- package/dist/decorators/index.js +17 -19
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/parameter.decorator.d.ts +7 -0
- package/dist/decorators/parameter.decorator.js +69 -0
- package/dist/decorators/parameter.decorator.js.map +1 -0
- package/dist/decorators/{scheduling.decorators.d.ts → scheduling.decorator.d.ts} +1 -1
- package/dist/decorators/{scheduling.decorators.js → scheduling.decorator.js} +24 -1
- package/dist/decorators/scheduling.decorator.js.map +1 -0
- package/dist/decorators/workflow.decorator.d.ts +3 -0
- package/dist/decorators/workflow.decorator.js +58 -0
- package/dist/decorators/workflow.decorator.js.map +1 -0
- package/dist/discovery/index.d.ts +2 -2
- package/dist/discovery/index.js +2 -2
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/{workflow-discovery.service.d.ts → temporal-discovery.service.d.ts} +21 -18
- package/dist/discovery/temporal-discovery.service.js +190 -0
- package/dist/discovery/temporal-discovery.service.js.map +1 -0
- package/dist/discovery/{schedule-manager.service.d.ts → temporal-schedule-manager.service.d.ts} +20 -15
- package/dist/discovery/{schedule-manager.service.js → temporal-schedule-manager.service.js} +96 -76
- package/dist/discovery/temporal-schedule-manager.service.js.map +1 -0
- package/dist/index.d.ts +6 -11
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +193 -0
- package/dist/interfaces.js +9 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/temporal.module.d.ts +2 -1
- package/dist/temporal.module.js +84 -49
- package/dist/temporal.module.js.map +1 -1
- package/dist/temporal.service.d.ts +34 -26
- package/dist/temporal.service.js +76 -47
- package/dist/temporal.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/worker/index.d.ts +1 -1
- package/dist/worker/index.js +1 -1
- package/dist/worker/index.js.map +1 -1
- package/dist/worker/temporal-metadata.accessor.d.ts +13 -5
- package/dist/worker/temporal-metadata.accessor.js +38 -26
- package/dist/worker/temporal-metadata.accessor.js.map +1 -1
- package/dist/worker/{worker-manager.service.d.ts → temporal-worker-manager.service.d.ts} +13 -4
- package/dist/worker/{worker-manager.service.js → temporal-worker-manager.service.js} +58 -22
- package/dist/worker/temporal-worker-manager.service.js.map +1 -0
- package/dist/worker/temporal-worker.module.d.ts +14 -4
- package/dist/worker/temporal-worker.module.js +81 -15
- package/dist/worker/temporal-worker.module.js.map +1 -1
- package/package.json +13 -7
- package/dist/decorators/communication.decorators.d.ts +0 -5
- package/dist/decorators/communication.decorators.js +0 -66
- package/dist/decorators/communication.decorators.js.map +0 -1
- package/dist/decorators/core.decorators.d.ts +0 -6
- package/dist/decorators/core.decorators.js +0 -87
- package/dist/decorators/core.decorators.js.map +0 -1
- package/dist/decorators/parameter.decorators.d.ts +0 -2
- package/dist/decorators/parameter.decorators.js +0 -29
- package/dist/decorators/parameter.decorators.js.map +0 -1
- package/dist/decorators/scheduling.decorators.js.map +0 -1
- package/dist/decorators/workflow-starter.decorator.d.ts +0 -2
- package/dist/decorators/workflow-starter.decorator.js +0 -14
- package/dist/decorators/workflow-starter.decorator.js.map +0 -1
- package/dist/discovery/schedule-manager.service.js.map +0 -1
- package/dist/discovery/workflow-discovery.service.js +0 -216
- package/dist/discovery/workflow-discovery.service.js.map +0 -1
- package/dist/interfaces/activity.interface.d.ts +0 -8
- package/dist/interfaces/activity.interface.js +0 -3
- package/dist/interfaces/activity.interface.js.map +0 -1
- package/dist/interfaces/core.interface.d.ts +0 -112
- package/dist/interfaces/core.interface.js +0 -3
- package/dist/interfaces/core.interface.js.map +0 -1
- package/dist/interfaces/discovery.interface.d.ts +0 -61
- package/dist/interfaces/discovery.interface.js +0 -3
- package/dist/interfaces/discovery.interface.js.map +0 -1
- package/dist/interfaces/index.d.ts +0 -9
- package/dist/interfaces/index.js +0 -29
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/scheduling.interface.d.ts +0 -17
- package/dist/interfaces/scheduling.interface.js +0 -3
- package/dist/interfaces/scheduling.interface.js.map +0 -1
- package/dist/interfaces/worker.interface.d.ts +0 -23
- package/dist/interfaces/worker.interface.js +0 -3
- package/dist/interfaces/worker.interface.js.map +0 -1
- package/dist/interfaces/workflow.interface.d.ts +0 -55
- package/dist/interfaces/workflow.interface.js +0 -3
- package/dist/interfaces/workflow.interface.js.map +0 -1
- package/dist/worker/worker-manager.service.js.map +0 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActivityMethod = exports.Activity = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const Activity = (options = {}) => {
|
|
7
|
+
return (target) => {
|
|
8
|
+
Reflect.defineMetadata(constants_1.TEMPORAL_ACTIVITY, options, target);
|
|
9
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_ACTIVITY, options)(target);
|
|
10
|
+
return target;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.Activity = Activity;
|
|
14
|
+
const ActivityMethod = (options) => {
|
|
15
|
+
return (_target, propertyKey, descriptor) => {
|
|
16
|
+
let methodName;
|
|
17
|
+
let methodOptions = {};
|
|
18
|
+
if (typeof options === 'string') {
|
|
19
|
+
methodName = options;
|
|
20
|
+
methodOptions = { name: options };
|
|
21
|
+
}
|
|
22
|
+
else if (options && typeof options === 'object') {
|
|
23
|
+
methodName = options.name || propertyKey.toString();
|
|
24
|
+
methodOptions = options;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
methodName = propertyKey.toString();
|
|
28
|
+
}
|
|
29
|
+
const metadata = {
|
|
30
|
+
name: methodName,
|
|
31
|
+
...methodOptions,
|
|
32
|
+
};
|
|
33
|
+
Reflect.defineMetadata(constants_1.TEMPORAL_ACTIVITY_METHOD, metadata, descriptor.value);
|
|
34
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_ACTIVITY_METHOD, metadata)(descriptor.value);
|
|
35
|
+
return descriptor;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
exports.ActivityMethod = ActivityMethod;
|
|
39
|
+
//# sourceMappingURL=activity.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.decorator.js","sourceRoot":"","sources":["../../src/decorators/activity.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,4CAA2E;AAwBpE,MAAM,QAAQ,GAAG,CAAC,UAA2B,EAAE,EAAkB,EAAE;IACtE,OAAO,CAAC,MAAW,EAAE,EAAE;QACnB,OAAO,CAAC,cAAc,CAAC,6BAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAA,oBAAW,EAAC,6BAAiB,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC,CAAC;AANW,QAAA,QAAQ,YAMnB;AAqCK,MAAM,cAAc,GAAG,CAAC,OAAwC,EAAmB,EAAE;IACxF,OAAO,CAAC,OAAgB,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QAEtF,IAAI,UAAkB,CAAC;QACvB,IAAI,aAAa,GAA0B,EAAE,CAAC;QAE9C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,UAAU,GAAG,OAAO,CAAC;YACrB,aAAa,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACtC,CAAC;aAAM,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChD,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YACpD,aAAa,GAAG,OAAO,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC;QAGD,MAAM,QAAQ,GAAG;YACb,IAAI,EAAE,UAAU;YAChB,GAAG,aAAa;SACnB,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,oCAAwB,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7E,IAAA,oBAAW,EAAC,oCAAwB,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElE,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC,CAAC;AA3BW,QAAA,cAAc,kBA2BzB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export * from './workflow-starter.decorator';
|
|
1
|
+
export { Activity, ActivityMethod } from './activity.decorator';
|
|
2
|
+
export { Signal, Query } from './workflow.decorator';
|
|
3
|
+
export { Scheduled, Cron, Interval } from './scheduling.decorator';
|
|
4
|
+
export { WorkflowParam, WorkflowContext, WorkflowId, RunId, TaskQueue, } from './parameter.decorator';
|
package/dist/decorators/index.js
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
3
|
+
exports.TaskQueue = exports.RunId = exports.WorkflowId = exports.WorkflowContext = exports.WorkflowParam = exports.Interval = exports.Cron = exports.Scheduled = exports.Query = exports.Signal = exports.ActivityMethod = exports.Activity = void 0;
|
|
4
|
+
var activity_decorator_1 = require("./activity.decorator");
|
|
5
|
+
Object.defineProperty(exports, "Activity", { enumerable: true, get: function () { return activity_decorator_1.Activity; } });
|
|
6
|
+
Object.defineProperty(exports, "ActivityMethod", { enumerable: true, get: function () { return activity_decorator_1.ActivityMethod; } });
|
|
7
|
+
var workflow_decorator_1 = require("./workflow.decorator");
|
|
8
|
+
Object.defineProperty(exports, "Signal", { enumerable: true, get: function () { return workflow_decorator_1.Signal; } });
|
|
9
|
+
Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return workflow_decorator_1.Query; } });
|
|
10
|
+
var scheduling_decorator_1 = require("./scheduling.decorator");
|
|
11
|
+
Object.defineProperty(exports, "Scheduled", { enumerable: true, get: function () { return scheduling_decorator_1.Scheduled; } });
|
|
12
|
+
Object.defineProperty(exports, "Cron", { enumerable: true, get: function () { return scheduling_decorator_1.Cron; } });
|
|
13
|
+
Object.defineProperty(exports, "Interval", { enumerable: true, get: function () { return scheduling_decorator_1.Interval; } });
|
|
14
|
+
var parameter_decorator_1 = require("./parameter.decorator");
|
|
15
|
+
Object.defineProperty(exports, "WorkflowParam", { enumerable: true, get: function () { return parameter_decorator_1.WorkflowParam; } });
|
|
16
|
+
Object.defineProperty(exports, "WorkflowContext", { enumerable: true, get: function () { return parameter_decorator_1.WorkflowContext; } });
|
|
17
|
+
Object.defineProperty(exports, "WorkflowId", { enumerable: true, get: function () { return parameter_decorator_1.WorkflowId; } });
|
|
18
|
+
Object.defineProperty(exports, "RunId", { enumerable: true, get: function () { return parameter_decorator_1.RunId; } });
|
|
19
|
+
Object.defineProperty(exports, "TaskQueue", { enumerable: true, get: function () { return parameter_decorator_1.TaskQueue; } });
|
|
22
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;AAaA,2DAAgE;AAAvD,8GAAA,QAAQ,OAAA;AAAE,oHAAA,cAAc,OAAA;AAKjC,2DAAqD;AAA5C,4GAAA,MAAM,OAAA;AAAE,2GAAA,KAAK,OAAA;AAKtB,+DAAmE;AAA1D,iHAAA,SAAS,OAAA;AAAE,4GAAA,IAAI,OAAA;AAAE,gHAAA,QAAQ,OAAA;AAKlC,6DAM+B;AAL3B,oHAAA,aAAa,OAAA;AACb,sHAAA,eAAe,OAAA;AACf,iHAAA,UAAU,OAAA;AACV,4GAAA,KAAK,OAAA;AACL,gHAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { WorkflowParameterMetadata } from '../interfaces';
|
|
2
|
+
export declare const WorkflowParam: (...dataOrPipes: (number | import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>> | undefined)[]) => ParameterDecorator;
|
|
3
|
+
export declare const WorkflowContext: () => ParameterDecorator;
|
|
4
|
+
export declare const WorkflowId: () => ParameterDecorator;
|
|
5
|
+
export declare const RunId: () => ParameterDecorator;
|
|
6
|
+
export declare const TaskQueue: () => ParameterDecorator;
|
|
7
|
+
export declare function getParameterMetadata(target: any, propertyKey: string | symbol): WorkflowParameterMetadata[];
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaskQueue = exports.RunId = exports.WorkflowId = exports.WorkflowContext = exports.WorkflowParam = void 0;
|
|
4
|
+
exports.getParameterMetadata = getParameterMetadata;
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
exports.WorkflowParam = (0, common_1.createParamDecorator)((index, ctx) => {
|
|
8
|
+
return (target, propertyKey, parameterIndex) => {
|
|
9
|
+
const existingParams = Reflect.getMetadata(constants_1.WORKFLOW_PARAMS_METADATA, target, propertyKey) || [];
|
|
10
|
+
existingParams[parameterIndex] = {
|
|
11
|
+
type: 'param',
|
|
12
|
+
index: index !== undefined ? index : parameterIndex,
|
|
13
|
+
extractAll: index === undefined,
|
|
14
|
+
};
|
|
15
|
+
Reflect.defineMetadata(constants_1.WORKFLOW_PARAMS_METADATA, existingParams, target, propertyKey);
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
const WorkflowContext = () => {
|
|
19
|
+
return (target, propertyKey, parameterIndex) => {
|
|
20
|
+
if (!propertyKey)
|
|
21
|
+
return;
|
|
22
|
+
const existingParams = Reflect.getMetadata(constants_1.WORKFLOW_PARAMS_METADATA, target, propertyKey) || [];
|
|
23
|
+
existingParams[parameterIndex] = {
|
|
24
|
+
type: 'context',
|
|
25
|
+
};
|
|
26
|
+
Reflect.defineMetadata(constants_1.WORKFLOW_PARAMS_METADATA, existingParams, target, propertyKey);
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
exports.WorkflowContext = WorkflowContext;
|
|
30
|
+
const WorkflowId = () => {
|
|
31
|
+
return (target, propertyKey, parameterIndex) => {
|
|
32
|
+
if (!propertyKey)
|
|
33
|
+
return;
|
|
34
|
+
const existingParams = Reflect.getMetadata(constants_1.WORKFLOW_PARAMS_METADATA, target, propertyKey) || [];
|
|
35
|
+
existingParams[parameterIndex] = {
|
|
36
|
+
type: 'workflowId',
|
|
37
|
+
};
|
|
38
|
+
Reflect.defineMetadata(constants_1.WORKFLOW_PARAMS_METADATA, existingParams, target, propertyKey);
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.WorkflowId = WorkflowId;
|
|
42
|
+
const RunId = () => {
|
|
43
|
+
return (target, propertyKey, parameterIndex) => {
|
|
44
|
+
if (!propertyKey)
|
|
45
|
+
return;
|
|
46
|
+
const existingParams = Reflect.getMetadata(constants_1.WORKFLOW_PARAMS_METADATA, target, propertyKey) || [];
|
|
47
|
+
existingParams[parameterIndex] = {
|
|
48
|
+
type: 'runId',
|
|
49
|
+
};
|
|
50
|
+
Reflect.defineMetadata(constants_1.WORKFLOW_PARAMS_METADATA, existingParams, target, propertyKey);
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
exports.RunId = RunId;
|
|
54
|
+
const TaskQueue = () => {
|
|
55
|
+
return (target, propertyKey, parameterIndex) => {
|
|
56
|
+
if (!propertyKey)
|
|
57
|
+
return;
|
|
58
|
+
const existingParams = Reflect.getMetadata(constants_1.WORKFLOW_PARAMS_METADATA, target, propertyKey) || [];
|
|
59
|
+
existingParams[parameterIndex] = {
|
|
60
|
+
type: 'taskQueue',
|
|
61
|
+
};
|
|
62
|
+
Reflect.defineMetadata(constants_1.WORKFLOW_PARAMS_METADATA, existingParams, target, propertyKey);
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
exports.TaskQueue = TaskQueue;
|
|
66
|
+
function getParameterMetadata(target, propertyKey) {
|
|
67
|
+
return Reflect.getMetadata(constants_1.WORKFLOW_PARAMS_METADATA, target, propertyKey) || [];
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=parameter.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter.decorator.js","sourceRoot":"","sources":["../../src/decorators/parameter.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CronOptions, IntervalOptions, ScheduledOptions } from '../interfaces';
|
|
2
2
|
export declare const Scheduled: (options: ScheduledOptions) => MethodDecorator;
|
|
3
3
|
export declare const Cron: (cronExpression: string, options: CronOptions) => MethodDecorator;
|
|
4
4
|
export declare const Interval: (interval: string, options: IntervalOptions) => MethodDecorator;
|
|
@@ -14,6 +14,12 @@ const Scheduled = (options) => {
|
|
|
14
14
|
if (options.cron && options.interval) {
|
|
15
15
|
throw new Error('@Scheduled cannot have both cron and interval');
|
|
16
16
|
}
|
|
17
|
+
if (options.cron && !isValidCronExpression(options.cron)) {
|
|
18
|
+
throw new Error(`Invalid cron expression: ${options.cron}`);
|
|
19
|
+
}
|
|
20
|
+
if (options.interval && !isValidIntervalExpression(options.interval)) {
|
|
21
|
+
throw new Error(`Invalid interval expression: ${options.interval}`);
|
|
22
|
+
}
|
|
17
23
|
Reflect.defineMetadata(constants_1.TEMPORAL_SCHEDULED_WORKFLOW, options, descriptor.value);
|
|
18
24
|
(0, common_1.SetMetadata)(constants_1.TEMPORAL_SCHEDULED_WORKFLOW, options)(descriptor.value);
|
|
19
25
|
return descriptor;
|
|
@@ -34,4 +40,21 @@ const Interval = (interval, options) => {
|
|
|
34
40
|
});
|
|
35
41
|
};
|
|
36
42
|
exports.Interval = Interval;
|
|
37
|
-
|
|
43
|
+
function isValidCronExpression(cron) {
|
|
44
|
+
if (!cron || typeof cron !== 'string') {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
const parts = cron.trim().split(/\s+/);
|
|
48
|
+
if (parts.length !== 5 && parts.length !== 6) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return parts.every((part) => part.length > 0 && part !== '');
|
|
52
|
+
}
|
|
53
|
+
function isValidIntervalExpression(interval) {
|
|
54
|
+
if (!interval || typeof interval !== 'string') {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
const intervalPattern = /^\d+[smhd]$/;
|
|
58
|
+
return intervalPattern.test(interval.trim());
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=scheduling.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduling.decorator.js","sourceRoot":"","sources":["../../src/decorators/scheduling.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,4CAA2D;AAkCpD,MAAM,SAAS,GAAG,CAAC,OAAyB,EAAmB,EAAE;IACpE,OAAO,CAAC,OAAgB,EAAE,YAA6B,EAAE,UAA8B,EAAE,EAAE;QAEvF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;QAGD,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QAGD,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,CAAC,cAAc,CAAC,uCAA2B,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAA,oBAAW,EAAC,uCAA2B,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpE,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC,CAAC;AA7BW,QAAA,SAAS,aA6BpB;AAgCK,MAAM,IAAI,GAAG,CAAC,cAAsB,EAAE,OAAoB,EAAmB,EAAE;IAClF,OAAO,IAAA,iBAAS,EAAC;QACb,GAAG,OAAO;QACV,IAAI,EAAE,cAAc;KACvB,CAAC,CAAC;AACP,CAAC,CAAC;AALW,QAAA,IAAI,QAKf;AAgCK,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAE,OAAwB,EAAmB,EAAE;IACpF,OAAO,IAAA,iBAAS,EAAC;QACb,GAAG,OAAO;QACV,QAAQ;KACX,CAAC,CAAC;AACP,CAAC,CAAC;AALW,QAAA,QAAQ,YAKnB;AAUF,SAAS,qBAAqB,CAAC,IAAY;IACvC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAGvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;AACjE,CAAC;AAMD,SAAS,yBAAyB,CAAC,QAAgB;IAC/C,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,MAAM,eAAe,GAAG,aAAa,CAAC;IACtC,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Query = exports.Signal = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const Signal = (nameOrOptions) => {
|
|
7
|
+
return (_target, propertyKey, descriptor) => {
|
|
8
|
+
let signalName;
|
|
9
|
+
let signalOptions = {};
|
|
10
|
+
if (typeof nameOrOptions === 'string') {
|
|
11
|
+
signalName = nameOrOptions;
|
|
12
|
+
signalOptions = { name: nameOrOptions };
|
|
13
|
+
}
|
|
14
|
+
else if (nameOrOptions?.name) {
|
|
15
|
+
signalName = nameOrOptions.name;
|
|
16
|
+
signalOptions = nameOrOptions;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
signalName = propertyKey.toString();
|
|
20
|
+
signalOptions = { name: signalName };
|
|
21
|
+
}
|
|
22
|
+
const metadata = {
|
|
23
|
+
name: signalName,
|
|
24
|
+
...signalOptions,
|
|
25
|
+
};
|
|
26
|
+
Reflect.defineMetadata(constants_1.TEMPORAL_SIGNAL_METHOD, metadata, descriptor.value);
|
|
27
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_SIGNAL_METHOD, metadata)(descriptor.value);
|
|
28
|
+
return descriptor;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
exports.Signal = Signal;
|
|
32
|
+
const Query = (nameOrOptions) => {
|
|
33
|
+
return (_target, propertyKey, descriptor) => {
|
|
34
|
+
let queryName;
|
|
35
|
+
let queryOptions = {};
|
|
36
|
+
if (typeof nameOrOptions === 'string') {
|
|
37
|
+
queryName = nameOrOptions;
|
|
38
|
+
queryOptions = { name: nameOrOptions };
|
|
39
|
+
}
|
|
40
|
+
else if (nameOrOptions?.name) {
|
|
41
|
+
queryName = nameOrOptions.name;
|
|
42
|
+
queryOptions = nameOrOptions;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
queryName = propertyKey.toString();
|
|
46
|
+
queryOptions = { name: queryName };
|
|
47
|
+
}
|
|
48
|
+
const metadata = {
|
|
49
|
+
name: queryName,
|
|
50
|
+
...queryOptions,
|
|
51
|
+
};
|
|
52
|
+
Reflect.defineMetadata(constants_1.TEMPORAL_QUERY_METHOD, metadata, descriptor.value);
|
|
53
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_QUERY_METHOD, metadata)(descriptor.value);
|
|
54
|
+
return descriptor;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
exports.Query = Query;
|
|
58
|
+
//# sourceMappingURL=workflow.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.decorator.js","sourceRoot":"","sources":["../../src/decorators/workflow.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,4CAA6E;AAsBtE,MAAM,MAAM,GAAG,CAAC,aAAsC,EAAmB,EAAE;IAC9E,OAAO,CAAC,OAAgB,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACtF,IAAI,UAAkB,CAAC;QACvB,IAAI,aAAa,GAAkB,EAAE,CAAC;QAEtC,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACpC,UAAU,GAAG,aAAa,CAAC;YAC3B,aAAa,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAC5C,CAAC;aAAM,IAAI,aAAa,EAAE,IAAI,EAAE,CAAC;YAC7B,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC;YAChC,aAAa,GAAG,aAAa,CAAC;QAClC,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;YACpC,aAAa,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,QAAQ,GAAG;YACb,IAAI,EAAE,UAAU;YAChB,GAAG,aAAa;SACnB,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,kCAAsB,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3E,IAAA,oBAAW,EAAC,kCAAsB,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChE,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC,CAAC;AAzBW,QAAA,MAAM,UAyBjB;AAqBK,MAAM,KAAK,GAAG,CAAC,aAAqC,EAAmB,EAAE;IAC5E,OAAO,CAAC,OAAgB,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACtF,IAAI,SAAiB,CAAC;QACtB,IAAI,YAAY,GAAiB,EAAE,CAAC;QAEpC,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACpC,SAAS,GAAG,aAAa,CAAC;YAC1B,YAAY,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAC3C,CAAC;aAAM,IAAI,aAAa,EAAE,IAAI,EAAE,CAAC;YAC7B,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC;YAC/B,YAAY,GAAG,aAAa,CAAC;QACjC,CAAC;aAAM,CAAC;YACJ,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;YACnC,YAAY,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG;YACb,IAAI,EAAE,SAAS;YACf,GAAG,YAAY;SAClB,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,iCAAqB,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1E,IAAA,oBAAW,EAAC,iCAAqB,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC,CAAC;AAzBW,QAAA,KAAK,SAyBhB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './schedule-manager.service';
|
|
1
|
+
export * from './temporal-discovery.service';
|
|
2
|
+
export * from './temporal-schedule-manager.service';
|
package/dist/discovery/index.js
CHANGED
|
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./schedule-manager.service"), exports);
|
|
17
|
+
__exportStar(require("./temporal-discovery.service"), exports);
|
|
18
|
+
__exportStar(require("./temporal-schedule-manager.service"), exports);
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,+DAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,+DAA6C;AAC7C,sEAAoD"}
|
|
@@ -1,36 +1,39 @@
|
|
|
1
1
|
import { OnModuleInit } from '@nestjs/common';
|
|
2
2
|
import { DiscoveryService, MetadataScanner } from '@nestjs/core';
|
|
3
|
-
import {
|
|
4
|
-
export declare class
|
|
3
|
+
import { DiscoveryStats, QueryMethodInfo, ScheduledMethodInfo, SignalMethodInfo } from '../interfaces';
|
|
4
|
+
export declare class TemporalDiscoveryService implements OnModuleInit {
|
|
5
5
|
private readonly discoveryService;
|
|
6
6
|
private readonly metadataScanner;
|
|
7
7
|
private readonly logger;
|
|
8
|
-
private readonly workflowControllers;
|
|
9
8
|
private readonly scheduledWorkflows;
|
|
10
|
-
private readonly
|
|
9
|
+
private readonly signals;
|
|
10
|
+
private readonly queries;
|
|
11
11
|
constructor(discoveryService: DiscoveryService, metadataScanner: MetadataScanner);
|
|
12
12
|
onModuleInit(): Promise<void>;
|
|
13
|
-
private
|
|
13
|
+
private discoverComponents;
|
|
14
14
|
private processWrapper;
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private createWorkflowMethodInfo;
|
|
15
|
+
private discoverMethods;
|
|
16
|
+
private categorizeMethod;
|
|
18
17
|
private createScheduledMethodInfo;
|
|
19
18
|
private createSignalMethodInfo;
|
|
20
19
|
private createQueryMethodInfo;
|
|
21
|
-
private indexWorkflowMethods;
|
|
22
|
-
private indexScheduledWorkflows;
|
|
23
|
-
private logDiscoveryResults;
|
|
24
|
-
private logControllerDetails;
|
|
25
|
-
private getDiscoveryStats;
|
|
26
|
-
getWorkflowControllers(): WorkflowControllerInfo[];
|
|
27
20
|
getScheduledWorkflows(): ScheduledMethodInfo[];
|
|
28
|
-
getWorkflowController(name: string): WorkflowControllerInfo | undefined;
|
|
29
|
-
getWorkflowMethod(workflowName: string): WorkflowMethodInfo | undefined;
|
|
30
21
|
getScheduledWorkflow(scheduleId: string): ScheduledMethodInfo | undefined;
|
|
31
|
-
getWorkflowNames(): string[];
|
|
32
22
|
getScheduleIds(): string[];
|
|
33
|
-
hasWorkflow(workflowName: string): boolean;
|
|
34
23
|
hasSchedule(scheduleId: string): boolean;
|
|
24
|
+
getSignals(): SignalMethodInfo[];
|
|
25
|
+
getSignal(signalName: string): SignalMethodInfo | undefined;
|
|
26
|
+
getQueries(): QueryMethodInfo[];
|
|
27
|
+
getQuery(queryName: string): QueryMethodInfo | undefined;
|
|
35
28
|
getStats(): DiscoveryStats;
|
|
29
|
+
getHealthStatus(): {
|
|
30
|
+
status: 'healthy' | 'degraded';
|
|
31
|
+
discoveredItems: DiscoveryStats;
|
|
32
|
+
lastDiscovery: Date | null;
|
|
33
|
+
};
|
|
34
|
+
getWorkflowControllers(): any[];
|
|
35
|
+
getWorkflowMethod(workflowName: string): any;
|
|
36
|
+
getWorkflowNames(): string[];
|
|
37
|
+
hasWorkflow(workflowName: string): boolean;
|
|
38
|
+
private logDiscoveryResults;
|
|
36
39
|
}
|
|
@@ -0,0 +1,190 @@
|
|
|
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 TemporalDiscoveryService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.TemporalDiscoveryService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const core_1 = require("@nestjs/core");
|
|
16
|
+
const constants_1 = require("../constants");
|
|
17
|
+
let TemporalDiscoveryService = TemporalDiscoveryService_1 = class TemporalDiscoveryService {
|
|
18
|
+
constructor(discoveryService, metadataScanner) {
|
|
19
|
+
this.discoveryService = discoveryService;
|
|
20
|
+
this.metadataScanner = metadataScanner;
|
|
21
|
+
this.logger = new common_1.Logger(TemporalDiscoveryService_1.name);
|
|
22
|
+
this.scheduledWorkflows = new Map();
|
|
23
|
+
this.signals = new Map();
|
|
24
|
+
this.queries = new Map();
|
|
25
|
+
}
|
|
26
|
+
async onModuleInit() {
|
|
27
|
+
await this.discoverComponents();
|
|
28
|
+
}
|
|
29
|
+
async discoverComponents() {
|
|
30
|
+
const allWrappers = [
|
|
31
|
+
...this.discoveryService.getProviders(),
|
|
32
|
+
...this.discoveryService.getControllers(),
|
|
33
|
+
];
|
|
34
|
+
for (const wrapper of allWrappers) {
|
|
35
|
+
await this.processWrapper(wrapper);
|
|
36
|
+
}
|
|
37
|
+
this.logDiscoveryResults();
|
|
38
|
+
}
|
|
39
|
+
async processWrapper(wrapper) {
|
|
40
|
+
const { instance, metatype } = wrapper;
|
|
41
|
+
if (!instance || !metatype) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.logger.debug(`Processing wrapper: ${metatype.name}`);
|
|
45
|
+
await this.discoverMethods(instance);
|
|
46
|
+
}
|
|
47
|
+
async discoverMethods(instance) {
|
|
48
|
+
const prototype = Object.getPrototypeOf(instance);
|
|
49
|
+
const methodNames = this.metadataScanner
|
|
50
|
+
.scanFromPrototype(instance, prototype, (methodName) => methodName !== 'constructor' ? methodName : null)
|
|
51
|
+
.filter((methodName) => Boolean(methodName));
|
|
52
|
+
for (const methodName of methodNames) {
|
|
53
|
+
const method = prototype[methodName];
|
|
54
|
+
if (!method || typeof method !== 'function') {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
this.categorizeMethod(instance, methodName, method);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
categorizeMethod(instance, methodName, method) {
|
|
61
|
+
const boundMethod = method.bind(instance);
|
|
62
|
+
const scheduleMetadata = Reflect.getMetadata(constants_1.TEMPORAL_SCHEDULED_WORKFLOW, method);
|
|
63
|
+
if (scheduleMetadata) {
|
|
64
|
+
const scheduledInfo = this.createScheduledMethodInfo(methodName, scheduleMetadata, boundMethod, instance);
|
|
65
|
+
this.scheduledWorkflows.set(scheduleMetadata.scheduleId, scheduledInfo);
|
|
66
|
+
}
|
|
67
|
+
const signalMetadata = Reflect.getMetadata(constants_1.TEMPORAL_SIGNAL_METHOD, method);
|
|
68
|
+
if (signalMetadata) {
|
|
69
|
+
const signalInfo = this.createSignalMethodInfo(methodName, signalMetadata, boundMethod);
|
|
70
|
+
this.signals.set(signalMetadata.name || methodName, signalInfo);
|
|
71
|
+
}
|
|
72
|
+
const queryMetadata = Reflect.getMetadata(constants_1.TEMPORAL_QUERY_METHOD, method);
|
|
73
|
+
if (queryMetadata) {
|
|
74
|
+
const queryInfo = this.createQueryMethodInfo(methodName, queryMetadata, boundMethod);
|
|
75
|
+
this.queries.set(queryMetadata.name || methodName, queryInfo);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
createScheduledMethodInfo(methodName, scheduleMetadata, boundMethod, instance) {
|
|
79
|
+
return {
|
|
80
|
+
methodName,
|
|
81
|
+
workflowName: scheduleMetadata.workflowName || methodName,
|
|
82
|
+
scheduleOptions: scheduleMetadata,
|
|
83
|
+
workflowOptions: {},
|
|
84
|
+
handler: boundMethod,
|
|
85
|
+
controllerInfo: {
|
|
86
|
+
instance,
|
|
87
|
+
metatype: instance.constructor,
|
|
88
|
+
taskQueue: undefined,
|
|
89
|
+
methods: [],
|
|
90
|
+
signals: [],
|
|
91
|
+
queries: [],
|
|
92
|
+
scheduledMethods: [],
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
createSignalMethodInfo(methodName, metadata, boundMethod) {
|
|
97
|
+
return {
|
|
98
|
+
methodName,
|
|
99
|
+
signalName: metadata.name || methodName,
|
|
100
|
+
options: metadata,
|
|
101
|
+
handler: boundMethod,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
createQueryMethodInfo(methodName, metadata, boundMethod) {
|
|
105
|
+
return {
|
|
106
|
+
methodName,
|
|
107
|
+
queryName: metadata.name || methodName,
|
|
108
|
+
options: metadata,
|
|
109
|
+
handler: boundMethod,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
getScheduledWorkflows() {
|
|
113
|
+
return Array.from(this.scheduledWorkflows.values());
|
|
114
|
+
}
|
|
115
|
+
getScheduledWorkflow(scheduleId) {
|
|
116
|
+
return this.scheduledWorkflows.get(scheduleId);
|
|
117
|
+
}
|
|
118
|
+
getScheduleIds() {
|
|
119
|
+
return Array.from(this.scheduledWorkflows.keys());
|
|
120
|
+
}
|
|
121
|
+
hasSchedule(scheduleId) {
|
|
122
|
+
return this.scheduledWorkflows.has(scheduleId);
|
|
123
|
+
}
|
|
124
|
+
getSignals() {
|
|
125
|
+
return Array.from(this.signals.values());
|
|
126
|
+
}
|
|
127
|
+
getSignal(signalName) {
|
|
128
|
+
return this.signals.get(signalName);
|
|
129
|
+
}
|
|
130
|
+
getQueries() {
|
|
131
|
+
return Array.from(this.queries.values());
|
|
132
|
+
}
|
|
133
|
+
getQuery(queryName) {
|
|
134
|
+
return this.queries.get(queryName);
|
|
135
|
+
}
|
|
136
|
+
getStats() {
|
|
137
|
+
return {
|
|
138
|
+
controllers: 0,
|
|
139
|
+
methods: 0,
|
|
140
|
+
scheduled: this.scheduledWorkflows.size,
|
|
141
|
+
signals: this.signals.size,
|
|
142
|
+
queries: this.queries.size,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
getHealthStatus() {
|
|
146
|
+
const stats = this.getStats();
|
|
147
|
+
const status = stats.scheduled > 0 || stats.signals > 0 || stats.queries > 0 ? 'healthy' : 'degraded';
|
|
148
|
+
return {
|
|
149
|
+
status,
|
|
150
|
+
discoveredItems: stats,
|
|
151
|
+
lastDiscovery: new Date(),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
getWorkflowControllers() {
|
|
155
|
+
this.logger.warn('getWorkflowControllers() is deprecated - workflow controllers are no longer supported');
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
getWorkflowMethod(workflowName) {
|
|
159
|
+
this.logger.warn('getWorkflowMethod() is deprecated - workflow methods are no longer supported');
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
getWorkflowNames() {
|
|
163
|
+
this.logger.warn('getWorkflowNames() is deprecated - workflow names are no longer supported');
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
hasWorkflow(workflowName) {
|
|
167
|
+
this.logger.warn('hasWorkflow() is deprecated - workflow existence check is no longer supported');
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
logDiscoveryResults() {
|
|
171
|
+
const stats = this.getStats();
|
|
172
|
+
this.logger.log(`Discovery completed: ${stats.scheduled} scheduled workflows, ${stats.signals} signals, ${stats.queries} queries`);
|
|
173
|
+
if (stats.scheduled > 0) {
|
|
174
|
+
this.logger.debug(`Discovered scheduled workflows: ${Array.from(this.scheduledWorkflows.keys()).join(', ')}`);
|
|
175
|
+
}
|
|
176
|
+
if (stats.signals > 0) {
|
|
177
|
+
this.logger.debug(`Discovered signals: ${Array.from(this.signals.keys()).join(', ')}`);
|
|
178
|
+
}
|
|
179
|
+
if (stats.queries > 0) {
|
|
180
|
+
this.logger.debug(`Discovered queries: ${Array.from(this.queries.keys()).join(', ')}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
exports.TemporalDiscoveryService = TemporalDiscoveryService;
|
|
185
|
+
exports.TemporalDiscoveryService = TemporalDiscoveryService = TemporalDiscoveryService_1 = __decorate([
|
|
186
|
+
(0, common_1.Injectable)(),
|
|
187
|
+
__metadata("design:paramtypes", [core_1.DiscoveryService,
|
|
188
|
+
core_1.MetadataScanner])
|
|
189
|
+
], TemporalDiscoveryService);
|
|
190
|
+
//# sourceMappingURL=temporal-discovery.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal-discovery.service.js","sourceRoot":"","sources":["../../src/discovery/temporal-discovery.service.ts"],"names":[],"mappings":"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"}
|