nestjs-temporal-core 3.0.6 → 3.0.7
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 +233 -26
- package/dist/activity/temporal-activity.module.d.ts +4 -4
- package/dist/activity/temporal-activity.module.js.map +1 -1
- package/dist/activity/temporal-activity.service.js +3 -6
- package/dist/activity/temporal-activity.service.js.map +1 -1
- package/dist/client/temporal-client.module.js +51 -42
- package/dist/client/temporal-client.module.js.map +1 -1
- package/dist/client/temporal-client.service.d.ts +4 -4
- package/dist/client/temporal-client.service.js +2 -5
- package/dist/client/temporal-client.service.js.map +1 -1
- package/dist/client/temporal-schedule.service.d.ts +9 -7
- package/dist/client/temporal-schedule.service.js +6 -3
- package/dist/client/temporal-schedule.service.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/decorators/activity.decorator.d.ts +1 -1
- package/dist/decorators/activity.decorator.js +28 -17
- package/dist/decorators/activity.decorator.js.map +1 -1
- package/dist/decorators/parameter.decorator.d.ts +0 -2
- package/dist/decorators/parameter.decorator.js +2 -14
- package/dist/decorators/parameter.decorator.js.map +1 -1
- package/dist/decorators/scheduling.decorator.js +3 -19
- package/dist/decorators/scheduling.decorator.js.map +1 -1
- package/dist/discovery/temporal-discovery.service.d.ts +3 -3
- package/dist/discovery/temporal-discovery.service.js +17 -16
- package/dist/discovery/temporal-discovery.service.js.map +1 -1
- package/dist/discovery/temporal-schedule-manager.service.js +5 -2
- package/dist/discovery/temporal-schedule-manager.service.js.map +1 -1
- package/dist/index.d.ts +16 -6
- package/dist/index.js +34 -21
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +65 -24
- package/dist/interfaces.js.map +1 -1
- package/dist/schedules/temporal-schedules.module.d.ts +4 -4
- package/dist/schedules/temporal-schedules.module.js.map +1 -1
- package/dist/schedules/temporal-schedules.service.js +7 -6
- package/dist/schedules/temporal-schedules.service.js.map +1 -1
- package/dist/temporal.module.d.ts +2 -10
- package/dist/temporal.module.js +88 -111
- package/dist/temporal.module.js.map +1 -1
- package/dist/temporal.service.d.ts +10 -9
- package/dist/temporal.service.js +9 -7
- package/dist/temporal.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +38 -0
- package/dist/utils/logger.js +208 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/metadata.d.ts +7 -0
- package/dist/utils/metadata.js +38 -0
- package/dist/utils/metadata.js.map +1 -0
- package/dist/utils/validation.d.ts +2 -0
- package/dist/utils/validation.js +22 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/worker/temporal-metadata.accessor.d.ts +11 -10
- package/dist/worker/temporal-metadata.accessor.js +2 -1
- package/dist/worker/temporal-metadata.accessor.js.map +1 -1
- package/dist/worker/temporal-worker-manager.service.d.ts +6 -9
- package/dist/worker/temporal-worker-manager.service.js +100 -104
- package/dist/worker/temporal-worker-manager.service.js.map +1 -1
- package/dist/worker/temporal-worker.module.d.ts +2 -2
- package/dist/worker/temporal-worker.module.js +42 -47
- package/dist/worker/temporal-worker.module.js.map +1 -1
- package/package.json +25 -27
- package/dist/utils/conditional-logger.d.ts +0 -15
- package/dist/utils/conditional-logger.js +0 -58
- package/dist/utils/conditional-logger.js.map +0 -1
package/README.md
CHANGED
|
@@ -16,16 +16,18 @@ NestJS Temporal Core brings Temporal's durable execution to NestJS with familiar
|
|
|
16
16
|
|
|
17
17
|
## 🚀 Key Features
|
|
18
18
|
|
|
19
|
-
- **🎯 NestJS-Native** - Familiar patterns: `@Activity`, `@Cron`, `@Interval`
|
|
19
|
+
- **🎯 NestJS-Native** - Familiar patterns: `@Activity`, `@Cron`, `@Interval`, `@Scheduled`
|
|
20
20
|
- **🔍 Auto-Discovery** - Automatically finds and registers activities and schedules
|
|
21
|
-
- **📅 Declarative Scheduling** - Built-in cron and interval scheduling
|
|
21
|
+
- **📅 Declarative Scheduling** - Built-in cron and interval scheduling with validation
|
|
22
22
|
- **🔄 Unified Service** - Single `TemporalService` for all operations
|
|
23
23
|
- **⚙️ Flexible Setup** - Client-only, worker-only, or unified deployments
|
|
24
24
|
- **🏥 Health Monitoring** - Comprehensive status monitoring and health checks
|
|
25
25
|
- **🔧 Production Ready** - TLS, connection management, graceful shutdowns
|
|
26
26
|
- **📊 Modular Architecture** - Individual modules for specific needs
|
|
27
|
-
- **📝 Configurable Logging** - Fine-grained control
|
|
27
|
+
- **📝 Configurable Logging** - Fine-grained control with `TemporalLogger`
|
|
28
28
|
- **🔐 Enterprise Ready** - Temporal Cloud support with TLS and API keys
|
|
29
|
+
- **🛠️ Developer Experience** - Rich TypeScript support with comprehensive utilities
|
|
30
|
+
- **⚡ Performance Optimized** - Efficient metadata handling and caching
|
|
29
31
|
|
|
30
32
|
## 📦 Installation
|
|
31
33
|
|
|
@@ -33,6 +35,26 @@ NestJS Temporal Core brings Temporal's durable execution to NestJS with familiar
|
|
|
33
35
|
npm install nestjs-temporal-core @temporalio/client @temporalio/worker @temporalio/workflow
|
|
34
36
|
```
|
|
35
37
|
|
|
38
|
+
## 🏗️ Architecture
|
|
39
|
+
|
|
40
|
+
NestJS Temporal Core is built with a modular architecture:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
nestjs-temporal-core/
|
|
44
|
+
├── src/
|
|
45
|
+
│ ├── decorators/ # Activity, workflow, and scheduling decorators
|
|
46
|
+
│ ├── client/ # Temporal client management
|
|
47
|
+
│ ├── worker/ # Worker lifecycle and management
|
|
48
|
+
│ ├── activity/ # Activity discovery and execution
|
|
49
|
+
│ ├── schedules/ # Schedule management
|
|
50
|
+
│ ├── discovery/ # Auto-discovery services
|
|
51
|
+
│ ├── utils/ # Utilities (validation, metadata, logging)
|
|
52
|
+
│ ├── constants.ts # Predefined constants and expressions
|
|
53
|
+
│ ├── interfaces.ts # TypeScript interfaces and types
|
|
54
|
+
│ ├── temporal.module.ts # Main module
|
|
55
|
+
│ └── temporal.service.ts # Unified service
|
|
56
|
+
```
|
|
57
|
+
|
|
36
58
|
## 🚀 Quick Start
|
|
37
59
|
|
|
38
60
|
### 1. Complete Integration (Recommended)
|
|
@@ -122,7 +144,13 @@ export async function processEmailWorkflow(
|
|
|
122
144
|
```typescript
|
|
123
145
|
// services/scheduled.service.ts
|
|
124
146
|
import { Injectable } from '@nestjs/common';
|
|
125
|
-
import {
|
|
147
|
+
import {
|
|
148
|
+
Scheduled,
|
|
149
|
+
Cron,
|
|
150
|
+
Interval,
|
|
151
|
+
CRON_EXPRESSIONS,
|
|
152
|
+
INTERVAL_EXPRESSIONS
|
|
153
|
+
} from 'nestjs-temporal-core';
|
|
126
154
|
|
|
127
155
|
@Injectable()
|
|
128
156
|
export class ScheduledService {
|
|
@@ -139,15 +167,17 @@ export class ScheduledService {
|
|
|
139
167
|
}
|
|
140
168
|
|
|
141
169
|
@Cron(CRON_EXPRESSIONS.WEEKLY_MONDAY_9AM, {
|
|
142
|
-
scheduleId: 'weekly-cleanup'
|
|
170
|
+
scheduleId: 'weekly-cleanup',
|
|
171
|
+
description: 'Weekly system cleanup'
|
|
143
172
|
})
|
|
144
173
|
async performWeeklyCleanup(): Promise<void> {
|
|
145
174
|
console.log('Performing weekly cleanup...');
|
|
146
175
|
// Your cleanup logic
|
|
147
176
|
}
|
|
148
177
|
|
|
149
|
-
@Interval(
|
|
150
|
-
scheduleId: 'health-check'
|
|
178
|
+
@Interval(INTERVAL_EXPRESSIONS.EVERY_5_MINUTES, {
|
|
179
|
+
scheduleId: 'health-check',
|
|
180
|
+
description: 'System health monitoring'
|
|
151
181
|
})
|
|
152
182
|
async performHealthCheck(): Promise<void> {
|
|
153
183
|
console.log('Performing health check...');
|
|
@@ -156,7 +186,46 @@ export class ScheduledService {
|
|
|
156
186
|
}
|
|
157
187
|
```
|
|
158
188
|
|
|
159
|
-
### 5.
|
|
189
|
+
### 5. Parameter Injection in Workflows
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
// workflows/order.workflow.ts
|
|
193
|
+
import { Injectable } from '@nestjs/common';
|
|
194
|
+
import {
|
|
195
|
+
WorkflowParam,
|
|
196
|
+
WorkflowContext,
|
|
197
|
+
WorkflowId,
|
|
198
|
+
RunId,
|
|
199
|
+
TaskQueue
|
|
200
|
+
} from 'nestjs-temporal-core';
|
|
201
|
+
|
|
202
|
+
@Injectable()
|
|
203
|
+
export class OrderWorkflowController {
|
|
204
|
+
|
|
205
|
+
async processOrder(
|
|
206
|
+
@WorkflowParam(0) orderId: string,
|
|
207
|
+
@WorkflowParam(1) customerData: any,
|
|
208
|
+
@WorkflowId() workflowId: string,
|
|
209
|
+
@WorkflowContext() context: any
|
|
210
|
+
): Promise<void> {
|
|
211
|
+
console.log(`Processing order ${orderId} in workflow ${workflowId}`);
|
|
212
|
+
// Your workflow logic
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
@Signal('updateOrder')
|
|
216
|
+
async updateOrder(@WorkflowParam() updateData: any): Promise<void> {
|
|
217
|
+
// Handle order update signal
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
@Query('getOrderStatus')
|
|
221
|
+
getOrderStatus(@RunId() runId: string): string {
|
|
222
|
+
// Return current order status
|
|
223
|
+
return 'processing';
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### 6. Use in Services
|
|
160
229
|
|
|
161
230
|
```typescript
|
|
162
231
|
// services/order.service.ts
|
|
@@ -195,6 +264,106 @@ export class OrderService {
|
|
|
195
264
|
}
|
|
196
265
|
```
|
|
197
266
|
|
|
267
|
+
## 🛠️ Utilities and Constants
|
|
268
|
+
|
|
269
|
+
NestJS Temporal Core provides comprehensive utilities and predefined constants for common use cases:
|
|
270
|
+
|
|
271
|
+
### Predefined Constants
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
import {
|
|
275
|
+
CRON_EXPRESSIONS,
|
|
276
|
+
INTERVAL_EXPRESSIONS,
|
|
277
|
+
TIMEOUTS,
|
|
278
|
+
RETRY_POLICIES
|
|
279
|
+
} from 'nestjs-temporal-core';
|
|
280
|
+
|
|
281
|
+
// Cron expressions
|
|
282
|
+
console.log(CRON_EXPRESSIONS.DAILY_8AM); // '0 8 * * *'
|
|
283
|
+
console.log(CRON_EXPRESSIONS.WEEKLY_MONDAY_9AM); // '0 9 * * 1'
|
|
284
|
+
console.log(CRON_EXPRESSIONS.MONTHLY_FIRST); // '0 0 1 * *'
|
|
285
|
+
|
|
286
|
+
// Interval expressions
|
|
287
|
+
console.log(INTERVAL_EXPRESSIONS.EVERY_5_MINUTES); // '5m'
|
|
288
|
+
console.log(INTERVAL_EXPRESSIONS.EVERY_HOUR); // '1h'
|
|
289
|
+
console.log(INTERVAL_EXPRESSIONS.DAILY); // '24h'
|
|
290
|
+
|
|
291
|
+
// Timeout values
|
|
292
|
+
console.log(TIMEOUTS.ACTIVITY_SHORT); // '1m'
|
|
293
|
+
console.log(TIMEOUTS.WORKFLOW_MEDIUM); // '24h'
|
|
294
|
+
console.log(TIMEOUTS.CONNECTION_TIMEOUT); // '10s'
|
|
295
|
+
|
|
296
|
+
// Retry policies
|
|
297
|
+
console.log(RETRY_POLICIES.QUICK.maximumAttempts); // 3
|
|
298
|
+
console.log(RETRY_POLICIES.STANDARD.backoffCoefficient); // 2.0
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Validation Utilities
|
|
302
|
+
|
|
303
|
+
```typescript
|
|
304
|
+
import {
|
|
305
|
+
isValidCronExpression,
|
|
306
|
+
isValidIntervalExpression
|
|
307
|
+
} from 'nestjs-temporal-core';
|
|
308
|
+
|
|
309
|
+
// Validate cron expressions
|
|
310
|
+
console.log(isValidCronExpression('0 8 * * *')); // true
|
|
311
|
+
console.log(isValidCronExpression('invalid')); // false
|
|
312
|
+
|
|
313
|
+
// Validate interval expressions
|
|
314
|
+
console.log(isValidIntervalExpression('5m')); // true
|
|
315
|
+
console.log(isValidIntervalExpression('2h')); // true
|
|
316
|
+
console.log(isValidIntervalExpression('bad')); // false
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Metadata Utilities
|
|
320
|
+
|
|
321
|
+
```typescript
|
|
322
|
+
import {
|
|
323
|
+
isActivity,
|
|
324
|
+
getActivityMetadata,
|
|
325
|
+
isActivityMethod,
|
|
326
|
+
getActivityMethodMetadata,
|
|
327
|
+
getParameterMetadata
|
|
328
|
+
} from 'nestjs-temporal-core';
|
|
329
|
+
|
|
330
|
+
// Check if a class is marked as an Activity
|
|
331
|
+
@Activity({ taskQueue: 'my-queue' })
|
|
332
|
+
class MyActivity {}
|
|
333
|
+
|
|
334
|
+
console.log(isActivity(MyActivity)); // true
|
|
335
|
+
const metadata = getActivityMetadata(MyActivity);
|
|
336
|
+
console.log(metadata.taskQueue); // 'my-queue'
|
|
337
|
+
|
|
338
|
+
// Check method metadata
|
|
339
|
+
const methodMetadata = getActivityMethodMetadata(MyActivity.prototype.myMethod);
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Logging Configuration
|
|
343
|
+
|
|
344
|
+
```typescript
|
|
345
|
+
import { TemporalLogger, TemporalLoggerManager } from 'nestjs-temporal-core';
|
|
346
|
+
|
|
347
|
+
// Configure logging
|
|
348
|
+
const logger = TemporalLoggerManager.getInstance();
|
|
349
|
+
logger.configure({
|
|
350
|
+
enableLogger: true,
|
|
351
|
+
logLevel: 'info',
|
|
352
|
+
appName: 'My Temporal App'
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
// Use in your services
|
|
356
|
+
@Injectable()
|
|
357
|
+
export class MyService {
|
|
358
|
+
private readonly logger = new TemporalLogger(MyService.name);
|
|
359
|
+
|
|
360
|
+
async doSomething() {
|
|
361
|
+
this.logger.info('Starting operation');
|
|
362
|
+
this.logger.error('Something went wrong', { context: 'additional data' });
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
198
367
|
## 🏗️ Integration Patterns
|
|
199
368
|
|
|
200
369
|
### Client-Only Integration
|
|
@@ -650,29 +819,67 @@ TemporalModule.register({
|
|
|
650
819
|
|
|
651
820
|
## 📚 API Reference
|
|
652
821
|
|
|
653
|
-
### Decorators
|
|
822
|
+
### Core Decorators
|
|
823
|
+
|
|
824
|
+
#### Activity Decorators
|
|
825
|
+
- `@Activity(options?)` - Mark a class as containing Temporal activities
|
|
826
|
+
- `@ActivityMethod(nameOrOptions?)` - Define an activity method with optional configuration
|
|
654
827
|
|
|
655
|
-
|
|
656
|
-
- `@
|
|
657
|
-
- `@Scheduled(options)` - Schedule a workflow with full options
|
|
828
|
+
#### Scheduling Decorators
|
|
829
|
+
- `@Scheduled(options)` - Schedule a workflow with comprehensive options
|
|
658
830
|
- `@Cron(expression, options?)` - Schedule using cron expression
|
|
659
|
-
- `@Interval(interval, options?)` - Schedule using interval
|
|
831
|
+
- `@Interval(interval, options?)` - Schedule using interval expression
|
|
832
|
+
|
|
833
|
+
#### Workflow Decorators
|
|
834
|
+
- `@Signal(nameOrOptions?)` - Mark a method as a signal handler
|
|
835
|
+
- `@Query(nameOrOptions?)` - Mark a method as a query handler
|
|
836
|
+
|
|
837
|
+
#### Parameter Injection Decorators
|
|
838
|
+
- `@WorkflowParam(index?)` - Extract workflow parameters
|
|
839
|
+
- `@WorkflowContext()` - Inject workflow execution context
|
|
840
|
+
- `@WorkflowId()` - Inject workflow ID
|
|
841
|
+
- `@RunId()` - Inject run ID
|
|
842
|
+
- `@TaskQueue()` - Inject task queue name
|
|
843
|
+
|
|
844
|
+
### Core Services
|
|
845
|
+
|
|
846
|
+
- `TemporalService` - Main unified service for all Temporal operations
|
|
847
|
+
- `TemporalClientService` - Client-only operations (starting workflows, signals, queries)
|
|
848
|
+
- `TemporalActivityService` - Activity discovery and management
|
|
849
|
+
- `TemporalSchedulesService` - Schedule creation and management
|
|
850
|
+
- `TemporalWorkerManagerService` - Worker lifecycle and health monitoring
|
|
851
|
+
|
|
852
|
+
### Utility Functions
|
|
853
|
+
|
|
854
|
+
#### Validation
|
|
855
|
+
- `isValidCronExpression(cron: string): boolean` - Validate cron format
|
|
856
|
+
- `isValidIntervalExpression(interval: string): boolean` - Validate interval format
|
|
857
|
+
|
|
858
|
+
#### Metadata
|
|
859
|
+
- `isActivity(target: object): boolean` - Check if class is an activity
|
|
860
|
+
- `getActivityMetadata(target: object)` - Get activity metadata
|
|
861
|
+
- `isActivityMethod(target: object): boolean` - Check if method is activity method
|
|
862
|
+
- `getActivityMethodMetadata(target: object)` - Get activity method metadata
|
|
863
|
+
- `getParameterMetadata(target: object, propertyKey: string | symbol)` - Get parameter metadata
|
|
864
|
+
|
|
865
|
+
#### Logging
|
|
866
|
+
- `TemporalLogger` - Enhanced logger with context support
|
|
867
|
+
- `TemporalLoggerManager` - Global logger configuration
|
|
660
868
|
|
|
661
|
-
###
|
|
869
|
+
### Predefined Constants
|
|
662
870
|
|
|
663
|
-
|
|
664
|
-
- `
|
|
665
|
-
- `
|
|
666
|
-
- `TemporalSchedulesService` - Schedule management
|
|
667
|
-
- `TemporalWorkerManagerService` - Worker lifecycle
|
|
871
|
+
#### Schedule Expressions
|
|
872
|
+
- `CRON_EXPRESSIONS` - Common cron patterns (DAILY_8AM, WEEKLY_MONDAY_9AM, etc.)
|
|
873
|
+
- `INTERVAL_EXPRESSIONS` - Common interval patterns (EVERY_5_MINUTES, EVERY_HOUR, etc.)
|
|
668
874
|
|
|
669
|
-
|
|
875
|
+
#### Configuration Presets
|
|
876
|
+
- `TIMEOUTS` - Common timeout values for different operation types
|
|
877
|
+
- `RETRY_POLICIES` - Predefined retry policies (QUICK, STANDARD, AGGRESSIVE)
|
|
670
878
|
|
|
671
|
-
|
|
672
|
-
- `
|
|
673
|
-
- `
|
|
674
|
-
- `
|
|
675
|
-
- `TIMEOUTS` - Common timeout values
|
|
879
|
+
#### Module Tokens
|
|
880
|
+
- `TEMPORAL_MODULE_OPTIONS` - Main module configuration token
|
|
881
|
+
- `TEMPORAL_CLIENT` - Client instance injection token
|
|
882
|
+
- `TEMPORAL_CONNECTION` - Connection instance injection token
|
|
676
883
|
|
|
677
884
|
## 🤝 Contributing
|
|
678
885
|
|
|
@@ -690,4 +897,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
690
897
|
|
|
691
898
|
---
|
|
692
899
|
|
|
693
|
-
Built with ❤️ for the NestJS and Temporal communities
|
|
900
|
+
Built with ❤️ for the NestJS and Temporal communities
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { DynamicModule } from '@nestjs/common';
|
|
1
|
+
import { DynamicModule, Type } from '@nestjs/common';
|
|
2
2
|
import { ActivityModuleOptions } from '../interfaces';
|
|
3
3
|
export declare class TemporalActivityModule {
|
|
4
4
|
static forRoot(options?: ActivityModuleOptions): DynamicModule;
|
|
5
5
|
static forRootAsync(options: {
|
|
6
|
-
imports?:
|
|
7
|
-
useFactory: (...args:
|
|
8
|
-
inject?:
|
|
6
|
+
imports?: (Type<unknown> | DynamicModule)[];
|
|
7
|
+
useFactory: (...args: unknown[]) => Promise<ActivityModuleOptions> | ActivityModuleOptions;
|
|
8
|
+
inject?: string[];
|
|
9
9
|
global?: boolean;
|
|
10
10
|
}): DynamicModule;
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-activity.module.js","sourceRoot":"","sources":["../../src/activity/temporal-activity.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"temporal-activity.module.js","sourceRoot":"","sources":["../../src/activity/temporal-activity.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA6D;AAC7D,uCAA+C;AAC/C,2EAAsE;AAEtE,4CAAuD;AAmChD,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAI/B,MAAM,CAAC,OAAO,CAAC,UAAiC,EAAE;QAC9C,OAAO;YACH,MAAM,EAAE,wBAAsB;YAC9B,OAAO,EAAE,CAAC,sBAAe,CAAC;YAC1B,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,mCAAuB;oBAChC,QAAQ,EAAE,OAAO;iBACpB;gBACD,mDAAuB;aAC1B;YACD,OAAO,EAAE,CAAC,mDAAuB,CAAC;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,KAAK;SACnC,CAAC;IACN,CAAC;IAKD,MAAM,CAAC,YAAY,CAAC,OAKnB;QACG,OAAO;YACH,MAAM,EAAE,wBAAsB;YAC9B,OAAO,EAAE,CAAC,sBAAe,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACtD,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,mCAAuB;oBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;iBAC/B;gBACD,mDAAuB;aAC1B;YACD,OAAO,EAAE,CAAC,mDAAuB,CAAC;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,KAAK;SACnC,CAAC;IACN,CAAC;CACJ,CAAA;AA5CY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,sBAAsB,CA4ClC"}
|
|
@@ -18,7 +18,7 @@ const common_1 = require("@nestjs/common");
|
|
|
18
18
|
const core_1 = require("@nestjs/core");
|
|
19
19
|
const temporal_metadata_accessor_1 = require("../worker/temporal-metadata.accessor");
|
|
20
20
|
const constants_1 = require("../constants");
|
|
21
|
-
const
|
|
21
|
+
const logger_1 = require("../utils/logger");
|
|
22
22
|
let TemporalActivityService = TemporalActivityService_1 = class TemporalActivityService {
|
|
23
23
|
constructor(options, discoveryService, metadataAccessor) {
|
|
24
24
|
this.options = options;
|
|
@@ -26,10 +26,7 @@ let TemporalActivityService = TemporalActivityService_1 = class TemporalActivity
|
|
|
26
26
|
this.metadataAccessor = metadataAccessor;
|
|
27
27
|
this.discoveredActivities = new Map();
|
|
28
28
|
this.activityHandlers = new Map();
|
|
29
|
-
this.logger =
|
|
30
|
-
enableLogger: options.enableLogger,
|
|
31
|
-
logLevel: options.logLevel,
|
|
32
|
-
});
|
|
29
|
+
this.logger = (0, logger_1.createLogger)(TemporalActivityService_1.name);
|
|
33
30
|
}
|
|
34
31
|
async onModuleInit() {
|
|
35
32
|
await this.discoverActivities();
|
|
@@ -88,7 +85,7 @@ let TemporalActivityService = TemporalActivityService_1 = class TemporalActivity
|
|
|
88
85
|
return {
|
|
89
86
|
className,
|
|
90
87
|
instance,
|
|
91
|
-
targetClass,
|
|
88
|
+
targetClass: targetClass,
|
|
92
89
|
methods: methodInfos,
|
|
93
90
|
totalMethods: methodInfos.length,
|
|
94
91
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-activity.service.js","sourceRoot":"","sources":["../../src/activity/temporal-activity.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"temporal-activity.service.js","sourceRoot":"","sources":["../../src/activity/temporal-activity.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,13 +13,10 @@ 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
15
|
const temporal_schedule_service_1 = require("./temporal-schedule.service");
|
|
16
|
-
const
|
|
16
|
+
const logger_1 = require("../utils/logger");
|
|
17
17
|
let TemporalClientModule = TemporalClientModule_1 = class TemporalClientModule {
|
|
18
|
-
static createModuleLogger(
|
|
19
|
-
return
|
|
20
|
-
enableLogger: options?.enableLogger,
|
|
21
|
-
logLevel: options?.logLevel,
|
|
22
|
-
});
|
|
18
|
+
static createModuleLogger(_options) {
|
|
19
|
+
return (0, logger_1.createLogger)(TemporalClientModule_1.name);
|
|
23
20
|
}
|
|
24
21
|
static register(options) {
|
|
25
22
|
const clientOptions = this.extractClientOptions(options);
|
|
@@ -59,15 +56,18 @@ let TemporalClientModule = TemporalClientModule_1 = class TemporalClientModule {
|
|
|
59
56
|
static createClientProvider(options) {
|
|
60
57
|
return {
|
|
61
58
|
provide: constants_1.TEMPORAL_CLIENT,
|
|
62
|
-
useFactory: async () =>
|
|
59
|
+
useFactory: async () => {
|
|
60
|
+
const logger = this.createModuleLogger(options);
|
|
61
|
+
return this.createClientInstance(options, logger);
|
|
62
|
+
},
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
static createAsyncClientProvider() {
|
|
66
66
|
return {
|
|
67
67
|
provide: constants_1.TEMPORAL_CLIENT,
|
|
68
|
-
useFactory: async (
|
|
69
|
-
const
|
|
70
|
-
return this.createClientInstance(
|
|
68
|
+
useFactory: async (options) => {
|
|
69
|
+
const logger = this.createModuleLogger(options);
|
|
70
|
+
return this.createClientInstance(options, logger);
|
|
71
71
|
},
|
|
72
72
|
inject: [constants_1.TEMPORAL_MODULE_OPTIONS],
|
|
73
73
|
};
|
|
@@ -77,29 +77,38 @@ let TemporalClientModule = TemporalClientModule_1 = class TemporalClientModule {
|
|
|
77
77
|
return [
|
|
78
78
|
{
|
|
79
79
|
provide: constants_1.TEMPORAL_MODULE_OPTIONS,
|
|
80
|
-
useFactory:
|
|
80
|
+
useFactory: async (...args) => {
|
|
81
|
+
const temporalOptions = await options.useFactory(...args);
|
|
82
|
+
return this.extractClientOptions(temporalOptions);
|
|
83
|
+
},
|
|
81
84
|
inject: options.inject || [],
|
|
82
85
|
},
|
|
83
86
|
];
|
|
84
87
|
}
|
|
85
88
|
if (options.useClass) {
|
|
86
89
|
return [
|
|
87
|
-
{
|
|
88
|
-
provide: constants_1.TEMPORAL_MODULE_OPTIONS,
|
|
89
|
-
useFactory: async (optionsFactory) => optionsFactory.createTemporalOptions(),
|
|
90
|
-
inject: [options.useClass],
|
|
91
|
-
},
|
|
92
90
|
{
|
|
93
91
|
provide: options.useClass,
|
|
94
92
|
useClass: options.useClass,
|
|
95
93
|
},
|
|
94
|
+
{
|
|
95
|
+
provide: constants_1.TEMPORAL_MODULE_OPTIONS,
|
|
96
|
+
useFactory: async (optionsFactory) => {
|
|
97
|
+
const temporalOptions = await optionsFactory.createTemporalOptions();
|
|
98
|
+
return this.extractClientOptions(temporalOptions);
|
|
99
|
+
},
|
|
100
|
+
inject: [options.useClass],
|
|
101
|
+
},
|
|
96
102
|
];
|
|
97
103
|
}
|
|
98
104
|
if (options.useExisting) {
|
|
99
105
|
return [
|
|
100
106
|
{
|
|
101
107
|
provide: constants_1.TEMPORAL_MODULE_OPTIONS,
|
|
102
|
-
useFactory: async (optionsFactory) =>
|
|
108
|
+
useFactory: async (optionsFactory) => {
|
|
109
|
+
const temporalOptions = await optionsFactory.createTemporalOptions();
|
|
110
|
+
return this.extractClientOptions(temporalOptions);
|
|
111
|
+
},
|
|
103
112
|
inject: [options.useExisting],
|
|
104
113
|
},
|
|
105
114
|
];
|
|
@@ -107,30 +116,31 @@ let TemporalClientModule = TemporalClientModule_1 = class TemporalClientModule {
|
|
|
107
116
|
throw new Error(constants_1.ERRORS.INVALID_OPTIONS);
|
|
108
117
|
}
|
|
109
118
|
static async createClientInstance(options, logger) {
|
|
110
|
-
let
|
|
119
|
+
let temporalConnection = null;
|
|
111
120
|
try {
|
|
112
|
-
|
|
121
|
+
const connection = options.connection;
|
|
122
|
+
logger.log(`Connecting to Temporal server at ${connection.address}`);
|
|
113
123
|
const connectionConfig = {
|
|
114
|
-
address:
|
|
115
|
-
tls:
|
|
116
|
-
metadata:
|
|
124
|
+
address: connection.address,
|
|
125
|
+
tls: connection.tls,
|
|
126
|
+
metadata: connection.metadata,
|
|
117
127
|
};
|
|
118
|
-
if (
|
|
128
|
+
if (connection.apiKey) {
|
|
119
129
|
connectionConfig.metadata = {
|
|
120
|
-
...connectionConfig.metadata,
|
|
121
|
-
authorization: `Bearer ${
|
|
130
|
+
...(connectionConfig.metadata || {}),
|
|
131
|
+
authorization: `Bearer ${connection.apiKey}`,
|
|
122
132
|
};
|
|
123
133
|
}
|
|
124
|
-
|
|
125
|
-
const namespace =
|
|
134
|
+
temporalConnection = await client_1.Connection.connect(connectionConfig);
|
|
135
|
+
const namespace = connection.namespace || constants_1.DEFAULT_NAMESPACE;
|
|
126
136
|
logger.log(`Connected to Temporal server, using namespace "${namespace}"`);
|
|
127
|
-
const client = new client_1.Client({ connection, namespace });
|
|
137
|
+
const client = new client_1.Client({ connection: temporalConnection, namespace });
|
|
128
138
|
return this.enhanceClientWithShutdown(client, logger);
|
|
129
139
|
}
|
|
130
140
|
catch (error) {
|
|
131
|
-
if (
|
|
132
|
-
await
|
|
133
|
-
logger.
|
|
141
|
+
if (temporalConnection) {
|
|
142
|
+
await temporalConnection.close().catch((closeError) => {
|
|
143
|
+
logger.warn(`Error closing connection: ${closeError.message}`);
|
|
134
144
|
});
|
|
135
145
|
}
|
|
136
146
|
const errorMsg = `${constants_1.ERRORS.CLIENT_INITIALIZATION}: ${error.message}`;
|
|
@@ -143,20 +153,18 @@ let TemporalClientModule = TemporalClientModule_1 = class TemporalClientModule {
|
|
|
143
153
|
}
|
|
144
154
|
}
|
|
145
155
|
static enhanceClientWithShutdown(client, logger) {
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
logger.log(
|
|
156
|
+
const originalConnection = client.connection;
|
|
157
|
+
process.on('SIGTERM', async () => {
|
|
158
|
+
logger.log('Gracefully shutting down Temporal client...');
|
|
149
159
|
try {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
logger.log('Temporal connection closed successfully');
|
|
153
|
-
}
|
|
160
|
+
await originalConnection.close();
|
|
161
|
+
logger.log('Temporal client shutdown completed');
|
|
154
162
|
}
|
|
155
163
|
catch (error) {
|
|
156
|
-
logger.error(
|
|
164
|
+
logger.error(`Error during client shutdown: ${error.message}`);
|
|
157
165
|
}
|
|
158
|
-
};
|
|
159
|
-
return
|
|
166
|
+
});
|
|
167
|
+
return client;
|
|
160
168
|
}
|
|
161
169
|
static extractClientOptions(options) {
|
|
162
170
|
return {
|
|
@@ -176,7 +184,8 @@ let TemporalClientModule = TemporalClientModule_1 = class TemporalClientModule {
|
|
|
176
184
|
if (!options.connection) {
|
|
177
185
|
throw new Error('Connection configuration is required');
|
|
178
186
|
}
|
|
179
|
-
|
|
187
|
+
const connection = options.connection;
|
|
188
|
+
if (!connection.address) {
|
|
180
189
|
throw new Error('Connection address is required');
|
|
181
190
|
}
|
|
182
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-client.module.js","sourceRoot":"","sources":["../../src/client/temporal-client.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"temporal-client.module.js","sourceRoot":"","sources":["../../src/client/temporal-client.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,16 +6,16 @@ export declare class TemporalClientService implements OnModuleInit {
|
|
|
6
6
|
private readonly options;
|
|
7
7
|
private readonly logger;
|
|
8
8
|
private readonly workflowClient;
|
|
9
|
-
constructor(client: Client | null, options:
|
|
9
|
+
constructor(client: Client | null, options: Record<string, unknown>);
|
|
10
10
|
onModuleInit(): Promise<void>;
|
|
11
|
-
startWorkflow<T, A extends
|
|
11
|
+
startWorkflow<T, A extends unknown[]>(workflowType: string, args: A, options: StartWorkflowOptions): Promise<{
|
|
12
12
|
result: Promise<T>;
|
|
13
13
|
workflowId: string;
|
|
14
14
|
firstExecutionRunId: string;
|
|
15
15
|
handle: WorkflowHandle;
|
|
16
16
|
}>;
|
|
17
|
-
signalWorkflow(workflowId: string, signalName: string, args?:
|
|
18
|
-
queryWorkflow<T>(workflowId: string, queryName: string, args?:
|
|
17
|
+
signalWorkflow(workflowId: string, signalName: string, args?: unknown[]): Promise<void>;
|
|
18
|
+
queryWorkflow<T>(workflowId: string, queryName: string, args?: unknown[]): Promise<T>;
|
|
19
19
|
terminateWorkflow(workflowId: string, reason?: string): Promise<void>;
|
|
20
20
|
cancelWorkflow(workflowId: string): Promise<void>;
|
|
21
21
|
getWorkflowHandle(workflowId: string, runId?: string): Promise<WorkflowHandle>;
|