@tsed/temporal 7.37.0

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 (67) hide show
  1. package/.eslintignore +13 -0
  2. package/.eslintrc.js +1 -0
  3. package/jest.config.js +19 -0
  4. package/lib/cjs/TemporalModule.js +53 -0
  5. package/lib/cjs/TemporalModule.js.map +1 -0
  6. package/lib/cjs/constants.js +5 -0
  7. package/lib/cjs/constants.js.map +1 -0
  8. package/lib/cjs/decorators/activity.js +17 -0
  9. package/lib/cjs/decorators/activity.js.map +1 -0
  10. package/lib/cjs/decorators/temporal.js +13 -0
  11. package/lib/cjs/decorators/temporal.js.map +1 -0
  12. package/lib/cjs/index.js +15 -0
  13. package/lib/cjs/index.js.map +1 -0
  14. package/lib/cjs/interfaces/TemporalStore.js +5 -0
  15. package/lib/cjs/interfaces/TemporalStore.js.map +1 -0
  16. package/lib/cjs/interfaces/interfaces.js +3 -0
  17. package/lib/cjs/interfaces/interfaces.js.map +1 -0
  18. package/lib/cjs/package.json +3 -0
  19. package/lib/cjs/services/TemporalFactory.js +51 -0
  20. package/lib/cjs/services/TemporalFactory.js.map +1 -0
  21. package/lib/cjs/utils/worker.js +35 -0
  22. package/lib/cjs/utils/worker.js.map +1 -0
  23. package/lib/esm/TemporalModule.js +50 -0
  24. package/lib/esm/TemporalModule.js.map +1 -0
  25. package/lib/esm/constants.js +2 -0
  26. package/lib/esm/constants.js.map +1 -0
  27. package/lib/esm/decorators/activity.js +13 -0
  28. package/lib/esm/decorators/activity.js.map +1 -0
  29. package/lib/esm/decorators/temporal.js +9 -0
  30. package/lib/esm/decorators/temporal.js.map +1 -0
  31. package/lib/esm/index.js +12 -0
  32. package/lib/esm/index.js.map +1 -0
  33. package/lib/esm/interfaces/TemporalStore.js +2 -0
  34. package/lib/esm/interfaces/TemporalStore.js.map +1 -0
  35. package/lib/esm/interfaces/interfaces.js +2 -0
  36. package/lib/esm/interfaces/interfaces.js.map +1 -0
  37. package/lib/esm/package.json +3 -0
  38. package/lib/esm/services/TemporalFactory.js +48 -0
  39. package/lib/esm/services/TemporalFactory.js.map +1 -0
  40. package/lib/esm/utils/worker.js +31 -0
  41. package/lib/esm/utils/worker.js.map +1 -0
  42. package/lib/tsconfig.esm.tsbuildinfo +1 -0
  43. package/lib/tsconfig.tsbuildinfo +1 -0
  44. package/lib/types/TemporalModule.d.ts +12 -0
  45. package/lib/types/constants.d.ts +1 -0
  46. package/lib/types/decorators/activity.d.ts +2 -0
  47. package/lib/types/decorators/temporal.d.ts +1 -0
  48. package/lib/types/index.d.ts +11 -0
  49. package/lib/types/interfaces/TemporalStore.d.ts +9 -0
  50. package/lib/types/interfaces/interfaces.d.ts +12 -0
  51. package/lib/types/services/TemporalFactory.d.ts +5 -0
  52. package/lib/types/utils/worker.d.ts +9 -0
  53. package/package.json +49 -0
  54. package/readme.md +256 -0
  55. package/src/TemporalModule.ts +39 -0
  56. package/src/constants.ts +1 -0
  57. package/src/decorators/activity.spec.ts +40 -0
  58. package/src/decorators/activity.ts +14 -0
  59. package/src/decorators/temporal.spec.ts +11 -0
  60. package/src/decorators/temporal.ts +11 -0
  61. package/src/index.ts +12 -0
  62. package/src/interfaces/TemporalStore.ts +9 -0
  63. package/src/interfaces/interfaces.ts +14 -0
  64. package/src/services/TemporalFactory.ts +55 -0
  65. package/src/utils/worker.ts +43 -0
  66. package/tsconfig.esm.json +39 -0
  67. package/tsconfig.json +39 -0
