@tsed/agenda 7.0.0-alpha.1 → 7.0.0-beta.10

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 (70) hide show
  1. package/.mocharc.js +2 -2
  2. package/.nycrc +3 -2
  3. package/lib/{AgendaModule.js → cjs/AgendaModule.js} +9 -8
  4. package/lib/cjs/AgendaModule.js.map +1 -0
  5. package/lib/{constants/index.js → cjs/constants/constants.js} +1 -1
  6. package/lib/cjs/constants/constants.js.map +1 -0
  7. package/lib/{decorators → cjs/decorators}/agenda.js +2 -2
  8. package/lib/cjs/decorators/agenda.js.map +1 -0
  9. package/lib/{decorators → cjs/decorators}/define.js +0 -0
  10. package/lib/cjs/decorators/define.js.map +1 -0
  11. package/lib/{decorators → cjs/decorators}/every.js +1 -1
  12. package/lib/cjs/decorators/every.js.map +1 -0
  13. package/lib/cjs/index.js +15 -0
  14. package/lib/cjs/index.js.map +1 -0
  15. package/lib/{interfaces → cjs/interfaces}/AgendaStore.js +0 -0
  16. package/lib/cjs/interfaces/AgendaStore.js.map +1 -0
  17. package/lib/cjs/interfaces/interfaces.js +3 -0
  18. package/lib/cjs/interfaces/interfaces.js.map +1 -0
  19. package/lib/cjs/package.json +3 -0
  20. package/lib/{services → cjs/services}/AgendaFactory.js +1 -1
  21. package/lib/cjs/services/AgendaFactory.js.map +1 -0
  22. package/lib/esm/AgendaModule.js +79 -0
  23. package/lib/esm/AgendaModule.js.map +1 -0
  24. package/lib/esm/constants/constants.js +2 -0
  25. package/lib/esm/constants/constants.js.map +1 -0
  26. package/lib/esm/decorators/agenda.js +9 -0
  27. package/lib/esm/decorators/agenda.js.map +1 -0
  28. package/lib/esm/decorators/define.js +12 -0
  29. package/lib/esm/decorators/define.js.map +1 -0
  30. package/lib/esm/decorators/every.js +13 -0
  31. package/lib/esm/decorators/every.js.map +1 -0
  32. package/lib/esm/index.js +12 -0
  33. package/lib/esm/index.js.map +1 -0
  34. package/lib/esm/interfaces/AgendaStore.js +2 -0
  35. package/lib/esm/interfaces/AgendaStore.js.map +1 -0
  36. package/lib/esm/interfaces/interfaces.js +2 -0
  37. package/lib/esm/interfaces/interfaces.js.map +1 -0
  38. package/lib/esm/package.json +3 -0
  39. package/lib/esm/services/AgendaFactory.js +13 -0
  40. package/lib/esm/services/AgendaFactory.js.map +1 -0
  41. package/lib/{AgendaModule.d.ts → types/AgendaModule.d.ts} +0 -0
  42. package/lib/{constants/index.d.ts → types/constants/constants.d.ts} +0 -0
  43. package/lib/{decorators → types/decorators}/agenda.d.ts +0 -0
  44. package/lib/{decorators → types/decorators}/define.d.ts +0 -0
  45. package/lib/{decorators → types/decorators}/every.d.ts +0 -0
  46. package/lib/types/index.d.ts +11 -0
  47. package/lib/{interfaces → types/interfaces}/AgendaStore.d.ts +0 -0
  48. package/lib/{index.d.ts → types/interfaces/interfaces.d.ts} +0 -5
  49. package/lib/{services → types/services}/AgendaFactory.d.ts +0 -0
  50. package/package.json +20 -9
  51. package/readme.md +9 -12
  52. package/src/AgendaModule.ts +7 -3
  53. package/src/constants/{index.ts → constants.ts} +0 -0
  54. package/src/decorators/agenda.ts +1 -1
  55. package/src/index.ts +8 -16
  56. package/src/interfaces/interfaces.ts +14 -0
  57. package/tsconfig.compile.esm.json +12 -0
  58. package/lib/AgendaModule.js.map +0 -1
  59. package/lib/constants/index.js.map +0 -1
  60. package/lib/decorators/agenda.js.map +0 -1
  61. package/lib/decorators/define.js.map +0 -1
  62. package/lib/decorators/every.js.map +0 -1
  63. package/lib/decorators/index.d.ts +0 -3
  64. package/lib/decorators/index.js +0 -7
  65. package/lib/decorators/index.js.map +0 -1
  66. package/lib/index.js +0 -9
  67. package/lib/index.js.map +0 -1
  68. package/lib/interfaces/AgendaStore.js.map +0 -1
  69. package/lib/services/AgendaFactory.js.map +0 -1
  70. package/src/decorators/index.ts +0 -3
package/.mocharc.js CHANGED
@@ -1,5 +1,5 @@
1
1
  module.exports = {
2
- ...require('@tsed/mocha-config')(),
2
+ ...require("@tsed/mocha-config")(),
3
3
  spec: ["{src,test}/**/*.spec.ts"],
4
- exclude: [],
4
+ exclude: []
5
5
  };
package/.nycrc CHANGED
@@ -3,6 +3,7 @@
3
3
  "src/**/*.ts"
4
4
  ],
5
5
  "exclude": [
6
+ "**/*.spec.ts",
6
7
  "**/*.d.ts",
7
8
  "node_modules",
8
9
  "**/interfaces/**",
@@ -20,7 +21,7 @@
20
21
  ],
21
22
  "check-coverage": true,
22
23
  "statements": 100,
23
- "branches": 90.63,
24
- "functions": 85.71,
24
+ "branches": 90.62,
25
+ "functions": 100,
25
26
  "lines": 100
26
27
  }
@@ -4,7 +4,7 @@ exports.AgendaModule = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@tsed/common");
6
6
  const di_1 = require("@tsed/di");
7
- const index_1 = require("./constants/index");
7
+ const constants_1 = require("./constants/constants");
8
8
  const AgendaFactory_1 = require("./services/AgendaFactory");
