nestjs-temporal-core 3.0.10 → 3.0.11

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.
Files changed (122) hide show
  1. package/README.md +1451 -721
  2. package/dist/constants.d.ts +49 -151
  3. package/dist/constants.js +38 -141
  4. package/dist/constants.js.map +1 -1
  5. package/dist/decorators/activity.decorator.js +75 -15
  6. package/dist/decorators/activity.decorator.js.map +1 -1
  7. package/dist/decorators/index.d.ts +1 -3
  8. package/dist/decorators/index.js +4 -13
  9. package/dist/decorators/index.js.map +1 -1
  10. package/dist/decorators/workflow.decorator.d.ts +7 -3
  11. package/dist/decorators/workflow.decorator.js +161 -48
  12. package/dist/decorators/workflow.decorator.js.map +1 -1
  13. package/dist/health/temporal-health.controller.d.ts +7 -0
  14. package/dist/health/temporal-health.controller.js +77 -0
  15. package/dist/health/temporal-health.controller.js.map +1 -0
  16. package/dist/health/temporal-health.module.d.ts +2 -0
  17. package/dist/health/temporal-health.module.js +20 -0
  18. package/dist/health/temporal-health.module.js.map +1 -0
  19. package/dist/index.d.ts +10 -20
  20. package/dist/index.js +15 -30
  21. package/dist/index.js.map +1 -1
  22. package/dist/interfaces.d.ts +740 -160
  23. package/dist/interfaces.js +1 -2
  24. package/dist/interfaces.js.map +1 -1
  25. package/dist/providers/temporal-connection.factory.d.ts +28 -0
  26. package/dist/providers/temporal-connection.factory.js +194 -0
  27. package/dist/providers/temporal-connection.factory.js.map +1 -0
  28. package/dist/services/temporal-client.service.d.ts +33 -0
  29. package/dist/services/temporal-client.service.js +285 -0
  30. package/dist/services/temporal-client.service.js.map +1 -0
  31. package/dist/services/temporal-discovery.service.d.ts +34 -0
  32. package/dist/services/temporal-discovery.service.js +348 -0
  33. package/dist/services/temporal-discovery.service.js.map +1 -0
  34. package/dist/services/temporal-metadata.service.d.ts +37 -0
  35. package/dist/services/temporal-metadata.service.js +512 -0
  36. package/dist/services/temporal-metadata.service.js.map +1 -0
  37. package/dist/services/temporal-schedule.service.d.ts +35 -0
  38. package/dist/services/temporal-schedule.service.js +380 -0
  39. package/dist/services/temporal-schedule.service.js.map +1 -0
  40. package/dist/services/temporal-worker.service.d.ts +54 -0
  41. package/dist/services/temporal-worker.service.js +605 -0
  42. package/dist/services/temporal-worker.service.js.map +1 -0
  43. package/dist/services/temporal.service.d.ts +85 -0
  44. package/dist/services/temporal.service.js +572 -0
  45. package/dist/services/temporal.service.js.map +1 -0
  46. package/dist/temporal.module.d.ts +6 -9
  47. package/dist/temporal.module.js +160 -109
  48. package/dist/temporal.module.js.map +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/dist/utils/index.d.ts +2 -2
  51. package/dist/utils/index.js +5 -8
  52. package/dist/utils/index.js.map +1 -1
  53. package/dist/utils/logger.d.ts +10 -4
  54. package/dist/utils/logger.js +77 -106
  55. package/dist/utils/logger.js.map +1 -1
  56. package/dist/utils/metadata.d.ts +1 -3
  57. package/dist/utils/metadata.js +8 -18
  58. package/dist/utils/metadata.js.map +1 -1
  59. package/dist/utils/validation.d.ts +16 -2
  60. package/dist/utils/validation.js +103 -9
  61. package/dist/utils/validation.js.map +1 -1
  62. package/package.json +37 -26
  63. package/dist/activity/index.d.ts +0 -2
  64. package/dist/activity/index.js +0 -19
  65. package/dist/activity/index.js.map +0 -1
  66. package/dist/activity/temporal-activity.module.d.ts +0 -11
  67. package/dist/activity/temporal-activity.module.js +0 -52
  68. package/dist/activity/temporal-activity.module.js.map +0 -1
  69. package/dist/activity/temporal-activity.service.d.ts +0 -46
  70. package/dist/activity/temporal-activity.service.js +0 -192
  71. package/dist/activity/temporal-activity.service.js.map +0 -1
  72. package/dist/client/index.d.ts +0 -3
  73. package/dist/client/index.js +0 -20
  74. package/dist/client/index.js.map +0 -1
  75. package/dist/client/temporal-client.module.d.ts +0 -18
  76. package/dist/client/temporal-client.module.js +0 -198
  77. package/dist/client/temporal-client.module.js.map +0 -1
  78. package/dist/client/temporal-client.service.d.ts +0 -35
  79. package/dist/client/temporal-client.service.js +0 -187
  80. package/dist/client/temporal-client.service.js.map +0 -1
  81. package/dist/client/temporal-schedule.service.d.ts +0 -41
  82. package/dist/client/temporal-schedule.service.js +0 -204
  83. package/dist/client/temporal-schedule.service.js.map +0 -1
  84. package/dist/decorators/parameter.decorator.d.ts +0 -5
  85. package/dist/decorators/parameter.decorator.js +0 -57
  86. package/dist/decorators/parameter.decorator.js.map +0 -1
  87. package/dist/decorators/scheduling.decorator.d.ts +0 -4
  88. package/dist/decorators/scheduling.decorator.js +0 -44
  89. package/dist/decorators/scheduling.decorator.js.map +0 -1
  90. package/dist/discovery/index.d.ts +0 -2
  91. package/dist/discovery/index.js +0 -19
  92. package/dist/discovery/index.js.map +0 -1
  93. package/dist/discovery/temporal-discovery.service.d.ts +0 -39
  94. package/dist/discovery/temporal-discovery.service.js +0 -191
  95. package/dist/discovery/temporal-discovery.service.js.map +0 -1
  96. package/dist/discovery/temporal-schedule-manager.service.d.ts +0 -41
  97. package/dist/discovery/temporal-schedule-manager.service.js +0 -238
  98. package/dist/discovery/temporal-schedule-manager.service.js.map +0 -1
  99. package/dist/schedules/index.d.ts +0 -2
  100. package/dist/schedules/index.js +0 -19
  101. package/dist/schedules/index.js.map +0 -1
  102. package/dist/schedules/temporal-schedules.module.d.ts +0 -11
  103. package/dist/schedules/temporal-schedules.module.js +0 -55
  104. package/dist/schedules/temporal-schedules.module.js.map +0 -1
  105. package/dist/schedules/temporal-schedules.service.d.ts +0 -52
  106. package/dist/schedules/temporal-schedules.service.js +0 -221
  107. package/dist/schedules/temporal-schedules.service.js.map +0 -1
  108. package/dist/temporal.service.d.ts +0 -77
  109. package/dist/temporal.service.js +0 -243
  110. package/dist/temporal.service.js.map +0 -1
  111. package/dist/worker/index.d.ts +0 -3
  112. package/dist/worker/index.js +0 -20
  113. package/dist/worker/index.js.map +0 -1
  114. package/dist/worker/temporal-metadata.accessor.d.ts +0 -32
  115. package/dist/worker/temporal-metadata.accessor.js +0 -208
  116. package/dist/worker/temporal-metadata.accessor.js.map +0 -1
  117. package/dist/worker/temporal-worker-manager.service.d.ts +0 -49
  118. package/dist/worker/temporal-worker-manager.service.js +0 -389
  119. package/dist/worker/temporal-worker-manager.service.js.map +0 -1
  120. package/dist/worker/temporal-worker.module.d.ts +0 -18
  121. package/dist/worker/temporal-worker.module.js +0 -156
  122. package/dist/worker/temporal-worker.module.js.map +0 -1
