nestjs-temporal-core 2.0.2 → 2.0.4
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 +322 -134
- package/dist/client/index.js.map +1 -1
- package/dist/client/temporal-client.module.js +46 -19
- package/dist/client/temporal-client.module.js.map +1 -1
- package/dist/client/temporal-client.service.d.ts +7 -7
- package/dist/client/temporal-client.service.js +48 -6
- package/dist/client/temporal-client.service.js.map +1 -1
- package/dist/constants.d.ts +28 -1
- package/dist/constants.js +29 -2
- package/dist/constants.js.map +1 -1
- package/dist/decorators/activity-method.decorator.d.ts +2 -1
- package/dist/decorators/activity-method.decorator.js +21 -3
- package/dist/decorators/activity-method.decorator.js.map +1 -1
- package/dist/decorators/activity.decorator.d.ts +2 -1
- package/dist/decorators/activity.decorator.js +3 -3
- package/dist/decorators/activity.decorator.js.map +1 -1
- package/dist/decorators/index.d.ts +4 -0
- package/dist/decorators/index.js +4 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/query.decorator.d.ts +2 -0
- package/dist/decorators/query.decorator.js +26 -0
- package/dist/decorators/query.decorator.js.map +1 -0
- package/dist/decorators/scheduled-workflow.decorator.d.ts +13 -0
- package/dist/decorators/scheduled-workflow.decorator.js +28 -0
- package/dist/decorators/scheduled-workflow.decorator.js.map +1 -0
- package/dist/decorators/signal.decorator.d.ts +2 -0
- package/dist/decorators/signal.decorator.js +26 -0
- package/dist/decorators/signal.decorator.js.map +1 -0
- package/dist/decorators/workflow-method.decorator.d.ts +2 -0
- package/dist/decorators/workflow-method.decorator.js +29 -0
- package/dist/decorators/workflow-method.decorator.js.map +1 -0
- package/dist/decorators/workflow.decorator.d.ts +2 -2
- package/dist/decorators/workflow.decorator.js +12 -4
- package/dist/decorators/workflow.decorator.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/activity.interface.d.ts +20 -0
- package/dist/interfaces/activity.interface.js +3 -0
- package/dist/interfaces/activity.interface.js.map +1 -0
- package/dist/interfaces/base.interface.d.ts +4 -2
- package/dist/interfaces/client.interface.d.ts +27 -1
- package/dist/interfaces/index.d.ts +3 -0
- package/dist/interfaces/index.js +3 -0
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/schedule.interface.d.ts +17 -0
- package/dist/interfaces/schedule.interface.js +3 -0
- package/dist/interfaces/schedule.interface.js.map +1 -0
- package/dist/interfaces/worker.interface.d.ts +18 -3
- package/dist/interfaces/workflow.interface.d.ts +19 -0
- package/dist/interfaces/workflow.interface.js +3 -0
- package/dist/interfaces/workflow.interface.js.map +1 -0
- package/dist/schedule/index.d.ts +2 -0
- package/dist/schedule/index.js +19 -0
- package/dist/schedule/index.js.map +1 -0
- package/dist/schedule/temporal-schedule.module.d.ts +7 -0
- package/dist/schedule/temporal-schedule.module.js +94 -0
- package/dist/schedule/temporal-schedule.module.js.map +1 -0
- package/dist/schedule/temporal-schedule.service.d.ts +28 -0
- package/dist/schedule/temporal-schedule.service.js +230 -0
- package/dist/schedule/temporal-schedule.service.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/worker/temporal-metadata.accessor.d.ts +11 -0
- package/dist/worker/temporal-metadata.accessor.js +78 -1
- package/dist/worker/temporal-metadata.accessor.js.map +1 -1
- package/dist/worker/temporal-worker.module.d.ts +2 -1
- package/dist/worker/temporal-worker.module.js +17 -10
- package/dist/worker/temporal-worker.module.js.map +1 -1
- package/dist/worker/worker-manager.service.d.ts +8 -7
- package/dist/worker/worker-manager.service.js +116 -54
- package/dist/worker/worker-manager.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,25 +12,34 @@ const common_1 = require("@nestjs/common");
|
|
|
12
12
|
const client_1 = require("@temporalio/client");
|
|
13
13
|
const constants_1 = require("../constants");
|
|
14
14
|
const temporal_client_service_1 = require("./temporal-client.service");
|
|
15
|
-
let TemporalClientModule =
|
|
15
|
+
let TemporalClientModule = TemporalClientModule_1 = class TemporalClientModule {
|
|
16
16
|
static async createClient(options) {
|
|
17
17
|
let connection = null;
|
|
18
18
|
try {
|
|
19
|
+
this.logger.log(`Connecting to Temporal server at ${options.connection.address}`);
|
|
19
20
|
connection = await client_1.Connection.connect({
|
|
20
21
|
address: options.connection.address,
|
|
21
22
|
tls: options.connection.tls,
|
|
23
|
+
...(options.connection.connectionTimeout && {
|
|
24
|
+
connectionTimeout: options.connection.connectionTimeout,
|
|
25
|
+
}),
|
|
22
26
|
});
|
|
27
|
+
const namespace = options.namespace || constants_1.DEFAULT_NAMESPACE;
|
|
28
|
+
this.logger.log(`Connected to Temporal server, using namespace "${namespace}"`);
|
|
23
29
|
return new client_1.Client({
|
|
24
30
|
connection,
|
|
25
|
-
namespace
|
|
31
|
+
namespace,
|
|
26
32
|
});
|
|
27
33
|
}
|
|
28
34
|
catch (error) {
|
|
29
35
|
if (connection) {
|
|
30
|
-
await connection.close().catch(() => {
|
|
36
|
+
await connection.close().catch((closeError) => {
|
|
37
|
+
this.logger.error('Failed to close Temporal connection during error handling', closeError);
|
|
31
38
|
});
|
|
32
39
|
}
|
|
33
|
-
|
|
40
|
+
const errorMsg = `${constants_1.ERRORS.CLIENT_INITIALIZATION}: ${error.message}`;
|
|
41
|
+
this.logger.error(errorMsg, error.stack);
|
|
42
|
+
throw new Error(errorMsg);
|
|
34
43
|
}
|
|
35
44
|
}
|
|
36
45
|
static register(options) {
|
|
@@ -42,8 +51,12 @@ let TemporalClientModule = exports.TemporalClientModule = TemporalClientModule_1
|
|
|
42
51
|
return this.addShutdownHook(client);
|
|
43
52
|
}
|
|
44
53
|
catch (error) {
|
|
45
|
-
this.logger.error('Failed to initialize Temporal client',
|
|
46
|
-
|
|
54
|
+
this.logger.error('Failed to initialize Temporal client', error);
|
|
55
|
+
if (options.allowConnectionFailure !== false) {
|
|
56
|
+
this.logger.warn('Continuing application startup without Temporal client');
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
47
60
|
}
|
|
48
61
|
},
|
|
49
62
|
};
|
|
@@ -51,7 +64,7 @@ let TemporalClientModule = exports.TemporalClientModule = TemporalClientModule_1
|
|
|
51
64
|
module: TemporalClientModule_1,
|
|
52
65
|
providers: [
|
|
53
66
|
{
|
|
54
|
-
provide: constants_1.
|
|
67
|
+
provide: constants_1.TEMPORAL_CLIENT_MODULE_OPTIONS,
|
|
55
68
|
useValue: options,
|
|
56
69
|
},
|
|
57
70
|
clientProvider,
|
|
@@ -69,16 +82,24 @@ let TemporalClientModule = exports.TemporalClientModule = TemporalClientModule_1
|
|
|
69
82
|
return this.addShutdownHook(client);
|
|
70
83
|
}
|
|
71
84
|
catch (error) {
|
|
72
|
-
this.logger.error('Failed to initialize Temporal client',
|
|
73
|
-
|
|
85
|
+
this.logger.error('Failed to initialize Temporal client', error);
|
|
86
|
+
if (clientOptions.allowConnectionFailure !== false) {
|
|
87
|
+
this.logger.warn('Continuing application startup without Temporal client');
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
throw error;
|
|
74
91
|
}
|
|
75
92
|
},
|
|
76
|
-
inject: [constants_1.
|
|
93
|
+
inject: [constants_1.TEMPORAL_CLIENT_MODULE_OPTIONS],
|
|
77
94
|
};
|
|
78
95
|
return {
|
|
79
96
|
module: TemporalClientModule_1,
|
|
80
97
|
imports: options.imports || [],
|
|
81
|
-
providers: [
|
|
98
|
+
providers: [
|
|
99
|
+
...this.createAsyncProviders(options),
|
|
100
|
+
clientProvider,
|
|
101
|
+
temporal_client_service_1.TemporalClientService,
|
|
102
|
+
],
|
|
82
103
|
exports: [temporal_client_service_1.TemporalClientService],
|
|
83
104
|
};
|
|
84
105
|
}
|
|
@@ -86,7 +107,7 @@ let TemporalClientModule = exports.TemporalClientModule = TemporalClientModule_1
|
|
|
86
107
|
if (options.useFactory) {
|
|
87
108
|
return [
|
|
88
109
|
{
|
|
89
|
-
provide: constants_1.
|
|
110
|
+
provide: constants_1.TEMPORAL_CLIENT_MODULE_OPTIONS,
|
|
90
111
|
useFactory: options.useFactory,
|
|
91
112
|
inject: options.inject || [],
|
|
92
113
|
},
|
|
@@ -95,7 +116,7 @@ let TemporalClientModule = exports.TemporalClientModule = TemporalClientModule_1
|
|
|
95
116
|
if (options.useClass) {
|
|
96
117
|
return [
|
|
97
118
|
{
|
|
98
|
-
provide: constants_1.
|
|
119
|
+
provide: constants_1.TEMPORAL_CLIENT_MODULE_OPTIONS,
|
|
99
120
|
useFactory: async (optionsFactory) => await optionsFactory.createClientOptions(),
|
|
100
121
|
inject: [options.useClass],
|
|
101
122
|
},
|
|
@@ -108,26 +129,32 @@ let TemporalClientModule = exports.TemporalClientModule = TemporalClientModule_1
|
|
|
108
129
|
if (options.useExisting) {
|
|
109
130
|
return [
|
|
110
131
|
{
|
|
111
|
-
provide: constants_1.
|
|
132
|
+
provide: constants_1.TEMPORAL_CLIENT_MODULE_OPTIONS,
|
|
112
133
|
useFactory: async (optionsFactory) => await optionsFactory.createClientOptions(),
|
|
113
134
|
inject: [options.useExisting],
|
|
114
135
|
},
|
|
115
136
|
];
|
|
116
137
|
}
|
|
117
|
-
throw new Error(
|
|
138
|
+
throw new Error(constants_1.ERRORS.INVALID_OPTIONS);
|
|
118
139
|
}
|
|
119
140
|
static addShutdownHook(client) {
|
|
120
141
|
const enhancedClient = client;
|
|
121
|
-
enhancedClient.onApplicationShutdown = async () => {
|
|
142
|
+
enhancedClient.onApplicationShutdown = async (signal) => {
|
|
143
|
+
this.logger.log(`Closing Temporal client connection (signal: ${signal || 'unknown'})`);
|
|
122
144
|
if (client?.connection) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
145
|
+
try {
|
|
146
|
+
await client.connection.close();
|
|
147
|
+
this.logger.log('Temporal connection closed successfully');
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
this.logger.error('Failed to close Temporal connection', error);
|
|
151
|
+
}
|
|
126
152
|
}
|
|
127
153
|
};
|
|
128
154
|
return enhancedClient;
|
|
129
155
|
}
|
|
130
156
|
};
|
|
157
|
+
exports.TemporalClientModule = TemporalClientModule;
|
|
131
158
|
TemporalClientModule.logger = new common_1.Logger(TemporalClientModule_1.name);
|
|
132
159
|
exports.TemporalClientModule = TemporalClientModule = TemporalClientModule_1 = __decorate([
|
|
133
160
|
(0, common_1.Global)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-client.module.js","sourceRoot":"","sources":["../../src/client/temporal-client.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAOwB;AACxB,+CAAwD;AAMxD,
|
|
1
|
+
{"version":3,"file":"temporal-client.module.js","sourceRoot":"","sources":["../../src/client/temporal-client.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OnModuleInit } from '@nestjs/common';
|
|
2
2
|
import { Client, WorkflowClient, WorkflowHandle } from '@temporalio/client';
|
|
3
|
+
import { StartWorkflowOptions } from '../interfaces';
|
|
3
4
|
export declare class TemporalClientService implements OnModuleInit {
|
|
4
5
|
private readonly client;
|
|
5
6
|
private readonly logger;
|
|
@@ -8,17 +9,16 @@ export declare class TemporalClientService implements OnModuleInit {
|
|
|
8
9
|
onModuleInit(): Promise<void>;
|
|
9
10
|
getWorkflowClient(): WorkflowClient | null;
|
|
10
11
|
private ensureClientInitialized;
|
|
11
|
-
startWorkflow<T, A extends any[]>(workflowType: string, args: A, options: {
|
|
12
|
-
taskQueue: string;
|
|
13
|
-
workflowId?: string;
|
|
14
|
-
signal?: string;
|
|
15
|
-
}): Promise<{
|
|
12
|
+
startWorkflow<T, A extends any[]>(workflowType: string, args: A, options: StartWorkflowOptions): Promise<{
|
|
16
13
|
result: Promise<T>;
|
|
17
14
|
workflowId: string;
|
|
18
15
|
firstExecutionRunId: string;
|
|
19
16
|
handle: WorkflowHandle;
|
|
20
17
|
}>;
|
|
21
|
-
signalWorkflow(workflowId: string, signalName: string, args
|
|
18
|
+
signalWorkflow(workflowId: string, signalName: string, args?: any[]): Promise<void>;
|
|
19
|
+
queryWorkflow<T>(workflowId: string, queryName: string, args?: any[]): Promise<T>;
|
|
22
20
|
terminateWorkflow(workflowId: string, reason?: string): Promise<void>;
|
|
23
|
-
|
|
21
|
+
cancelWorkflow(workflowId: string): Promise<void>;
|
|
22
|
+
getWorkflowHandle(workflowId: string, runId?: string): Promise<WorkflowHandle>;
|
|
23
|
+
describeWorkflow(workflowId: string, runId?: string): Promise<import("@temporalio/client").WorkflowExecutionDescription>;
|
|
24
24
|
}
|
|
@@ -16,7 +16,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
16
16
|
exports.TemporalClientService = void 0;
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
18
|
const constants_1 = require("../constants");
|
|
19
|
-
let TemporalClientService =
|
|
19
|
+
let TemporalClientService = TemporalClientService_1 = class TemporalClientService {
|
|
20
20
|
constructor(client) {
|
|
21
21
|
this.client = client;
|
|
22
22
|
this.logger = new common_1.Logger(TemporalClientService_1.name);
|
|
@@ -29,23 +29,27 @@ let TemporalClientService = exports.TemporalClientService = TemporalClientServic
|
|
|
29
29
|
if (!this.client) {
|
|
30
30
|
this.logger.warn('Temporal client not initialized - some features may be unavailable');
|
|
31
31
|
}
|
|
32
|
+
else {
|
|
33
|
+
this.logger.log('Temporal client initialized successfully');
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
getWorkflowClient() {
|
|
34
37
|
return this.workflowClient;
|
|
35
38
|
}
|
|
36
39
|
ensureClientInitialized() {
|
|
37
40
|
if (!this.workflowClient) {
|
|
38
|
-
throw new Error(
|
|
41
|
+
throw new Error(constants_1.ERRORS.CLIENT_NOT_INITIALIZED);
|
|
39
42
|
}
|
|
40
43
|
}
|
|
41
44
|
async startWorkflow(workflowType, args, options) {
|
|
42
45
|
this.ensureClientInitialized();
|
|
43
|
-
const { taskQueue, workflowId = `${workflowType}-${Date.now()}-${Math.random().toString(36).slice(2)}`, } = options;
|
|
46
|
+
const { taskQueue, workflowId = `${workflowType}-${Date.now()}-${Math.random().toString(36).slice(2)}`, ...restOptions } = options;
|
|
44
47
|
try {
|
|
45
48
|
const handle = await this.workflowClient.start(workflowType, {
|
|
46
49
|
args,
|
|
47
50
|
taskQueue,
|
|
48
51
|
workflowId,
|
|
52
|
+
...restOptions,
|
|
49
53
|
});
|
|
50
54
|
return {
|
|
51
55
|
result: handle.result(),
|
|
@@ -55,19 +59,32 @@ let TemporalClientService = exports.TemporalClientService = TemporalClientServic
|
|
|
55
59
|
};
|
|
56
60
|
}
|
|
57
61
|
catch (error) {
|
|
62
|
+
this.logger.error(`Failed to start workflow '${workflowType}': ${error.message}`);
|
|
58
63
|
throw new Error(`Failed to start workflow '${workflowType}': ${error.message}`);
|
|
59
64
|
}
|
|
60
65
|
}
|
|
61
|
-
async signalWorkflow(workflowId, signalName, args) {
|
|
66
|
+
async signalWorkflow(workflowId, signalName, args = []) {
|
|
62
67
|
this.ensureClientInitialized();
|
|
63
68
|
try {
|
|
64
69
|
const handle = await this.workflowClient.getHandle(workflowId);
|
|
65
70
|
await handle.signal(signalName, ...args);
|
|
66
71
|
}
|
|
67
72
|
catch (error) {
|
|
73
|
+
this.logger.error(`Failed to send signal '${signalName}' to workflow ${workflowId}: ${error.message}`);
|
|
68
74
|
throw new Error(`Failed to send signal '${signalName}' to workflow ${workflowId}: ${error.message}`);
|
|
69
75
|
}
|
|
70
76
|
}
|
|
77
|
+
async queryWorkflow(workflowId, queryName, args = []) {
|
|
78
|
+
this.ensureClientInitialized();
|
|
79
|
+
try {
|
|
80
|
+
const handle = await this.workflowClient.getHandle(workflowId);
|
|
81
|
+
return await handle.query(queryName, ...args);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
this.logger.error(`Failed to query '${queryName}' on workflow ${workflowId}: ${error.message}`);
|
|
85
|
+
throw new Error(`Failed to query '${queryName}' on workflow ${workflowId}: ${error.message}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
71
88
|
async terminateWorkflow(workflowId, reason) {
|
|
72
89
|
this.ensureClientInitialized();
|
|
73
90
|
try {
|
|
@@ -75,19 +92,44 @@ let TemporalClientService = exports.TemporalClientService = TemporalClientServic
|
|
|
75
92
|
await handle.terminate(reason);
|
|
76
93
|
}
|
|
77
94
|
catch (error) {
|
|
95
|
+
this.logger.error(`Failed to terminate workflow ${workflowId}: ${error.message}`);
|
|
78
96
|
throw new Error(`Failed to terminate workflow ${workflowId}: ${error.message}`);
|
|
79
97
|
}
|
|
80
98
|
}
|
|
81
|
-
async
|
|
99
|
+
async cancelWorkflow(workflowId) {
|
|
82
100
|
this.ensureClientInitialized();
|
|
83
101
|
try {
|
|
84
|
-
|
|
102
|
+
const handle = await this.workflowClient.getHandle(workflowId);
|
|
103
|
+
await handle.cancel();
|
|
85
104
|
}
|
|
86
105
|
catch (error) {
|
|
106
|
+
this.logger.error(`Failed to cancel workflow ${workflowId}: ${error.message}`);
|
|
107
|
+
throw new Error(`Failed to cancel workflow ${workflowId}: ${error.message}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async getWorkflowHandle(workflowId, runId) {
|
|
111
|
+
this.ensureClientInitialized();
|
|
112
|
+
try {
|
|
113
|
+
return await this.workflowClient.getHandle(workflowId, runId);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
this.logger.error(`Failed to get workflow handle for ${workflowId}: ${error.message}`);
|
|
87
117
|
throw new Error(`Failed to get workflow handle for ${workflowId}: ${error.message}`);
|
|
88
118
|
}
|
|
89
119
|
}
|
|
120
|
+
async describeWorkflow(workflowId, runId) {
|
|
121
|
+
this.ensureClientInitialized();
|
|
122
|
+
try {
|
|
123
|
+
const handle = await this.workflowClient.getHandle(workflowId, runId);
|
|
124
|
+
return await handle.describe();
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
this.logger.error(`Failed to describe workflow ${workflowId}: ${error.message}`);
|
|
128
|
+
throw new Error(`Failed to describe workflow ${workflowId}: ${error.message}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
90
131
|
};
|
|
132
|
+
exports.TemporalClientService = TemporalClientService;
|
|
91
133
|
exports.TemporalClientService = TemporalClientService = TemporalClientService_1 = __decorate([
|
|
92
134
|
(0, common_1.Injectable)(),
|
|
93
135
|
__param(0, (0, common_1.Inject)(constants_1.TEMPORAL_CLIENT)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-client.service.js","sourceRoot":"","sources":["../../src/client/temporal-client.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA0E;AAE1E,
|
|
1
|
+
{"version":3,"file":"temporal-client.service.js","sourceRoot":"","sources":["../../src/client/temporal-client.service.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,9 +1,36 @@
|
|
|
1
1
|
export declare const TEMPORAL_MODULE_OPTIONS = "TEMPORAL_MODULE_OPTIONS";
|
|
2
2
|
export declare const TEMPORAL_CLIENT_MODULE_OPTIONS = "TEMPORAL_CLIENT_MODULE_OPTIONS";
|
|
3
3
|
export declare const TEMPORAL_WORKER_MODULE_OPTIONS = "TEMPORAL_WORKER_MODULE_OPTIONS";
|
|
4
|
+
export declare const TEMPORAL_SCHEDULE_MODULE_OPTIONS = "TEMPORAL_SCHEDULE_MODULE_OPTIONS";
|
|
5
|
+
export declare const TEMPORAL_CLIENT = "TEMPORAL_CLIENT";
|
|
6
|
+
export declare const TEMPORAL_CONNECTION = "TEMPORAL_CONNECTION";
|
|
7
|
+
export declare const TEMPORAL_SCHEDULE_CLIENT = "TEMPORAL_SCHEDULE_CLIENT";
|
|
4
8
|
export declare const TEMPORAL_ACTIVITY = "TEMPORAL_ACTIVITY";
|
|
5
9
|
export declare const TEMPORAL_ACTIVITY_METHOD = "TEMPORAL_ACTIVITY_METHOD";
|
|
6
10
|
export declare const TEMPORAL_ACTIVITY_METHOD_NAME = "TEMPORAL_ACTIVITY_METHOD_NAME";
|
|
11
|
+
export declare const TEMPORAL_ACTIVITY_METHOD_OPTIONS = "TEMPORAL_ACTIVITY_METHOD_OPTIONS";
|
|
7
12
|
export declare const TEMPORAL_WORKFLOW = "TEMPORAL_WORKFLOW";
|
|
8
13
|
export declare const TEMPORAL_WORKFLOW_METHOD = "TEMPORAL_WORKFLOW_METHOD";
|
|
9
|
-
export declare const
|
|
14
|
+
export declare const TEMPORAL_WORKFLOW_METHOD_NAME = "TEMPORAL_WORKFLOW_METHOD_NAME";
|
|
15
|
+
export declare const TEMPORAL_WORKFLOW_OPTIONS = "TEMPORAL_WORKFLOW_OPTIONS";
|
|
16
|
+
export declare const TEMPORAL_SIGNAL_METHOD = "TEMPORAL_SIGNAL_METHOD";
|
|
17
|
+
export declare const TEMPORAL_SIGNAL_NAME = "TEMPORAL_SIGNAL_NAME";
|
|
18
|
+
export declare const TEMPORAL_QUERY_METHOD = "TEMPORAL_QUERY_METHOD";
|
|
19
|
+
export declare const TEMPORAL_QUERY_NAME = "TEMPORAL_QUERY_NAME";
|
|
20
|
+
export declare const DEFAULT_NAMESPACE = "default";
|
|
21
|
+
export declare const DEFAULT_TASK_QUEUE = "default-task-queue";
|
|
22
|
+
export declare const DEFAULT_CONNECTION_TIMEOUT_MS = 5000;
|
|
23
|
+
export declare const ERRORS: {
|
|
24
|
+
CLIENT_INITIALIZATION: string;
|
|
25
|
+
WORKER_INITIALIZATION: string;
|
|
26
|
+
CLIENT_NOT_INITIALIZED: string;
|
|
27
|
+
WORKER_NOT_INITIALIZED: string;
|
|
28
|
+
INVALID_OPTIONS: string;
|
|
29
|
+
MISSING_TASK_QUEUE: string;
|
|
30
|
+
MISSING_WORKFLOW_TYPE: string;
|
|
31
|
+
MISSING_ACTIVITY_TYPE: string;
|
|
32
|
+
ACTIVITY_NOT_FOUND: string;
|
|
33
|
+
WORKFLOW_NOT_FOUND: string;
|
|
34
|
+
INVALID_DECORATOR_USAGE: string;
|
|
35
|
+
SCHEDULE_CLIENT_NOT_INITIALIZED: string;
|
|
36
|
+
};
|
package/dist/constants.js
CHANGED
|
@@ -1,13 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ERRORS = exports.DEFAULT_CONNECTION_TIMEOUT_MS = exports.DEFAULT_TASK_QUEUE = exports.DEFAULT_NAMESPACE = exports.TEMPORAL_QUERY_NAME = exports.TEMPORAL_QUERY_METHOD = exports.TEMPORAL_SIGNAL_NAME = exports.TEMPORAL_SIGNAL_METHOD = exports.TEMPORAL_WORKFLOW_OPTIONS = exports.TEMPORAL_WORKFLOW_METHOD_NAME = exports.TEMPORAL_WORKFLOW_METHOD = exports.TEMPORAL_WORKFLOW = exports.TEMPORAL_ACTIVITY_METHOD_OPTIONS = exports.TEMPORAL_ACTIVITY_METHOD_NAME = exports.TEMPORAL_ACTIVITY_METHOD = exports.TEMPORAL_ACTIVITY = exports.TEMPORAL_SCHEDULE_CLIENT = exports.TEMPORAL_CONNECTION = exports.TEMPORAL_CLIENT = exports.TEMPORAL_SCHEDULE_MODULE_OPTIONS = exports.TEMPORAL_WORKER_MODULE_OPTIONS = exports.TEMPORAL_CLIENT_MODULE_OPTIONS = exports.TEMPORAL_MODULE_OPTIONS = void 0;
|
|
4
4
|
exports.TEMPORAL_MODULE_OPTIONS = 'TEMPORAL_MODULE_OPTIONS';
|
|
5
5
|
exports.TEMPORAL_CLIENT_MODULE_OPTIONS = 'TEMPORAL_CLIENT_MODULE_OPTIONS';
|
|
6
6
|
exports.TEMPORAL_WORKER_MODULE_OPTIONS = 'TEMPORAL_WORKER_MODULE_OPTIONS';
|
|
7
|
+
exports.TEMPORAL_SCHEDULE_MODULE_OPTIONS = 'TEMPORAL_SCHEDULE_MODULE_OPTIONS';
|
|
8
|
+
exports.TEMPORAL_CLIENT = 'TEMPORAL_CLIENT';
|
|
9
|
+
exports.TEMPORAL_CONNECTION = 'TEMPORAL_CONNECTION';
|
|
10
|
+
exports.TEMPORAL_SCHEDULE_CLIENT = 'TEMPORAL_SCHEDULE_CLIENT';
|
|
7
11
|
exports.TEMPORAL_ACTIVITY = 'TEMPORAL_ACTIVITY';
|
|
8
12
|
exports.TEMPORAL_ACTIVITY_METHOD = 'TEMPORAL_ACTIVITY_METHOD';
|
|
9
13
|
exports.TEMPORAL_ACTIVITY_METHOD_NAME = 'TEMPORAL_ACTIVITY_METHOD_NAME';
|
|
14
|
+
exports.TEMPORAL_ACTIVITY_METHOD_OPTIONS = 'TEMPORAL_ACTIVITY_METHOD_OPTIONS';
|
|
10
15
|
exports.TEMPORAL_WORKFLOW = 'TEMPORAL_WORKFLOW';
|
|
11
16
|
exports.TEMPORAL_WORKFLOW_METHOD = 'TEMPORAL_WORKFLOW_METHOD';
|
|
12
|
-
exports.
|
|
17
|
+
exports.TEMPORAL_WORKFLOW_METHOD_NAME = 'TEMPORAL_WORKFLOW_METHOD_NAME';
|
|
18
|
+
exports.TEMPORAL_WORKFLOW_OPTIONS = 'TEMPORAL_WORKFLOW_OPTIONS';
|
|
19
|
+
exports.TEMPORAL_SIGNAL_METHOD = 'TEMPORAL_SIGNAL_METHOD';
|
|
20
|
+
exports.TEMPORAL_SIGNAL_NAME = 'TEMPORAL_SIGNAL_NAME';
|
|
21
|
+
exports.TEMPORAL_QUERY_METHOD = 'TEMPORAL_QUERY_METHOD';
|
|
22
|
+
exports.TEMPORAL_QUERY_NAME = 'TEMPORAL_QUERY_NAME';
|
|
23
|
+
exports.DEFAULT_NAMESPACE = 'default';
|
|
24
|
+
exports.DEFAULT_TASK_QUEUE = 'default-task-queue';
|
|
25
|
+
exports.DEFAULT_CONNECTION_TIMEOUT_MS = 5000;
|
|
26
|
+
exports.ERRORS = {
|
|
27
|
+
CLIENT_INITIALIZATION: 'Failed to initialize Temporal client',
|
|
28
|
+
WORKER_INITIALIZATION: 'Failed to initialize Temporal worker',
|
|
29
|
+
CLIENT_NOT_INITIALIZED: 'Temporal client not initialized',
|
|
30
|
+
WORKER_NOT_INITIALIZED: 'Temporal worker not initialized',
|
|
31
|
+
INVALID_OPTIONS: 'Invalid Temporal module options',
|
|
32
|
+
MISSING_TASK_QUEUE: 'Task queue is required',
|
|
33
|
+
MISSING_WORKFLOW_TYPE: 'Workflow type is required',
|
|
34
|
+
MISSING_ACTIVITY_TYPE: 'Activity type is required',
|
|
35
|
+
ACTIVITY_NOT_FOUND: 'Activity not found',
|
|
36
|
+
WORKFLOW_NOT_FOUND: 'Workflow not found',
|
|
37
|
+
INVALID_DECORATOR_USAGE: 'Invalid decorator usage',
|
|
38
|
+
SCHEDULE_CLIENT_NOT_INITIALIZED: 'Temporal schedule client not initialized',
|
|
39
|
+
};
|
|
13
40
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAUa,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,8BAA8B,GAAG,gCAAgC,CAAC;AAClE,QAAA,8BAA8B,GAAG,gCAAgC,CAAC;AAClE,QAAA,gCAAgC,GAAG,kCAAkC,CAAC;AACtE,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAC5C,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AAKtD,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,gCAAgC,GAAG,kCAAkC,CAAC;AAKtE,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AAKxD,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAK9C,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAK5C,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAC9B,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,6BAA6B,GAAG,IAAI,CAAC;AAKrC,QAAA,MAAM,GAAG;IAClB,qBAAqB,EAAE,sCAAsC;IAC7D,qBAAqB,EAAE,sCAAsC;IAC7D,sBAAsB,EAAE,iCAAiC;IACzD,sBAAsB,EAAE,iCAAiC;IACzD,eAAe,EAAE,iCAAiC;IAClD,kBAAkB,EAAE,wBAAwB;IAC5C,qBAAqB,EAAE,2BAA2B;IAClD,qBAAqB,EAAE,2BAA2B;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,uBAAuB,EAAE,yBAAyB;IAClD,+BAA+B,EAAE,0CAA0C;CAC9E,CAAC"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { ActivityMethodOptions } from '../interfaces/activity.interface';
|
|
2
|
+
export declare const ActivityMethod: (options?: string | ActivityMethodOptions) => MethodDecorator;
|
|
@@ -3,13 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ActivityMethod = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const constants_1 = require("../constants");
|
|
6
|
-
const ActivityMethod = (
|
|
7
|
-
return (
|
|
8
|
-
|
|
6
|
+
const ActivityMethod = (options) => {
|
|
7
|
+
return (_target, propertyKey, descriptor) => {
|
|
8
|
+
let methodName;
|
|
9
|
+
let methodOptions = {};
|
|
10
|
+
if (typeof options === 'string') {
|
|
11
|
+
methodName = options;
|
|
12
|
+
methodOptions = { name: options };
|
|
13
|
+
}
|
|
14
|
+
else if (options && typeof options === 'object') {
|
|
15
|
+
methodName = options.name || propertyKey.toString();
|
|
16
|
+
methodOptions = options;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
methodName = propertyKey.toString();
|
|
20
|
+
}
|
|
9
21
|
Reflect.defineMetadata(constants_1.TEMPORAL_ACTIVITY_METHOD, true, descriptor.value);
|
|
10
22
|
Reflect.defineMetadata(constants_1.TEMPORAL_ACTIVITY_METHOD_NAME, methodName, descriptor.value);
|
|
23
|
+
if (Object.keys(methodOptions).length > 0) {
|
|
24
|
+
Reflect.defineMetadata(constants_1.TEMPORAL_ACTIVITY_METHOD_OPTIONS, methodOptions, descriptor.value);
|
|
25
|
+
}
|
|
11
26
|
(0, common_1.SetMetadata)(constants_1.TEMPORAL_ACTIVITY_METHOD, true)(descriptor.value);
|
|
12
27
|
(0, common_1.SetMetadata)(constants_1.TEMPORAL_ACTIVITY_METHOD_NAME, methodName)(descriptor.value);
|
|
28
|
+
if (Object.keys(methodOptions).length > 0) {
|
|
29
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_ACTIVITY_METHOD_OPTIONS, methodOptions)(descriptor.value);
|
|
30
|
+
}
|
|
13
31
|
return descriptor;
|
|
14
32
|
};
|
|
15
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-method.decorator.js","sourceRoot":"","sources":["../../src/decorators/activity-method.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"activity-method.decorator.js","sourceRoot":"","sources":["../../src/decorators/activity-method.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,4CAIsB;AAwBf,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,OAAO,CAAC,cAAc,CAAC,oCAAwB,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACzE,OAAO,CAAC,cAAc,CAAC,yCAA6B,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAEpF,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,cAAc,CAClB,4CAAgC,EAChC,aAAa,EACb,UAAU,CAAC,KAAK,CACnB,CAAC;QACN,CAAC;QAGD,IAAA,oBAAW,EAAC,oCAAwB,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAA,oBAAW,EAAC,yCAA6B,EAAE,UAAU,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEzE,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAA,oBAAW,EAAC,4CAAgC,EAAE,aAAa,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC,CAAC;AAtCW,QAAA,cAAc,kBAsCzB"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { ActivityOptions } from '../interfaces/activity.interface';
|
|
2
|
+
export declare const Activity: (options?: ActivityOptions) => ClassDecorator;
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Activity = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const constants_1 = require("../constants");
|
|
6
|
-
const Activity = () => {
|
|
6
|
+
const Activity = (options = {}) => {
|
|
7
7
|
return (target) => {
|
|
8
|
-
Reflect.defineMetadata(constants_1.TEMPORAL_ACTIVITY,
|
|
9
|
-
(0, common_1.SetMetadata)(constants_1.TEMPORAL_ACTIVITY,
|
|
8
|
+
Reflect.defineMetadata(constants_1.TEMPORAL_ACTIVITY, { ...options }, target);
|
|
9
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_ACTIVITY, { ...options })(target);
|
|
10
10
|
return target;
|
|
11
11
|
};
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.decorator.js","sourceRoot":"","sources":["../../src/decorators/activity.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,4CAAiD;
|
|
1
|
+
{"version":3,"file":"activity.decorator.js","sourceRoot":"","sources":["../../src/decorators/activity.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,4CAAiD;AAqB1C,MAAM,QAAQ,GAAG,CAAC,UAA2B,EAAE,EAAkB,EAAE;IACtE,OAAO,CAAC,MAAW,EAAE,EAAE;QACnB,OAAO,CAAC,cAAc,CAAC,6BAAiB,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAClE,IAAA,oBAAW,EAAC,6BAAiB,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC,CAAC;AANW,QAAA,QAAQ,YAMnB"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export * from './activity.decorator';
|
|
2
2
|
export * from './activity-method.decorator';
|
|
3
3
|
export * from './workflow.decorator';
|
|
4
|
+
export * from './workflow-method.decorator';
|
|
5
|
+
export * from './query.decorator';
|
|
6
|
+
export * from './signal.decorator';
|
|
7
|
+
export * from './scheduled-workflow.decorator';
|
package/dist/decorators/index.js
CHANGED
|
@@ -17,4 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./activity.decorator"), exports);
|
|
18
18
|
__exportStar(require("./activity-method.decorator"), exports);
|
|
19
19
|
__exportStar(require("./workflow.decorator"), exports);
|
|
20
|
+
__exportStar(require("./workflow-method.decorator"), exports);
|
|
21
|
+
__exportStar(require("./query.decorator"), exports);
|
|
22
|
+
__exportStar(require("./signal.decorator"), exports);
|
|
23
|
+
__exportStar(require("./scheduled-workflow.decorator"), exports);
|
|
20
24
|
//# 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":";;;;;;;;;;;;;;;;AAKA,uDAAqC;AACrC,8DAA4C;AAG5C,uDAAqC;AACrC,8DAA4C;AAG5C,oDAAkC;AAClC,qDAAmC;AAGnC,iEAA+C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Query = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const Query = (options) => {
|
|
7
|
+
return (_target, propertyKey, descriptor) => {
|
|
8
|
+
let queryName;
|
|
9
|
+
if (typeof options === 'string') {
|
|
10
|
+
queryName = options;
|
|
11
|
+
}
|
|
12
|
+
else if (options && typeof options === 'object') {
|
|
13
|
+
queryName = options.name || propertyKey.toString();
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
queryName = propertyKey.toString();
|
|
17
|
+
}
|
|
18
|
+
Reflect.defineMetadata(constants_1.TEMPORAL_QUERY_METHOD, true, descriptor.value);
|
|
19
|
+
Reflect.defineMetadata(constants_1.TEMPORAL_QUERY_NAME, queryName, descriptor.value);
|
|
20
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_QUERY_METHOD, true)(descriptor.value);
|
|
21
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_QUERY_NAME, queryName)(descriptor.value);
|
|
22
|
+
return descriptor;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
exports.Query = Query;
|
|
26
|
+
//# sourceMappingURL=query.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.decorator.js","sourceRoot":"","sources":["../../src/decorators/query.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,4CAA0E;AA0BnE,MAAM,KAAK,GAAG,CAAC,OAAqC,EAAmB,EAAE;IAC5E,OAAO,CAAC,OAAgB,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QAEtF,IAAI,SAAiB,CAAC;QAEtB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,SAAS,GAAG,OAAO,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChD,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;QAGD,OAAO,CAAC,cAAc,CAAC,iCAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,CAAC,cAAc,CAAC,+BAAmB,EAAE,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAGzE,IAAA,oBAAW,EAAC,iCAAqB,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAA,oBAAW,EAAC,+BAAmB,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE9D,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC,CAAC;AAvBW,QAAA,KAAK,SAuBhB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { WorkflowOptions } from '../interfaces/workflow.interface';
|
|
2
|
+
export interface ScheduledWorkflowOptions extends WorkflowOptions {
|
|
3
|
+
schedule: {
|
|
4
|
+
cron?: string;
|
|
5
|
+
interval?: {
|
|
6
|
+
seconds?: number;
|
|
7
|
+
minutes?: number;
|
|
8
|
+
hours?: number;
|
|
9
|
+
days?: number;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare function ScheduledWorkflow(options: ScheduledWorkflowOptions): ClassDecorator;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScheduledWorkflow = ScheduledWorkflow;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function ScheduledWorkflow(options) {
|
|
7
|
+
if (!options.taskQueue) {
|
|
8
|
+
throw new Error('taskQueue is required in ScheduledWorkflow decorator options');
|
|
9
|
+
}
|
|
10
|
+
if (!options.schedule) {
|
|
11
|
+
throw new Error('schedule is required in ScheduledWorkflow decorator options');
|
|
12
|
+
}
|
|
13
|
+
return (target) => {
|
|
14
|
+
const workflowOptions = {
|
|
15
|
+
...options,
|
|
16
|
+
name: options.name || target.name,
|
|
17
|
+
};
|
|
18
|
+
Reflect.defineMetadata(constants_1.TEMPORAL_WORKFLOW, workflowOptions, target);
|
|
19
|
+
Reflect.defineMetadata('TEMPORAL_SCHEDULED_WORKFLOW', true, target);
|
|
20
|
+
Reflect.defineMetadata('TEMPORAL_SCHEDULED_WORKFLOW_OPTIONS', options.schedule, target);
|
|
21
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_WORKFLOW, workflowOptions)(target);
|
|
22
|
+
(0, common_1.SetMetadata)(constants_1.TEMPORAL_WORKFLOW_OPTIONS, workflowOptions)(target);
|
|
23
|
+
(0, common_1.SetMetadata)('TEMPORAL_SCHEDULED_WORKFLOW', true)(target);
|
|
24
|
+
(0, common_1.SetMetadata)('TEMPORAL_SCHEDULED_WORKFLOW_OPTIONS', options.schedule)(target);
|
|
25
|
+
return target;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=scheduled-workflow.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduled-workflow.decorator.js","sourceRoot":"","sources":["../../src/decorators/scheduled-workflow.decorator.ts"],"names":[],"mappings":";;AAqDA,8CA8BC;AAnFD,2CAA6C;AAC7C,4CAA4E;AAoD5E,SAAgB,iBAAiB,CAAC,OAAiC;IAE/D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,CAAC,MAAW,EAAE,EAAE;QAEnB,MAAM,eAAe,GAAG;YACpB,GAAG,OAAO;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;SACpC,CAAC;QAGF,OAAO,CAAC,cAAc,CAAC,6BAAiB,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,CAAC,cAAc,CAAC,6BAA6B,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CAAC,qCAAqC,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAGxF,IAAA,oBAAW,EAAC,6BAAiB,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;QACxD,IAAA,oBAAW,EAAC,qCAAyB,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;QAChE,IAAA,oBAAW,EAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;QACzD,IAAA,oBAAW,EAAC,qCAAqC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;QAE7E,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC"}
|