nestjs-temporal-core 3.0.10 → 3.0.12

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 (123) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +1755 -693
  3. package/dist/constants.d.ts +49 -151
  4. package/dist/constants.js +38 -141
  5. package/dist/constants.js.map +1 -1
  6. package/dist/decorators/activity.decorator.js +75 -15
  7. package/dist/decorators/activity.decorator.js.map +1 -1
  8. package/dist/decorators/index.d.ts +1 -3
  9. package/dist/decorators/index.js +4 -13
  10. package/dist/decorators/index.js.map +1 -1
  11. package/dist/decorators/workflow.decorator.d.ts +7 -3
  12. package/dist/decorators/workflow.decorator.js +161 -48
  13. package/dist/decorators/workflow.decorator.js.map +1 -1
  14. package/dist/health/temporal-health.controller.d.ts +7 -0
  15. package/dist/health/temporal-health.controller.js +77 -0
  16. package/dist/health/temporal-health.controller.js.map +1 -0
  17. package/dist/health/temporal-health.module.d.ts +2 -0
  18. package/dist/health/temporal-health.module.js +20 -0
  19. package/dist/health/temporal-health.module.js.map +1 -0
  20. package/dist/index.d.ts +10 -20
  21. package/dist/index.js +15 -30
  22. package/dist/index.js.map +1 -1
  23. package/dist/interfaces.d.ts +773 -160
  24. package/dist/interfaces.js +1 -2
  25. package/dist/interfaces.js.map +1 -1
  26. package/dist/providers/temporal-connection.factory.d.ts +28 -0
  27. package/dist/providers/temporal-connection.factory.js +194 -0
  28. package/dist/providers/temporal-connection.factory.js.map +1 -0
  29. package/dist/services/temporal-client.service.d.ts +33 -0
  30. package/dist/services/temporal-client.service.js +285 -0
  31. package/dist/services/temporal-client.service.js.map +1 -0
  32. package/dist/services/temporal-discovery.service.d.ts +34 -0
  33. package/dist/services/temporal-discovery.service.js +348 -0
  34. package/dist/services/temporal-discovery.service.js.map +1 -0
  35. package/dist/services/temporal-metadata.service.d.ts +37 -0
  36. package/dist/services/temporal-metadata.service.js +512 -0
  37. package/dist/services/temporal-metadata.service.js.map +1 -0
  38. package/dist/services/temporal-schedule.service.d.ts +35 -0
  39. package/dist/services/temporal-schedule.service.js +380 -0
  40. package/dist/services/temporal-schedule.service.js.map +1 -0
  41. package/dist/services/temporal-worker.service.d.ts +67 -0
  42. package/dist/services/temporal-worker.service.js +845 -0
  43. package/dist/services/temporal-worker.service.js.map +1 -0
  44. package/dist/services/temporal.service.d.ts +92 -0
  45. package/dist/services/temporal.service.js +621 -0
  46. package/dist/services/temporal.service.js.map +1 -0
  47. package/dist/temporal.module.d.ts +6 -9
  48. package/dist/temporal.module.js +160 -109
  49. package/dist/temporal.module.js.map +1 -1
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/dist/utils/index.d.ts +2 -2
  52. package/dist/utils/index.js +5 -8
  53. package/dist/utils/index.js.map +1 -1
  54. package/dist/utils/logger.d.ts +10 -4
  55. package/dist/utils/logger.js +77 -106
  56. package/dist/utils/logger.js.map +1 -1
  57. package/dist/utils/metadata.d.ts +1 -3
  58. package/dist/utils/metadata.js +8 -18
  59. package/dist/utils/metadata.js.map +1 -1
  60. package/dist/utils/validation.d.ts +16 -2
  61. package/dist/utils/validation.js +103 -9
  62. package/dist/utils/validation.js.map +1 -1
  63. package/package.json +37 -26
  64. package/dist/activity/index.d.ts +0 -2
  65. package/dist/activity/index.js +0 -19
  66. package/dist/activity/index.js.map +0 -1
  67. package/dist/activity/temporal-activity.module.d.ts +0 -11
  68. package/dist/activity/temporal-activity.module.js +0 -52
  69. package/dist/activity/temporal-activity.module.js.map +0 -1
  70. package/dist/activity/temporal-activity.service.d.ts +0 -46
  71. package/dist/activity/temporal-activity.service.js +0 -192
  72. package/dist/activity/temporal-activity.service.js.map +0 -1
  73. package/dist/client/index.d.ts +0 -3
  74. package/dist/client/index.js +0 -20
  75. package/dist/client/index.js.map +0 -1
  76. package/dist/client/temporal-client.module.d.ts +0 -18
  77. package/dist/client/temporal-client.module.js +0 -198
  78. package/dist/client/temporal-client.module.js.map +0 -1
  79. package/dist/client/temporal-client.service.d.ts +0 -35
  80. package/dist/client/temporal-client.service.js +0 -187
  81. package/dist/client/temporal-client.service.js.map +0 -1
  82. package/dist/client/temporal-schedule.service.d.ts +0 -41
  83. package/dist/client/temporal-schedule.service.js +0 -204
  84. package/dist/client/temporal-schedule.service.js.map +0 -1
  85. package/dist/decorators/parameter.decorator.d.ts +0 -5
  86. package/dist/decorators/parameter.decorator.js +0 -57
  87. package/dist/decorators/parameter.decorator.js.map +0 -1
  88. package/dist/decorators/scheduling.decorator.d.ts +0 -4
  89. package/dist/decorators/scheduling.decorator.js +0 -44
  90. package/dist/decorators/scheduling.decorator.js.map +0 -1
  91. package/dist/discovery/index.d.ts +0 -2
  92. package/dist/discovery/index.js +0 -19
  93. package/dist/discovery/index.js.map +0 -1
  94. package/dist/discovery/temporal-discovery.service.d.ts +0 -39
  95. package/dist/discovery/temporal-discovery.service.js +0 -191
  96. package/dist/discovery/temporal-discovery.service.js.map +0 -1
  97. package/dist/discovery/temporal-schedule-manager.service.d.ts +0 -41
  98. package/dist/discovery/temporal-schedule-manager.service.js +0 -238
  99. package/dist/discovery/temporal-schedule-manager.service.js.map +0 -1
  100. package/dist/schedules/index.d.ts +0 -2
  101. package/dist/schedules/index.js +0 -19
  102. package/dist/schedules/index.js.map +0 -1
  103. package/dist/schedules/temporal-schedules.module.d.ts +0 -11
  104. package/dist/schedules/temporal-schedules.module.js +0 -55
  105. package/dist/schedules/temporal-schedules.module.js.map +0 -1
  106. package/dist/schedules/temporal-schedules.service.d.ts +0 -52
  107. package/dist/schedules/temporal-schedules.service.js +0 -221
  108. package/dist/schedules/temporal-schedules.service.js.map +0 -1
  109. package/dist/temporal.service.d.ts +0 -77
  110. package/dist/temporal.service.js +0 -243
  111. package/dist/temporal.service.js.map +0 -1
  112. package/dist/worker/index.d.ts +0 -3
  113. package/dist/worker/index.js +0 -20
  114. package/dist/worker/index.js.map +0 -1
  115. package/dist/worker/temporal-metadata.accessor.d.ts +0 -32
  116. package/dist/worker/temporal-metadata.accessor.js +0 -208
  117. package/dist/worker/temporal-metadata.accessor.js.map +0 -1
  118. package/dist/worker/temporal-worker-manager.service.d.ts +0 -49
  119. package/dist/worker/temporal-worker-manager.service.js +0 -389
  120. package/dist/worker/temporal-worker-manager.service.js.map +0 -1
  121. package/dist/worker/temporal-worker.module.d.ts +0 -18
  122. package/dist/worker/temporal-worker.module.js +0 -156
  123. package/dist/worker/temporal-worker.module.js.map +0 -1