package/.eslintignore ADDED
@@ -0,0 +1,13 @@
1
+ node_modules
2
+ docs
3
+ docs-references
4
+ lib
5
+ dist
6
+ coverage
7
+ .nyc_output
8
+ *-lock.json
9
+ *.lock
10
+ benchmarks.*
11
+ **/generated
12
+
13
+ **/*.js
package/.eslintrc.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require("@tsed/eslint/node.js");
package/jest.config.js ADDED
@@ -0,0 +1,19 @@
1
+ // For a detailed explanation regarding each configuration property, visit:
2
+ // https://jestjs.io/docs/en/configuration.html
3
+
4
+ module.exports = {
5
+ ...require("@tsed/jest-config"),
6
+ roots: ["<rootDir>/src", "<rootDir>/test"],
7
+ coverageThreshold: {
8
+ global: {
9
+ statements: 94.62,
10
+ branches: 75.75,
11
+ functions: 93.33,
12
+ lines: 94.62
13
+ }
14
+ },
15
+ transformIgnorePatterns: ["test/workflows/.*\\.ts$"],
16
+ moduleNameMapper: {
17
+ "@tsed/temporal": "<rootDir>/src/index.ts"
18
+ }
19
+ };
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemporalModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@tsed/core");
6
+ const common_1 = require("@tsed/common");
7
+ const di_1 = require("@tsed/di");
8
+ const constants_1 = require("./constants");
9
+ const TemporalStore_1 = require("./interfaces/TemporalStore");
10
+ const TemporalFactory_1 = require("./services/TemporalFactory");
11
+ let TemporalModule = class TemporalModule {
12
+ temporalServices;
13
+ logger;
14
+ injector;
15
+ client;
16
+ constructor(temporalServices) {
17
+ this.temporalServices = temporalServices;
18
+ }
19
+ getActivities() {
20
+ return this.temporalServices.reduce((activities, instance) => Object.assign(activities, this.getActivitiesFromInstance(instance)), {});
21
+ }
22
+ getActivitiesFromInstance(instance) {
23
+ const provider = this.injector.getProvider((0, core_1.classOf)(instance));
24
+ const store = provider.store.get(TemporalStore_1.TEMPORAL_STORE_KEY, {});
25
+ return Object.entries(store.activities || {}).reduce((activities, [propertyKey, { name }]) => {
26
+ const jobProcessor = instance[propertyKey].bind(instance);
27
+ const jobName = name || propertyKey;
28
+ return {
29
+ ...activities,
30
+ [jobName]: jobProcessor
31
+ };
32
+ }, {});
33
+ }
34
+ };
35
+ tslib_1.__decorate([
36
+ (0, di_1.Inject)(),
37
+ tslib_1.__metadata("design:type", common_1.Logger)
38
+ ], TemporalModule.prototype, "logger", void 0);
39
+ tslib_1.__decorate([
40
+ (0, di_1.Inject)(),
41
+ tslib_1.__metadata("design:type", di_1.InjectorService)
42
+ ], TemporalModule.prototype, "injector", void 0);
43
+ tslib_1.__decorate([
44
+ (0, di_1.Inject)(),
45
+ tslib_1.__metadata("design:type", TemporalFactory_1.TemporalClient)
46
+ ], TemporalModule.prototype, "client", void 0);
47
+ TemporalModule = tslib_1.__decorate([
48
+ (0, di_1.Module)(),
49
+ tslib_1.__param(0, (0, di_1.Inject)(constants_1.PROVIDER_TYPE_TEMPORAL)),
50
+ tslib_1.__metadata("design:paramtypes", [Array])
51
+ ], TemporalModule);
52
+ exports.TemporalModule = TemporalModule;
53
+ //# sourceMappingURL=TemporalModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemporalModule.js","sourceRoot":"","sources":["../../src/TemporalModule.ts"],"names":[],"mappings":";;;;AAAA,qCAAmC;AACnC,yCAAoC;AACpC,iCAAmE;AACnE,2CAAmD;AACnD,8DAA6E;AAC7E,gEAA0D;AAGnD,IAAM,cAAc,GAApB,MAAM,cAAc;IAU2B;IAR1C,MAAM,CAAU;IAGhB,QAAQ,CAAmB;IAG3B,MAAM,CAAkB;IAElC,YAAoD,gBAAuB;QAAvB,qBAAgB,GAAhB,gBAAgB,CAAO;IAAG,CAAC;IAExE,aAAa;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzI,CAAC;IAES,yBAAyB,CAAC,QAAa;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAgB,kCAAkB,EAAE,EAAE,CAAC,CAAC;QAExE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,EAAC,IAAI,EAAC,CAAC,EAAE,EAAE;YACzF,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAI,IAAI,WAAW,CAAC;YAEpC,OAAO;gBACL,GAAG,UAAU;gBACb,CAAC,OAAO,CAAC,EAAE,YAAY;aACxB,CAAC;QACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;CACF,CAAA;AA7BC;IAAC,IAAA,WAAM,GAAE;sCACU,eAAM;8CAAC;AAE1B;IAAC,IAAA,WAAM,GAAE;sCACY,oBAAe;gDAAC;AAErC;IAAC,IAAA,WAAM,GAAE;sCACU,gCAAc;8CAAC;AARvB,cAAc;IAD1B,IAAA,WAAM,GAAE;IAWM,mBAAA,IAAA,WAAM,EAAC,kCAAsB,CAAC,CAAA;;GAVhC,cAAc,CA8B1B;AA9BY,wCAAc"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROVIDER_TYPE_TEMPORAL = void 0;
4
+ exports.PROVIDER_TYPE_TEMPORAL = "PROVIDER_TYPE_TEMPORAL";
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,wBAAwB,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Activity = void 0;
4
+ const core_1 = require("@tsed/core");
5
+ const TemporalStore_1 = require("../interfaces/TemporalStore");
6
+ function Activity(options = {}) {
7
+ return (target, propertyKey) => {
8
+ const store = {
9
+ activities: {
10
+ [propertyKey]: options
11
+ }
12
+ };
13
+ core_1.Store.from(target).merge(TemporalStore_1.TEMPORAL_STORE_KEY, store);
14
+ };
15
+ }
16
+ exports.Activity = Activity;
17
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/decorators/activity.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AACjC,+DAA+F;AAE/F,SAAgB,QAAQ,CAAC,UAA2B,EAAE;IACpD,OAAO,CAAC,MAAW,EAAE,WAA4B,EAAE,EAAE;QACnD,MAAM,KAAK,GAAkB;YAC3B,UAAU,EAAE;gBACV,CAAC,WAAW,CAAC,EAAE,OAAO;aACvB;SACF,CAAC;QAEF,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,kCAAkB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC;AAVD,4BAUC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Temporal = void 0;
4
+ const core_1 = require("@tsed/core");
5
+ const di_1 = require("@tsed/di");
6
+ const constants_1 = require("../constants");
7
+ function Temporal() {
8
+ return (0, core_1.useDecorators)((0, di_1.Injectable)({
9
+ type: constants_1.PROVIDER_TYPE_TEMPORAL
10
+ }));
11
+ }
12
+ exports.Temporal = Temporal;
13
+ //# sourceMappingURL=temporal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal.js","sourceRoot":"","sources":["../../../src/decorators/temporal.ts"],"names":[],"mappings":";;;AAAA,qCAAyC;AACzC,iCAAoC;AACpC,4CAAoD;AAEpD,SAAgB,QAAQ;IACtB,OAAO,IAAA,oBAAa,EAClB,IAAA,eAAU,EAAC;QACT,IAAI,EAAE,kCAAsB;KAC7B,CAAC,CACH,CAAC;AACJ,CAAC;AAND,4BAMC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * @file Automatically generated by barrelsby.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const tslib_1 = require("tslib");
7
+ tslib_1.__exportStar(require("./TemporalModule"), exports);
8
+ tslib_1.__exportStar(require("./constants"), exports);
9
+ tslib_1.__exportStar(require("./decorators/activity"), exports);
10
+ tslib_1.__exportStar(require("./decorators/temporal"), exports);
11
+ tslib_1.__exportStar(require("./interfaces/TemporalStore"), exports);
12
+ tslib_1.__exportStar(require("./interfaces/interfaces"), exports);
13
+ tslib_1.__exportStar(require("./services/TemporalFactory"), exports);
14
+ tslib_1.__exportStar(require("./utils/worker"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,2DAAiC;AACjC,sDAA4B;AAC5B,gEAAsC;AACtC,gEAAsC;AACtC,qEAA2C;AAC3C,kEAAwC;AACxC,qEAA2C;AAC3C,yDAA+B"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TEMPORAL_STORE_KEY = void 0;
4
+ exports.TEMPORAL_STORE_KEY = "temporal";
5
+ //# sourceMappingURL=TemporalStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemporalStore.js","sourceRoot":"","sources":["../../../src/interfaces/TemporalStore.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemporalClient = exports.TemporalConnection = void 0;
4
+ const di_1 = require("@tsed/di");
5
+ const client_1 = require("@temporalio/client");
6
+ const common_1 = require("@tsed/common");
7
+ exports.TemporalConnection = client_1.Connection;
8
+ exports.TemporalClient = client_1.Client;
9
+ (0, di_1.registerProvider)({
10
+ provide: exports.TemporalConnection,
11
+ deps: [di_1.Configuration, common_1.Logger],
12
+ async useAsyncFactory(settings, logger) {
13
+ const { temporal } = settings;
14
+ if (!temporal?.enabled) {
15
+ return null;
16
+ }
17
+ try {
18
+ logger.info("Connecting to Temporal Server: ", temporal.connection?.address || "default");
19
+ const connection = await client_1.Connection.connect(temporal.connection);
20
+ logger.info("... connected to Temporal Server: ", temporal.connection?.address || "default");
21
+ return connection;
22
+ }
23
+ catch (error) {
24
+ logger.error("Failed to connect to Temporal Server:", error);
25
+ throw error;
26
+ }
27
+ }
28
+ });
29
+ (0, di_1.registerProvider)({
30
+ provide: exports.TemporalClient,
31
+ deps: [di_1.Configuration, exports.TemporalConnection],
32
+ useFactory(settings, connection) {
33
+ const { temporal } = settings;
34
+ if (!temporal?.enabled) {
35
+ return null;
36
+ }
37
+ const client = new exports.TemporalClient({
38
+ connection,
39
+ ...temporal.client
40
+ });
41
+ return client;
42
+ },
43
+ hooks: {
44
+ $onDestroy: async (client) => {
45
+ if (client) {
46
+ await client.connection.close();
47
+ }
48
+ }
49
+ }
50
+ });
51
+ //# sourceMappingURL=TemporalFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemporalFactory.js","sourceRoot":"","sources":["../../../src/services/TemporalFactory.ts"],"names":[],"mappings":";;;AAAA,iCAAyD;AACzD,+CAAsD;AACtD,yCAAoC;AAEvB,QAAA,kBAAkB,GAAG,mBAAU,CAAC;AAGhC,QAAA,cAAc,GAAG,eAAM,CAAC;AAGrC,IAAA,qBAAgB,EAAC;IACf,OAAO,EAAE,0BAAkB;IAC3B,IAAI,EAAE,CAAC,kBAAa,EAAE,eAAM,CAAC;IAC7B,KAAK,CAAC,eAAe,CAAC,QAAuB,EAAE,MAAc;QAC3D,MAAM,EAAC,QAAQ,EAAC,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;YACtB,OAAO,IAAI,CAAC;SACb;QAED,IAAI;YACF,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;YAC1F,MAAM,UAAU,GAAG,MAAM,mBAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;YAC7F,OAAO,UAAU,CAAC;SACnB;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,KAAK,CAAC;SACb;IACH,CAAC;CACF,CAAC,CAAC;AAEH,IAAA,qBAAgB,EAAC;IACf,OAAO,EAAE,sBAAc;IACvB,IAAI,EAAE,CAAC,kBAAa,EAAE,0BAAkB,CAAC;IACzC,UAAU,CAAC,QAAuB,EAAE,UAA8B;QAChE,MAAM,EAAC,QAAQ,EAAC,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;YACtB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;YAChC,UAAU;YACV,GAAG,QAAQ,CAAC,MAAM;SACnB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,KAAK,EAAE,MAAqB,EAAE,EAAE;YAC1C,IAAI,MAAM,EAAE;gBACV,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aACjC;QACH,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bootstrapWorker = void 0;
4
+ const common_1 = require("@tsed/common");
5
+ const logger_1 = require("@tsed/logger");
6
+ const worker_1 = require("@temporalio/worker");
7
+ const TemporalModule_1 = require("../TemporalModule");
8
+ async function bootstrapWorker(mod, settings) {
9
+ await common_1.PlatformTest.bootstrap(mod, settings.platform)();
10
+ const temporalioModule = common_1.PlatformTest.get(TemporalModule_1.TemporalModule);
11
+ const activities = temporalioModule.getActivities();
12
+ logger_1.$log.info('Starting temporal worker with queue "%s" and activities:', settings.worker.taskQueue);
13
+ if (Object.keys(activities).length > 0) {
14
+ logger_1.$log.printTable(Object.entries(activities).map((x) => ({
15
+ name: x[0],
16
+ activity: x[1].toString()
17
+ })));
18
+ }
19
+ let connection;
20
+ if (settings.connection instanceof worker_1.NativeConnection) {
21
+ connection = settings.connection;
22
+ }
23
+ else {
24
+ logger_1.$log.info("Connecting to Temporal Server: ", settings.connection?.address || "default");
25
+ connection = await worker_1.NativeConnection.connect(settings.connection);
26
+ }
27
+ const worker = await worker_1.Worker.create({
28
+ connection,
29
+ ...settings.worker,
30
+ activities
31
+ });
32
+ return worker;
33
+ }
34
+ exports.bootstrapWorker = bootstrapWorker;
35
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/utils/worker.ts"],"names":[],"mappings":";;;AAAA,yCAAmE;AACnE,yCAAkC;AAElC,+CAAoG;AACpG,sDAAiD;AAQ1C,KAAK,UAAU,eAAe,CAAC,GAAQ,EAAE,QAAgC;IAC9E,MAAM,qBAAY,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvD,MAAM,gBAAgB,GAAG,qBAAY,CAAC,GAAG,CAAiB,+BAAc,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,CAAC;IACpD,aAAI,CAAC,IAAI,CAAC,0DAA0D,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACtC,aAAI,CAAC,UAAU,CACb,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACV,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAC,CACJ,CAAC;KACH;IAED,IAAI,UAA4B,CAAC;IACjC,IAAI,QAAQ,CAAC,UAAU,YAAY,yBAAgB,EAAE;QACnD,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;KAClC;SAAM;QACL,aAAI,CAAC,IAAI,CAAC,iCAAiC,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;QACxF,UAAU,GAAG,MAAM,yBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KAClE;IAED,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,MAAM,CAAC;QACjC,UAAU;QACV,GAAG,QAAQ,CAAC,MAAM;QAClB,UAAU;KACX,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AA9BD,0CA8BC"}
@@ -0,0 +1,50 @@
1
+ import { __decorate, __metadata, __param } from "tslib";
2
+ import { classOf } from "@tsed/core";
3
+ import { Logger } from "@tsed/common";
4
+ import { Inject, InjectorService, Module } from "@tsed/di";
5
+ import { PROVIDER_TYPE_TEMPORAL } from "./constants.js";
6
+ import { TEMPORAL_STORE_KEY } from "./interfaces/TemporalStore.js";
7
+ import { TemporalClient } from "./services/TemporalFactory.js";
8
+ let TemporalModule = class TemporalModule {
9
+ temporalServices;
10
+ logger;
11
+ injector;
12
+ client;
13
+ constructor(temporalServices) {
14
+ this.temporalServices = temporalServices;
15
+ }
16
+ getActivities() {
17
+ return this.temporalServices.reduce((activities, instance) => Object.assign(activities, this.getActivitiesFromInstance(instance)), {});
18
+ }
19
+ getActivitiesFromInstance(instance) {
20
+ const provider = this.injector.getProvider(classOf(instance));
21
+ const store = provider.store.get(TEMPORAL_STORE_KEY, {});
22
+ return Object.entries(store.activities || {}).reduce((activities, [propertyKey, { name }]) => {
23
+ const jobProcessor = instance[propertyKey].bind(instance);
24
+ const jobName = name || propertyKey;
25
+ return {
26
+ ...activities,
27
+ [jobName]: jobProcessor
28
+ };
29
+ }, {});
30
+ }
31
+ };
32
+ __decorate([
33
+ Inject(),
34
+ __metadata("design:type", Logger)
35
+ ], TemporalModule.prototype, "logger", void 0);
36
+ __decorate([
37
+ Inject(),
38
+ __metadata("design:type", InjectorService)
39
+ ], TemporalModule.prototype, "injector", void 0);
40
+ __decorate([
41
+ Inject(),
42
+ __metadata("design:type", TemporalClient)
43
+ ], TemporalModule.prototype, "client", void 0);
44
+ TemporalModule = __decorate([
45
+ Module(),
46
+ __param(0, Inject(PROVIDER_TYPE_TEMPORAL)),
47
+ __metadata("design:paramtypes", [Array])
48
+ ], TemporalModule);
49
+ export { TemporalModule };
50
+ //# sourceMappingURL=TemporalModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemporalModule.js","sourceRoot":"","sources":["../../src/TemporalModule.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AACnC,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAW,MAAM,UAAU,CAAC;AACnE,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AACnD,OAAO,EAAgB,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAGnD,IAAM,cAAc,GAApB,MAAM,cAAc;IAU2B;IAR1C,MAAM,CAAU;IAGhB,QAAQ,CAAmB;IAG3B,MAAM,CAAkB;IAElC,YAAoD,gBAAuB;QAAvB,qBAAgB,GAAhB,gBAAgB,CAAO;IAAG,CAAC;IAExE,aAAa;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzI,CAAC;IAES,yBAAyB,CAAC,QAAa;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAgB,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAExE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,EAAC,IAAI,EAAC,CAAC,EAAE,EAAE;YACzF,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAI,IAAI,WAAW,CAAC;YAEpC,OAAO;gBACL,GAAG,UAAU;gBACb,CAAC,OAAO,CAAC,EAAE,YAAY;aACxB,CAAC;QACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;CACF,CAAA;AA7BC;IAAC,MAAM,EAAE;8BACU,MAAM;8CAAC;AAE1B;IAAC,MAAM,EAAE;8BACY,eAAe;gDAAC;AAErC;IAAC,MAAM,EAAE;8BACU,cAAc;8CAAC;AARvB,cAAc;IAD1B,MAAM,EAAE;IAWM,WAAA,MAAM,CAAC,sBAAsB,CAAC,CAAA;;GAVhC,cAAc,CA8B1B;SA9BY,cAAc"}
@@ -0,0 +1,2 @@
1
+ export const PROVIDER_TYPE_TEMPORAL = "PROVIDER_TYPE_TEMPORAL";
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Store } from "@tsed/core";
2
+ import { TEMPORAL_STORE_KEY } from "../interfaces/TemporalStore.js";
3
+ export function Activity(options = {}) {
4
+ return (target, propertyKey) => {
5
+ const store = {
6
+ activities: {
7
+ [propertyKey]: options
8
+ }
9
+ };
10
+ Store.from(target).merge(TEMPORAL_STORE_KEY, store);
11
+ };
12
+ }
13
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/decorators/activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AACjC,OAAO,EAAiC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAE/F,MAAM,UAAU,QAAQ,CAAC,UAA2B,EAAE;IACpD,OAAO,CAAC,MAAW,EAAE,WAA4B,EAAE,EAAE;QACnD,MAAM,KAAK,GAAkB;YAC3B,UAAU,EAAE;gBACV,CAAC,WAAW,CAAC,EAAE,OAAO;aACvB;SACF,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { useDecorators } from "@tsed/core";
2
+ import { Injectable } from "@tsed/di";
3
+ import { PROVIDER_TYPE_TEMPORAL } from "../constants.js";
4
+ export function Temporal() {
5
+ return useDecorators(Injectable({
6
+ type: PROVIDER_TYPE_TEMPORAL
7
+ }));
8
+ }
9
+ //# sourceMappingURL=temporal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal.js","sourceRoot":"","sources":["../../../src/decorators/temporal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AACzC,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AAEpD,MAAM,UAAU,QAAQ;IACtB,OAAO,aAAa,CAClB,UAAU,CAAC;QACT,IAAI,EAAE,sBAAsB;KAC7B,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @file Automatically generated by barrelsby.
3
+ */
4
+ export * from "./TemporalModule.js";
5
+ export * from "./constants.js";
6
+ export * from "./decorators/activity.js";
7
+ export * from "./decorators/temporal.js";
8
+ export * from "./interfaces/TemporalStore.js";
9
+ export * from "./interfaces/interfaces.js";
10
+ export * from "./services/TemporalFactory.js";
11
+ export * from "./utils/worker.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const TEMPORAL_STORE_KEY = "temporal";
2
+ //# sourceMappingURL=TemporalStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemporalStore.js","sourceRoot":"","sources":["../../../src/interfaces/TemporalStore.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,48 @@
1
+ import { Configuration, registerProvider } from "@tsed/di";
2
+ import { Client, Connection } from "@temporalio/client";
3
+ import { Logger } from "@tsed/common";
4
+ export const TemporalConnection = Connection;
5
+ export const TemporalClient = Client;
6
+ registerProvider({
7
+ provide: TemporalConnection,
8
+ deps: [Configuration, Logger],
9
+ async useAsyncFactory(settings, logger) {
10
+ const { temporal } = settings;
11
+ if (!temporal?.enabled) {
12
+ return null;
13
+ }
14
+ try {
15
+ logger.info("Connecting to Temporal Server: ", temporal.connection?.address || "default");
16
+ const connection = await Connection.connect(temporal.connection);
17
+ logger.info("... connected to Temporal Server: ", temporal.connection?.address || "default");
18
+ return connection;
19
+ }
20
+ catch (error) {
21
+ logger.error("Failed to connect to Temporal Server:", error);
22
+ throw error;
23
+ }
24
+ }
25
+ });
26
+ registerProvider({
27
+ provide: TemporalClient,
28
+ deps: [Configuration, TemporalConnection],
29
+ useFactory(settings, connection) {
30
+ const { temporal } = settings;
31
+ if (!temporal?.enabled) {
32
+ return null;
33
+ }
34
+ const client = new TemporalClient({
35
+ connection,
36
+ ...temporal.client
37
+ });
38
+ return client;
39
+ },
40
+ hooks: {
41
+ $onDestroy: async (client) => {
42
+ if (client) {
43
+ await client.connection.close();
44
+ }
45
+ }
46
+ }
47
+ });
48
+ //# sourceMappingURL=TemporalFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemporalFactory.js","sourceRoot":"","sources":["../../../src/services/TemporalFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AACzD,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAEpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAG7C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAGrC,gBAAgB,CAAC;IACf,OAAO,EAAE,kBAAkB;IAC3B,IAAI,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,eAAe,CAAC,QAAuB,EAAE,MAAc;QAC3D,MAAM,EAAC,QAAQ,EAAC,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;YACtB,OAAO,IAAI,CAAC;SACb;QAED,IAAI;YACF,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;YAC1F,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;YAC7F,OAAO,UAAU,CAAC;SACnB;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,KAAK,CAAC;SACb;IACH,CAAC;CACF,CAAC,CAAC;AAEH,gBAAgB,CAAC;IACf,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;IACzC,UAAU,CAAC,QAAuB,EAAE,UAA8B;QAChE,MAAM,EAAC,QAAQ,EAAC,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;YACtB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;YAChC,UAAU;YACV,GAAG,QAAQ,CAAC,MAAM;SACnB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,KAAK,EAAE,MAAqB,EAAE,EAAE;YAC1C,IAAI,MAAM,EAAE;gBACV,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aACjC;QACH,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { PlatformTest } from "@tsed/common";
2
+ import { $log } from "@tsed/logger";
3
+ import { NativeConnection, Worker } from "@temporalio/worker";
4
+ import { TemporalModule } from "../TemporalModule.js";
5
+ export async function bootstrapWorker(mod, settings) {
6
+ await PlatformTest.bootstrap(mod, settings.platform)();
7
+ const temporalioModule = PlatformTest.get(TemporalModule);
8
+ const activities = temporalioModule.getActivities();
9
+ $log.info('Starting temporal worker with queue "%s" and activities:', settings.worker.taskQueue);
10
+ if (Object.keys(activities).length > 0) {
11
+ $log.printTable(Object.entries(activities).map((x) => ({
12
+ name: x[0],
13
+ activity: x[1].toString()
14
+ })));
15
+ }
16
+ let connection;
17
+ if (settings.connection instanceof NativeConnection) {
18
+ connection = settings.connection;
19
+ }
20
+ else {
21
+ $log.info("Connecting to Temporal Server: ", settings.connection?.address || "default");
22
+ connection = await NativeConnection.connect(settings.connection);
23
+ }
24
+ const worker = await Worker.create({
25
+ connection,
26
+ ...settings.worker,
27
+ activities
28
+ });
29
+ return worker;
30
+ }
31
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/utils/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,YAAY,EAAC,MAAM,cAAc,CAAC;AACnE,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AAElC,OAAO,EAAC,gBAAgB,EAA2B,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAQjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAQ,EAAE,QAAgC;IAC9E,MAAM,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvD,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAiB,cAAc,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,CAAC;IACpD,IAAI,CAAC,IAAI,CAAC,0DAA0D,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACtC,IAAI,CAAC,UAAU,CACb,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACV,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAC,CACJ,CAAC;KACH;IAED,IAAI,UAA4B,CAAC;IACjC,IAAI,QAAQ,CAAC,UAAU,YAAY,gBAAgB,EAAE;QACnD,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;KAClC;SAAM;QACL,IAAI,CAAC,IAAI,CAAC,iCAAiC,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;QACxF,UAAU,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KAClE;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QACjC,UAAU;QACV,GAAG,QAAQ,CAAC,MAAM;QAClB,UAAU;KACX,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}