nestjs-temporal-core 3.2.6 → 3.2.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.
Files changed (37) hide show
  1. package/README.md +303 -5
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.js +4 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/interfaces.d.ts +39 -104
  6. package/dist/interfaces.js +2 -1
  7. package/dist/interfaces.js.map +1 -1
  8. package/dist/services/temporal-client.service.d.ts +6 -5
  9. package/dist/services/temporal-client.service.js +40 -2
  10. package/dist/services/temporal-client.service.js.map +1 -1
  11. package/dist/services/temporal-schedule.service.d.ts +1 -0
  12. package/dist/services/temporal-schedule.service.js +46 -21
  13. package/dist/services/temporal-schedule.service.js.map +1 -1
  14. package/dist/services/temporal-worker.service.js +7 -9
  15. package/dist/services/temporal-worker.service.js.map +1 -1
  16. package/dist/services/temporal.service.d.ts +1 -0
  17. package/dist/services/temporal.service.js +16 -0
  18. package/dist/services/temporal.service.js.map +1 -1
  19. package/dist/temporal.module.js +15 -2
  20. package/dist/temporal.module.js.map +1 -1
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/dist/utils/index.d.ts +1 -0
  23. package/dist/utils/index.js +4 -1
  24. package/dist/utils/index.js.map +1 -1
  25. package/dist/utils/workflow-token.d.ts +5 -0
  26. package/dist/utils/workflow-token.js +16 -0
  27. package/dist/utils/workflow-token.js.map +1 -0
  28. package/dist/workflow-proxy/index.d.ts +2 -0
  29. package/dist/workflow-proxy/index.js +8 -0
  30. package/dist/workflow-proxy/index.js.map +1 -0
  31. package/dist/workflow-proxy/workflow-proxy.d.ts +26 -0
  32. package/dist/workflow-proxy/workflow-proxy.factory.d.ts +9 -0
  33. package/dist/workflow-proxy/workflow-proxy.factory.js +29 -0
  34. package/dist/workflow-proxy/workflow-proxy.factory.js.map +1 -0
  35. package/dist/workflow-proxy/workflow-proxy.js +41 -0
  36. package/dist/workflow-proxy/workflow-proxy.js.map +1 -0
  37. package/package.json +3 -2
@@ -1,3 +1,4 @@
1
1
  export { createLogger, LoggerUtils, TemporalLogger, TemporalLoggerManager } from './logger';
2
2
  export { isValidCronExpression, isValidIntervalExpression } from './validation';
3
3
  export { getActivityMetadata, getActivityMethodMetadata, isActivity, isActivityMethod, } from './metadata';
4
+ export { createWorkflowToken, createWorkflowProvider } from './workflow-token';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isActivityMethod = exports.isActivity = exports.getActivityMethodMetadata = exports.getActivityMetadata = exports.isValidIntervalExpression = exports.isValidCronExpression = exports.TemporalLoggerManager = exports.TemporalLogger = exports.LoggerUtils = exports.createLogger = void 0;
3
+ exports.createWorkflowProvider = exports.createWorkflowToken = exports.isActivityMethod = exports.isActivity = exports.getActivityMethodMetadata = exports.getActivityMetadata = exports.isValidIntervalExpression = exports.isValidCronExpression = exports.TemporalLoggerManager = exports.TemporalLogger = exports.LoggerUtils = exports.createLogger = void 0;
4
4
  var logger_1 = require("./logger");
5
5
  Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_1.createLogger; } });
6
6
  Object.defineProperty(exports, "LoggerUtils", { enumerable: true, get: function () { return logger_1.LoggerUtils; } });
