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

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 (60) hide show
  1. package/.nycrc +2 -1
  2. package/lib/{AgendaModule.js → cjs/AgendaModule.js} +16 -15
  3. package/lib/cjs/AgendaModule.js.map +1 -0
  4. package/lib/{constants → cjs/constants}/index.js +0 -0
  5. package/lib/cjs/constants/index.js.map +1 -0
  6. package/lib/{decorators → cjs/decorators}/agenda.js +1 -1
  7. package/lib/cjs/decorators/agenda.js.map +1 -0
  8. package/lib/{decorators → cjs/decorators}/define.js +0 -0
  9. package/lib/cjs/decorators/define.js.map +1 -0
  10. package/lib/{decorators → cjs/decorators}/every.js +1 -1
  11. package/lib/cjs/decorators/every.js.map +1 -0
  12. package/lib/cjs/decorators/index.js +7 -0
  13. package/lib/cjs/decorators/index.js.map +1 -0
  14. package/lib/cjs/index.js +9 -0
  15. package/lib/cjs/index.js.map +1 -0
  16. package/lib/{interfaces → cjs/interfaces}/AgendaStore.js +0 -0
  17. package/lib/cjs/interfaces/AgendaStore.js.map +1 -0
  18. package/lib/{services → cjs/services}/AgendaFactory.js +1 -1
  19. package/lib/cjs/services/AgendaFactory.js.map +1 -0
  20. package/lib/esm/AgendaModule.js +79 -0
  21. package/lib/esm/AgendaModule.js.map +1 -0
  22. package/lib/esm/constants/index.js +2 -0
  23. package/lib/esm/constants/index.js.map +1 -0
  24. package/lib/esm/decorators/agenda.js +9 -0
  25. package/lib/esm/decorators/agenda.js.map +1 -0
  26. package/lib/esm/decorators/define.js +12 -0
  27. package/lib/esm/decorators/define.js.map +1 -0
  28. package/lib/esm/decorators/every.js +13 -0
  29. package/lib/esm/decorators/every.js.map +1 -0
  30. package/lib/esm/decorators/index.js +4 -0
  31. package/lib/esm/decorators/index.js.map +1 -0
  32. package/lib/esm/index.js +6 -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/services/AgendaFactory.js +13 -0
  37. package/lib/esm/services/AgendaFactory.js.map +1 -0
  38. package/lib/{AgendaModule.d.ts → types/AgendaModule.d.ts} +0 -0
  39. package/lib/{constants → types/constants}/index.d.ts +0 -0
  40. package/lib/{decorators → types/decorators}/agenda.d.ts +0 -0
  41. package/lib/{decorators → types/decorators}/define.d.ts +0 -0
  42. package/lib/{decorators → types/decorators}/every.d.ts +0 -0
  43. package/lib/{decorators → types/decorators}/index.d.ts +0 -0
  44. package/lib/{index.d.ts → types/index.d.ts} +0 -0
  45. package/lib/{interfaces → types/interfaces}/AgendaStore.d.ts +0 -0
  46. package/lib/{services → types/services}/AgendaFactory.d.ts +0 -0
  47. package/package.json +17 -8
  48. package/src/AgendaModule.ts +5 -1
  49. package/tsconfig.compile.esm.json +23 -0
  50. package/lib/AgendaModule.js.map +0 -1
  51. package/lib/constants/index.js.map +0 -1
  52. package/lib/decorators/agenda.js.map +0 -1
  53. package/lib/decorators/define.js.map +0 -1
  54. package/lib/decorators/every.js.map +0 -1
  55. package/lib/decorators/index.js +0 -7
  56. package/lib/decorators/index.js.map +0 -1
  57. package/lib/index.js +0 -9
  58. package/lib/index.js.map +0 -1
  59. package/lib/interfaces/AgendaStore.js.map +0 -1
  60. package/lib/services/AgendaFactory.js.map +0 -1
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/**",
@@ -21,6 +22,6 @@
21
22
  "check-coverage": true,
22
23
  "statements": 100,
23
24
  "branches": 90.63,
24
- "functions": 85.71,
25
+ "functions": 100,
25
26
  "lines": 100
26
27
  }
@@ -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
  }
@@ -58,24 +59,24 @@ let AgendaModule = class AgendaModule {
58
59
  return namespace ? `${namespace}.${name}` : name;
59
60
  }
60
61
  };
61
- tslib_1.__decorate([
62
- di_1.Inject(),
63
- tslib_1.__metadata("design:type", common_1.Logger)
62
+ (0, tslib_1.__decorate)([
63
+ (0, di_1.Inject)(),
64
+ (0, tslib_1.__metadata)("design:type", common_1.Logger)
64
65
  ], AgendaModule.prototype, "logger", void 0);
65
- tslib_1.__decorate([
66
- di_1.Inject(),
67
- tslib_1.__metadata("design:type", di_1.InjectorService)
66
+ (0, tslib_1.__decorate)([
67
+ (0, di_1.Inject)(),
68
+ (0, tslib_1.__metadata)("design:type", di_1.InjectorService)
68
69
  ], AgendaModule.prototype, "injector", void 0);
69
- tslib_1.__decorate([
70
- di_1.Inject(),
71
- tslib_1.__metadata("design:type", AgendaFactory_1.AgendaService)
70
+ (0, tslib_1.__decorate)([
71
+ (0, di_1.Inject)(),
72
+ (0, tslib_1.__metadata)("design:type", AgendaFactory_1.AgendaService)
72
73
  ], AgendaModule.prototype, "agenda", void 0);
73
- tslib_1.__decorate([
74
- di_1.Constant("agenda.enabled", false),
75
- tslib_1.__metadata("design:type", Boolean)
74
+ (0, tslib_1.__decorate)([
75
+ (0, di_1.Constant)("agenda.enabled", false),
76
+ (0, tslib_1.__metadata)("design:type", Boolean)
76
77
  ], AgendaModule.prototype, "loadAgenda", void 0);
77
- AgendaModule = tslib_1.__decorate([
78
- di_1.Module()
78
+ AgendaModule = (0, tslib_1.__decorate)([
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/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\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"]}
File without changes
@@ -0,0 +1 @@
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"]}
@@ -5,7 +5,7 @@ const core_1 = require("@tsed/core");
5
5
  const di_1 = require("@tsed/di");
6
6
  const constants_1 = require("../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,4CAAkD;AAiBlD,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\";\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,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./agenda"), exports);
5
+ (0, tslib_1.__exportStar)(require("./define"), exports);
6
+ (0, tslib_1.__exportStar)(require("./every"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":";;;AAAA,wDAAyB;AACzB,wDAAyB;AACzB,uDAAwB","sourcesContent":["export * from \"./agenda\";\nexport * from \"./define\";\nexport * from \"./every\";\n"]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./AgendaModule"), exports);
5
+ (0, tslib_1.__exportStar)(require("./constants"), exports);
6
+ (0, tslib_1.__exportStar)(require("./decorators"), exports);
7
+ (0, tslib_1.__exportStar)(require("./interfaces/AgendaStore"), exports);
8
+ (0, tslib_1.__exportStar)(require("./services/AgendaFactory"), exports);
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAeA,8DAA+B;AAC/B,2DAA4B;AAC5B,4DAA6B;AAC7B,wEAAyC;AACzC,wEAAyC","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"]}
@@ -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"]}
@@ -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/index";
5
+ import { AgendaService } from "./services/AgendaFactory";
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 Array.from(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":"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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\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=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.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";
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,cAAc,CAAC;AAiBlD,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\";\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";
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,4 @@
1
+ export * from "./agenda";
2
+ export * from "./define";
3
+ export * from "./every";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC","sourcesContent":["export * from \"./agenda\";\nexport * from \"./define\";\nexport * from \"./every\";\n"]}
@@ -0,0 +1,6 @@
1
+ export * from "./AgendaModule";
2
+ export * from "./constants";
3
+ export * from "./decorators";
4
+ export * from "./interfaces/AgendaStore";
5
+ export * from "./services/AgendaFactory";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAeA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC","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"]}
@@ -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,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
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,11 +1,20 @@
1
1
  {
2
2
  "name": "@tsed/agenda",
3
- "version": "7.0.0-alpha.1",
3
+ "version": "7.0.0-beta.3",
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
+ "typings": "./lib/types/index.d.ts",
8
+ "exports": {
9
+ "types": "./lib/types/index.d.ts",
10
+ "import": "./lib/esm/index.js",
11
+ "require": "./lib/cjs/index.js",
12
+ "default": "./lib/esm/index.js"
13
+ },
7
14
  "scripts": {
8
- "build": "tsc --build tsconfig.compile.json",
15
+ "build": "yarn run build:esm && yarn run build:cjs",
16
+ "build:cjs": "tsc --build tsconfig.compile.json",
17
+ "build:esm": "tsc --build tsconfig.compile.esm.json",
9
18
  "test": "cross-env NODE_ENV=test nyc mocha"
10
19
  },
11
20
  "dependencies": {
@@ -13,9 +22,9 @@
13
22
  },
14
23
  "private": false,
15
24
  "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",
25
+ "@tsed/common": "7.0.0-beta.3",
26
+ "@tsed/core": "7.0.0-beta.3",
27
+ "@tsed/di": "7.0.0-beta.3",
19
28
  "agenda": "^4.1.3"
20
29
  },
21
30
  "peerDependencies": {
@@ -25,7 +34,7 @@
25
34
  "bugs": {
26
35
  "url": "https://github.com/tsedio/tsed/issues"
27
36
  },
28
- "homepage": "https://github.com/tsedio/tsed/tree/alpha/packages/third-parties/agenda",
37
+ "homepage": "https://github.com/tsedio/tsed/tree/beta/packages/third-parties/agenda",
29
38
  "author": "Romain Lenzotti",
30
39
  "license": "MIT"
31
40
  }
@@ -49,13 +49,17 @@ export class AgendaModule implements OnDestroy, AfterListen {
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
  }
@@ -0,0 +1,23 @@
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": [
12
+ "node_modules",
13
+ "test",
14
+ "lib",
15
+ "benchmark",
16
+ "coverage",
17
+ "spec",
18
+ "**/*.benchmark.ts",
19
+ "**/*.spec.ts",
20
+ "keys",
21
+ "jest.config.js"
22
+ ]
23
+ }
@@ -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,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"]}