nestjs-temporal-core 3.0.9 → 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
@@ -1,389 +0,0 @@
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 TemporalWorkerManagerService_1;
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.TemporalWorkerManagerService = void 0;
17
- const common_1 = require("@nestjs/common");
18
- const core_1 = require("@nestjs/core");
19
- const worker_1 = require("@temporalio/worker");
20
- const temporal_metadata_accessor_1 = require("./temporal-metadata.accessor");
21
- const constants_1 = require("../constants");
22
- const logger_1 = require("../utils/logger");
23
- let TemporalWorkerManagerService = TemporalWorkerManagerService_1 = class TemporalWorkerManagerService {
24
- constructor(options, discoveryService, metadataAccessor) {
25
- this.options = options;
26
- this.discoveryService = discoveryService;
27
- this.metadataAccessor = metadataAccessor;
28
- this.worker = null;
29
- this.connection = null;
30
- this.isInitialized = false;
31
- this.isRunning = false;
32
- this.activities = {};
33
- this.workerPromise = null;
34
- this.logger = (0, logger_1.createLogger)(TemporalWorkerManagerService_1.name);
35
- }
36
- async onModuleInit() {
37
- try {
38
- this.logger.log('Initializing Temporal worker...');
39
- await this.initializeWorker();
40
- this.isInitialized = true;
41
- this.logger.log('Temporal worker initialization completed');
42
- }
43
- catch (error) {
44
- this.lastError = error?.message || 'Unknown initialization error';
45
- this.logger.error('Error during worker initialization', error?.stack || error);
46
- if (this.options?.allowWorkerFailure !== false) {
47
- this.logger.warn('Continuing application startup without Temporal worker');
48
- }
49
- else {
50
- throw error;
51
- }
52
- }
53
- }
54
- async onApplicationBootstrap() {
55
- if (this.options?.autoStart === false || !this.worker) {
56
- this.logger.debug('Worker auto-start disabled or worker not initialized');
57
- return;
58
- }
59
- setImmediate(() => {
60
- this.startWorkerInBackground();
61
- });
62
- }
63
- async onModuleDestroy() {
64
- await this.shutdown();
65
- }
66
- startWorkerInBackground() {
67
- if (!this.worker || this.isRunning) {
68
- return;
69
- }
70
- this.logger.log(`Starting worker for task queue: ${this.options?.taskQueue} in background`);
71
- this.workerPromise = this.runWorkerLoop().catch((error) => {
72
- this.isRunning = false;
73
- this.lastError = error?.message || 'Unknown worker error';
74
- this.logger.error('Worker crashed', error?.stack || error);
75
- if (this.options?.autoRestart !== false) {
76
- setTimeout(() => {
77
- this.logger.log('Attempting to restart worker...');
78
- this.startWorkerInBackground();
79
- }, 5000);
80
- }
81
- return Promise.resolve();
82
- });
83
- this.workerPromise.catch(() => {
84
- });
85
- }
86
- async runWorkerLoop() {
87
- if (!this.worker) {
88
- throw new Error(constants_1.ERRORS.WORKER_NOT_INITIALIZED);
89
- }
90
- this.isRunning = true;
91
- this.startedAt = new Date();
92
- this.lastError = undefined;
93
- this.logger.log('Worker started successfully');
94
- try {
95
- await this.worker.run();
96
- }
97
- catch (error) {
98
- this.isRunning = false;
99
- this.lastError = error?.message || 'Worker execution error';
100
- this.logger.error('Worker execution failed', error?.stack || error);
101
- throw error;
102
- }
103
- finally {
104
- this.isRunning = false;
105
- this.logger.log('Worker execution completed');
106
- }
107
- }
108
- async initializeWorker() {
109
- this.validateConfiguration();
110
- this.activities = await this.discoverActivities();
111
- await this.createConnection();
112
- await this.createWorker();
113
- this.logWorkerConfiguration();
114
- }
115
- validateConfiguration() {
116
- const taskQueue = this.options?.taskQueue;
117
- if (!taskQueue) {
118
- throw new Error(constants_1.ERRORS.MISSING_TASK_QUEUE);
119
- }
120
- const workflowsPath = this.options?.workflowsPath;
121
- const workflowBundle = this.options?.workflowBundle;
122
- const hasWorkflowsPath = Boolean(workflowsPath);
123
- const hasWorkflowBundle = Boolean(workflowBundle);
124
- if (hasWorkflowsPath && hasWorkflowBundle) {
125
- throw new Error('Cannot specify both workflowsPath and workflowBundle');
126
- }
127
- if (hasWorkflowBundle) {
128
- this.logger.debug('Using pre-bundled workflows (recommended for production)');
129
- }
130
- else if (hasWorkflowsPath) {
131
- this.logger.debug('Using workflows from filesystem path (recommended for development)');
132
- }
133
- else {
134
- this.logger.debug('Worker configured for activities only (no workflows)');
135
- }
136
- }
137
- async createConnection() {
138
- const connection = this.options?.connection;
139
- const connectionOptions = {
140
- address: connection?.address || 'localhost:7233',
141
- tls: connection?.tls,
142
- };
143
- if (connection?.apiKey) {
144
- connectionOptions.metadata = {
145
- ...(connection?.metadata || {}),
146
- authorization: `Bearer ${connection.apiKey}`,
147
- };
148
- }
149
- this.logger.debug(`Connecting to Temporal server at ${connectionOptions.address}`);
150
- this.connection = await worker_1.NativeConnection.connect(connectionOptions);
151
- this.logger.debug('Temporal connection established');
152
- }
153
- async createWorker() {
154
- if (!this.connection) {
155
- throw new Error('Connection not established');
156
- }
157
- const workerOptions = this.buildWorkerOptions();
158
- const connection = this.options?.connection;
159
- const namespace = connection?.namespace || constants_1.DEFAULT_NAMESPACE;
160
- this.worker = await worker_1.Worker.create({
161
- connection: this.connection,
162
- namespace,
163
- taskQueue: this.options?.taskQueue,
164
- ...workerOptions,
165
- });
166
- this.logger.log(`Worker created for queue: ${this.options?.taskQueue} in namespace: ${namespace}`);
167
- }
168
- buildWorkerOptions() {
169
- const baseOptions = {
170
- taskQueue: this.options?.taskQueue,
171
- activities: this.activities,
172
- };
173
- const workflowBundle = this.options?.workflowBundle;
174
- const workflowsPath = this.options?.workflowsPath;
175
- if (workflowBundle) {
176
- baseOptions.workflowBundle = workflowBundle;
177
- }
178
- else if (workflowsPath) {
179
- baseOptions.workflowsPath = workflowsPath;
180
- }
181
- const defaultOptions = this.getEnvironmentDefaults();
182
- const userOptions = this.options?.workerOptions || {};
183
- return {
184
- ...baseOptions,
185
- ...defaultOptions,
186
- ...userOptions,
187
- };
188
- }
189
- getEnvironmentDefaults() {
190
- const env = process.env.NODE_ENV || 'development';
191
- switch (env) {
192
- case 'production':
193
- return constants_1.WORKER_PRESETS.PRODUCTION_BALANCED;
194
- case 'development':
195
- return constants_1.WORKER_PRESETS.DEVELOPMENT;
196
- default:
197
- return {
198
- maxConcurrentActivityTaskExecutions: 20,
199
- maxConcurrentWorkflowTaskExecutions: 10,
200
- maxConcurrentLocalActivityExecutions: 20,
201
- reuseV8Context: true,
202
- };
203
- }
204
- }
205
- async discoverActivities() {
206
- const activities = {};
207
- const providers = this.discoveryService.getProviders();
208
- const activityProviders = providers.filter((wrapper) => {
209
- const { instance, metatype } = wrapper;
210
- const targetClass = instance?.constructor || metatype;
211
- if (!targetClass)
212
- return false;
213
- const activityClasses = this.options?.activityClasses;
214
- if (activityClasses?.length) {
215
- return (activityClasses.includes(targetClass) &&
216
- this.metadataAccessor.isActivity(targetClass));
217
- }
218
- return this.metadataAccessor.isActivity(targetClass);
219
- });
220
- this.logger.log(`Found ${activityProviders.length} activity providers`);
221
- for (const wrapper of activityProviders) {
222
- const { instance } = wrapper;
223
- if (!instance)
224
- continue;
225
- try {
226
- const className = instance.constructor.name;
227
- this.logger.debug(`Processing activity class: ${className}`);
228
- const validation = this.metadataAccessor.validateActivityClass(instance.constructor);
229
- if (!validation.isValid) {
230
- this.logger.warn(`Activity class ${className} has issues: ${validation.issues.join(', ')}`);
231
- continue;
232
- }
233
- const activityMethods = this.metadataAccessor.extractActivityMethods(instance);
234
- for (const [activityName, method] of activityMethods.entries()) {
235
- activities[activityName] = method;
236
- this.logger.debug(`Registered activity: ${className}.${activityName}`);
237
- }
238
- }
239
- catch (error) {
240
- this.logger.error(`Failed to process activity class ${instance.constructor.name}:`, error?.stack || error);
241
- }
242
- }
243
- const activityCount = Object.keys(activities).length;
244
- this.logger.log(`Registered ${activityCount} activity methods in total`);
245
- return activities;
246
- }
247
- logWorkerConfiguration() {
248
- const connection = this.options?.connection;
249
- const workflowBundle = this.options?.workflowBundle;
250
- const workflowsPath = this.options?.workflowsPath;
251
- const config = {
252
- taskQueue: this.options?.taskQueue,
253
- namespace: connection?.namespace || constants_1.DEFAULT_NAMESPACE,
254
- workflowSource: workflowBundle ? 'bundle' : workflowsPath ? 'filesystem' : 'none',
255
- activitiesCount: Object.keys(this.activities).length,
256
- autoStart: this.options?.autoStart !== false,
257
- environment: process.env.NODE_ENV || 'development',
258
- };
259
- this.logger.log('Worker configuration summary:');
260
- this.logger.debug(JSON.stringify(config, null, 2));
261
- }
262
- async shutdown() {
263
- this.logger.log('Shutting down Temporal worker...');
264
- if (this.worker && this.isRunning) {
265
- try {
266
- await this.worker.shutdown();
267
- this.isRunning = false;
268
- this.logger.log('Worker shut down successfully');
269
- }
270
- catch (error) {
271
- this.logger.error('Error during worker shutdown', error?.stack);
272
- }
273
- finally {
274
- this.worker = null;
275
- }
276
- }
277
- if (this.workerPromise) {
278
- try {
279
- await Promise.race([
280
- this.workerPromise,
281
- new Promise((resolve) => setTimeout(resolve, 5000)),
282
- ]);
283
- }
284
- catch (error) {
285
- this.logger.debug('Worker promise completed with error during shutdown:', error?.message);
286
- }
287
- finally {
288
- this.workerPromise = null;
289
- }
290
- }
291
- if (this.connection) {
292
- try {
293
- await this.connection.close();
294
- this.logger.log('Connection closed successfully');
295
- }
296
- catch (error) {
297
- this.logger.error('Error during connection close', error?.stack);
298
- }
299
- finally {
300
- this.connection = null;
301
- }
302
- }
303
- this.isInitialized = false;
304
- this.startedAt = undefined;
305
- }
306
- getWorker() {
307
- return this.worker;
308
- }
309
- getConnection() {
310
- return this.connection;
311
- }
312
- isWorkerRunning() {
313
- return this.isRunning;
314
- }
315
- isWorkerInitialized() {
316
- return this.isInitialized;
317
- }
318
- getWorkerStatus() {
319
- const uptime = this.startedAt ? Date.now() - this.startedAt.getTime() : undefined;
320
- const connection = this.options?.connection;
321
- const workflowBundle = this.options?.workflowBundle;
322
- const workflowsPath = this.options?.workflowsPath;
323
- return {
324
- isInitialized: this.isInitialized,
325
- isRunning: this.isRunning,
326
- isHealthy: this.isInitialized && !this.lastError && this.connection !== null,
327
- taskQueue: this.options?.taskQueue || 'unknown',
328
- namespace: connection?.namespace || constants_1.DEFAULT_NAMESPACE,
329
- workflowSource: workflowBundle ? 'bundle' : workflowsPath ? 'filesystem' : 'none',
330
- activitiesCount: Object.keys(this.activities).length,
331
- lastError: this.lastError,
332
- startedAt: this.startedAt,
333
- uptime,
334
- };
335
- }
336
- getRegisteredActivities() {
337
- return Object.keys(this.activities);
338
- }
339
- async restartWorker() {
340
- this.logger.log('Restarting Temporal worker...');
341
- await this.shutdown();
342
- try {
343
- await this.initializeWorker();
344
- this.isInitialized = true;
345
- this.logger.log('Worker restarted successfully');
346
- if (this.options?.autoStart !== false) {
347
- this.startWorkerInBackground();
348
- }
349
- }
350
- catch (error) {
351
- this.lastError = error?.message || 'Unknown restart error';
352
- this.logger.error('Error during worker restart', error?.stack || error);
353
- throw error;
354
- }
355
- }
356
- async healthCheck() {
357
- const status = this.getWorkerStatus();
358
- const activities = this.getRegisteredActivities();
359
- let healthStatus;
360
- if (!status.isInitialized) {
361
- healthStatus = 'unhealthy';
362
- }
363
- else if (status.lastError) {
364
- healthStatus = 'degraded';
365
- }
366
- else if (status.isHealthy) {
367
- healthStatus = 'healthy';
368
- }
369
- else {
370
- healthStatus = 'degraded';
371
- }
372
- return {
373
- status: healthStatus,
374
- details: status,
375
- activities: {
376
- total: activities.length,
377
- registered: activities,
378
- },
379
- };
380
- }
381
- };
382
- exports.TemporalWorkerManagerService = TemporalWorkerManagerService;
383
- exports.TemporalWorkerManagerService = TemporalWorkerManagerService = TemporalWorkerManagerService_1 = __decorate([
384
- (0, common_1.Injectable)(),
385
- __param(0, (0, common_1.Inject)(constants_1.TEMPORAL_MODULE_OPTIONS)),
386
- __metadata("design:paramtypes", [Object, core_1.DiscoveryService,
387
- temporal_metadata_accessor_1.TemporalMetadataAccessor])
388
- ], TemporalWorkerManagerService);
389
- //# sourceMappingURL=temporal-worker-manager.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"temporal-worker-manager.service.js","sourceRoot":"","sources":["../../src/worker/temporal-worker-manager.service.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { DynamicModule, Type } from '@nestjs/common';
2
- import { TemporalAsyncOptions, TemporalOptions } from '../interfaces';
3
- export declare class TemporalWorkerModule {
4
- static register(options: TemporalOptions): DynamicModule;
5
- static registerAsync(options: TemporalAsyncOptions): DynamicModule;
6
- static forWorker(options: {
7
- connection: TemporalOptions['connection'];
8
- taskQueue: string;
9
- workflowsPath?: string;
10
- workflowBundle?: unknown;
11
- activityClasses?: Array<Type<unknown>>;
12
- isGlobal?: boolean;
13
- }): DynamicModule;
14
- private static createActivityProviders;
15
- private static createAsyncProviders;
16
- private static validateWorkerOptions;
17
- private static extractWorkerOptions;
18
- }
@@ -1,156 +0,0 @@
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 TemporalWorkerModule_1;
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.TemporalWorkerModule = void 0;
11
- const common_1 = require("@nestjs/common");
12
- const core_1 = require("@nestjs/core");
13
- const temporal_metadata_accessor_1 = require("./temporal-metadata.accessor");
14
- const constants_1 = require("../constants");
15
- const temporal_worker_manager_service_1 = require("./temporal-worker-manager.service");
16
- let TemporalWorkerModule = TemporalWorkerModule_1 = class TemporalWorkerModule {
17
- static register(options) {
18
- this.validateWorkerOptions(options);
19
- const workerOptions = this.extractWorkerOptions(options);
20
- return {
21
- module: TemporalWorkerModule_1,
22
- global: true,
23
- providers: [
24
- {
25
- provide: constants_1.TEMPORAL_MODULE_OPTIONS,
26
- useValue: workerOptions,
27
- },
28
- ...this.createActivityProviders(options.worker?.activityClasses || []),
29
- temporal_metadata_accessor_1.TemporalMetadataAccessor,
30
- core_1.DiscoveryService,
31
- temporal_worker_manager_service_1.TemporalWorkerManagerService,
32
- ],
33
- exports: [temporal_worker_manager_service_1.TemporalWorkerManagerService, constants_1.TEMPORAL_MODULE_OPTIONS],
34
- };
35
- }
36
- static registerAsync(options) {
37
- return {
38
- module: TemporalWorkerModule_1,
39
- global: true,
40
- imports: options.imports || [],
41
- providers: [
42
- ...this.createAsyncProviders(options),
43
- temporal_metadata_accessor_1.TemporalMetadataAccessor,
44
- core_1.DiscoveryService,
45
- temporal_worker_manager_service_1.TemporalWorkerManagerService,
46
- ],
47
- exports: [temporal_worker_manager_service_1.TemporalWorkerManagerService, constants_1.TEMPORAL_MODULE_OPTIONS],
48
- };
49
- }
50
- static forWorker(options) {
51
- return this.register({
52
- connection: options.connection,
53
- taskQueue: options.taskQueue,
54
- worker: {
55
- workflowsPath: options.workflowsPath,
56
- workflowBundle: options.workflowBundle,
57
- activityClasses: options.activityClasses,
58
- },
59
- isGlobal: options.isGlobal,
60
- });
61
- }
62
- static createActivityProviders(activityClasses) {
63
- return activityClasses.map((ActivityClass) => ({
64
- provide: ActivityClass,
65
- useClass: ActivityClass,
66
- }));
67
- }
68
- static createAsyncProviders(options) {
69
- const providers = [];
70
- if (options.useFactory) {
71
- providers.push({
72
- provide: constants_1.TEMPORAL_MODULE_OPTIONS,
73
- useFactory: async (...args) => {
74
- const temporalOptions = await options.useFactory(...args);
75
- this.validateWorkerOptions(temporalOptions);
76
- return this.extractWorkerOptions(temporalOptions);
77
- },
78
- inject: options.inject || [],
79
- });
80
- if (options.useFactory.toString().includes('activityClasses')) {
81
- }
82
- }
83
- else if (options.useClass) {
84
- providers.push({
85
- provide: constants_1.TEMPORAL_MODULE_OPTIONS,
86
- useFactory: async (optionsFactory) => {
87
- const temporalOptions = await optionsFactory.createTemporalOptions();
88
- this.validateWorkerOptions(temporalOptions);
89
- return this.extractWorkerOptions(temporalOptions);
90
- },
91
- inject: [options.useClass],
92
- }, {
93
- provide: options.useClass,
94
- useClass: options.useClass,
95
- });
96
- }
97
- else if (options.useExisting) {
98
- providers.push({
99
- provide: constants_1.TEMPORAL_MODULE_OPTIONS,
100
- useFactory: async (optionsFactory) => {
101
- const temporalOptions = await optionsFactory.createTemporalOptions();
102
- this.validateWorkerOptions(temporalOptions);
103
- return this.extractWorkerOptions(temporalOptions);
104
- },
105
- inject: [options.useExisting],
106
- });
107
- }
108
- else {
109
- throw new Error(constants_1.ERRORS.INVALID_OPTIONS);
110
- }
111
- return providers;
112
- }
113
- static validateWorkerOptions(options) {
114
- if (!options.connection) {
115
- throw new Error('Connection configuration is required for worker');
116
- }
117
- if (!options.connection.address) {
118
- throw new Error('Connection address is required for worker');
119
- }
120
- if (!options.taskQueue) {
121
- throw new Error('Task queue is required for worker');
122
- }
123
- if (options.worker) {
124
- const hasWorkflowsPath = Boolean(options.worker.workflowsPath);
125
- const hasWorkflowBundle = Boolean(options.worker.workflowBundle);
126
- if (hasWorkflowsPath && hasWorkflowBundle) {
127
- throw new Error('Worker cannot have both workflowsPath and workflowBundle');
128
- }
129
- }
130
- }
131
- static extractWorkerOptions(options) {
132
- return {
133
- connection: {
134
- address: options.connection.address,
135
- namespace: options.connection.namespace,
136
- tls: options.connection.tls,
137
- apiKey: options.connection.apiKey,
138
- metadata: options.connection.metadata,
139
- },
140
- taskQueue: options.taskQueue,
141
- workflowsPath: options.worker?.workflowsPath,
142
- workflowBundle: options.worker?.workflowBundle,
143
- activityClasses: options.worker?.activityClasses || [],
144
- autoStart: options.worker?.autoStart !== false,
145
- allowWorkerFailure: options.allowConnectionFailure !== false,
146
- workerOptions: options.worker?.workerOptions || {},
147
- enableLogger: options.enableLogger,
148
- logLevel: options.logLevel,
149
- };
150
- }
151
- };
152
- exports.TemporalWorkerModule = TemporalWorkerModule;
153
- exports.TemporalWorkerModule = TemporalWorkerModule = TemporalWorkerModule_1 = __decorate([
154
- (0, common_1.Module)({})
155
- ], TemporalWorkerModule);
156
- //# sourceMappingURL=temporal-worker.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"temporal-worker.module.js","sourceRoot":"","sources":["../../src/worker/temporal-worker.module.ts"],"names":[],"mappings":"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"}