@@ -10,39 +10,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.TemporalModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const core_1 = require("@nestjs/core");
13
- const temporal_service_1 = require("./temporal.service");
13
+ const temporal_service_1 = require("./services/temporal.service");
14
14
  const constants_1 = require("./constants");
15
- const client_1 = require("./client");
16
- const worker_1 = require("./worker");
17
- const discovery_1 = require("./discovery");
15
+ const temporal_discovery_service_1 = require("./services/temporal-discovery.service");
16
+ const temporal_client_service_1 = require("./services/temporal-client.service");
17
+ const temporal_schedule_service_1 = require("./services/temporal-schedule.service");
18
+ const temporal_worker_service_1 = require("./services/temporal-worker.service");
19
+ const temporal_metadata_service_1 = require("./services/temporal-metadata.service");
18
20
  const logger_1 = require("./utils/logger");
21
+ const temporal_connection_factory_1 = require("./providers/temporal-connection.factory");
19
22
  let TemporalModule = TemporalModule_1 = class TemporalModule {
20
- static register(options) {
23
+ static register(options = {}) {
21
24
  this.validateOptions(options);
22
- const imports = [];
23
- const providers = [];
24
- imports.push(client_1.TemporalClientModule.register(options));
25
- if (options.worker && (options.worker.workflowsPath || options.worker.workflowBundle)) {
26
- imports.push(worker_1.TemporalWorkerModule.register(options));
27
- }
28
- providers.push({
29
- provide: constants_1.TEMPORAL_MODULE_OPTIONS,
30
- useValue: options,
31
- }, {
32
- provide: logger_1.TemporalLoggerManager,
33
- useFactory: () => {
34
- const manager = logger_1.TemporalLoggerManager.getInstance();
35
- manager.configure({
36
- enableLogger: options.enableLogger,
37
- logLevel: options.logLevel,
38
- appName: 'NestJS-Temporal-Core',
39
- });
40
- return manager;
41
- },
42
- }, discovery_1.TemporalDiscoveryService, discovery_1.TemporalScheduleManagerService, temporal_service_1.TemporalService);
25
+ const providers = this.createCoreProviders(options);
43
26
  return {
44
27
  module: TemporalModule_1,
45
- imports: [core_1.DiscoveryModule, ...imports],
28
+ imports: [core_1.DiscoveryModule],
46
29
  providers,
47
30
  exports: [temporal_service_1.TemporalService, logger_1.TemporalLoggerManager, constants_1.TEMPORAL_MODULE_OPTIONS],
48
31
  global: options.isGlobal,
@@ -50,94 +33,165 @@ let TemporalModule = TemporalModule_1 = class TemporalModule {
50
33
  }
51
34
  static registerAsync(options) {
52
35
  this.validateAsyncOptions(options);
53
- const imports = [core_1.DiscoveryModule];
36
+ const imports = [
37
+ core_1.DiscoveryModule,
38
+ ];
54
39
  const providers = [];
40
+ if (options.imports) {
41
+ for (const importModule of options.imports) {
42
+ if (typeof importModule === 'function') {
43
+ imports.push(importModule);
44
+ }
45
+ else if (typeof importModule === 'object' && importModule !== null) {
46
+ imports.push(importModule);
47
+ }
48
+ }
49
+ }
50
+ if (options.useClass) {
51
+ providers.push(options.useClass);
52
+ }
53
+ providers.push(this.createAsyncOptionsProvider(options));
54
+ providers.push(...this.createCoreAsyncProviders());
55
+ return {
56
+ module: TemporalModule_1,
57
+ imports,
58
+ providers,
59
+ exports: [temporal_service_1.TemporalService, logger_1.TemporalLoggerManager, constants_1.TEMPORAL_MODULE_OPTIONS],
60
+ global: options.isGlobal,
61
+ };
62
+ }
63
+ static createCoreProviders(options) {
64
+ return [
65
+ {
66
+ provide: constants_1.TEMPORAL_MODULE_OPTIONS,
67
+ useValue: options,
68
+ },
69
+ temporal_connection_factory_1.TemporalConnectionFactory,
70
+ {
71
+ provide: constants_1.TEMPORAL_CLIENT,
72
+ useFactory: async (connectionFactory, temporalOptions) => {
73
+ return connectionFactory.createClient(temporalOptions);
74
+ },
75
+ inject: [temporal_connection_factory_1.TemporalConnectionFactory, constants_1.TEMPORAL_MODULE_OPTIONS],
76
+ },
77
+ {
78
+ provide: constants_1.TEMPORAL_CONNECTION,
79
+ useFactory: async (connectionFactory, temporalOptions) => {
80
+ return connectionFactory.createWorkerConnection(temporalOptions);
81
+ },
82
+ inject: [temporal_connection_factory_1.TemporalConnectionFactory, constants_1.TEMPORAL_MODULE_OPTIONS],
83
+ },
84
+ {
85
+ provide: constants_1.ACTIVITY_MODULE_OPTIONS,
86
+ useValue: {
87
+ activityClasses: options.worker?.activityClasses || [],
88
+ },
89
+ },
90
+ {
91
+ provide: logger_1.TemporalLoggerManager,
92
+ useFactory: (temporalOptions) => {
93
+ const manager = logger_1.TemporalLoggerManager.getInstance();
94
+ manager.configure({
95
+ enableLogger: temporalOptions.enableLogger,
96
+ logLevel: temporalOptions.logLevel,
97
+ appName: 'NestJS-Temporal-Core',
98
+ });
99
+ return manager;
100
+ },
101
+ inject: [constants_1.TEMPORAL_MODULE_OPTIONS],
102
+ },
103
+ temporal_client_service_1.TemporalClientService,
104
+ temporal_schedule_service_1.TemporalScheduleService,
105
+ temporal_discovery_service_1.TemporalDiscoveryService,
106
+ temporal_worker_service_1.TemporalWorkerManagerService,
107
+ temporal_metadata_service_1.TemporalMetadataAccessor,
108
+ temporal_service_1.TemporalService,
109
+ ];
110
+ }
111
+ static createCoreAsyncProviders() {
112
+ return [
113
+ temporal_connection_factory_1.TemporalConnectionFactory,
114
+ {
115
+ provide: constants_1.TEMPORAL_CLIENT,
116
+ useFactory: async (connectionFactory, temporalOptions) => {
117
+ return connectionFactory.createClient(temporalOptions);
118
+ },
119
+ inject: [temporal_connection_factory_1.TemporalConnectionFactory, constants_1.TEMPORAL_MODULE_OPTIONS],
120
+ },
121
+ {
122
+ provide: constants_1.TEMPORAL_CONNECTION,
123
+ useFactory: async (connectionFactory, temporalOptions) => {
124
+ return connectionFactory.createWorkerConnection(temporalOptions);
125
+ },
126
+ inject: [temporal_connection_factory_1.TemporalConnectionFactory, constants_1.TEMPORAL_MODULE_OPTIONS],
127
+ },
128
+ {
129
+ provide: constants_1.ACTIVITY_MODULE_OPTIONS,
130
+ useFactory: (temporalOptions) => {
131
+ return {
132
+ activityClasses: temporalOptions.worker?.activityClasses || [],
133
+ };
134
+ },
135
+ inject: [constants_1.TEMPORAL_MODULE_OPTIONS],
136
+ },
137
+ {
138
+ provide: logger_1.TemporalLoggerManager,
139
+ useFactory: (temporalOptions) => {
140
+ const manager = logger_1.TemporalLoggerManager.getInstance();
141
+ manager.configure({
142
+ enableLogger: temporalOptions.enableLogger,
143
+ logLevel: temporalOptions.logLevel,
144
+ appName: 'NestJS-Temporal-Core',
145
+ });
146
+ return manager;
147
+ },
148
+ inject: [constants_1.TEMPORAL_MODULE_OPTIONS],
149
+ },
150
+ temporal_client_service_1.TemporalClientService,
151
+ temporal_schedule_service_1.TemporalScheduleService,
152
+ temporal_discovery_service_1.TemporalDiscoveryService,
153
+ temporal_worker_service_1.TemporalWorkerManagerService,
154
+ temporal_metadata_service_1.TemporalMetadataAccessor,
155
+ temporal_service_1.TemporalService,
156
+ ];
157
+ }
158
+ static createAsyncOptionsProvider(options) {
55
159
  if (options.useFactory) {
56
- providers.push({
160
+ return {
57
161
  provide: constants_1.TEMPORAL_MODULE_OPTIONS,
58
162
  useFactory: options.useFactory,
59
163
  inject: options.inject || [],
60
- });
164
+ };
61
165
  }
62
166
  else if (options.useClass) {
63
- providers.push({
64
- provide: options.useClass,
65
- useClass: options.useClass,
66
- }, {
167
+ return {
67
168
  provide: constants_1.TEMPORAL_MODULE_OPTIONS,
68
169
  useFactory: async (optionsFactory) => optionsFactory.createTemporalOptions(),
69
170
  inject: [options.useClass],
70
- });
171
+ };
71
172
  }
72
173
  else if (options.useExisting) {
73
- providers.push({
174
+ return {
74
175
  provide: constants_1.TEMPORAL_MODULE_OPTIONS,
75
176
  useFactory: async (optionsFactory) => optionsFactory.createTemporalOptions(),
76
177
  inject: [options.useExisting],
77
- });
178
+ };
179
+ }
180
+ else {
181
+ throw new Error('Invalid async options configuration');
78
182
  }
79
- imports.push(client_1.TemporalClientModule.registerAsync({
80
- imports: options.imports,
81
- useFactory: async (...args) => {
82
- const temporalOptions = await this.createOptionsFromFactory(options, args);
83
- return temporalOptions;
84
- },
85
- inject: options.inject,
86
- }));
87
- imports.push(worker_1.TemporalWorkerModule.registerAsync({
88
- imports: options.imports,
89
- useFactory: async (...args) => {
90
- const temporalOptions = await this.createOptionsFromFactory(options, args);
91
- if (!temporalOptions.worker ||
92
- (!temporalOptions.worker.workflowsPath &&
93
- !temporalOptions.worker.workflowBundle)) {
94
- const { worker: _worker, ...optionsWithoutWorker } = temporalOptions;
95
- return optionsWithoutWorker;
96
- }
97
- return temporalOptions;
98
- },
99
- inject: options.inject,
100
- }));
101
- providers.push({
102
- provide: logger_1.TemporalLoggerManager,
103
- useFactory: async (...args) => {
104
- const temporalOptions = await this.createOptionsFromFactory(options, args);
105
- const manager = logger_1.TemporalLoggerManager.getInstance();
106
- manager.configure({
107
- enableLogger: temporalOptions.enableLogger,
108
- logLevel: temporalOptions.logLevel,
109
- appName: 'NestJS-Temporal-Core',
110
- });
111
- return manager;
112
- },
113
- inject: options.inject,
114
- }, discovery_1.TemporalDiscoveryService, discovery_1.TemporalScheduleManagerService, temporal_service_1.TemporalService);
115
- return {
116
- module: TemporalModule_1,
117
- imports: [...(options.imports || []), ...imports],
118
- providers,
119
- exports: [temporal_service_1.TemporalService, logger_1.TemporalLoggerManager, constants_1.TEMPORAL_MODULE_OPTIONS],
120
- global: options.isGlobal,
121
- };
122
- }
123
- static forClient(options) {
124
- return this.register({
125
- connection: options.connection,
126
- enableLogger: options.enableLogger,
127
- logLevel: options.logLevel,
128
- isGlobal: options.isGlobal,
129
- allowConnectionFailure: true,
130
- });
131
183
  }
132
184
  static validateOptions(options) {
133
185
  if (!options) {
134
- throw new Error('Temporal options are required');
135
- }
136
- if (!options.connection) {
137
- throw new Error('Connection configuration is required');
186
+ return;
138
187
  }
139
- if (!options.connection.address) {
140
- throw new Error('Connection address is required');
188
+ if (options.connection) {
189
+ if (!options.connection.address || !options.connection.address.trim()) {
190
+ throw new Error('Connection address is required when connection is configured');
191
+ }
192
+ if (!options.connection.address.includes(':')) {
193
+ throw new Error('Connection address must include port (e.g., localhost:7233)');
194
+ }
141
195
  }
142
196
  if (options.worker) {
143
197
  const hasWorkflowsPath = Boolean(options.worker.workflowsPath);
@@ -145,6 +199,13 @@ let TemporalModule = TemporalModule_1 = class TemporalModule {
145
199
  if (hasWorkflowsPath && hasWorkflowBundle) {
146
200
  throw new Error('Worker cannot have both workflowsPath and workflowBundle');
147
201
  }
202
+ if (options.taskQueue && options.taskQueue.trim().length === 0) {
203
+ throw new Error('Task queue cannot be empty string');
204
+ }
205
+ }
206
+ if (options.logLevel &&
207
+ !['error', 'warn', 'info', 'debug', 'verbose'].includes(options.logLevel)) {
208
+ throw new Error(`Invalid log level: ${options.logLevel}`);
148
209
  }
149
210
  }
150
211
  static validateAsyncOptions(options) {
@@ -153,24 +214,14 @@ let TemporalModule = TemporalModule_1 = class TemporalModule {
153
214
  const hasExisting = Boolean(options.useExisting);
154
215
  const configMethods = [hasFactory, hasClass, hasExisting].filter(Boolean).length;
155
216
  if (configMethods === 0) {
156
- throw new Error(`${constants_1.ERRORS.INVALID_OPTIONS}: Must provide useFactory, useClass, or useExisting`);
217
+ throw new Error('Invalid Temporal module options: Must provide useFactory, useClass, or useExisting');
157
218
  }
158
219
  if (configMethods > 1) {
159
- throw new Error(`${constants_1.ERRORS.INVALID_OPTIONS}: Cannot provide multiple configuration methods`);
160
- }
161
- }
162
- static async createOptionsFromFactory(options, args) {
163
- if (options.useFactory) {
164
- return await options.useFactory(...args);
165
- }
166
- if (options.useClass) {
167
- const optionsFactory = new options.useClass();
168
- return await optionsFactory.createTemporalOptions();
220
+ throw new Error('Invalid Temporal module options: Cannot provide multiple configuration methods');
169
221
  }
170
- if (options.useExisting) {
171
- throw new Error('useExisting should be handled by dependency injection');
222
+ if (options.useFactory && options.inject && !Array.isArray(options.inject)) {
223
+ throw new Error('inject option must be an array when using useFactory');
172
224
  }
173
- throw new Error(constants_1.ERRORS.INVALID_OPTIONS);
174
225
  }
175
226
  };
176
227
  exports.TemporalModule = TemporalModule;
@@ -1 +1 @@
1
- {"version":3,"file":"temporal.module.js","sourceRoot":"","sources":["../src/temporal.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"temporal.module.js","sourceRoot":"","sources":["../src/temporal.module.ts"],"names":[],"mappings":"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"}