@@ -0,0 +1,348 @@
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 TemporalDiscoveryService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.TemporalDiscoveryService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const core_1 = require("@nestjs/core");
19
+ const constants_1 = require("../constants");
20
+ const logger_1 = require("../utils/logger");
21
+ const temporal_metadata_service_1 = require("./temporal-metadata.service");
22
+ let TemporalDiscoveryService = TemporalDiscoveryService_1 = class TemporalDiscoveryService {
23
+ constructor(discoveryService, metadataAccessor = new temporal_metadata_service_1.TemporalMetadataAccessor(), options, activityModuleOptions = { activityClasses: [] }) {
24
+ this.discoveryService = discoveryService;
25
+ this.metadataAccessor = metadataAccessor;
26
+ this.options = options;
27
+ this.activityModuleOptions = activityModuleOptions;
28
+ this.discoveredActivities = new Map();
29
+ this.isDiscoveryComplete = false;
30
+ this.discoveryStartTime = null;
31
+ this.lastDiscoveryTime = null;
32
+ this.logger = (0, logger_1.createLogger)(TemporalDiscoveryService_1.name, {
33
+ enableLogger: options.enableLogger,
34
+ logLevel: options.logLevel,
35
+ });
36
+ }
37
+ async onModuleInit() {
38
+ try {
39
+ this.logger.debug('Starting component discovery...');
40
+ this.discoveryStartTime = new Date();
41
+ const result = await this.discoverComponents();
42
+ this.isDiscoveryComplete = true;
43
+ this.lastDiscoveryTime = new Date();
44
+ this.logDiscoveryResults(result);
45
+ }
46
+ catch (error) {
47
+ this.logger.error('Failed to complete component discovery', error);
48
+ throw error;
49
+ }
50
+ }
51
+ getDiscoveredActivities() {
52
+ return new Map(this.discoveredActivities);
53
+ }
54
+ getActivity(name) {
55
+ const activityInfo = this.discoveredActivities.get(name);
56
+ if (!activityInfo)
57
+ return undefined;
58
+ const info = activityInfo;
59
+ return info.handler || (typeof info === 'function' ? info : undefined);
60
+ }
61
+ getAllActivities() {
62
+ const allActivities = {};
63
+ for (const [name, activityInfo] of this.discoveredActivities) {
64
+ const handler = activityInfo.handler || activityInfo;
65
+ if (typeof handler === 'function') {
66
+ allActivities[name] = handler;
67
+ }
68
+ }
69
+ return allActivities;
70
+ }
71
+ hasActivity(name) {
72
+ return this.discoveredActivities.has(name);
73
+ }
74
+ getActivityNames() {
75
+ return Array.from(this.discoveredActivities.keys());
76
+ }
77
+ async executeActivity(name, ...args) {
78
+ const activity = this.getActivity(name);
79
+ if (!activity) {
80
+ return {
81
+ success: false,
82
+ error: new Error(`Activity '${name}' not found`),
83
+ activityName: name,
84
+ };
85
+ }
86
+ const startTime = Date.now();
87
+ try {
88
+ this.logger.debug(`Executing activity: ${name}`);
89
+ const result = await activity(...args);
90
+ const executionTime = Date.now() - startTime;
91
+ this.logger.debug(`Activity completed: ${name}`);
92
+ return {
93
+ success: true,
94
+ result,
95
+ executionTime,
96
+ activityName: name,
97
+ args,
98
+ };
99
+ }
100
+ catch (error) {
101
+ const executionTime = Date.now() - startTime;
102
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
103
+ this.logger.error(`Failed to execute activity ${name}: ${errorMessage}`, error);
104
+ return {
105
+ success: false,
106
+ error: error instanceof Error ? error : new Error(errorMessage),
107
+ executionTime,
108
+ activityName: name,
109
+ args,
110
+ };
111
+ }
112
+ }
113
+ async rediscover() {
114
+ this.logger.info('Refreshing component discovery...');
115
+ this.clearDiscoveredComponents();
116
+ const result = await this.discoverComponents();
117
+ this.isDiscoveryComplete = true;
118
+ this.lastDiscoveryTime = new Date();
119
+ this.logger.info('Component discovery refresh completed');
120
+ return result;
121
+ }
122
+ getStats() {
123
+ return {
124
+ methods: this.discoveredActivities.size,
125
+ activities: this.discoveredActivities.size,
126
+ totalComponents: this.discoveredActivities.size,
127
+ };
128
+ }
129
+ getHealthStatus() {
130
+ const hasDiscoveredComponents = this.getTotalDiscovered() > 0;
131
+ const discoveryDuration = this.discoveryStartTime && this.lastDiscoveryTime
132
+ ? this.lastDiscoveryTime.getTime() - this.discoveryStartTime.getTime()
133
+ : null;
134
+ return {
135
+ status: hasDiscoveredComponents ? 'healthy' : 'degraded',
136
+ discoveredItems: {
137
+ activities: this.discoveredActivities.size,
138
+ },
139
+ isComplete: this.isDiscoveryComplete,
140
+ lastDiscovery: this.lastDiscoveryTime,
141
+ discoveryDuration,
142
+ totalComponents: this.getTotalDiscovered(),
143
+ };
144
+ }
145
+ async discoverComponents() {
146
+ const startTime = Date.now();
147
+ const errors = [];
148
+ let discoveredCount = 0;
149
+ const providers = this.discoveryService.getProviders();
150
+ const controllers = this.discoveryService.getControllers();
151
+ this.logger.debug(`Scanning ${providers.length} providers and ${controllers.length} controllers`);
152
+ const allWrappers = [...providers, ...controllers];
153
+ for (const wrapper of allWrappers) {
154
+ try {
155
+ const result = await this.processWrapper(wrapper);
156
+ if (result.success) {
157
+ discoveredCount += result.processedCount;
158
+ }
159
+ errors.push(...result.errors);
160
+ }
161
+ catch (error) {
162
+ const wrapperName = this.getWrapperName(wrapper);
163
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
164
+ errors.push({ component: wrapperName, error: errorMessage });
165
+ this.logger.warn(`Failed to process wrapper ${wrapperName}`, error);
166
+ }
167
+ }
168
+ const duration = Date.now() - startTime;
169
+ return {
170
+ success: errors.length === 0,
171
+ discoveredCount,
172
+ errors,
173
+ duration,
174
+ };
175
+ }
176
+ async processWrapper(wrapper) {
177
+ const errors = [];
178
+ let processedCount = 0;
179
+ try {
180
+ const instance = wrapper.instance;
181
+ const metatype = wrapper.metatype;
182
+ if (!instance || !metatype) {
183
+ return {
184
+ success: true,
185
+ processedCount: 0,
186
+ errors: [],
187
+ };
188
+ }
189
+ const className = metatype.name;
190
+ this.logger.debug(`Processing class: ${className}`);
191
+ if (this.metadataAccessor.isActivity(metatype)) {
192
+ const result = await this.discoverActivitiesInClass(instance, className);
193
+ if (result.success) {
194
+ processedCount += result.discoveredCount;
195
+ }
196
+ errors.push(...result.errors);
197
+ }
198
+ return {
199
+ success: errors.length === 0,
200
+ processedCount,
201
+ errors,
202
+ };
203
+ }
204
+ catch (error) {
205
+ const wrapperName = this.getWrapperName(wrapper);
206
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
207
+ errors.push({ component: wrapperName, error: errorMessage });
208
+ return {
209
+ success: false,
210
+ processedCount: 0,
211
+ errors,
212
+ };
213
+ }
214
+ }
215
+ async discoverActivitiesInClass(instance, className) {
216
+ const errors = [];
217
+ let discoveredCount = 0;
218
+ try {
219
+ const filterClasses = this.activityModuleOptions?.activityClasses || [];
220
+ const metatype = instance.constructor;
221
+ if (filterClasses.length > 0 && !filterClasses.includes(metatype)) {
222
+ return {
223
+ success: true,
224
+ discoveredCount: 0,
225
+ errors: [],
226
+ };
227
+ }
228
+ if (!this.metadataAccessor.isActivity(metatype)) {
229
+ return {
230
+ success: true,
231
+ discoveredCount: 0,
232
+ errors: [],
233
+ };
234
+ }
235
+ const validation = this.metadataAccessor.validateActivityClass(metatype);
236
+ if (!validation.isValid) {
237
+ const errorMessage = `Activity class ${className} has validation issues: ${validation.issues.join(', ')}`;
238
+ this.logger.warn(errorMessage);
239
+ errors.push({ component: className, error: errorMessage });
240
+ return {
241
+ success: false,
242
+ discoveredCount: 0,
243
+ errors,
244
+ };
245
+ }
246
+ const activityMethodsResult = this.metadataAccessor.extractActivityMethods(instance);
247
+ for (const [activityName, methodInfo] of activityMethodsResult.methods.entries()) {
248
+ try {
249
+ const handler = typeof methodInfo === 'function'
250
+ ? methodInfo
251
+ : methodInfo.handler;
252
+ if (typeof handler === 'function') {
253
+ this.discoveredActivities.set(activityName, {
254
+ name: activityName,
255
+ className,
256
+ method: methodInfo,
257
+ instance,
258
+ handler: handler,
259
+ });
260
+ discoveredCount++;
261
+ this.logger.debug(`Discovered activity: ${className}.${activityName}`);
262
+ }
263
+ else {
264
+ const errorMessage = `Invalid activity method for ${activityName}: not a function`;
265
+ this.logger.warn(errorMessage);
266
+ errors.push({
267
+ component: `${className}.${activityName}`,
268
+ error: errorMessage,
269
+ });
270
+ }
271
+ }
272
+ catch (methodError) {
273
+ const errorMessage = methodError instanceof Error ? methodError.message : 'Unknown error';
274
+ errors.push({
275
+ component: `${className}.${activityName}`,
276
+ error: errorMessage,
277
+ });
278
+ }
279
+ }
280
+ return {
281
+ success: errors.length === 0,
282
+ discoveredCount,
283
+ errors,
284
+ };
285
+ }
286
+ catch (error) {
287
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
288
+ this.logger.warn(`Failed to discover activities in ${className}`, error);
289
+ errors.push({ component: className, error: errorMessage });
290
+ return {
291
+ success: false,
292
+ discoveredCount,
293
+ errors,
294
+ };
295
+ }
296
+ }
297
+ clearDiscoveredComponents() {
298
+ this.discoveredActivities.clear();
299
+ this.isDiscoveryComplete = false;
300
+ this.discoveryStartTime = null;
301
+ this.lastDiscoveryTime = null;
302
+ }
303
+ getTotalDiscovered() {
304
+ return this.discoveredActivities.size;
305
+ }
306
+ getWrapperName(wrapper) {
307
+ try {
308
+ const metatype = wrapper.metatype;
309
+ return metatype?.name || 'unknown';
310
+ }
311
+ catch {
312
+ return 'unknown';
313
+ }
314
+ }
315
+ logDiscoveryResults(result) {
316
+ const totalDiscovered = this.getTotalDiscovered();
317
+ this.logger.info(`Discovery completed: ${this.discoveredActivities.size} activities`);
318
+ if (result) {
319
+ this.logger.info(`Discovery took ${result.duration}ms`);
320
+ if (result.errors.length > 0) {
321
+ this.logger.warn(`Discovery completed with ${result.errors.length} errors`);
322
+ result.errors.forEach(({ component, error }) => {
323
+ this.logger.warn(`Error in ${component}: ${error}`);
324
+ });
325
+ }
326
+ }
327
+ if (totalDiscovered === 0) {
328
+ this.logger.warn('No Temporal components discovered. Ensure decorators are properly applied.');
329
+ }
330
+ this.logDiscoveredComponents();
331
+ }
332
+ logDiscoveredComponents() {
333
+ if (this.discoveredActivities.size > 0) {
334
+ const activities = Array.from(this.discoveredActivities.keys());
335
+ this.logger.debug(`Discovered activities: [${activities.join(', ')}]`);
336
+ }
337
+ }
338
+ };
339
+ exports.TemporalDiscoveryService = TemporalDiscoveryService;
340
+ exports.TemporalDiscoveryService = TemporalDiscoveryService = TemporalDiscoveryService_1 = __decorate([
341
+ (0, common_1.Injectable)(),
342
+ __param(1, (0, common_1.Optional)()),
343
+ __param(2, (0, common_1.Inject)(constants_1.TEMPORAL_MODULE_OPTIONS)),
344
+ __param(3, (0, common_1.Inject)(constants_1.ACTIVITY_MODULE_OPTIONS)),
345
+ __metadata("design:paramtypes", [core_1.DiscoveryService,
346
+ temporal_metadata_service_1.TemporalMetadataAccessor, Object, Object])
347
+ ], TemporalDiscoveryService);
348
+ //# sourceMappingURL=temporal-discovery.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-discovery.service.js","sourceRoot":"","sources":["../../src/services/temporal-discovery.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { ActivityMethodMetadataResult, ActivityMetadataExtractionResult, ActivityClassValidationResult, MetadataValidationResult, ActivityInfoResult, CacheStatsResult, SignalMethodExtractionResult, QueryMethodExtractionResult, ChildWorkflowExtractionResult } from '../interfaces';
2
+ export declare class TemporalMetadataAccessor {
3
+ private readonly logger;
4
+ private readonly activityMethodCache;
5
+ constructor();
6
+ isActivity(target: Function): boolean;
7
+ isActivityMethod(target: object | null | undefined | string, methodName?: string): boolean;
8
+ getActivityMetadata(target: Function): unknown;
9
+ getActivityMethodMetadata(instance: unknown, methodName: string): ActivityMethodMetadataResult | null;
10
+ getActivityMethodNames(target: Function | null | undefined | string): string[];
11
+ getActivityMethodName(target: object | null | undefined | string, methodName?: string): string | null;
12
+ getActivityOptions(target: Function): Record<string, unknown> | null;
13
+ extractActivityMethods(instance: unknown): ActivityMetadataExtractionResult;
14
+ extractActivityMethodsFromClass(target: Function): Array<{
15
+ methodName: string;
16
+ name: string;
17
+ metadata: {
18
+ name: string;
19
+ methodName: string;
20
+ className: string;
21
+ options?: Record<string, unknown>;
22
+ };
23
+ }>;
24
+ extractMethodsFromPrototype(instance: unknown): ActivityMetadataExtractionResult;
25
+ getActivityMethodOptions(target: unknown, methodName?: string): Record<string, unknown> | null;
26
+ getSignalMethods(prototype: unknown): SignalMethodExtractionResult;
27
+ getQueryMethods(prototype: unknown): QueryMethodExtractionResult;
28
+ getChildWorkflows(prototype: unknown): ChildWorkflowExtractionResult;
29
+ validateActivityClass(constructor: Function): ActivityClassValidationResult;
30
+ private hasActivityMethods;
31
+ getAllMetadataKeys(target: unknown): string[];
32
+ getActivityName(target: Function): string | null;
33
+ getActivityInfo(target: Function | null | undefined | string): ActivityInfoResult;
34
+ validateMetadata(target: unknown, expectedKeys: string[]): MetadataValidationResult;
35
+ clearCache(): void;
36
+ getCacheStats(): CacheStatsResult;
37
+ }