@@ -14,4 +14,7 @@ Object.defineProperty(exports, "getActivityMetadata", { enumerable: true, get: f
14
14
  Object.defineProperty(exports, "getActivityMethodMetadata", { enumerable: true, get: function () { return metadata_1.getActivityMethodMetadata; } });
15
15
  Object.defineProperty(exports, "isActivity", { enumerable: true, get: function () { return metadata_1.isActivity; } });
16
16
  Object.defineProperty(exports, "isActivityMethod", { enumerable: true, get: function () { return metadata_1.isActivityMethod; } });
17
+ var workflow_token_1 = require("./workflow-token");
18
+ Object.defineProperty(exports, "createWorkflowToken", { enumerable: true, get: function () { return workflow_token_1.createWorkflowToken; } });
19
+ Object.defineProperty(exports, "createWorkflowProvider", { enumerable: true, get: function () { return workflow_token_1.createWorkflowProvider; } });
17
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAWA,mCAA4F;AAAnF,sGAAA,YAAY,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAGzE,2CAAgF;AAAvE,mHAAA,qBAAqB,OAAA;AAAE,uHAAA,yBAAyB,OAAA;AAGzD,uCAKoB;AAJhB,+GAAA,mBAAmB,OAAA;AACnB,qHAAA,yBAAyB,OAAA;AACzB,sGAAA,UAAU,OAAA;AACV,4GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAWA,mCAA4F;AAAnF,sGAAA,YAAY,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAGzE,2CAAgF;AAAvE,mHAAA,qBAAqB,OAAA;AAAE,uHAAA,yBAAyB,OAAA;AAGzD,uCAKoB;AAJhB,+GAAA,mBAAmB,OAAA;AACnB,qHAAA,yBAAyB,OAAA;AACzB,sGAAA,UAAU,OAAA;AACV,4GAAA,gBAAgB,OAAA;AAIpB,mDAA+E;AAAtE,qHAAA,mBAAmB,OAAA;AAAE,wHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,5 @@
1
+ import { InjectionToken, FactoryProvider } from '@nestjs/common';
2
+ import type { Workflow } from '@temporalio/workflow';
3
+ import { WorkflowProxyConfig } from '../interfaces';
4
+ export declare function createWorkflowToken(workflowType: string): InjectionToken;
5
+ export declare function createWorkflowProvider<T extends Workflow>(token: InjectionToken, config: WorkflowProxyConfig): FactoryProvider;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createWorkflowToken = createWorkflowToken;
4
+ exports.createWorkflowProvider = createWorkflowProvider;
5
+ const workflow_proxy_factory_1 = require("../workflow-proxy/workflow-proxy.factory");
6
+ function createWorkflowToken(workflowType) {
7
+ return `TEMPORAL_WORKFLOW_${workflowType.toUpperCase()}`;
8
+ }
9
+ function createWorkflowProvider(token, config) {
10
+ return {
11
+ provide: token,
12
+ inject: [workflow_proxy_factory_1.WorkflowProxyFactory],
13
+ useFactory: (factory) => factory.createProxy(config),
14
+ };
15
+ }
16
+ //# sourceMappingURL=workflow-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-token.js","sourceRoot":"","sources":["../../src/utils/workflow-token.ts"],"names":[],"mappings":";;AAiBA,kDAEC;AAuCD,wDAUC;AAlED,qFAAgF;AAehF,SAAgB,mBAAmB,CAAC,YAAoB;IACpD,OAAO,qBAAqB,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7D,CAAC;AAuCD,SAAgB,sBAAsB,CAClC,KAAqB,EACrB,MAA2B;IAE3B,OAAO;QACH,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,CAAC,6CAAoB,CAAC;QAC9B,UAAU,EAAE,CAAC,OAA6B,EAAqB,EAAE,CAC7D,OAAO,CAAC,WAAW,CAAI,MAAM,CAAC;KACrC,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { IWorkflowProxy, WorkflowProxy } from './workflow-proxy';
2
+ export { WorkflowProxyFactory } from './workflow-proxy.factory';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkflowProxyFactory = exports.WorkflowProxy = void 0;
4
+ var workflow_proxy_1 = require("./workflow-proxy");
5
+ Object.defineProperty(exports, "WorkflowProxy", { enumerable: true, get: function () { return workflow_proxy_1.WorkflowProxy; } });
6
+ var workflow_proxy_factory_1 = require("./workflow-proxy.factory");
7
+ Object.defineProperty(exports, "WorkflowProxyFactory", { enumerable: true, get: function () { return workflow_proxy_factory_1.WorkflowProxyFactory; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow-proxy/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiE;AAAxC,+GAAA,aAAa,OAAA;AACtC,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,26 @@
1
+ import type { Workflow, SignalDefinition, QueryDefinition } from '@temporalio/workflow';
2
+ import { WorkflowHandle } from '@temporalio/client';
3
+ import { TemporalClientService } from '../services/temporal-client.service';
4
+ import { WorkflowHandleWithMetadata, WorkflowStartOptions, WorkflowProxyConfig } from '../interfaces';
5
+ export interface IWorkflowProxy<T extends Workflow> {
6
+ start(args: Parameters<T>, options?: WorkflowStartOptions): Promise<WorkflowHandleWithMetadata<T>>;
7
+ getHandle(workflowId: string, runId?: string): Promise<WorkflowHandle<T>>;
8
+ signal<TArgs extends unknown[]>(workflowId: string, signalDef: SignalDefinition<TArgs>, ...args: TArgs): Promise<void>;
9
+ signalByName(workflowId: string, signalName: string, args?: readonly unknown[]): Promise<void>;
10
+ query<TResult, TArgs extends unknown[] = []>(workflowId: string, queryDef: QueryDefinition<TResult, TArgs>, ...args: TArgs): Promise<TResult>;
11
+ queryByName<TResult>(workflowId: string, queryName: string, args?: readonly unknown[]): Promise<TResult>;
12
+ signalWithStart<TSignalArgs extends unknown[]>(signalDef: SignalDefinition<TSignalArgs>, signalArgs: TSignalArgs, workflowArgs: Parameters<T>, options?: WorkflowStartOptions): Promise<WorkflowHandleWithMetadata<T>>;
13
+ }
14
+ export declare class WorkflowProxy<T extends Workflow> implements IWorkflowProxy<T> {
15
+ private readonly clientService;
16
+ private readonly config;
17
+ constructor(clientService: TemporalClientService, config: WorkflowProxyConfig);
18
+ start(args: Parameters<T>, options?: WorkflowStartOptions): Promise<WorkflowHandleWithMetadata<T>>;
19
+ getHandle(workflowId: string, runId?: string): Promise<WorkflowHandle<T>>;
20
+ signal<TArgs extends unknown[]>(workflowId: string, signalDef: SignalDefinition<TArgs>, ...args: TArgs): Promise<void>;
21
+ signalByName(workflowId: string, signalName: string, args?: readonly unknown[]): Promise<void>;
22
+ query<TResult, TArgs extends unknown[] = []>(workflowId: string, queryDef: QueryDefinition<TResult, TArgs>, ...args: TArgs): Promise<TResult>;
23
+ queryByName<TResult>(workflowId: string, queryName: string, args?: readonly unknown[]): Promise<TResult>;
24
+ signalWithStart<TSignalArgs extends unknown[]>(signalDef: SignalDefinition<TSignalArgs>, signalArgs: TSignalArgs, workflowArgs: Parameters<T>, options?: WorkflowStartOptions): Promise<WorkflowHandleWithMetadata<T>>;
25
+ private mergeOptions;
26
+ }
@@ -0,0 +1,9 @@
1
+ import { TemporalClientService } from '../services/temporal-client.service';
2
+ import { WorkflowProxyConfig } from '../interfaces';
3
+ import { IWorkflowProxy } from './workflow-proxy';
4
+ import type { Workflow } from '@temporalio/workflow';
5
+ export declare class WorkflowProxyFactory {
6
+ private readonly clientService;
7
+ constructor(clientService: TemporalClientService);
8
+ createProxy<T extends Workflow>(config: WorkflowProxyConfig): IWorkflowProxy<T>;
9
+ }
@@ -0,0 +1,29 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WorkflowProxyFactory = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const temporal_client_service_1 = require("../services/temporal-client.service");
15
+ const workflow_proxy_1 = require("./workflow-proxy");
16
+ let WorkflowProxyFactory = class WorkflowProxyFactory {
17
+ constructor(clientService) {
18
+ this.clientService = clientService;
19
+ }
20
+ createProxy(config) {
21
+ return new workflow_proxy_1.WorkflowProxy(this.clientService, config);
22
+ }
23
+ };
24
+ exports.WorkflowProxyFactory = WorkflowProxyFactory;
25
+ exports.WorkflowProxyFactory = WorkflowProxyFactory = __decorate([
26
+ (0, common_1.Injectable)(),
27
+ __metadata("design:paramtypes", [temporal_client_service_1.TemporalClientService])
28
+ ], WorkflowProxyFactory);
29
+ //# sourceMappingURL=workflow-proxy.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-proxy.factory.js","sourceRoot":"","sources":["../../src/workflow-proxy/workflow-proxy.factory.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,iFAA4E;AAE5E,qDAAiE;AAiD1D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC7B,YAA6B,aAAoC;QAApC,kBAAa,GAAb,aAAa,CAAuB;IAAG,CAAC;IAQrE,WAAW,CAAqB,MAA2B;QACvD,OAAO,IAAI,8BAAa,CAAI,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;CACJ,CAAA;AAZY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAEmC,+CAAqB;GADxD,oBAAoB,CAYhC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkflowProxy = void 0;
4
+ class WorkflowProxy {
5
+ constructor(clientService, config) {
6
+ this.clientService = clientService;
7
+ this.config = config;
8
+ }
9
+ async start(args, options) {
10
+ const handle = await this.clientService.startWorkflow(this.config.workflowType, args, this.mergeOptions(options));
11
+ return handle;
12
+ }
13
+ async getHandle(workflowId, runId) {
14
+ const handle = await this.clientService.getWorkflowHandle(workflowId, runId);
15
+ return handle;
16
+ }
17
+ async signal(workflowId, signalDef, ...args) {
18
+ return this.clientService.signalWorkflow(workflowId, signalDef.name, args);
19
+ }
20
+ async signalByName(workflowId, signalName, args) {
21
+ return this.clientService.signalWorkflow(workflowId, signalName, args);
22
+ }
23
+ async query(workflowId, queryDef, ...args) {
24
+ return this.clientService.queryWorkflow(workflowId, queryDef.name, args);
25
+ }
26
+ async queryByName(workflowId, queryName, args) {
27
+ return this.clientService.queryWorkflow(workflowId, queryName, args);
28
+ }
29
+ async signalWithStart(signalDef, signalArgs, workflowArgs, options) {
30
+ const handle = await this.clientService.signalWithStart(this.config.workflowType, signalDef.name, signalArgs, workflowArgs, this.mergeOptions(options));
31
+ return handle;
32
+ }
33
+ mergeOptions(options) {
34
+ return {
35
+ ...(this.config.taskQueue && { taskQueue: this.config.taskQueue }),
36
+ ...options,
37
+ };
38
+ }
39
+ }
40
+ exports.WorkflowProxy = WorkflowProxy;
41
+ //# sourceMappingURL=workflow-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-proxy.js","sourceRoot":"","sources":["../../src/workflow-proxy/workflow-proxy.ts"],"names":[],"mappings":";;;AAiKA,MAAa,aAAa;IACtB,YACqB,aAAoC,EACpC,MAA2B;QAD3B,kBAAa,GAAb,aAAa,CAAuB;QACpC,WAAM,GAAN,MAAM,CAAqB;IAC7C,CAAC;IAEJ,KAAK,CAAC,KAAK,CACP,IAAmB,EACnB,OAA8B;QAE9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CACjD,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB,IAAI,EACJ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAC7B,CAAC;QACF,OAAO,MAAuC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAkB,EAAE,KAAc;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7E,OAAO,MAA2B,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CACR,UAAkB,EAClB,SAAkC,EAClC,GAAG,IAAW;QAEd,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,YAAY,CACd,UAAkB,EAClB,UAAkB,EAClB,IAAyB;QAEzB,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAK,CACP,UAAkB,EAClB,QAAyC,EACzC,GAAG,IAAW;QAEd,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAU,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,WAAW,CACb,UAAkB,EAClB,SAAiB,EACjB,IAAyB;QAEzB,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAU,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,eAAe,CACjB,SAAwC,EACxC,UAAuB,EACvB,YAA2B,EAC3B,OAA8B;QAE9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CACnD,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB,SAAS,CAAC,IAAI,EACd,UAAU,EACV,YAAY,EACZ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAC7B,CAAC;QACF,OAAO,MAAuC,CAAC;IACnD,CAAC;IAEO,YAAY,CAAC,OAA8B;QAC/C,OAAO;YACH,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAClE,GAAG,OAAO;SACb,CAAC;IACN,CAAC;CACJ;AA7ED,sCA6EC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nestjs-temporal-core",
3
- "version": "3.2.6",
3
+ "version": "3.2.7",
4
4
  "description": "Complete NestJS integration for Temporal.io with auto-discovery, declarative scheduling, enhanced monitoring, and enterprise-ready features",
5
5
  "author": "Harsh M",
6
6
  "license": "MIT",
@@ -44,7 +44,7 @@
44
44
  "test": "jest --coverage --passWithNoTests --forceExit",
45
45
  "test:unit": "jest --testPathPatterns=test/unit --testPathIgnorePatterns=test/performance --coverage --passWithNoTests --forceExit",
46
46
  "test:integration": "jest --testPathPatterns=test/integration --coverage --passWithNoTests --forceExit",
47
- "test:ci": "npm run test:unit && npm run test:integration",
47
+ "test:ci": "jest --coverage --passWithNoTests --forceExit",
48
48
  "make-badges": "istanbul-badges-readme",
49
49
  "docs:generate": "typedoc src --out docs --excludePrivate --excludeProtected",
50
50
  "docs:serve": "npx http-server docs -p 3001 -o",
@@ -124,6 +124,7 @@
124
124
  "husky": "^9.1.7",
125
125
  "istanbul-badges-readme": "^1.9.0",
126
126
  "jest": "^30.3.0",
127
+ "jest-junit": "^16.0.0",
127
128
  "jsdoc": "^4.0.5",
128
129
  "jsdoc-to-markdown": "^9.1.3",
129
130
  "jsdoc-tsimport-plugin": "^1.0.5",