nestjs-temporal-core 2.0.8 → 3.0.1
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 +114 -563
- package/dist/client/temporal-client.module.d.ts +4 -2
- package/dist/client/temporal-client.module.js +59 -78
- package/dist/client/temporal-client.module.js.map +1 -1
- package/dist/client/temporal-client.service.d.ts +4 -3
- package/dist/client/temporal-client.service.js +43 -27
- package/dist/client/temporal-client.service.js.map +1 -1
- package/dist/client/temporal-schedule.service.d.ts +8 -2
- package/dist/client/temporal-schedule.service.js +86 -65
- package/dist/client/temporal-schedule.service.js.map +1 -1
- package/dist/constants.d.ts +171 -32
- package/dist/constants.js +164 -19
- package/dist/constants.js.map +1 -1
- package/dist/decorators/communication.decorators.d.ts +5 -0
- package/dist/decorators/communication.decorators.js +66 -0
- package/dist/decorators/communication.decorators.js.map +1 -0
- package/dist/decorators/core.decorators.d.ts +6 -0
- package/dist/decorators/core.decorators.js +87 -0
- package/dist/decorators/core.decorators.js.map +1 -0
- package/dist/decorators/index.d.ts +5 -6
- package/dist/decorators/index.js +5 -6
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/parameter.decorators.d.ts +2 -0
- package/dist/decorators/parameter.decorators.js +29 -0
- package/dist/decorators/parameter.decorators.js.map +1 -0
- package/dist/decorators/scheduling.decorators.d.ts +4 -0
- package/dist/decorators/scheduling.decorators.js +37 -0
- package/dist/decorators/scheduling.decorators.js.map +1 -0
- package/dist/decorators/workflow-starter.decorator.d.ts +2 -0
- package/dist/decorators/workflow-starter.decorator.js +14 -0
- package/dist/decorators/workflow-starter.decorator.js.map +1 -0
- package/dist/discovery/index.d.ts +2 -0
- package/dist/discovery/index.js +19 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/schedule-manager.service.d.ts +36 -0
- package/dist/discovery/schedule-manager.service.js +215 -0
- package/dist/discovery/schedule-manager.service.js.map +1 -0
- package/dist/discovery/workflow-discovery.service.d.ts +36 -0
- package/dist/discovery/workflow-discovery.service.js +216 -0
- package/dist/discovery/workflow-discovery.service.js.map +1 -0
- package/dist/index.d.ts +15 -8
- package/dist/index.js +27 -11
- package/dist/index.js.map +1 -1
- package/dist/interfaces/core.interface.d.ts +112 -0
- package/dist/interfaces/{base.interface.js → core.interface.js} +1 -1
- package/dist/interfaces/core.interface.js.map +1 -0
- package/dist/interfaces/discovery.interface.d.ts +61 -0
- package/dist/interfaces/{client.interface.js → discovery.interface.js} +1 -1
- package/dist/interfaces/discovery.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +4 -4
- package/dist/interfaces/index.js +4 -4
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/scheduling.interface.d.ts +17 -0
- package/dist/interfaces/{temporal.interface.js → scheduling.interface.js} +1 -1
- package/dist/interfaces/scheduling.interface.js.map +1 -0
- package/dist/interfaces/worker.interface.d.ts +20 -17
- package/dist/interfaces/workflow.interface.d.ts +41 -1
- package/dist/temporal.module.d.ts +17 -1
- package/dist/temporal.module.js +120 -53
- package/dist/temporal.module.js.map +1 -1
- package/dist/temporal.service.d.ts +50 -8
- package/dist/temporal.service.js +166 -18
- package/dist/temporal.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/worker/index.d.ts +1 -1
- package/dist/worker/index.js +1 -1
- package/dist/worker/index.js.map +1 -1
- package/dist/worker/temporal-metadata.accessor.d.ts +21 -6
- package/dist/worker/temporal-metadata.accessor.js +153 -22
- package/dist/worker/temporal-metadata.accessor.js.map +1 -1
- package/dist/worker/temporal-worker.module.d.ts +1 -1
- package/dist/worker/temporal-worker.module.js +6 -7
- package/dist/worker/temporal-worker.module.js.map +1 -1
- package/dist/worker/worker-manager.service.d.ts +24 -7
- package/dist/worker/worker-manager.service.js +218 -85
- package/dist/worker/worker-manager.service.js.map +1 -1
- package/package.json +50 -18
- package/dist/decorators/activity-method.decorator.d.ts +0 -2
- package/dist/decorators/activity-method.decorator.js +0 -35
- package/dist/decorators/activity-method.decorator.js.map +0 -1
- package/dist/decorators/activity.decorator.d.ts +0 -2
- package/dist/decorators/activity.decorator.js +0 -14
- package/dist/decorators/activity.decorator.js.map +0 -1
- package/dist/decorators/query-method.decorator.d.ts +0 -1
- package/dist/decorators/query-method.decorator.js +0 -17
- package/dist/decorators/query-method.decorator.js.map +0 -1
- package/dist/decorators/signal-method.decorator.d.ts +0 -1
- package/dist/decorators/signal-method.decorator.js +0 -17
- package/dist/decorators/signal-method.decorator.js.map +0 -1
- package/dist/decorators/workflow-method.decorator.d.ts +0 -2
- package/dist/decorators/workflow-method.decorator.js +0 -26
- package/dist/decorators/workflow-method.decorator.js.map +0 -1
- package/dist/decorators/workflow.decorator.d.ts +0 -2
- package/dist/decorators/workflow.decorator.js +0 -16
- package/dist/decorators/workflow.decorator.js.map +0 -1
- package/dist/interfaces/base.interface.d.ts +0 -13
- package/dist/interfaces/base.interface.js.map +0 -1
- package/dist/interfaces/client.interface.d.ts +0 -30
- package/dist/interfaces/client.interface.js.map +0 -1
- package/dist/interfaces/temporal.interface.d.ts +0 -33
- package/dist/interfaces/temporal.interface.js.map +0 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { ModuleMetadata, Type } from '@nestjs/common';
|
|
2
|
+
export interface ConnectionOptions {
|
|
3
|
+
address: string;
|
|
4
|
+
tls?: boolean | {
|
|
5
|
+
serverName?: string;
|
|
6
|
+
clientCertPair?: {
|
|
7
|
+
crt: Buffer;
|
|
8
|
+
key: Buffer;
|
|
9
|
+
ca?: Buffer;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
metadata?: Record<string, string>;
|
|
14
|
+
}
|
|
15
|
+
export interface TemporalClientOptions {
|
|
16
|
+
connection: ConnectionOptions;
|
|
17
|
+
namespace?: string;
|
|
18
|
+
allowConnectionFailure?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface TemporalClientOptionsFactory {
|
|
21
|
+
createClientOptions(): Promise<TemporalClientOptions> | TemporalClientOptions;
|
|
22
|
+
}
|
|
23
|
+
export interface TemporalClientAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
24
|
+
useExisting?: Type<TemporalClientOptionsFactory>;
|
|
25
|
+
useClass?: Type<TemporalClientOptionsFactory>;
|
|
26
|
+
useFactory?: (...args: any[]) => Promise<TemporalClientOptions> | TemporalClientOptions;
|
|
27
|
+
inject?: any[];
|
|
28
|
+
}
|
|
29
|
+
export interface WorkerCreateOptions {
|
|
30
|
+
maxConcurrentActivityTaskExecutions?: number;
|
|
31
|
+
maxConcurrentWorkflowTaskExecutions?: number;
|
|
32
|
+
maxConcurrentLocalActivityExecutions?: number;
|
|
33
|
+
stickyQueueScheduleToStartTimeout?: string | number;
|
|
34
|
+
maxHeartbeatThrottleInterval?: string | number;
|
|
35
|
+
defaultHeartbeatThrottleInterval?: string | number;
|
|
36
|
+
maxActivitiesPerSecond?: number;
|
|
37
|
+
maxTaskQueueActivitiesPerSecond?: number;
|
|
38
|
+
reuseV8Context?: boolean;
|
|
39
|
+
interceptors?: any[];
|
|
40
|
+
identity?: string;
|
|
41
|
+
buildId?: string;
|
|
42
|
+
useVersioning?: boolean;
|
|
43
|
+
[key: string]: any;
|
|
44
|
+
}
|
|
45
|
+
export interface TemporalWorkerOptions {
|
|
46
|
+
connection?: ConnectionOptions;
|
|
47
|
+
namespace?: string;
|
|
48
|
+
taskQueue: string;
|
|
49
|
+
workflowsPath?: string;
|
|
50
|
+
workflowBundle?: any;
|
|
51
|
+
activityClasses?: Array<Type<any>>;
|
|
52
|
+
autoStart?: boolean;
|
|
53
|
+
allowWorkerFailure?: boolean;
|
|
54
|
+
workerOptions?: WorkerCreateOptions;
|
|
55
|
+
}
|
|
56
|
+
export interface TemporalWorkerOptionsFactory {
|
|
57
|
+
createWorkerOptions(): Promise<TemporalWorkerOptions> | TemporalWorkerOptions;
|
|
58
|
+
}
|
|
59
|
+
export interface TemporalWorkerAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
60
|
+
useExisting?: Type<TemporalWorkerOptionsFactory>;
|
|
61
|
+
useClass?: Type<TemporalWorkerOptionsFactory>;
|
|
62
|
+
useFactory?: (...args: any[]) => Promise<TemporalWorkerOptions> | TemporalWorkerOptions;
|
|
63
|
+
inject?: any[];
|
|
64
|
+
}
|
|
65
|
+
export interface TemporalOptions {
|
|
66
|
+
connection: {
|
|
67
|
+
address: string;
|
|
68
|
+
namespace?: string;
|
|
69
|
+
tls?: boolean | {
|
|
70
|
+
serverName?: string;
|
|
71
|
+
clientCertPair?: {
|
|
72
|
+
crt: Buffer;
|
|
73
|
+
key: Buffer;
|
|
74
|
+
ca?: Buffer;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
apiKey?: string;
|
|
78
|
+
};
|
|
79
|
+
taskQueue?: string;
|
|
80
|
+
worker?: {
|
|
81
|
+
workflowsPath?: string;
|
|
82
|
+
workflowBundle?: any;
|
|
83
|
+
activityClasses?: Array<Type<any>>;
|
|
84
|
+
autoStart?: boolean;
|
|
85
|
+
workerOptions?: WorkerCreateOptions;
|
|
86
|
+
};
|
|
87
|
+
isGlobal?: boolean;
|
|
88
|
+
}
|
|
89
|
+
export interface TemporalOptionsFactory {
|
|
90
|
+
createTemporalOptions(): Promise<TemporalOptions> | TemporalOptions;
|
|
91
|
+
}
|
|
92
|
+
export interface TemporalAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
93
|
+
useExisting?: Type<TemporalOptionsFactory>;
|
|
94
|
+
useClass?: Type<TemporalOptionsFactory>;
|
|
95
|
+
useFactory?: (...args: any[]) => Promise<TemporalOptions> | TemporalOptions;
|
|
96
|
+
inject?: any[];
|
|
97
|
+
isGlobal?: boolean;
|
|
98
|
+
}
|
|
99
|
+
export interface StartWorkflowOptions {
|
|
100
|
+
taskQueue: string;
|
|
101
|
+
workflowId?: string;
|
|
102
|
+
signal?: {
|
|
103
|
+
name: string;
|
|
104
|
+
args?: any[];
|
|
105
|
+
};
|
|
106
|
+
retry?: {
|
|
107
|
+
maximumAttempts?: number;
|
|
108
|
+
initialInterval?: string | number;
|
|
109
|
+
};
|
|
110
|
+
searchAttributes?: Record<string, unknown>;
|
|
111
|
+
[key: string]: any;
|
|
112
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.interface.js","sourceRoot":"","sources":["../../src/interfaces/core.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export type WorkflowMethodHandler = (...args: any[]) => any;
|
|
2
|
+
export type SignalMethodHandler = (...args: any[]) => void | Promise<void>;
|
|
3
|
+
export type QueryMethodHandler = (...args: any[]) => any;
|
|
4
|
+
export type ActivityMethodHandler = (...args: any[]) => any | Promise<any>;
|
|
5
|
+
export interface WorkflowControllerInfo {
|
|
6
|
+
instance: any;
|
|
7
|
+
metatype: any;
|
|
8
|
+
taskQueue?: string;
|
|
9
|
+
methods: WorkflowMethodInfo[];
|
|
10
|
+
signals: SignalMethodInfo[];
|
|
11
|
+
queries: QueryMethodInfo[];
|
|
12
|
+
scheduledMethods: ScheduledMethodInfo[];
|
|
13
|
+
}
|
|
14
|
+
export interface WorkflowMethodInfo {
|
|
15
|
+
methodName: string;
|
|
16
|
+
workflowName: string;
|
|
17
|
+
options: any;
|
|
18
|
+
handler: WorkflowMethodHandler;
|
|
19
|
+
}
|
|
20
|
+
export interface SignalMethodInfo {
|
|
21
|
+
methodName: string;
|
|
22
|
+
signalName: string;
|
|
23
|
+
options: any;
|
|
24
|
+
handler: SignalMethodHandler;
|
|
25
|
+
}
|
|
26
|
+
export interface QueryMethodInfo {
|
|
27
|
+
methodName: string;
|
|
28
|
+
queryName: string;
|
|
29
|
+
options: any;
|
|
30
|
+
handler: QueryMethodHandler;
|
|
31
|
+
}
|
|
32
|
+
export interface ScheduledMethodInfo {
|
|
33
|
+
methodName: string;
|
|
34
|
+
workflowName: string;
|
|
35
|
+
scheduleOptions: any;
|
|
36
|
+
workflowOptions: any;
|
|
37
|
+
handler: WorkflowMethodHandler;
|
|
38
|
+
controllerInfo: WorkflowControllerInfo;
|
|
39
|
+
}
|
|
40
|
+
export interface DiscoveryStats {
|
|
41
|
+
controllers: number;
|
|
42
|
+
methods: number;
|
|
43
|
+
scheduled: number;
|
|
44
|
+
signals: number;
|
|
45
|
+
queries: number;
|
|
46
|
+
}
|
|
47
|
+
export interface ScheduleStatus {
|
|
48
|
+
scheduleId: string;
|
|
49
|
+
workflowName: string;
|
|
50
|
+
isManaged: boolean;
|
|
51
|
+
isActive: boolean;
|
|
52
|
+
lastError?: string;
|
|
53
|
+
createdAt: Date;
|
|
54
|
+
lastUpdatedAt: Date;
|
|
55
|
+
}
|
|
56
|
+
export interface ScheduleStats {
|
|
57
|
+
total: number;
|
|
58
|
+
active: number;
|
|
59
|
+
inactive: number;
|
|
60
|
+
errors: number;
|
|
61
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.interface.js","sourceRoot":"","sources":["../../src/interfaces/discovery.interface.ts"],"names":[],"mappings":""}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './client.interface';
|
|
3
|
-
export * from './worker.interface';
|
|
1
|
+
export * from './core.interface';
|
|
4
2
|
export * from './workflow.interface';
|
|
5
3
|
export * from './activity.interface';
|
|
6
|
-
export * from './
|
|
4
|
+
export * from './scheduling.interface';
|
|
5
|
+
export * from './discovery.interface';
|
|
6
|
+
export * from './worker.interface';
|
|
7
7
|
export { RetryPolicy, Duration, SearchAttributes } from '@temporalio/common';
|
|
8
8
|
export { ScheduleOverlapPolicy, WorkflowHandle, Client } from '@temporalio/client';
|
|
9
9
|
export { Worker } from '@temporalio/worker';
|
package/dist/interfaces/index.js
CHANGED
|
@@ -15,12 +15,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.Worker = exports.Client = exports.ScheduleOverlapPolicy = void 0;
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./client.interface"), exports);
|
|
20
|
-
__exportStar(require("./worker.interface"), exports);
|
|
18
|
+
__exportStar(require("./core.interface"), exports);
|
|
21
19
|
__exportStar(require("./workflow.interface"), exports);
|
|
22
20
|
__exportStar(require("./activity.interface"), exports);
|
|
23
|
-
__exportStar(require("./
|
|
21
|
+
__exportStar(require("./scheduling.interface"), exports);
|
|
22
|
+
__exportStar(require("./discovery.interface"), exports);
|
|
23
|
+
__exportStar(require("./worker.interface"), exports);
|
|
24
24
|
var client_1 = require("@temporalio/client");
|
|
25
25
|
Object.defineProperty(exports, "ScheduleOverlapPolicy", { enumerable: true, get: function () { return client_1.ScheduleOverlapPolicy; } });
|
|
26
26
|
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return client_1.Client; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAKA,mDAAiC;AAGjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAKA,mDAAiC;AAGjC,uDAAqC;AAGrC,uDAAqC;AAGrC,yDAAuC;AAGvC,wDAAsC;AAGtC,qDAAmC;AAInC,6CAAmF;AAA1E,+GAAA,qBAAqB,OAAA;AAAkB,gGAAA,MAAM,OAAA;AACtD,6CAA4C;AAAnC,gGAAA,MAAM,OAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ScheduledOptions {
|
|
2
|
+
scheduleId: string;
|
|
3
|
+
cron?: string;
|
|
4
|
+
interval?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
taskQueue?: string;
|
|
7
|
+
timezone?: string;
|
|
8
|
+
overlapPolicy?: 'ALLOW_ALL' | 'SKIP' | 'BUFFER_ONE' | 'BUFFER_ALL' | 'CANCEL_OTHER';
|
|
9
|
+
startPaused?: boolean;
|
|
10
|
+
autoStart?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface CronOptions extends Omit<ScheduledOptions, 'cron' | 'interval'> {
|
|
13
|
+
scheduleId: string;
|
|
14
|
+
}
|
|
15
|
+
export interface IntervalOptions extends Omit<ScheduledOptions, 'cron' | 'interval'> {
|
|
16
|
+
scheduleId: string;
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduling.interface.js","sourceRoot":"","sources":["../../src/interfaces/scheduling.interface.ts"],"names":[],"mappings":""}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
namespace?: string;
|
|
6
|
-
taskQueue: string;
|
|
7
|
-
workflowsPath: string;
|
|
8
|
-
activityClasses?: Array<Type<any>>;
|
|
9
|
-
autoStart?: boolean;
|
|
10
|
-
allowWorkerFailure?: boolean;
|
|
1
|
+
import { ActivityMethodHandler } from './discovery.interface';
|
|
2
|
+
export interface ActivityMetadata {
|
|
3
|
+
name?: string;
|
|
4
|
+
options?: Record<string, any>;
|
|
11
5
|
}
|
|
12
|
-
export interface
|
|
13
|
-
|
|
6
|
+
export interface ActivityMethodMetadata {
|
|
7
|
+
name: string;
|
|
8
|
+
originalName: string;
|
|
9
|
+
options?: Record<string, any>;
|
|
10
|
+
handler: ActivityMethodHandler;
|
|
14
11
|
}
|
|
15
|
-
export interface
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
export interface WorkerStatus {
|
|
13
|
+
isInitialized: boolean;
|
|
14
|
+
isRunning: boolean;
|
|
15
|
+
isHealthy: boolean;
|
|
16
|
+
taskQueue: string;
|
|
17
|
+
namespace: string;
|
|
18
|
+
workflowSource: 'bundle' | 'filesystem' | 'none';
|
|
19
|
+
activitiesCount: number;
|
|
20
|
+
lastError?: string;
|
|
21
|
+
startedAt?: Date;
|
|
22
|
+
uptime?: number;
|
|
20
23
|
}
|
|
@@ -11,5 +11,45 @@ export interface WorkflowOptions {
|
|
|
11
11
|
workflowIdConflictPolicy?: WorkflowIdConflictPolicy;
|
|
12
12
|
}
|
|
13
13
|
export interface WorkflowMethodOptions {
|
|
14
|
-
name
|
|
14
|
+
name?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface WorkflowControllerOptions {
|
|
17
|
+
taskQueue?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface EnhancedWorkflowMethodOptions {
|
|
20
|
+
name?: string;
|
|
21
|
+
workflowId?: string | ((args: any[]) => string);
|
|
22
|
+
timeout?: string | number;
|
|
23
|
+
retry?: {
|
|
24
|
+
maximumAttempts?: number;
|
|
25
|
+
initialInterval?: string | number;
|
|
26
|
+
};
|
|
27
|
+
searchAttributes?: Record<string, unknown>;
|
|
28
|
+
workflowIdReusePolicy?: 'ALLOW_DUPLICATE' | 'ALLOW_DUPLICATE_FAILED_ONLY' | 'REJECT_DUPLICATE';
|
|
29
|
+
}
|
|
30
|
+
export interface SignalOptions {
|
|
31
|
+
name?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface QueryOptions {
|
|
34
|
+
name?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface WorkflowExecutionContext {
|
|
37
|
+
workflowId: string;
|
|
38
|
+
runId: string;
|
|
39
|
+
workflowType: string;
|
|
40
|
+
taskQueue: string;
|
|
41
|
+
namespace: string;
|
|
42
|
+
}
|
|
43
|
+
export interface WorkflowStarterOptions {
|
|
44
|
+
workflowType: string;
|
|
45
|
+
taskQueue: string;
|
|
46
|
+
workflowId?: string | ((args: any[]) => string);
|
|
47
|
+
defaultOptions?: {
|
|
48
|
+
timeout?: string | number;
|
|
49
|
+
retry?: {
|
|
50
|
+
maximumAttempts?: number;
|
|
51
|
+
initialInterval?: string | number;
|
|
52
|
+
};
|
|
53
|
+
searchAttributes?: Record<string, unknown>;
|
|
54
|
+
};
|
|
15
55
|
}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { DynamicModule } from '@nestjs/common';
|
|
2
|
-
import { TemporalOptions, TemporalAsyncOptions } from './interfaces
|
|
2
|
+
import { TemporalOptions, TemporalAsyncOptions } from './interfaces';
|
|
3
3
|
export declare class TemporalModule {
|
|
4
4
|
static register(options: TemporalOptions): DynamicModule;
|
|
5
5
|
static registerAsync(options: TemporalAsyncOptions): DynamicModule;
|
|
6
|
+
static forClient(options: {
|
|
7
|
+
connection: TemporalOptions['connection'];
|
|
8
|
+
isGlobal?: boolean;
|
|
9
|
+
}): DynamicModule;
|
|
10
|
+
static forWorker(options: {
|
|
11
|
+
connection: TemporalOptions['connection'];
|
|
12
|
+
taskQueue: string;
|
|
13
|
+
workflowsPath?: string;
|
|
14
|
+
workflowBundle?: any;
|
|
15
|
+
activityClasses?: any[];
|
|
16
|
+
isGlobal?: boolean;
|
|
17
|
+
}): DynamicModule;
|
|
18
|
+
private static processOptions;
|
|
19
|
+
private static validateOptions;
|
|
20
|
+
private static validateAsyncOptions;
|
|
21
|
+
private static createOptionsFromFactory;
|
|
6
22
|
}
|
package/dist/temporal.module.js
CHANGED
|
@@ -13,35 +13,32 @@ const core_1 = require("@nestjs/core");
|
|
|
13
13
|
const temporal_client_module_1 = require("./client/temporal-client.module");
|
|
14
14
|
const temporal_worker_module_1 = require("./worker/temporal-worker.module");
|
|
15
15
|
const temporal_service_1 = require("./temporal.service");
|
|
16
|
+
const workflow_discovery_service_1 = require("./discovery/workflow-discovery.service");
|
|
17
|
+
const schedule_manager_service_1 = require("./discovery/schedule-manager.service");
|
|
18
|
+
const constants_1 = require("./constants");
|
|
16
19
|
let TemporalModule = TemporalModule_1 = class TemporalModule {
|
|
17
20
|
static register(options) {
|
|
18
|
-
const clientOptions =
|
|
19
|
-
connection: options.connection,
|
|
20
|
-
namespace: options.connection.namespace,
|
|
21
|
-
allowConnectionFailure: true,
|
|
22
|
-
};
|
|
21
|
+
const { clientOptions, workerOptions } = this.processOptions(options);
|
|
23
22
|
const imports = [temporal_client_module_1.TemporalClientModule.register(clientOptions)];
|
|
24
|
-
if (
|
|
25
|
-
const workerOptions = {
|
|
26
|
-
connection: options.connection,
|
|
27
|
-
namespace: options.connection.namespace,
|
|
28
|
-
taskQueue: options.taskQueue || 'default-task-queue',
|
|
29
|
-
workflowsPath: options.worker.workflowsPath,
|
|
30
|
-
activityClasses: options.worker.activityClasses,
|
|
31
|
-
autoStart: options.worker.autoStart !== false,
|
|
32
|
-
allowWorkerFailure: true,
|
|
33
|
-
};
|
|
23
|
+
if (workerOptions) {
|
|
34
24
|
imports.push(temporal_worker_module_1.TemporalWorkerModule.register(workerOptions));
|
|
35
25
|
}
|
|
36
26
|
return {
|
|
37
27
|
module: TemporalModule_1,
|
|
38
28
|
imports,
|
|
39
|
-
providers: [
|
|
40
|
-
|
|
29
|
+
providers: [
|
|
30
|
+
temporal_service_1.TemporalService,
|
|
31
|
+
core_1.DiscoveryService,
|
|
32
|
+
core_1.MetadataScanner,
|
|
33
|
+
workflow_discovery_service_1.WorkflowDiscoveryService,
|
|
34
|
+
schedule_manager_service_1.ScheduleManagerService,
|
|
35
|
+
],
|
|
36
|
+
exports: [temporal_service_1.TemporalService, workflow_discovery_service_1.WorkflowDiscoveryService, schedule_manager_service_1.ScheduleManagerService],
|
|
41
37
|
global: options.isGlobal,
|
|
42
38
|
};
|
|
43
39
|
}
|
|
44
40
|
static registerAsync(options) {
|
|
41
|
+
this.validateAsyncOptions(options);
|
|
45
42
|
return {
|
|
46
43
|
module: TemporalModule_1,
|
|
47
44
|
imports: [
|
|
@@ -49,50 +46,120 @@ let TemporalModule = TemporalModule_1 = class TemporalModule {
|
|
|
49
46
|
temporal_client_module_1.TemporalClientModule.registerAsync({
|
|
50
47
|
imports: options.imports,
|
|
51
48
|
useFactory: async (...args) => {
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
const temporalOptions = await this.createOptionsFromFactory(options, args);
|
|
50
|
+
const { clientOptions } = this.processOptions(temporalOptions);
|
|
51
|
+
return clientOptions;
|
|
52
|
+
},
|
|
53
|
+
inject: options.inject,
|
|
54
|
+
}),
|
|
55
|
+
temporal_worker_module_1.TemporalWorkerModule.registerAsync({
|
|
56
|
+
imports: options.imports,
|
|
57
|
+
useFactory: async (...args) => {
|
|
58
|
+
const temporalOptions = await this.createOptionsFromFactory(options, args);
|
|
59
|
+
const { workerOptions } = this.processOptions(temporalOptions);
|
|
60
|
+
if (!workerOptions) {
|
|
61
|
+
throw new Error('Worker configuration is required for async registration with worker');
|
|
54
62
|
}
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
connection: temporalOptions.connection,
|
|
58
|
-
namespace: temporalOptions.connection.namespace,
|
|
59
|
-
allowConnectionFailure: true,
|
|
60
|
-
};
|
|
63
|
+
return workerOptions;
|
|
61
64
|
},
|
|
62
65
|
inject: options.inject,
|
|
63
66
|
}),
|
|
64
|
-
...(options.useFactory
|
|
65
|
-
? [
|
|
66
|
-
temporal_worker_module_1.TemporalWorkerModule.registerAsync({
|
|
67
|
-
imports: options.imports,
|
|
68
|
-
useFactory: async (...args) => {
|
|
69
|
-
if (!options.useFactory) {
|
|
70
|
-
throw new Error('useFactory is required');
|
|
71
|
-
}
|
|
72
|
-
const temporalOptions = await options.useFactory(...args);
|
|
73
|
-
if (!temporalOptions.worker) {
|
|
74
|
-
throw new Error('Worker configuration is required');
|
|
75
|
-
}
|
|
76
|
-
return {
|
|
77
|
-
connection: temporalOptions.connection,
|
|
78
|
-
namespace: temporalOptions.connection.namespace,
|
|
79
|
-
taskQueue: temporalOptions.taskQueue || 'default-task-queue',
|
|
80
|
-
workflowsPath: temporalOptions.worker.workflowsPath,
|
|
81
|
-
activityClasses: temporalOptions.worker.activityClasses,
|
|
82
|
-
autoStart: temporalOptions.worker.autoStart !== false,
|
|
83
|
-
allowWorkerFailure: true,
|
|
84
|
-
};
|
|
85
|
-
},
|
|
86
|
-
inject: options.inject,
|
|
87
|
-
}),
|
|
88
|
-
]
|
|
89
|
-
: []),
|
|
90
67
|
],
|
|
91
|
-
providers: [
|
|
92
|
-
|
|
68
|
+
providers: [
|
|
69
|
+
temporal_service_1.TemporalService,
|
|
70
|
+
core_1.DiscoveryService,
|
|
71
|
+
core_1.MetadataScanner,
|
|
72
|
+
workflow_discovery_service_1.WorkflowDiscoveryService,
|
|
73
|
+
schedule_manager_service_1.ScheduleManagerService,
|
|
74
|
+
],
|
|
75
|
+
exports: [temporal_service_1.TemporalService, workflow_discovery_service_1.WorkflowDiscoveryService, schedule_manager_service_1.ScheduleManagerService],
|
|
93
76
|
global: options.isGlobal,
|
|
94
77
|
};
|
|
95
78
|
}
|
|
79
|
+
static forClient(options) {
|
|
80
|
+
return this.register({
|
|
81
|
+
connection: options.connection,
|
|
82
|
+
isGlobal: options.isGlobal,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
static forWorker(options) {
|
|
86
|
+
return this.register({
|
|
87
|
+
connection: options.connection,
|
|
88
|
+
taskQueue: options.taskQueue,
|
|
89
|
+
worker: {
|
|
90
|
+
workflowsPath: options.workflowsPath,
|
|
91
|
+
workflowBundle: options.workflowBundle,
|
|
92
|
+
activityClasses: options.activityClasses,
|
|
93
|
+
},
|
|
94
|
+
isGlobal: options.isGlobal,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
static processOptions(options) {
|
|
98
|
+
this.validateOptions(options);
|
|
99
|
+
const clientOptions = {
|
|
100
|
+
connection: options.connection,
|
|
101
|
+
namespace: options.connection.namespace,
|
|
102
|
+
allowConnectionFailure: true,
|
|
103
|
+
};
|
|
104
|
+
let workerOptions = null;
|
|
105
|
+
if (options.worker) {
|
|
106
|
+
workerOptions = {
|
|
107
|
+
connection: options.connection,
|
|
108
|
+
namespace: options.connection.namespace,
|
|
109
|
+
taskQueue: options.taskQueue || constants_1.DEFAULT_TASK_QUEUE,
|
|
110
|
+
workflowsPath: options.worker.workflowsPath,
|
|
111
|
+
workflowBundle: options.worker.workflowBundle,
|
|
112
|
+
activityClasses: options.worker.activityClasses,
|
|
113
|
+
autoStart: options.worker.autoStart !== false,
|
|
114
|
+
allowWorkerFailure: true,
|
|
115
|
+
workerOptions: options.worker.workerOptions,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return { clientOptions, workerOptions };
|
|
119
|
+
}
|
|
120
|
+
static validateOptions(options) {
|
|
121
|
+
if (!options.connection) {
|
|
122
|
+
throw new Error('Connection configuration is required');
|
|
123
|
+
}
|
|
124
|
+
if (!options.connection.address) {
|
|
125
|
+
throw new Error('Connection address is required');
|
|
126
|
+
}
|
|
127
|
+
if (options.worker) {
|
|
128
|
+
const hasWorkflowsPath = Boolean(options.worker.workflowsPath);
|
|
129
|
+
const hasWorkflowBundle = Boolean(options.worker.workflowBundle);
|
|
130
|
+
if (!hasWorkflowsPath && !hasWorkflowBundle) {
|
|
131
|
+
throw new Error('Worker requires either workflowsPath or workflowBundle');
|
|
132
|
+
}
|
|
133
|
+
if (hasWorkflowsPath && hasWorkflowBundle) {
|
|
134
|
+
throw new Error('Worker cannot have both workflowsPath and workflowBundle');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
static validateAsyncOptions(options) {
|
|
139
|
+
const hasFactory = Boolean(options.useFactory);
|
|
140
|
+
const hasClass = Boolean(options.useClass);
|
|
141
|
+
const hasExisting = Boolean(options.useExisting);
|
|
142
|
+
const configMethods = [hasFactory, hasClass, hasExisting].filter(Boolean).length;
|
|
143
|
+
if (configMethods === 0) {
|
|
144
|
+
throw new Error(constants_1.ERRORS.INVALID_OPTIONS + ': Must provide useFactory, useClass, or useExisting');
|
|
145
|
+
}
|
|
146
|
+
if (configMethods > 1) {
|
|
147
|
+
throw new Error(constants_1.ERRORS.INVALID_OPTIONS + ': Cannot provide multiple configuration methods');
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
static async createOptionsFromFactory(options, args) {
|
|
151
|
+
if (options.useFactory) {
|
|
152
|
+
return await options.useFactory(...args);
|
|
153
|
+
}
|
|
154
|
+
if (options.useClass) {
|
|
155
|
+
const optionsFactory = new options.useClass();
|
|
156
|
+
return await optionsFactory.createTemporalOptions();
|
|
157
|
+
}
|
|
158
|
+
if (options.useExisting) {
|
|
159
|
+
throw new Error('useExisting should be handled by dependency injection');
|
|
160
|
+
}
|
|
161
|
+
throw new Error(constants_1.ERRORS.INVALID_OPTIONS);
|
|
162
|
+
}
|
|
96
163
|
};
|
|
97
164
|
exports.TemporalModule = TemporalModule;
|
|
98
165
|
exports.TemporalModule = TemporalModule = TemporalModule_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal.module.js","sourceRoot":"","sources":["../src/temporal.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"temporal.module.js","sourceRoot":"","sources":["../src/temporal.module.ts"],"names":[],"mappings":"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"}
|