9
9
  let AgendaModule = class AgendaModule {
10
10
  async $afterListen() {
@@ -28,7 +28,7 @@ let AgendaModule = class AgendaModule {
28
28
  }
29
29
  }
30
30
  getProviders() {
31
- return Array.from(this.injector.getProviders(index_1.PROVIDER_TYPE_AGENDA));
31
+ return this.injector.getProviders(constants_1.PROVIDER_TYPE_AGENDA);
32
32
  }
33
33
  addAgendaDefinitionsForProvider(provider) {
34
34
  const store = provider.store.get("agenda");
@@ -37,7 +37,8 @@ let AgendaModule = class AgendaModule {
37
37
  }
38
38
  const jobsToDefine = Object.entries(store.define);
39
39
  for (const [propertyKey, { name, ...options }] of jobsToDefine) {
40
- const jobProcessor = provider.instance[propertyKey].bind(provider.instance);
40
+ const instance = this.injector.get(provider.token);
41
+ const jobProcessor = instance[propertyKey].bind(instance);
41
42
  const jobName = this.getNameForJob(propertyKey, store.namespace, name);
42
43
  this.agenda.define(jobName, options, jobProcessor);
43
44
  }
@@ -59,23 +60,23 @@ let AgendaModule = class AgendaModule {
59
60
  }
60
61
  };
61
62
  tslib_1.__decorate([
62
- di_1.Inject(),
63
+ (0, di_1.Inject)(),
63
64
  tslib_1.__metadata("design:type", common_1.Logger)
64
65
  ], AgendaModule.prototype, "logger", void 0);
65
66
  tslib_1.__decorate([
66
- di_1.Inject(),
67
+ (0, di_1.Inject)(),
67
68
  tslib_1.__metadata("design:type", di_1.InjectorService)
68
69
  ], AgendaModule.prototype, "injector", void 0);
69
70
  tslib_1.__decorate([
70
- di_1.Inject(),
71
+ (0, di_1.Inject)(),
71
72
  tslib_1.__metadata("design:type", AgendaFactory_1.AgendaService)
72
73
  ], AgendaModule.prototype, "agenda", void 0);
73
74
  tslib_1.__decorate([
74
- di_1.Constant("agenda.enabled", false),
75
+ (0, di_1.Constant)("agenda.enabled", false),
75
76
  tslib_1.__metadata("design:type", Boolean)
76
77
  ], AgendaModule.prototype, "loadAgenda", void 0);
77
78
  AgendaModule = tslib_1.__decorate([
78
- di_1.Module()
79
+ (0, di_1.Module)()
79
80
  ], AgendaModule);
80
81
  exports.AgendaModule = AgendaModule;
81
82
  //# sourceMappingURL=AgendaModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgendaModule.js","sourceRoot":"","sources":["../../src/AgendaModule.ts"],"names":[],"mappings":"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","sourcesContent":["import {AfterListen, Logger, OnDestroy} from \"@tsed/common\";\nimport {Constant, Inject, InjectorService, Module, Provider} from \"@tsed/di\";\nimport {Processor} from \"agenda\";\nimport {PROVIDER_TYPE_AGENDA} from \"./constants/constants\";\nimport {AgendaStore} from \"./interfaces/AgendaStore\";\nimport {AgendaService} from \"./services/AgendaFactory\";\n\n@Module()\nexport class AgendaModule implements OnDestroy, AfterListen {\n @Inject()\n protected logger: Logger;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected agenda: AgendaService;\n\n @Constant(\"agenda.enabled\", false)\n private loadAgenda: boolean;\n\n async $afterListen(): Promise<any> {\n if (this.loadAgenda) {\n const providers = this.getProviders();\n providers.forEach((provider) => this.addAgendaDefinitionsForProvider(provider));\n\n this.logger.info(\"Agenda add definitions...\");\n await this.agenda.start();\n\n this.logger.info(\"Agenda add scheduled jobs...\");\n providers.forEach((provider) => this.scheduleJobsForProvider(provider));\n } else {\n this.logger.info(\"Agenda jobs disabled...\");\n }\n }\n\n async $onDestroy(): Promise<any> {\n if (this.loadAgenda) {\n await this.agenda.stop();\n await this.agenda.close({force: true});\n\n this.logger.info(\"Agenda jobs stopped...\");\n }\n }\n\n protected getProviders(): Provider<any>[] {\n return this.injector.getProviders(PROVIDER_TYPE_AGENDA);\n }\n\n protected addAgendaDefinitionsForProvider(provider: Provider): void {\n const store = provider.store.get<AgendaStore>(\"agenda\");\n\n if (!store.define) {\n return;\n }\n\n const jobsToDefine = Object.entries(store.define);\n\n for (const [propertyKey, {name, ...options}] of jobsToDefine) {\n const instance = this.injector.get(provider.token);\n\n const jobProcessor: Processor = instance[propertyKey].bind(instance) as Processor;\n const jobName = this.getNameForJob(propertyKey, store.namespace, name);\n this.agenda.define(jobName, options, jobProcessor);\n }\n }\n\n protected async scheduleJobsForProvider(provider: Provider<any>): Promise<void> {\n const store = provider.store.get<AgendaStore>(\"agenda\");\n if (!store.every) {\n return;\n }\n\n const jobsToSchedule = Object.entries(store.every);\n await Promise.all(\n jobsToSchedule.map(([propertyKey, {interval, name, ...options}]) => {\n const jobName = this.getNameForJob(propertyKey, store.namespace, name);\n return this.agenda.every(interval, jobName, {}, options);\n })\n );\n }\n\n protected getNameForJob(propertyKey: string, namespace?: string, customName?: string): string {\n const name = customName || propertyKey;\n return namespace ? `${namespace}.${name}` : name;\n }\n}\n"]}
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROVIDER_TYPE_AGENDA = void 0;
4
4
  exports.PROVIDER_TYPE_AGENDA = "PROVIDER_TYPE_AGENDA";
5
- //# sourceMappingURL=index.js.map
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,sBAAsB,CAAC","sourcesContent":["export const PROVIDER_TYPE_AGENDA = \"PROVIDER_TYPE_AGENDA\";\n"]}
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Agenda = void 0;
4
4
  const core_1 = require("@tsed/core");
5
5
  const di_1 = require("@tsed/di");
6
- const constants_1 = require("../constants");
6
+ const constants_1 = require("../constants/constants");
7
7
  function Agenda(options) {
8
- return core_1.useDecorators(core_1.StoreMerge("agenda", { namespace: options === null || options === void 0 ? void 0 : options.namespace }), di_1.Injectable({
8
+ return (0, core_1.useDecorators)((0, core_1.StoreMerge)("agenda", { namespace: options === null || options === void 0 ? void 0 : options.namespace }), (0, di_1.Injectable)({
9
9
  type: constants_1.PROVIDER_TYPE_AGENDA
10
10
  }));
11
11
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agenda.js","sourceRoot":"","sources":["../../../src/decorators/agenda.ts"],"names":[],"mappings":";;;AAAA,qCAAqD;AACrD,iCAAoC;AAEpC,sDAA4D;AAiB5D,SAAgB,MAAM,CAAC,OAAuB;IAC5C,OAAO,IAAA,oBAAa,EAClB,IAAA,iBAAU,EAAC,QAAQ,EAAE,EAAC,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAC,CAAC,EACrD,IAAA,eAAU,EAAC;QACT,IAAI,EAAE,gCAAoB;KAC3B,CAAC,CACH,CAAC;AACJ,CAAC;AAPD,wBAOC","sourcesContent":["import {StoreMerge, useDecorators} from \"@tsed/core\";\nimport {Injectable} from \"@tsed/di\";\nimport {AgendaConfig} from \"agenda\";\nimport {PROVIDER_TYPE_AGENDA} from \"../constants/constants\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n agenda?: {\n /** * Enable Agenda jobs. Default false. */\n enabled?: boolean;\n } & AgendaConfig;\n }\n }\n}\n\ninterface AgendaOptions {\n namespace?: string;\n}\n\nexport function Agenda(options?: AgendaOptions): ClassDecorator {\n return useDecorators(\n StoreMerge(\"agenda\", {namespace: options?.namespace}),\n Injectable({\n type: PROVIDER_TYPE_AGENDA\n })\n );\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/decorators/define.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAGjC,SAAgB,MAAM,CAAC,UAAyB,EAAE;IAChD,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAgB;YACzB,MAAM,EAAE;gBACN,CAAC,WAAW,CAAC,EAAE,OAAO;aACvB;SACF,CAAC;QAEF,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC;AAVD,wBAUC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {AgendaStore, DefineOptions} from \"../interfaces/AgendaStore\";\n\nexport function Define(options: DefineOptions = {}): MethodDecorator {\n return (target: any, propertyKey: string) => {\n const store: AgendaStore = {\n define: {\n [propertyKey]: options\n }\n };\n\n Store.from(target).merge(\"agenda\", store);\n };\n}\n"]}
@@ -4,7 +4,7 @@ exports.Every = void 0;
4
4
  const core_1 = require("@tsed/core");
5
5
  const define_1 = require("./define");
6
6
  function Every(interval, options = {}) {
7
- return core_1.useDecorators(define_1.Define(options), (target, propertyKey) => {
7
+ return (0, core_1.useDecorators)((0, define_1.Define)(options), (target, propertyKey) => {
8
8
  const store = {
9
9
  every: {
10
10
  [propertyKey]: { ...options, interval }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"every.js","sourceRoot":"","sources":["../../../src/decorators/every.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAChD,qCAAgC;AAGhC,SAAgB,KAAK,CAAC,QAAgB,EAAE,UAAwB,EAAE;IAChE,OAAO,IAAA,oBAAa,EAAC,IAAA,eAAM,EAAC,OAAO,CAAC,EAAE,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QACzE,MAAM,KAAK,GAAgB;YACzB,KAAK,EAAE;gBACL,CAAC,WAAW,CAAC,EAAE,EAAC,GAAG,OAAO,EAAE,QAAQ,EAAC;aACtC;SACF,CAAC;QACF,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AATD,sBASC","sourcesContent":["import {Store, useDecorators} from \"@tsed/core\";\nimport {Define} from \"./define\";\nimport {AgendaStore, EveryOptions} from \"../interfaces/AgendaStore\";\n\nexport function Every(interval: string, options: EveryOptions = {}): MethodDecorator {\n return useDecorators(Define(options), (target: any, propertyKey: string) => {\n const store: AgendaStore = {\n every: {\n [propertyKey]: {...options, interval}\n }\n };\n Store.from(target).merge(\"agenda\", store);\n });\n}\n"]}
@@ -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("./AgendaModule"), exports);
8
+ tslib_1.__exportStar(require("./constants/constants"), exports);
9
+ tslib_1.__exportStar(require("./decorators/agenda"), exports);
10
+ tslib_1.__exportStar(require("./decorators/define"), exports);
11
+ tslib_1.__exportStar(require("./decorators/every"), exports);
12
+ tslib_1.__exportStar(require("./interfaces/AgendaStore"), exports);
13
+ tslib_1.__exportStar(require("./interfaces/interfaces"), exports);
14
+ tslib_1.__exportStar(require("./services/AgendaFactory"), 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,yDAA+B;AAC/B,gEAAsC;AACtC,8DAAoC;AACpC,8DAAoC;AACpC,6DAAmC;AACnC,mEAAyC;AACzC,kEAAwC;AACxC,mEAAyC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./AgendaModule\";\nexport * from \"./constants/constants\";\nexport * from \"./decorators/agenda\";\nexport * from \"./decorators/define\";\nexport * from \"./decorators/every\";\nexport * from \"./interfaces/AgendaStore\";\nexport * from \"./interfaces/interfaces\";\nexport * from \"./services/AgendaFactory\";\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgendaStore.js","sourceRoot":"","sources":["../../../src/interfaces/AgendaStore.ts"],"names":[],"mappings":"","sourcesContent":["import {DefineOptions as AgendaDefineOptions, JobOptions} from \"agenda\";\n\nexport interface DefineOptions extends AgendaDefineOptions {\n name?: string;\n}\n\nexport type EveryOptions = JobOptions & DefineOptions;\n\nexport interface AgendaStore {\n namespace?: string;\n define?: {[propertyKey: string]: DefineOptions};\n every?: {[propertyKey: string]: EveryOptions & {interval: string}};\n}\n"]}
@@ -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":"","sourcesContent":["import {AgendaConfig} from \"agenda\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n agenda?: {\n /**\n * Enable Agenda jobs. Default false.\n */\n enabled?: boolean;\n } & AgendaConfig;\n }\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -5,7 +5,7 @@ const di_1 = require("@tsed/di");
5
5
  const agenda_1 = require("agenda");
6
6
  // create Alias to avoid confusing import between Agenda from "agenda" and Agenda decorator
7
7
  exports.AgendaService = agenda_1.Agenda;
8
- di_1.registerProvider({
8
+ (0, di_1.registerProvider)({
9
9
  provide: agenda_1.Agenda,
10
10
  deps: [di_1.Configuration],
11
11
  useFactory(settings) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgendaFactory.js","sourceRoot":"","sources":["../../../src/services/AgendaFactory.ts"],"names":[],"mappings":";;;AAAA,iCAAyD;AACzD,mCAA4C;AAE5C,2FAA2F;AAC9E,QAAA,aAAa,GAAG,eAAM,CAAC;AAGpC,IAAA,qBAAgB,EAAC;IACf,OAAO,EAAE,eAAM;IACf,IAAI,EAAE,CAAC,kBAAa,CAAC;IACrB,UAAU,CAAC,QAAuB;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAoC,QAAQ,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {Configuration, registerProvider} from \"@tsed/di\";\nimport {Agenda, AgendaConfig} from \"agenda\";\n\n// create Alias to avoid confusing import between Agenda from \"agenda\" and Agenda decorator\nexport const AgendaService = Agenda;\nexport type AgendaService = Agenda;\n\nregisterProvider({\n provide: Agenda,\n deps: [Configuration],\n useFactory(settings: Configuration) {\n const opts = settings.get<AgendaConfig & {enabled: boolean}>(\"agenda\", {enabled: false});\n return opts.enabled ? new Agenda(opts) : {};\n }\n});\n"]}
@@ -0,0 +1,79 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Logger } from "@tsed/common";
3
+ import { Constant, Inject, InjectorService, Module } from "@tsed/di";
4
+ import { PROVIDER_TYPE_AGENDA } from "./constants/constants.js";
5
+ import { AgendaService } from "./services/AgendaFactory.js";
6
+ let AgendaModule = class AgendaModule {
7
+ async $afterListen() {
8
+ if (this.loadAgenda) {
9
+ const providers = this.getProviders();
10
+ providers.forEach((provider) => this.addAgendaDefinitionsForProvider(provider));
11
+ this.logger.info("Agenda add definitions...");
12
+ await this.agenda.start();
13
+ this.logger.info("Agenda add scheduled jobs...");
14
+ providers.forEach((provider) => this.scheduleJobsForProvider(provider));
15
+ }
16
+ else {
17
+ this.logger.info("Agenda jobs disabled...");
18
+ }
19
+ }
20
+ async $onDestroy() {
21
+ if (this.loadAgenda) {
22
+ await this.agenda.stop();
23
+ await this.agenda.close({ force: true });
24
+ this.logger.info("Agenda jobs stopped...");
25
+ }
26
+ }
27
+ getProviders() {
28
+ return this.injector.getProviders(PROVIDER_TYPE_AGENDA);
29
+ }
30
+ addAgendaDefinitionsForProvider(provider) {
31
+ const store = provider.store.get("agenda");
32
+ if (!store.define) {
33
+ return;
34
+ }
35
+ const jobsToDefine = Object.entries(store.define);
36
+ for (const [propertyKey, { name, ...options }] of jobsToDefine) {
37
+ const instance = this.injector.get(provider.token);
38
+ const jobProcessor = instance[propertyKey].bind(instance);
39
+ const jobName = this.getNameForJob(propertyKey, store.namespace, name);
40
+ this.agenda.define(jobName, options, jobProcessor);
41
+ }
42
+ }
43
+ async scheduleJobsForProvider(provider) {
44
+ const store = provider.store.get("agenda");
45
+ if (!store.every) {
46
+ return;
47
+ }
48
+ const jobsToSchedule = Object.entries(store.every);
49
+ await Promise.all(jobsToSchedule.map(([propertyKey, { interval, name, ...options }]) => {
50
+ const jobName = this.getNameForJob(propertyKey, store.namespace, name);
51
+ return this.agenda.every(interval, jobName, {}, options);
52
+ }));
53
+ }
54
+ getNameForJob(propertyKey, namespace, customName) {
55
+ const name = customName || propertyKey;
56
+ return namespace ? `${namespace}.${name}` : name;
57
+ }
58
+ };
59
+ __decorate([
60
+ Inject(),
61
+ __metadata("design:type", Logger)
62
+ ], AgendaModule.prototype, "logger", void 0);
63
+ __decorate([
64
+ Inject(),
65
+ __metadata("design:type", InjectorService)
66
+ ], AgendaModule.prototype, "injector", void 0);
67
+ __decorate([
68
+ Inject(),
69
+ __metadata("design:type", AgendaService)
70
+ ], AgendaModule.prototype, "agenda", void 0);
71
+ __decorate([
72
+ Constant("agenda.enabled", false),
73
+ __metadata("design:type", Boolean)
74
+ ], AgendaModule.prototype, "loadAgenda", void 0);
75
+ AgendaModule = __decorate([
76
+ Module()
77
+ ], AgendaModule);
78
+ export { AgendaModule };
79
+ //# sourceMappingURL=AgendaModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgendaModule.js","sourceRoot":"","sources":["../../src/AgendaModule.ts"],"names":[],"mappings":";AAAA,OAAO,EAAc,MAAM,EAAY,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAW,MAAM,UAAU,CAAC;AAE7E,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAGvD,IAAa,YAAY,GAAzB,MAAa,YAAY;IAavB,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEhF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAE1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACjD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;SACzE;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;SAC7C;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;YAEvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;SAC5C;IACH,CAAC;IAES,YAAY;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IAES,+BAA+B,CAAC,QAAkB;QAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAc,QAAQ,CAAC,CAAC;QAExD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB,OAAO;SACR;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElD,KAAK,MAAM,CAAC,WAAW,EAAE,EAAC,IAAI,EAAE,GAAG,OAAO,EAAC,CAAC,IAAI,YAAY,EAAE;YAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEnD,MAAM,YAAY,GAAc,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAc,CAAC;YAClF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;SACpD;IACH,CAAC;IAES,KAAK,CAAC,uBAAuB,CAAC,QAAuB;QAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAc,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAChB,OAAO;SACR;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,OAAO,CAAC,GAAG,CACf,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,EAAC,CAAC,EAAE,EAAE;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAES,aAAa,CAAC,WAAmB,EAAE,SAAkB,EAAE,UAAmB;QAClF,MAAM,IAAI,GAAG,UAAU,IAAI,WAAW,CAAC;QACvC,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;CACF,CAAA;AA5EC;IADC,MAAM,EAAE;8BACS,MAAM;4CAAC;AAGzB;IADC,MAAM,EAAE;8BACW,eAAe;8CAAC;AAGpC;IADC,MAAM,EAAE;8BACS,aAAa;4CAAC;AAGhC;IADC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC;;gDACN;AAXjB,YAAY;IADxB,MAAM,EAAE;GACI,YAAY,CA8ExB;SA9EY,YAAY","sourcesContent":["import {AfterListen, Logger, OnDestroy} from \"@tsed/common\";\nimport {Constant, Inject, InjectorService, Module, Provider} from \"@tsed/di\";\nimport {Processor} from \"agenda\";\nimport {PROVIDER_TYPE_AGENDA} from \"./constants/constants\";\nimport {AgendaStore} from \"./interfaces/AgendaStore\";\nimport {AgendaService} from \"./services/AgendaFactory\";\n\n@Module()\nexport class AgendaModule implements OnDestroy, AfterListen {\n @Inject()\n protected logger: Logger;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected agenda: AgendaService;\n\n @Constant(\"agenda.enabled\", false)\n private loadAgenda: boolean;\n\n async $afterListen(): Promise<any> {\n if (this.loadAgenda) {\n const providers = this.getProviders();\n providers.forEach((provider) => this.addAgendaDefinitionsForProvider(provider));\n\n this.logger.info(\"Agenda add definitions...\");\n await this.agenda.start();\n\n this.logger.info(\"Agenda add scheduled jobs...\");\n providers.forEach((provider) => this.scheduleJobsForProvider(provider));\n } else {\n this.logger.info(\"Agenda jobs disabled...\");\n }\n }\n\n async $onDestroy(): Promise<any> {\n if (this.loadAgenda) {\n await this.agenda.stop();\n await this.agenda.close({force: true});\n\n this.logger.info(\"Agenda jobs stopped...\");\n }\n }\n\n protected getProviders(): Provider<any>[] {\n return this.injector.getProviders(PROVIDER_TYPE_AGENDA);\n }\n\n protected addAgendaDefinitionsForProvider(provider: Provider): void {\n const store = provider.store.get<AgendaStore>(\"agenda\");\n\n if (!store.define) {\n return;\n }\n\n const jobsToDefine = Object.entries(store.define);\n\n for (const [propertyKey, {name, ...options}] of jobsToDefine) {\n const instance = this.injector.get(provider.token);\n\n const jobProcessor: Processor = instance[propertyKey].bind(instance) as Processor;\n const jobName = this.getNameForJob(propertyKey, store.namespace, name);\n this.agenda.define(jobName, options, jobProcessor);\n }\n }\n\n protected async scheduleJobsForProvider(provider: Provider<any>): Promise<void> {\n const store = provider.store.get<AgendaStore>(\"agenda\");\n if (!store.every) {\n return;\n }\n\n const jobsToSchedule = Object.entries(store.every);\n await Promise.all(\n jobsToSchedule.map(([propertyKey, {interval, name, ...options}]) => {\n const jobName = this.getNameForJob(propertyKey, store.namespace, name);\n return this.agenda.every(interval, jobName, {}, options);\n })\n );\n }\n\n protected getNameForJob(propertyKey: string, namespace?: string, customName?: string): string {\n const name = customName || propertyKey;\n return namespace ? `${namespace}.${name}` : name;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export const PROVIDER_TYPE_AGENDA = "PROVIDER_TYPE_AGENDA";
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC","sourcesContent":["export const PROVIDER_TYPE_AGENDA = \"PROVIDER_TYPE_AGENDA\";\n"]}
@@ -0,0 +1,9 @@
1
+ import { StoreMerge, useDecorators } from "@tsed/core";
2
+ import { Injectable } from "@tsed/di";
3
+ import { PROVIDER_TYPE_AGENDA } from "../constants/constants.js";
4
+ export function Agenda(options) {
5
+ return useDecorators(StoreMerge("agenda", { namespace: options === null || options === void 0 ? void 0 : options.namespace }), Injectable({
6
+ type: PROVIDER_TYPE_AGENDA
7
+ }));
8
+ }
9
+ //# sourceMappingURL=agenda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agenda.js","sourceRoot":"","sources":["../../../src/decorators/agenda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAiB5D,MAAM,UAAU,MAAM,CAAC,OAAuB;IAC5C,OAAO,aAAa,CAClB,UAAU,CAAC,QAAQ,EAAE,EAAC,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAC,CAAC,EACrD,UAAU,CAAC;QACT,IAAI,EAAE,oBAAoB;KAC3B,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import {StoreMerge, useDecorators} from \"@tsed/core\";\nimport {Injectable} from \"@tsed/di\";\nimport {AgendaConfig} from \"agenda\";\nimport {PROVIDER_TYPE_AGENDA} from \"../constants/constants\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n agenda?: {\n /** * Enable Agenda jobs. Default false. */\n enabled?: boolean;\n } & AgendaConfig;\n }\n }\n}\n\ninterface AgendaOptions {\n namespace?: string;\n}\n\nexport function Agenda(options?: AgendaOptions): ClassDecorator {\n return useDecorators(\n StoreMerge(\"agenda\", {namespace: options?.namespace}),\n Injectable({\n type: PROVIDER_TYPE_AGENDA\n })\n );\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { Store } from "@tsed/core";
2
+ export function Define(options = {}) {
3
+ return (target, propertyKey) => {
4
+ const store = {
5
+ define: {
6
+ [propertyKey]: options
7
+ }
8
+ };
9
+ Store.from(target).merge("agenda", store);
10
+ };
11
+ }
12
+ //# sourceMappingURL=define.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/decorators/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAGjC,MAAM,UAAU,MAAM,CAAC,UAAyB,EAAE;IAChD,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAgB;YACzB,MAAM,EAAE;gBACN,CAAC,WAAW,CAAC,EAAE,OAAO;aACvB;SACF,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {AgendaStore, DefineOptions} from \"../interfaces/AgendaStore\";\n\nexport function Define(options: DefineOptions = {}): MethodDecorator {\n return (target: any, propertyKey: string) => {\n const store: AgendaStore = {\n define: {\n [propertyKey]: options\n }\n };\n\n Store.from(target).merge(\"agenda\", store);\n };\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { Store, useDecorators } from "@tsed/core";
2
+ import { Define } from "./define.js";
3
+ export function Every(interval, options = {}) {
4
+ return useDecorators(Define(options), (target, propertyKey) => {
5
+ const store = {
6
+ every: {
7
+ [propertyKey]: { ...options, interval }
8
+ }
9
+ };
10
+ Store.from(target).merge("agenda", store);
11
+ });
12
+ }
13
+ //# sourceMappingURL=every.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"every.js","sourceRoot":"","sources":["../../../src/decorators/every.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAChD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,MAAM,UAAU,KAAK,CAAC,QAAgB,EAAE,UAAwB,EAAE;IAChE,OAAO,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QACzE,MAAM,KAAK,GAAgB;YACzB,KAAK,EAAE;gBACL,CAAC,WAAW,CAAC,EAAE,EAAC,GAAG,OAAO,EAAE,QAAQ,EAAC;aACtC;SACF,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {Store, useDecorators} from \"@tsed/core\";\nimport {Define} from \"./define\";\nimport {AgendaStore, EveryOptions} from \"../interfaces/AgendaStore\";\n\nexport function Every(interval: string, options: EveryOptions = {}): MethodDecorator {\n return useDecorators(Define(options), (target: any, propertyKey: string) => {\n const store: AgendaStore = {\n every: {\n [propertyKey]: {...options, interval}\n }\n };\n Store.from(target).merge(\"agenda\", store);\n });\n}\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @file Automatically generated by barrelsby.
3
+ */
4
+ export * from "./AgendaModule.js";
5
+ export * from "./constants/constants.js";
6
+ export * from "./decorators/agenda.js";
7
+ export * from "./decorators/define.js";
8
+ export * from "./decorators/every.js";
9
+ export * from "./interfaces/AgendaStore.js";
10
+ export * from "./interfaces/interfaces.js";
11
+ export * from "./services/AgendaFactory.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,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./AgendaModule\";\nexport * from \"./constants/constants\";\nexport * from \"./decorators/agenda\";\nexport * from \"./decorators/define\";\nexport * from \"./decorators/every\";\nexport * from \"./interfaces/AgendaStore\";\nexport * from \"./interfaces/interfaces\";\nexport * from \"./services/AgendaFactory\";\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AgendaStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgendaStore.js","sourceRoot":"","sources":["../../../src/interfaces/AgendaStore.ts"],"names":[],"mappings":"","sourcesContent":["import {DefineOptions as AgendaDefineOptions, JobOptions} from \"agenda\";\n\nexport interface DefineOptions extends AgendaDefineOptions {\n name?: string;\n}\n\nexport type EveryOptions = JobOptions & DefineOptions;\n\nexport interface AgendaStore {\n namespace?: string;\n define?: {[propertyKey: string]: DefineOptions};\n every?: {[propertyKey: string]: EveryOptions & {interval: string}};\n}\n"]}
@@ -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":"","sourcesContent":["import {AgendaConfig} from \"agenda\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n agenda?: {\n /**\n * Enable Agenda jobs. Default false.\n */\n enabled?: boolean;\n } & AgendaConfig;\n }\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,13 @@
1
+ import { Configuration, registerProvider } from "@tsed/di";
2
+ import { Agenda } from "agenda";
3
+ // create Alias to avoid confusing import between Agenda from "agenda" and Agenda decorator
4
+ export const AgendaService = Agenda;
5
+ registerProvider({
6
+ provide: Agenda,
7
+ deps: [Configuration],
8
+ useFactory(settings) {
9
+ const opts = settings.get("agenda", { enabled: false });
10
+ return opts.enabled ? new Agenda(opts) : {};
11
+ }
12
+ });
13
+ //# sourceMappingURL=AgendaFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgendaFactory.js","sourceRoot":"","sources":["../../../src/services/AgendaFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AACzD,OAAO,EAAC,MAAM,EAAe,MAAM,QAAQ,CAAC;AAE5C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAGpC,gBAAgB,CAAC;IACf,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,CAAC,aAAa,CAAC;IACrB,UAAU,CAAC,QAAuB;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAoC,QAAQ,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {Configuration, registerProvider} from \"@tsed/di\";\nimport {Agenda, AgendaConfig} from \"agenda\";\n\n// create Alias to avoid confusing import between Agenda from \"agenda\" and Agenda decorator\nexport const AgendaService = Agenda;\nexport type AgendaService = Agenda;\n\nregisterProvider({\n provide: Agenda,\n deps: [Configuration],\n useFactory(settings: Configuration) {\n const opts = settings.get<AgendaConfig & {enabled: boolean}>(\"agenda\", {enabled: false});\n return opts.enabled ? new Agenda(opts) : {};\n }\n});\n"]}
File without changes
File without changes
File without changes
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file Automatically generated by barrelsby.
3
+ */
4
+ export * from "./AgendaModule";
5
+ export * from "./constants/constants";
6
+ export * from "./decorators/agenda";
7
+ export * from "./decorators/define";
8
+ export * from "./decorators/every";
9
+ export * from "./interfaces/AgendaStore";
10
+ export * from "./interfaces/interfaces";
11
+ export * from "./services/AgendaFactory";
@@ -11,8 +11,3 @@ declare global {
11
11
  }
12
12
  }
13
13
  }
14
- export * from "./AgendaModule";
15
- export * from "./constants";
16
- export * from "./decorators";
17
- export * from "./interfaces/AgendaStore";
18
- export * from "./services/AgendaFactory";
package/package.json CHANGED
@@ -1,21 +1,32 @@
1
1
  {
2
2
  "name": "@tsed/agenda",
3
- "version": "7.0.0-alpha.1",
3
+ "version": "7.0.0-beta.10",
4
4
  "description": "Agenda package for Ts.ED framework",
5
- "main": "./lib/index.js",
6
- "typings": "./lib/index.d.ts",
5
+ "source": "./src/index.ts",
6
+ "main": "./lib/cjs/index.js",
7
+ "module": "./lib/esm/index.js",
8
+ "typings": "./lib/types/index.d.ts",
9
+ "exports": {
10
+ "types": "./lib/types/index.d.ts",
11
+ "import": "./lib/esm/index.js",
12
+ "require": "./lib/cjs/index.js",
13
+ "default": "./lib/esm/index.js"
14
+ },
7
15
  "scripts": {
8
- "build": "tsc --build tsconfig.compile.json",
16
+ "build": "yarn barrels && yarn run build:esm && yarn run build:cjs",
17
+ "build:cjs": "tsc --build tsconfig.compile.json",
18
+ "build:esm": "tsc --build tsconfig.compile.esm.json",
19
+ "barrels": "yarn barrelsby --delete -d ./src -e \"\\.spec\\.ts\" -e \"__mock__\" -e \".benchmark.ts\"",
9
20
  "test": "cross-env NODE_ENV=test nyc mocha"
10
21
  },
11
22
  "dependencies": {
12
- "tslib": "2.2.0"
23
+ "tslib": "2.3.1"
13
24
  },
14
25
  "private": false,
15
26
  "devDependencies": {
16
- "@tsed/common": "7.0.0-alpha.1",
17
- "@tsed/core": "7.0.0-alpha.1",
18
- "@tsed/di": "7.0.0-alpha.1",
27
+ "@tsed/common": "7.0.0-beta.10",
28
+ "@tsed/core": "7.0.0-beta.10",
29
+ "@tsed/di": "7.0.0-beta.10",
19
30
  "agenda": "^4.1.3"
20
31
  },
21
32
  "peerDependencies": {
@@ -25,7 +36,7 @@
25
36
  "bugs": {
26
37
  "url": "https://github.com/tsedio/tsed/issues"
27
38
  },
28
- "homepage": "https://github.com/tsedio/tsed/tree/alpha/packages/third-parties/agenda",
39
+ "homepage": "https://github.com/tsedio/tsed/tree/beta/packages/third-parties/agenda",
29
40
  "author": "Romain Lenzotti",
30
41
  "license": "MIT"
31
42
  }
package/readme.md CHANGED
@@ -59,16 +59,14 @@ const mongoConnectionString = "mongodb://127.0.0.1/agenda";
59
59
 
60
60
  @Configuration({
61
61
  agenda: {
62
- enabled: true, // Enable Agenda jobs for this instance.
63
- // pass any options that you would normally pass to new Agenda(), e.g.
64
- db: {
65
- address: mongoConnectionString
66
- }
62
+ enabled: true, // Enable Agenda jobs for this instance.
63
+ // pass any options that you would normally pass to new Agenda(), e.g.
64
+ db: {
65
+ address: mongoConnectionString
66
+ }
67
67
  }
68
68
  })
69
- export class Server {
70
-
71
- }
69
+ export class Server {}
72
70
  ```
73
71
 
74
72
  ## Create a new Service
@@ -130,8 +128,8 @@ export class UsersService implements AfterRoutesInit {
130
128
  // do something
131
129
  // ...
132
130
  // then schedule some jobs
133
- await this.agenda.now("email.sendWelcomeEmail", {user})
134
- await this.agenda.schedule("in 2 hours", "email.sendFollowUpEmail", {user})
131
+ await this.agenda.now("email.sendWelcomeEmail", {user});
132
+ await this.agenda.schedule("in 2 hours", "email.sendFollowUpEmail", {user});
135
133
 
136
134
  return user;
137
135
  }
@@ -139,18 +137,17 @@ export class UsersService implements AfterRoutesInit {
139
137
  ```
140
138
 
141
139
  ## Contributors
140
+
142
141
  Please read [contributing guidelines here](https://tsed.io/CONTRIBUTING.html)
143
142
 
144
143
  <a href="https://github.com/tsedio/ts-express-decorators/graphs/contributors"><img src="https://opencollective.com/tsed/contributors.svg?width=890" /></a>
145
144
 
146
-
147
145
  ## Backers
148
146
 
149
147
  Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/tsed#backer)]
150
148
 
151
149
  <a href="https://opencollective.com/tsed#backers" target="_blank"><img src="https://opencollective.com/tsed/backers.svg?width=890"></a>
152
150
 
153
-
154
151
  ## Sponsors
155
152
 
156
153
  Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)]
@@ -1,7 +1,7 @@
1
1
  import {AfterListen, Logger, OnDestroy} from "@tsed/common";
2
2
  import {Constant, Inject, InjectorService, Module, Provider} from "@tsed/di";
3
3
  import {Processor} from "agenda";
4
- import {PROVIDER_TYPE_AGENDA} from "./constants/index";
4
+ import {PROVIDER_TYPE_AGENDA} from "./constants/constants";
5
5
  import {AgendaStore} from "./interfaces/AgendaStore";
6
6
  import {AgendaService} from "./services/AgendaFactory";
7
7
 
@@ -44,18 +44,22 @@ export class AgendaModule implements OnDestroy, AfterListen {
44
44
  }
45
45
 
46
46
  protected getProviders(): Provider<any>[] {
47
- return Array.from(this.injector.getProviders(PROVIDER_TYPE_AGENDA));
47
+ return this.injector.getProviders(PROVIDER_TYPE_AGENDA);
48
48
  }
49
49
 
50
50
  protected addAgendaDefinitionsForProvider(provider: Provider): void {
51
51
  const store = provider.store.get<AgendaStore>("agenda");
52
+
52
53
  if (!store.define) {
53
54
  return;
54
55
  }
55
56
 
56
57
  const jobsToDefine = Object.entries(store.define);
58
+
57
59
  for (const [propertyKey, {name, ...options}] of jobsToDefine) {
58
- const jobProcessor: Processor = provider.instance[propertyKey].bind(provider.instance) as Processor;
60
+ const instance = this.injector.get(provider.token);
61
+
62
+ const jobProcessor: Processor = instance[propertyKey].bind(instance) as Processor;
59
63
  const jobName = this.getNameForJob(propertyKey, store.namespace, name);
60
64
  this.agenda.define(jobName, options, jobProcessor);
61
65
  }
File without changes
@@ -1,7 +1,7 @@
1
1
  import {StoreMerge, useDecorators} from "@tsed/core";
2
2
  import {Injectable} from "@tsed/di";
3
3
  import {AgendaConfig} from "agenda";
4
- import {PROVIDER_TYPE_AGENDA} from "../constants";
4
+ import {PROVIDER_TYPE_AGENDA} from "../constants/constants";
5
5
 
6
6
  declare global {
7
7
  namespace TsED {
package/src/index.ts CHANGED
@@ -1,20 +1,12 @@
1
- import {AgendaConfig} from "agenda";
2
-
3
- declare global {
4
- namespace TsED {
5
- interface Configuration {
6
- agenda?: {
7
- /**
8
- * Enable Agenda jobs. Default false.
9
- */
10
- enabled?: boolean;
11
- } & AgendaConfig;
12
- }
13
- }
14
- }
1
+ /**
2
+ * @file Automatically generated by barrelsby.
3
+ */
15
4
 
16
5
  export * from "./AgendaModule";
17
- export * from "./constants";
18
- export * from "./decorators";
6
+ export * from "./constants/constants";
7
+ export * from "./decorators/agenda";
8
+ export * from "./decorators/define";
9
+ export * from "./decorators/every";
19
10
  export * from "./interfaces/AgendaStore";
11
+ export * from "./interfaces/interfaces";
20
12
  export * from "./services/AgendaFactory";
@@ -0,0 +1,14 @@
1
+ import {AgendaConfig} from "agenda";
2
+
3
+ declare global {
4
+ namespace TsED {
5
+ interface Configuration {
6
+ agenda?: {
7
+ /**
8
+ * Enable Agenda jobs. Default false.
9
+ */
10
+ enabled?: boolean;
11
+ } & AgendaConfig;
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "./tsconfig.compile.json",
3
+ "compilerOptions": {
4
+ "baseUrl": ".",
5
+ "module": "ES2020",
6
+ "rootDir": "src",
7
+ "outDir": "./lib/esm",
8
+ "declaration": true,
9
+ "declarationDir": "./lib/types"
10
+ },
11
+ "exclude": ["node_modules", "test", "lib", "benchmark", "coverage", "spec", "**/*.benchmark.ts", "**/*.spec.ts", "keys", "jest.config.js"]
12
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgendaModule.js","sourceRoot":"","sources":["../src/AgendaModule.ts"],"names":[],"mappings":"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","sourcesContent":["import {AfterListen, Logger, OnDestroy} from \"@tsed/common\";\nimport {Constant, Inject, InjectorService, Module, Provider} from \"@tsed/di\";\nimport {Processor} from \"agenda\";\nimport {PROVIDER_TYPE_AGENDA} from \"./constants/index\";\nimport {AgendaStore} from \"./interfaces/AgendaStore\";\nimport {AgendaService} from \"./services/AgendaFactory\";\n\n@Module()\nexport class AgendaModule implements OnDestroy, AfterListen {\n @Inject()\n protected logger: Logger;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected agenda: AgendaService;\n\n @Constant(\"agenda.enabled\", false)\n private loadAgenda: boolean;\n\n async $afterListen(): Promise<any> {\n if (this.loadAgenda) {\n const providers = this.getProviders();\n providers.forEach((provider) => this.addAgendaDefinitionsForProvider(provider));\n\n this.logger.info(\"Agenda add definitions...\");\n await this.agenda.start();\n\n this.logger.info(\"Agenda add scheduled jobs...\");\n providers.forEach((provider) => this.scheduleJobsForProvider(provider));\n } else {\n this.logger.info(\"Agenda jobs disabled...\");\n }\n }\n\n async $onDestroy(): Promise<any> {\n if (this.loadAgenda) {\n await this.agenda.stop();\n await this.agenda.close({force: true});\n\n this.logger.info(\"Agenda jobs stopped...\");\n }\n }\n\n protected getProviders(): Provider<any>[] {\n return Array.from(this.injector.getProviders(PROVIDER_TYPE_AGENDA));\n }\n\n protected addAgendaDefinitionsForProvider(provider: Provider): void {\n const store = provider.store.get<AgendaStore>(\"agenda\");\n if (!store.define) {\n return;\n }\n\n const jobsToDefine = Object.entries(store.define);\n for (const [propertyKey, {name, ...options}] of jobsToDefine) {\n const jobProcessor: Processor = provider.instance[propertyKey].bind(provider.instance) as Processor;\n const jobName = this.getNameForJob(propertyKey, store.namespace, name);\n this.agenda.define(jobName, options, jobProcessor);\n }\n }\n\n protected async scheduleJobsForProvider(provider: Provider<any>): Promise<void> {\n const store = provider.store.get<AgendaStore>(\"agenda\");\n if (!store.every) {\n return;\n }\n\n const jobsToSchedule = Object.entries(store.every);\n await Promise.all(\n jobsToSchedule.map(([propertyKey, {interval, name, ...options}]) => {\n const jobName = this.getNameForJob(propertyKey, store.namespace, name);\n return this.agenda.every(interval, jobName, {}, options);\n })\n );\n }\n\n protected getNameForJob(propertyKey: string, namespace?: string, customName?: string): string {\n const name = customName || propertyKey;\n return namespace ? `${namespace}.${name}` : name;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,sBAAsB,CAAC","sourcesContent":["export const PROVIDER_TYPE_AGENDA = \"PROVIDER_TYPE_AGENDA\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agenda.js","sourceRoot":"","sources":["../../src/decorators/agenda.ts"],"names":[],"mappings":";;;AAAA,qCAAqD;AACrD,iCAAoC;AAEpC,4CAAkD;AAiBlD,SAAgB,MAAM,CAAC,OAAuB;IAC5C,OAAO,oBAAa,CAClB,iBAAU,CAAC,QAAQ,EAAE,EAAC,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAC,CAAC,EACrD,eAAU,CAAC;QACT,IAAI,EAAE,gCAAoB;KAC3B,CAAC,CACH,CAAC;AACJ,CAAC;AAPD,wBAOC","sourcesContent":["import {StoreMerge, useDecorators} from \"@tsed/core\";\nimport {Injectable} from \"@tsed/di\";\nimport {AgendaConfig} from \"agenda\";\nimport {PROVIDER_TYPE_AGENDA} from \"../constants\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n agenda?: {\n /** * Enable Agenda jobs. Default false. */\n enabled?: boolean;\n } & AgendaConfig;\n }\n }\n}\n\ninterface AgendaOptions {\n namespace?: string;\n}\n\nexport function Agenda(options?: AgendaOptions): ClassDecorator {\n return useDecorators(\n StoreMerge(\"agenda\", {namespace: options?.namespace}),\n Injectable({\n type: PROVIDER_TYPE_AGENDA\n })\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/decorators/define.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAGjC,SAAgB,MAAM,CAAC,UAAyB,EAAE;IAChD,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAgB;YACzB,MAAM,EAAE;gBACN,CAAC,WAAW,CAAC,EAAE,OAAO;aACvB;SACF,CAAC;QAEF,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC;AAVD,wBAUC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {AgendaStore, DefineOptions} from \"../interfaces/AgendaStore\";\n\nexport function Define(options: DefineOptions = {}): MethodDecorator {\n return (target: any, propertyKey: string) => {\n const store: AgendaStore = {\n define: {\n [propertyKey]: options\n }\n };\n\n Store.from(target).merge(\"agenda\", store);\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"every.js","sourceRoot":"","sources":["../../src/decorators/every.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAChD,qCAAgC;AAGhC,SAAgB,KAAK,CAAC,QAAgB,EAAE,UAAwB,EAAE;IAChE,OAAO,oBAAa,CAAC,eAAM,CAAC,OAAO,CAAC,EAAE,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QACzE,MAAM,KAAK,GAAgB;YACzB,KAAK,EAAE;gBACL,CAAC,WAAW,CAAC,EAAE,EAAC,GAAG,OAAO,EAAE,QAAQ,EAAC;aACtC;SACF,CAAC;QACF,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AATD,sBASC","sourcesContent":["import {Store, useDecorators} from \"@tsed/core\";\nimport {Define} from \"./define\";\nimport {AgendaStore, EveryOptions} from \"../interfaces/AgendaStore\";\n\nexport function Every(interval: string, options: EveryOptions = {}): MethodDecorator {\n return useDecorators(Define(options), (target: any, propertyKey: string) => {\n const store: AgendaStore = {\n every: {\n [propertyKey]: {...options, interval}\n }\n };\n Store.from(target).merge(\"agenda\", store);\n });\n}\n"]}
@@ -1,3 +0,0 @@
1
- export * from "./agenda";
2
- export * from "./define";
3
- export * from "./every";
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./agenda"), exports);
5
- tslib_1.__exportStar(require("./define"), exports);
6
- tslib_1.__exportStar(require("./every"), exports);
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,mDAAyB;AACzB,kDAAwB","sourcesContent":["export * from \"./agenda\";\nexport * from \"./define\";\nexport * from \"./every\";\n"]}
package/lib/index.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./AgendaModule"), exports);
5
- tslib_1.__exportStar(require("./constants"), exports);
6
- tslib_1.__exportStar(require("./decorators"), exports);
7
- tslib_1.__exportStar(require("./interfaces/AgendaStore"), exports);
8
- tslib_1.__exportStar(require("./services/AgendaFactory"), exports);
9
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAeA,yDAA+B;AAC/B,sDAA4B;AAC5B,uDAA6B;AAC7B,mEAAyC;AACzC,mEAAyC","sourcesContent":["import {AgendaConfig} from \"agenda\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n agenda?: {\n /**\n * Enable Agenda jobs. Default false.\n */\n enabled?: boolean;\n } & AgendaConfig;\n }\n }\n}\n\nexport * from \"./AgendaModule\";\nexport * from \"./constants\";\nexport * from \"./decorators\";\nexport * from \"./interfaces/AgendaStore\";\nexport * from \"./services/AgendaFactory\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgendaStore.js","sourceRoot":"","sources":["../../src/interfaces/AgendaStore.ts"],"names":[],"mappings":"","sourcesContent":["import {DefineOptions as AgendaDefineOptions, JobOptions} from \"agenda\";\n\nexport interface DefineOptions extends AgendaDefineOptions {\n name?: string;\n}\n\nexport type EveryOptions = JobOptions & DefineOptions;\n\nexport interface AgendaStore {\n namespace?: string;\n define?: {[propertyKey: string]: DefineOptions};\n every?: {[propertyKey: string]: EveryOptions & {interval: string}};\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgendaFactory.js","sourceRoot":"","sources":["../../src/services/AgendaFactory.ts"],"names":[],"mappings":";;;AAAA,iCAAyD;AACzD,mCAA4C;AAE5C,2FAA2F;AAC9E,QAAA,aAAa,GAAG,eAAM,CAAC;AAGpC,qBAAgB,CAAC;IACf,OAAO,EAAE,eAAM;IACf,IAAI,EAAE,CAAC,kBAAa,CAAC;IACrB,UAAU,CAAC,QAAuB;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAoC,QAAQ,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {Configuration, registerProvider} from \"@tsed/di\";\nimport {Agenda, AgendaConfig} from \"agenda\";\n\n// create Alias to avoid confusing import between Agenda from \"agenda\" and Agenda decorator\nexport const AgendaService = Agenda;\nexport type AgendaService = Agenda;\n\nregisterProvider({\n provide: Agenda,\n deps: [Configuration],\n useFactory(settings: Configuration) {\n const opts = settings.get<AgendaConfig & {enabled: boolean}>(\"agenda\", {enabled: false});\n return opts.enabled ? new Agenda(opts) : {};\n }\n});\n"]}
@@ -1,3 +0,0 @@
1
- export * from "./agenda";
2
- export * from "./define";
3
- export * from "./every";