@kastov/grammy-nestjs 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +362 -0
  3. package/package.json +48 -0
  4. package/src/decorators/composer/chat-type.decorator.d.ts +1 -0
  5. package/src/decorators/composer/chat-type.decorator.js +6 -0
  6. package/src/decorators/composer/chat-type.decorator.js.map +1 -0
  7. package/src/decorators/composer/drop.decorator.d.ts +1 -0
  8. package/src/decorators/composer/drop.decorator.js +6 -0
  9. package/src/decorators/composer/drop.decorator.js.map +1 -0
  10. package/src/decorators/composer/filter.decorator.d.ts +1 -0
  11. package/src/decorators/composer/filter.decorator.js +6 -0
  12. package/src/decorators/composer/filter.decorator.js.map +1 -0
  13. package/src/decorators/composer/index.d.ts +3 -0
  14. package/src/decorators/composer/index.js +7 -0
  15. package/src/decorators/composer/index.js.map +1 -0
  16. package/src/decorators/core/index.d.ts +2 -0
  17. package/src/decorators/core/index.js +6 -0
  18. package/src/decorators/core/index.js.map +1 -0
  19. package/src/decorators/core/inject-bot.decorator.d.ts +1 -0
  20. package/src/decorators/core/inject-bot.decorator.js +8 -0
  21. package/src/decorators/core/inject-bot.decorator.js.map +1 -0
  22. package/src/decorators/core/update.decorator.d.ts +5 -0
  23. package/src/decorators/core/update.decorator.js +12 -0
  24. package/src/decorators/core/update.decorator.js.map +1 -0
  25. package/src/decorators/index.d.ts +4 -0
  26. package/src/decorators/index.js +8 -0
  27. package/src/decorators/index.js.map +1 -0
  28. package/src/decorators/listeners/admin.decorator.d.ts +6 -0
  29. package/src/decorators/listeners/admin.decorator.js +11 -0
  30. package/src/decorators/listeners/admin.decorator.js.map +1 -0
  31. package/src/decorators/listeners/callback-query.decorator.d.ts +6 -0
  32. package/src/decorators/listeners/callback-query.decorator.js +11 -0
  33. package/src/decorators/listeners/callback-query.decorator.js.map +1 -0
  34. package/src/decorators/listeners/command.decorator.d.ts +6 -0
  35. package/src/decorators/listeners/command.decorator.js +11 -0
  36. package/src/decorators/listeners/command.decorator.js.map +1 -0
  37. package/src/decorators/listeners/hears.decorator.d.ts +6 -0
  38. package/src/decorators/listeners/hears.decorator.js +11 -0
  39. package/src/decorators/listeners/hears.decorator.js.map +1 -0
  40. package/src/decorators/listeners/help.decorator.d.ts +6 -0
  41. package/src/decorators/listeners/help.decorator.js +11 -0
  42. package/src/decorators/listeners/help.decorator.js.map +1 -0
  43. package/src/decorators/listeners/index.d.ts +9 -0
  44. package/src/decorators/listeners/index.js +14 -0
  45. package/src/decorators/listeners/index.js.map +1 -0
  46. package/src/decorators/listeners/inline-query.decorator.d.ts +6 -0
  47. package/src/decorators/listeners/inline-query.decorator.js +11 -0
  48. package/src/decorators/listeners/inline-query.decorator.js.map +1 -0
  49. package/src/decorators/listeners/on.decorator.d.ts +6 -0
  50. package/src/decorators/listeners/on.decorator.js +11 -0
  51. package/src/decorators/listeners/on.decorator.js.map +1 -0
  52. package/src/decorators/listeners/settings.decorator.d.ts +6 -0
  53. package/src/decorators/listeners/settings.decorator.js +11 -0
  54. package/src/decorators/listeners/settings.decorator.js.map +1 -0
  55. package/src/decorators/listeners/start.decorator.d.ts +6 -0
  56. package/src/decorators/listeners/start.decorator.js +11 -0
  57. package/src/decorators/listeners/start.decorator.js.map +1 -0
  58. package/src/decorators/params/context.decorator.d.ts +2 -0
  59. package/src/decorators/params/context.decorator.js +8 -0
  60. package/src/decorators/params/context.decorator.js.map +1 -0
  61. package/src/decorators/params/index.d.ts +4 -0
  62. package/src/decorators/params/index.js +8 -0
  63. package/src/decorators/params/index.js.map +1 -0
  64. package/src/decorators/params/message.decorator.d.ts +4 -0
  65. package/src/decorators/params/message.decorator.js +10 -0
  66. package/src/decorators/params/message.decorator.js.map +1 -0
  67. package/src/decorators/params/next.decorator.d.ts +1 -0
  68. package/src/decorators/params/next.decorator.js +7 -0
  69. package/src/decorators/params/next.decorator.js.map +1 -0
  70. package/src/decorators/params/sender.decorator.d.ts +4 -0
  71. package/src/decorators/params/sender.decorator.js +10 -0
  72. package/src/decorators/params/sender.decorator.js.map +1 -0
  73. package/src/enums/grammy-paramtype.enum.d.ts +6 -0
  74. package/src/enums/grammy-paramtype.enum.js +12 -0
  75. package/src/enums/grammy-paramtype.enum.js.map +1 -0
  76. package/src/enums/index.d.ts +1 -0
  77. package/src/enums/index.js +5 -0
  78. package/src/enums/index.js.map +1 -0
  79. package/src/errors/grammy.exception.d.ts +2 -0
  80. package/src/errors/grammy.exception.js +7 -0
  81. package/src/errors/grammy.exception.js.map +1 -0
  82. package/src/errors/index.d.ts +1 -0
  83. package/src/errors/index.js +5 -0
  84. package/src/errors/index.js.map +1 -0
  85. package/src/execution-context/grammy-arguments-host.d.ts +8 -0
  86. package/src/execution-context/grammy-arguments-host.js +20 -0
  87. package/src/execution-context/grammy-arguments-host.js.map +1 -0
  88. package/src/execution-context/grammy-execution-context.d.ts +10 -0
  89. package/src/execution-context/grammy-execution-context.js +23 -0
  90. package/src/execution-context/grammy-execution-context.js.map +1 -0
  91. package/src/execution-context/index.d.ts +3 -0
  92. package/src/execution-context/index.js +7 -0
  93. package/src/execution-context/index.js.map +1 -0
  94. package/src/execution-context/tg-arguments-host.interface.d.ts +5 -0
  95. package/src/execution-context/tg-arguments-host.interface.js +3 -0
  96. package/src/execution-context/tg-arguments-host.interface.js.map +1 -0
  97. package/src/factories/grammy-params-factory.d.ts +6 -0
  98. package/src/factories/grammy-params-factory.js +25 -0
  99. package/src/factories/grammy-params-factory.js.map +1 -0
  100. package/src/factories/index.d.ts +1 -0
  101. package/src/factories/index.js +5 -0
  102. package/src/factories/index.js.map +1 -0
  103. package/src/index.d.ts +13 -0
  104. package/src/index.js +17 -0
  105. package/src/index.js.map +1 -0
  106. package/src/interfaces/composer-metadata.interface.d.ts +14 -0
  107. package/src/interfaces/composer-metadata.interface.js +3 -0
  108. package/src/interfaces/composer-metadata.interface.js.map +1 -0
  109. package/src/interfaces/grammy-exception-filter.interface.d.ts +4 -0
  110. package/src/interfaces/grammy-exception-filter.interface.js +3 -0
  111. package/src/interfaces/grammy-exception-filter.interface.js.map +1 -0
  112. package/src/interfaces/grammy-options.interface.d.ts +22 -0
  113. package/src/interfaces/grammy-options.interface.js +3 -0
  114. package/src/interfaces/grammy-options.interface.js.map +1 -0
  115. package/src/interfaces/index.d.ts +4 -0
  116. package/src/interfaces/index.js +8 -0
  117. package/src/interfaces/index.js.map +1 -0
  118. package/src/interfaces/listener-metadata.interface.d.ts +6 -0
  119. package/src/interfaces/listener-metadata.interface.js +3 -0
  120. package/src/interfaces/listener-metadata.interface.js.map +1 -0
  121. package/src/nestjs-grammy-core.module.d.ts +13 -0
  122. package/src/nestjs-grammy-core.module.js +108 -0
  123. package/src/nestjs-grammy-core.module.js.map +1 -0
  124. package/src/nestjs-grammy.constants.d.ts +8 -0
  125. package/src/nestjs-grammy.constants.js +13 -0
  126. package/src/nestjs-grammy.constants.js.map +1 -0
  127. package/src/nestjs-grammy.module.d.ts +6 -0
  128. package/src/nestjs-grammy.module.js +32 -0
  129. package/src/nestjs-grammy.module.js.map +1 -0
  130. package/src/services/base-explorer.service.d.ts +7 -0
  131. package/src/services/base-explorer.service.js +43 -0
  132. package/src/services/base-explorer.service.js.map +1 -0
  133. package/src/services/index.d.ts +3 -0
  134. package/src/services/index.js +7 -0
  135. package/src/services/index.js.map +1 -0
  136. package/src/services/listeners-explorer.service.d.ts +29 -0
  137. package/src/services/listeners-explorer.service.js +104 -0
  138. package/src/services/listeners-explorer.service.js.map +1 -0
  139. package/src/services/metadata-accessor.service.d.ts +9 -0
  140. package/src/services/metadata-accessor.service.js +30 -0
  141. package/src/services/metadata-accessor.service.js.map +1 -0
  142. package/src/types/grammy-types.d.ts +8 -0
  143. package/src/types/grammy-types.js +3 -0
  144. package/src/types/grammy-types.js.map +1 -0
  145. package/src/types/index.d.ts +1 -0
  146. package/src/types/index.js +5 -0
  147. package/src/types/index.js.map +1 -0
  148. package/src/utils/create-bot-factory.util.d.ts +3 -0
  149. package/src/utils/create-bot-factory.util.js +25 -0
  150. package/src/utils/create-bot-factory.util.js.map +1 -0
  151. package/src/utils/create-composer-decorator.util.d.ts +3 -0
  152. package/src/utils/create-composer-decorator.util.js +22 -0
  153. package/src/utils/create-composer-decorator.util.js.map +1 -0
  154. package/src/utils/create-emiiter-decorator.util.d.ts +3 -0
  155. package/src/utils/create-emiiter-decorator.util.js +23 -0
  156. package/src/utils/create-emiiter-decorator.util.js.map +1 -0
  157. package/src/utils/get-bot-name.util.d.ts +1 -0
  158. package/src/utils/get-bot-name.util.js +9 -0
  159. package/src/utils/get-bot-name.util.js.map +1 -0
  160. package/src/utils/index.d.ts +4 -0
  161. package/src/utils/index.js +8 -0
  162. package/src/utils/index.js.map +1 -0
  163. package/src/utils/param-decorator.util.d.ts +6 -0
  164. package/src/utils/param-decorator.util.js +26 -0
  165. package/src/utils/param-decorator.util.js.map +1 -0
@@ -0,0 +1,22 @@
1
+ import { ModuleMetadata, Type } from '@nestjs/common/interfaces';
2
+ import { Middleware, BotConfig, PollingOptions } from 'grammy';
3
+ export interface GrammyModuleOptions {
4
+ token: string;
5
+ botName?: string;
6
+ options?: Partial<BotConfig<any>>;
7
+ pollingOptions?: PollingOptions | false;
8
+ useWebhook?: boolean;
9
+ include?: Function[];
10
+ middlewares?: ReadonlyArray<Middleware<any>>;
11
+ disableUpdates?: boolean;
12
+ }
13
+ export interface GrammyOptionsFactory {
14
+ createGrammyOptions(): Promise<GrammyModuleOptions> | GrammyModuleOptions;
15
+ }
16
+ export interface GrammyModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
17
+ botName?: string;
18
+ useExisting?: Type<GrammyOptionsFactory>;
19
+ useClass?: Type<GrammyOptionsFactory>;
20
+ useFactory?: (...args: any[]) => Promise<GrammyModuleOptions> | GrammyModuleOptions;
21
+ inject?: any[];
22
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=grammy-options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammy-options.interface.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/interfaces/grammy-options.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from './grammy-exception-filter.interface';
2
+ export * from './grammy-options.interface';
3
+ export * from './listener-metadata.interface';
4
+ export * from './composer-metadata.interface';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./grammy-exception-filter.interface"), exports);
5
+ tslib_1.__exportStar(require("./grammy-options.interface"), exports);
6
+ tslib_1.__exportStar(require("./listener-metadata.interface"), exports);
7
+ tslib_1.__exportStar(require("./composer-metadata.interface"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,8EAAmD;AACnD,qEAA0C;AAC1C,wEAA6C;AAC7C,wEAA6C"}
@@ -0,0 +1,6 @@
1
+ import { FilterQuery } from 'grammy';
2
+ export interface ListenerMetadata {
3
+ emitter: string;
4
+ method: FilterQuery | string | RegExp;
5
+ args: unknown[];
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=listener-metadata.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener-metadata.interface.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/interfaces/listener-metadata.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { ModuleRef } from '@nestjs/core';
2
+ import { DynamicModule, OnApplicationShutdown } from '@nestjs/common';
3
+ import { GrammyModuleAsyncOptions, GrammyModuleOptions } from './interfaces';
4
+ export declare class GrammyCoreModule implements OnApplicationShutdown {
5
+ private readonly botName;
6
+ private readonly moduleRef;
7
+ constructor(botName: string, moduleRef: ModuleRef);
8
+ static forRoot(options: GrammyModuleOptions): DynamicModule;
9
+ static forRootAsync(options: GrammyModuleAsyncOptions): DynamicModule;
10
+ onApplicationShutdown(): Promise<void>;
11
+ private static createAsyncProviders;
12
+ private static createAsyncOptionsProvider;
13
+ }
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var GrammyCoreModule_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.GrammyCoreModule = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const core_1 = require("@nestjs/core");
7
+ const common_1 = require("@nestjs/common");
8
+ const nestjs_grammy_constants_1 = require("./nestjs-grammy.constants");
9
+ const services_1 = require("./services");
10
+ const utils_1 = require("./utils");
11
+ const debug_1 = require("debug");
12
+ const log = (0, debug_1.default)('nestjs-grammy:core:module');
13
+ let GrammyCoreModule = GrammyCoreModule_1 = class GrammyCoreModule {
14
+ constructor(botName, moduleRef) {
15
+ this.botName = botName;
16
+ this.moduleRef = moduleRef;
17
+ log(`Core module started with botName=${botName}`);
18
+ }
19
+ static forRoot(options) {
20
+ const grammyBotName = (0, utils_1.getBotName)(options.botName);
21
+ const grammyBotNameProvider = {
22
+ provide: nestjs_grammy_constants_1.GRAMMY_BOT_NAME,
23
+ useValue: grammyBotName,
24
+ };
25
+ const grammyBotProvider = {
26
+ provide: grammyBotName,
27
+ useFactory: () => tslib_1.__awaiter(this, void 0, void 0, function* () { return yield (0, utils_1.createBotFactory)(options); }),
28
+ };
29
+ return {
30
+ module: GrammyCoreModule_1,
31
+ providers: [
32
+ {
33
+ provide: nestjs_grammy_constants_1.GRAMMY_MODULE_OPTIONS,
34
+ useValue: options,
35
+ },
36
+ grammyBotNameProvider,
37
+ grammyBotProvider,
38
+ ],
39
+ exports: [grammyBotNameProvider, grammyBotProvider],
40
+ };
41
+ }
42
+ static forRootAsync(options) {
43
+ const grammyBotName = (0, utils_1.getBotName)(options.botName);
44
+ const grammyBotNameProvider = {
45
+ provide: nestjs_grammy_constants_1.GRAMMY_BOT_NAME,
46
+ useValue: grammyBotName,
47
+ };
48
+ const grammyBotProvider = {
49
+ provide: grammyBotName,
50
+ useFactory: (options) => tslib_1.__awaiter(this, void 0, void 0, function* () { return yield (0, utils_1.createBotFactory)(options); }),
51
+ inject: [nestjs_grammy_constants_1.GRAMMY_MODULE_OPTIONS],
52
+ };
53
+ const asyncProviders = this.createAsyncProviders(options);
54
+ return {
55
+ module: GrammyCoreModule_1,
56
+ imports: options.imports,
57
+ providers: [...asyncProviders, grammyBotNameProvider, grammyBotProvider],
58
+ exports: [grammyBotNameProvider, grammyBotProvider],
59
+ };
60
+ }
61
+ onApplicationShutdown() {
62
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
63
+ log(`GrammyCoreModule: ${this.botName} shutting down`);
64
+ const bot = this.moduleRef.get(this.botName);
65
+ bot && (yield bot.stop());
66
+ });
67
+ }
68
+ static createAsyncProviders(options) {
69
+ if (options.useExisting || options.useFactory) {
70
+ return [this.createAsyncOptionsProvider(options)];
71
+ }
72
+ const useClass = options.useClass;
73
+ return [
74
+ this.createAsyncOptionsProvider(options),
75
+ {
76
+ provide: useClass,
77
+ useClass,
78
+ },
79
+ ];
80
+ }
81
+ static createAsyncOptionsProvider(options) {
82
+ if (options.useFactory) {
83
+ return {
84
+ provide: nestjs_grammy_constants_1.GRAMMY_MODULE_OPTIONS,
85
+ useFactory: options.useFactory,
86
+ inject: options.inject || [],
87
+ };
88
+ }
89
+ // `as Type<GrammyOptionsFactory>` is a workaround for microsoft/TypeScript#31603
90
+ const inject = [(options.useClass || options.useExisting)];
91
+ return {
92
+ provide: nestjs_grammy_constants_1.GRAMMY_MODULE_OPTIONS,
93
+ useFactory: (optionsFactory) => tslib_1.__awaiter(this, void 0, void 0, function* () { return yield optionsFactory.createGrammyOptions(); }),
94
+ inject,
95
+ };
96
+ }
97
+ };
98
+ GrammyCoreModule = GrammyCoreModule_1 = tslib_1.__decorate([
99
+ (0, common_1.Global)(),
100
+ (0, common_1.Module)({
101
+ imports: [core_1.DiscoveryModule],
102
+ providers: [services_1.ListenersExplorerService, services_1.MetadataAccessorService],
103
+ }),
104
+ tslib_1.__param(0, (0, common_1.Inject)(nestjs_grammy_constants_1.GRAMMY_BOT_NAME)),
105
+ tslib_1.__metadata("design:paramtypes", [String, core_1.ModuleRef])
106
+ ], GrammyCoreModule);
107
+ exports.GrammyCoreModule = GrammyCoreModule;
108
+ //# sourceMappingURL=nestjs-grammy-core.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-grammy-core.module.js","sourceRoot":"","sources":["../../../../packages/grammy-nestjs/src/nestjs-grammy-core.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const GRAMMY_MODULE_OPTIONS = "GRAMMY_MODULE_OPTIONS";
2
+ export declare const GRAMMY_BOT_NAME = "GRAMMY_BOT_NAME";
3
+ export declare const DEFAULT_BOT_NAME = "DEFAULT_BOT_NAME";
4
+ export declare const UPDATE_METADATA = "UPDATE_METADATA";
5
+ export declare const LISTENERS_METADATA = "LISTENERS_METADATA";
6
+ export declare const COMMAND_METADATA = "COMMAND_METADATA";
7
+ export declare const COMPOSER_METADATA = "COMPOSER_METADATA";
8
+ export declare const PARAM_ARGS_METADATA = "__routeArguments__";
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PARAM_ARGS_METADATA = exports.COMPOSER_METADATA = exports.COMMAND_METADATA = exports.LISTENERS_METADATA = exports.UPDATE_METADATA = exports.DEFAULT_BOT_NAME = exports.GRAMMY_BOT_NAME = exports.GRAMMY_MODULE_OPTIONS = void 0;
4
+ const constants_1 = require("@nestjs/common/constants");
5
+ exports.GRAMMY_MODULE_OPTIONS = 'GRAMMY_MODULE_OPTIONS';
6
+ exports.GRAMMY_BOT_NAME = 'GRAMMY_BOT_NAME';
7
+ exports.DEFAULT_BOT_NAME = 'DEFAULT_BOT_NAME';
8
+ exports.UPDATE_METADATA = 'UPDATE_METADATA';
9
+ exports.LISTENERS_METADATA = 'LISTENERS_METADATA';
10
+ exports.COMMAND_METADATA = 'COMMAND_METADATA';
11
+ exports.COMPOSER_METADATA = 'COMPOSER_METADATA';
12
+ exports.PARAM_ARGS_METADATA = constants_1.ROUTE_ARGS_METADATA;
13
+ //# sourceMappingURL=nestjs-grammy.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-grammy.constants.js","sourceRoot":"","sources":["../../../../packages/grammy-nestjs/src/nestjs-grammy.constants.ts"],"names":[],"mappings":";;;AAAA,wDAA8D;AAEjD,QAAA,qBAAqB,GAAG,uBAAuB,CAAA;AAC/C,QAAA,eAAe,GAAG,iBAAiB,CAAA;AACnC,QAAA,gBAAgB,GAAG,kBAAkB,CAAA;AAErC,QAAA,eAAe,GAAG,iBAAiB,CAAA;AACnC,QAAA,kBAAkB,GAAG,oBAAoB,CAAA;AACzC,QAAA,gBAAgB,GAAG,kBAAkB,CAAA;AACrC,QAAA,iBAAiB,GAAG,mBAAmB,CAAA;AAEvC,QAAA,mBAAmB,GAAG,+BAAmB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { GrammyModuleOptions, GrammyModuleAsyncOptions } from './interfaces';
3
+ export declare class NestjsGrammyModule {
4
+ static forRoot(options: GrammyModuleOptions): DynamicModule;
5
+ static forRootAsync(options: GrammyModuleAsyncOptions): DynamicModule;
6
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var NestjsGrammyModule_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NestjsGrammyModule = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const nestjs_grammy_core_module_1 = require("./nestjs-grammy-core.module");
8
+ let NestjsGrammyModule = NestjsGrammyModule_1 = class NestjsGrammyModule {
9
+ static forRoot(options) {
10
+ return {
11
+ module: NestjsGrammyModule_1,
12
+ imports: [nestjs_grammy_core_module_1.GrammyCoreModule.forRoot(options)],
13
+ exports: [nestjs_grammy_core_module_1.GrammyCoreModule],
14
+ };
15
+ }
16
+ static forRootAsync(options) {
17
+ return {
18
+ module: NestjsGrammyModule_1,
19
+ imports: [nestjs_grammy_core_module_1.GrammyCoreModule.forRootAsync(options)],
20
+ exports: [nestjs_grammy_core_module_1.GrammyCoreModule],
21
+ };
22
+ }
23
+ };
24
+ NestjsGrammyModule = NestjsGrammyModule_1 = tslib_1.__decorate([
25
+ (0, common_1.Module)({
26
+ controllers: [],
27
+ providers: [],
28
+ exports: [],
29
+ })
30
+ ], NestjsGrammyModule);
31
+ exports.NestjsGrammyModule = NestjsGrammyModule;
32
+ //# sourceMappingURL=nestjs-grammy.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-grammy.module.js","sourceRoot":"","sources":["../../../../packages/grammy-nestjs/src/nestjs-grammy.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAAsD;AACtD,2EAA8D;AAQvD,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IACtB,MAAM,CAAC,OAAO,CAAC,OAA4B;QAChD,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE,CAAC,4CAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC,4CAAgB,CAAC;SAC5B,CAAA;IACH,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,OAAiC;QAC1D,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE,CAAC,4CAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO,EAAE,CAAC,4CAAgB,CAAC;SAC5B,CAAA;IACH,CAAC;CACF,CAAA;AAhBY,kBAAkB;IAL9B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;KACZ,CAAC;GACW,kBAAkB,CAgB9B;AAhBY,gDAAkB"}
@@ -0,0 +1,7 @@
1
+ import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
2
+ import { Module } from '@nestjs/core/injector/module';
3
+ export declare class BaseExplorerService {
4
+ getModules(modulesContainer: Map<string, Module>, include: Function[]): Module[];
5
+ includeWhitelisted(modulesContainer: Map<string, Module>, include: Function[]): Module[];
6
+ flatMap<T>(modules: Module[], callback: (instance: InstanceWrapper, moduleRef: Module) => T | T[]): T[];
7
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseExplorerService = void 0;
4
+ const lodash_1 = require("lodash");
5
+ class BaseExplorerService {
6
+ // eslint-disable-next-line @typescript-eslint/ban-types
7
+ getModules(modulesContainer, include) {
8
+ if (!include || (0, lodash_1.isEmpty)(include)) {
9
+ return [...modulesContainer.values()];
10
+ }
11
+ const whitelisted = this.includeWhitelisted(modulesContainer, include);
12
+ return whitelisted;
13
+ }
14
+ // eslint-disable-next-line @typescript-eslint/ban-types
15
+ includeWhitelisted(modulesContainer, include) {
16
+ const modules = [...modulesContainer.values()];
17
+ return modules.filter(({ metatype }) => include.includes(metatype));
18
+ }
19
+ flatMap(modules, callback) {
20
+ const visitedModules = new Set();
21
+ const unwrap = (moduleRef) => {
22
+ var _a;
23
+ // protection from circular recursion
24
+ if (visitedModules.has(moduleRef)) {
25
+ return [];
26
+ }
27
+ else {
28
+ visitedModules.add(moduleRef);
29
+ }
30
+ const providers = [...moduleRef.providers.values()];
31
+ const defined = providers.map(wrapper => callback(wrapper, moduleRef));
32
+ const imported = ((_a = moduleRef.imports) === null || _a === void 0 ? void 0 : _a.size)
33
+ ? [...moduleRef.imports.values()].reduce((prev, cur) => {
34
+ return [...prev, ...unwrap(cur)];
35
+ }, [])
36
+ : [];
37
+ return [...defined, ...imported];
38
+ };
39
+ return (0, lodash_1.flattenDeep)(modules.map(unwrap)).filter(lodash_1.identity);
40
+ }
41
+ }
42
+ exports.BaseExplorerService = BaseExplorerService;
43
+ //# sourceMappingURL=base-explorer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-explorer.service.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/services/base-explorer.service.ts"],"names":[],"mappings":";;;AAGA,mCAAuD;AAEvD,MAAa,mBAAmB;IAC9B,wDAAwD;IACxD,UAAU,CAAC,gBAAqC,EAAE,OAAmB;QACnE,IAAI,CAAC,OAAO,IAAI,IAAA,gBAAO,EAAC,OAAO,CAAC,EAAE;YAChC,OAAO,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;SACtC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;QACtE,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,wDAAwD;IACxD,kBAAkB,CAAC,gBAAqC,EAAE,OAAmB;QAC3E,MAAM,OAAO,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACrE,CAAC;IAED,OAAO,CAAI,OAAiB,EAAE,QAAmE;QAC/F,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;QAExC,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,EAAE;;YACnC,qCAAqC;YACrC,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBACjC,OAAO,EAAE,CAAA;aACV;iBAAM;gBACL,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;aAC9B;YAED,MAAM,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;YACnD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;YAEtE,MAAM,QAAQ,GAAgB,CAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,IAAI;gBACnD,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;oBACnD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;gBAClC,CAAC,EAAE,EAAE,CAAC;gBACR,CAAC,CAAC,EAAE,CAAA;YAEN,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAA;QAClC,CAAC,CAAA;QAED,OAAO,IAAA,oBAAW,EAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAQ,CAAC,CAAA;IAC1D,CAAC;CACF;AAzCD,kDAyCC"}
@@ -0,0 +1,3 @@
1
+ export * from './base-explorer.service';
2
+ export * from './listeners-explorer.service';
3
+ export * from './metadata-accessor.service';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./base-explorer.service"), exports);
5
+ tslib_1.__exportStar(require("./listeners-explorer.service"), exports);
6
+ tslib_1.__exportStar(require("./metadata-accessor.service"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/services/index.ts"],"names":[],"mappings":";;;AAAA,kEAAuC;AACvC,uEAA4C;AAC5C,sEAA2C"}
@@ -0,0 +1,29 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { DiscoveryService, ModuleRef, ModulesContainer } from '@nestjs/core';
3
+ import { MetadataScanner } from '@nestjs/core/metadata-scanner';
4
+ import { ExternalContextCreator } from '@nestjs/core/helpers/external-context-creator';
5
+ import { Composer } from 'grammy';
6
+ import { MetadataAccessorService } from './metadata-accessor.service';
7
+ import { BaseExplorerService } from './base-explorer.service';
8
+ import { GrammyModuleOptions } from '../interfaces';
9
+ export declare class ListenersExplorerService extends BaseExplorerService implements OnModuleInit {
10
+ private readonly grammyOptions;
11
+ private readonly botName;
12
+ private readonly moduleRef;
13
+ private readonly discoveryService;
14
+ private readonly metadataAccessor;
15
+ private readonly metadataScanner;
16
+ private readonly modulesContainer;
17
+ private readonly externalContextCreator;
18
+ private readonly grammyParamsFactory;
19
+ private bot;
20
+ constructor(grammyOptions: GrammyModuleOptions, botName: string, moduleRef: ModuleRef, discoveryService: DiscoveryService, metadataAccessor: MetadataAccessorService, metadataScanner: MetadataScanner, modulesContainer: ModulesContainer, externalContextCreator: ExternalContextCreator);
21
+ onModuleInit(): void;
22
+ explore(): void;
23
+ private registerUpdates;
24
+ private filterUpdates;
25
+ private registerListeners;
26
+ private registerIfListener;
27
+ createContextCallback<T extends Record<string, unknown>>(instance: T, prototype: unknown, methodName: string): (...args: any[]) => Promise<any>;
28
+ setupComposerWithMetadata(composer: Composer<any>, methodRef: any): Composer<any>;
29
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ListenersExplorerService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const debug_1 = require("debug");
6
+ const log = (0, debug_1.default)('nestjs-grammy:listeners-explorer.service');
7
+ const common_1 = require("@nestjs/common");
8
+ const core_1 = require("@nestjs/core");
9
+ const metadata_scanner_1 = require("@nestjs/core/metadata-scanner");
10
+ const external_context_creator_1 = require("@nestjs/core/helpers/external-context-creator");
11
+ const metadata_accessor_service_1 = require("./metadata-accessor.service");
12
+ const nestjs_grammy_constants_1 = require("../nestjs-grammy.constants");
13
+ const base_explorer_service_1 = require("./base-explorer.service");
14
+ const grammy_params_factory_1 = require("../factories/grammy-params-factory");
15
+ let ListenersExplorerService = class ListenersExplorerService extends base_explorer_service_1.BaseExplorerService {
16
+ constructor(grammyOptions, botName, moduleRef, discoveryService, metadataAccessor, metadataScanner, modulesContainer, externalContextCreator) {
17
+ super();
18
+ this.grammyOptions = grammyOptions;
19
+ this.botName = botName;
20
+ this.moduleRef = moduleRef;
21
+ this.discoveryService = discoveryService;
22
+ this.metadataAccessor = metadataAccessor;
23
+ this.metadataScanner = metadataScanner;
24
+ this.modulesContainer = modulesContainer;
25
+ this.externalContextCreator = externalContextCreator;
26
+ this.grammyParamsFactory = new grammy_params_factory_1.GrammyParamsFactory();
27
+ }
28
+ onModuleInit() {
29
+ this.bot = this.moduleRef.get(this.botName, {
30
+ strict: false,
31
+ });
32
+ this.explore();
33
+ if (!this.grammyOptions.useWebhook && !this.grammyOptions.disableUpdates) {
34
+ log('pollingOptions: ', this.grammyOptions.pollingOptions);
35
+ this.bot.start(this.grammyOptions.pollingOptions || {});
36
+ }
37
+ }
38
+ explore() {
39
+ const modules = this.getModules(this.modulesContainer, this.grammyOptions.include || []);
40
+ this.registerUpdates(modules);
41
+ }
42
+ registerUpdates(modules) {
43
+ const updates = this.flatMap(modules, instance => this.filterUpdates(instance));
44
+ updates.forEach(wrapper => this.registerListeners(this.bot, wrapper));
45
+ }
46
+ filterUpdates(wrapper) {
47
+ const { instance } = wrapper;
48
+ if (!instance)
49
+ return undefined;
50
+ const isUpdate = this.metadataAccessor.isUpdate(wrapper.metatype);
51
+ if (!isUpdate)
52
+ return undefined;
53
+ return wrapper;
54
+ }
55
+ registerListeners(composer, wrapper) {
56
+ const { instance } = wrapper;
57
+ const prototype = Object.getPrototypeOf(instance);
58
+ this.metadataScanner.scanFromPrototype(instance, prototype, name => this.registerIfListener(composer, instance, prototype, name));
59
+ }
60
+ registerIfListener(composer, instance, prototype, methodName, defaultMetadata) {
61
+ const methodRef = prototype[methodName];
62
+ const metadata = this.metadataAccessor.getListenerMetadata(methodRef) || defaultMetadata;
63
+ if (!metadata || metadata.length < 1) {
64
+ return undefined;
65
+ }
66
+ const composerByMetadata = this.setupComposerWithMetadata(composer, methodRef);
67
+ const listenerCallbackFn = this.createContextCallback(instance, prototype, methodName);
68
+ // TODO: do we do anything with args?
69
+ for (const { method, emitter } of metadata) {
70
+ log(`Setting up listener for bot.${emitter}('${method}')`);
71
+ composerByMetadata[emitter](method, listenerCallbackFn);
72
+ }
73
+ }
74
+ createContextCallback(instance, prototype, methodName) {
75
+ const paramsFactory = this.grammyParamsFactory;
76
+ const resolverCallback = this.externalContextCreator.create(instance, prototype[methodName], methodName, nestjs_grammy_constants_1.PARAM_ARGS_METADATA, paramsFactory, undefined, undefined, undefined, 'grammy');
77
+ return resolverCallback;
78
+ }
79
+ setupComposerWithMetadata(composer, methodRef) {
80
+ const metadata = this.metadataAccessor.getComposerMetadata(methodRef);
81
+ if (!metadata)
82
+ return composer;
83
+ let composerWithFilters = composer;
84
+ for (const { method, arg } of metadata) {
85
+ log(`Setting up composer for bot.${method}(${arg})`);
86
+ // Looks like TypeScript bug, so I hacked it with 'as any'
87
+ composerWithFilters = composerWithFilters[method](arg);
88
+ }
89
+ return composerWithFilters;
90
+ }
91
+ };
92
+ ListenersExplorerService = tslib_1.__decorate([
93
+ (0, common_1.Injectable)(),
94
+ tslib_1.__param(0, (0, common_1.Inject)(nestjs_grammy_constants_1.GRAMMY_MODULE_OPTIONS)),
95
+ tslib_1.__param(1, (0, common_1.Inject)(nestjs_grammy_constants_1.GRAMMY_BOT_NAME)),
96
+ tslib_1.__metadata("design:paramtypes", [Object, String, core_1.ModuleRef,
97
+ core_1.DiscoveryService,
98
+ metadata_accessor_service_1.MetadataAccessorService,
99
+ metadata_scanner_1.MetadataScanner,
100
+ core_1.ModulesContainer,
101
+ external_context_creator_1.ExternalContextCreator])
102
+ ], ListenersExplorerService);
103
+ exports.ListenersExplorerService = ListenersExplorerService;
104
+ //# sourceMappingURL=listeners-explorer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listeners-explorer.service.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/services/listeners-explorer.service.ts"],"names":[],"mappings":";;;;AAAA,iCAAyB;AACzB,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,0CAA0C,CAAC,CAAA;AAE7D,2CAAiE;AACjE,uCAA4E;AAE5E,oEAA+D;AAG/D,4FAAsF;AAGtF,2EAAqE;AACrE,wEAAwG;AACxG,mEAA6D;AAC7D,8EAAwE;AAKjE,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,2CAAmB;IAK/D,YAEmB,aAAkC,EAElC,OAAe,EACf,SAAoB,EACpB,gBAAkC,EAClC,gBAAyC,EACzC,eAAgC,EAChC,gBAAkC,EAClC,sBAA8C;QAE/D,KAAK,EAAE,CAAA;QAVU,kBAAa,GAAb,aAAa,CAAqB;QAElC,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAW;QACpB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,qBAAgB,GAAhB,gBAAgB,CAAyB;QACzC,oBAAe,GAAf,eAAe,CAAiB;QAChC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,2BAAsB,GAAtB,sBAAsB,CAAwB;QAdhD,wBAAmB,GAAG,IAAI,2CAAmB,EAAE,CAAA;IAiBhE,CAAC;IAED,YAAY;QACV,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAW,IAAI,CAAC,OAAO,EAAE;YACpD,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,EAAE,CAAA;QAEd,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;YACxE,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;YAC1D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,IAAI,EAAE,CAAC,CAAA;SACxD;IACH,CAAC;IAED,OAAO;QACL,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QAExF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IAEO,eAAe,CAAC,OAAiB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAkB,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;QAChG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IACvE,CAAC;IAEO,aAAa,CAAC,OAAwB;QAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QAC5B,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAA;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACjE,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAA;QAE/B,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,iBAAiB,CAAC,QAAuB,EAAE,OAAiC;QAClF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACjD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CACjE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAC7D,CAAA;IACH,CAAC;IAEO,kBAAkB,CACxB,QAAuB,EACvB,QAAa,EACb,SAAc,EACd,UAAkB,EAClB,eAAoC;QAEpC,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,eAAe,CAAA;QACxF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,OAAO,SAAS,CAAA;SACjB;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAE9E,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAEtF,qCAAqC;QACrC,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE;YAC1C,GAAG,CAAC,+BAA+B,OAAO,KAAK,MAAM,IAAI,CAAC,CAAA;YAC1D,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;SACxD;IACH,CAAC;IAED,qBAAqB,CAAoC,QAAW,EAAE,SAAkB,EAAE,UAAkB;QAC1G,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAA;QAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CACzD,QAAQ,EACR,SAAS,CAAC,UAAU,CAAC,EACrB,UAAU,EACV,6CAAmB,EACnB,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,CACT,CAAA;QACD,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,yBAAyB,CAAC,QAAuB,EAAE,SAAS;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAA;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAE9B,IAAI,mBAAmB,GAAG,QAAQ,CAAA;QAClC,KAAK,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,QAAQ,EAAE;YACtC,GAAG,CAAC,+BAA+B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAA;YAEpD,0DAA0D;YAC1D,mBAAmB,GAAI,mBAA2B,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;SAChE;QAED,OAAO,mBAAmB,CAAA;IAC5B,CAAC;CACF,CAAA;AApHY,wBAAwB;IADpC,IAAA,mBAAU,GAAE;IAOR,mBAAA,IAAA,eAAM,EAAC,+CAAqB,CAAC,CAAA;IAE7B,mBAAA,IAAA,eAAM,EAAC,yCAAe,CAAC,CAAA;6DAEI,gBAAS;QACF,uBAAgB;QAChB,mDAAuB;QACxB,kCAAe;QACd,uBAAgB;QACV,iDAAsB;GAftD,wBAAwB,CAoHpC;AApHY,4DAAwB"}
@@ -0,0 +1,9 @@
1
+ import { Reflector } from '@nestjs/core';
2
+ import { ListenerMetadata, ComposerMetadata } from '../interfaces';
3
+ export declare class MetadataAccessorService {
4
+ private readonly reflector;
5
+ constructor(reflector: Reflector);
6
+ isUpdate(target: Function): boolean;
7
+ getListenerMetadata(target: Function): ListenerMetadata[] | undefined;
8
+ getComposerMetadata(target: Function): ComposerMetadata[] | undefined;
9
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetadataAccessorService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ /* eslint-disable @typescript-eslint/ban-types */
6
+ const common_1 = require("@nestjs/common");
7
+ const core_1 = require("@nestjs/core");
8
+ const nestjs_grammy_constants_1 = require("../nestjs-grammy.constants");
9
+ let MetadataAccessorService = class MetadataAccessorService {
10
+ constructor(reflector) {
11
+ this.reflector = reflector;
12
+ }
13
+ isUpdate(target) {
14
+ if (!target)
15
+ return false;
16
+ return !!this.reflector.get(nestjs_grammy_constants_1.UPDATE_METADATA, target);
17
+ }
18
+ getListenerMetadata(target) {
19
+ return this.reflector.get(nestjs_grammy_constants_1.LISTENERS_METADATA, target);
20
+ }
21
+ getComposerMetadata(target) {
22
+ return this.reflector.get(nestjs_grammy_constants_1.COMPOSER_METADATA, target);
23
+ }
24
+ };
25
+ MetadataAccessorService = tslib_1.__decorate([
26
+ (0, common_1.Injectable)(),
27
+ tslib_1.__metadata("design:paramtypes", [core_1.Reflector])
28
+ ], MetadataAccessorService);
29
+ exports.MetadataAccessorService = MetadataAccessorService;
30
+ //# sourceMappingURL=metadata-accessor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-accessor.service.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/services/metadata-accessor.service.ts"],"names":[],"mappings":";;;;AAAA,iDAAiD;AACjD,2CAA2C;AAC3C,uCAAwC;AACxC,wEAAmG;AAI5F,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAErD,QAAQ,CAAC,MAAgB;QACvB,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QACzB,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,yCAAe,EAAE,MAAM,CAAC,CAAA;IACtD,CAAC;IAED,mBAAmB,CAAC,MAAgB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4CAAkB,EAAE,MAAM,CAAC,CAAA;IACvD,CAAC;IAED,mBAAmB,CAAC,MAAgB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,2CAAiB,EAAE,MAAM,CAAC,CAAA;IACtD,CAAC;CACF,CAAA;AAfY,uBAAuB;IADnC,IAAA,mBAAU,GAAE;6CAE6B,gBAAS;GADtC,uBAAuB,CAenC;AAfY,0DAAuB"}
@@ -0,0 +1,8 @@
1
+ import { Composer, FilterQuery, Middleware } from 'grammy';
2
+ import { Chat } from '@grammyjs/types';
3
+ export declare type Filter<T extends any[], F> = T extends [] ? [] : T extends [infer Head, ...infer Tail] ? Head extends F ? Filter<Tail, F> : [Head, ...Filter<Tail, F>] : [];
4
+ export declare type StringOrRegexQuery = string | RegExp | string[];
5
+ export declare type CommandQuery = 'start' | 'help' | 'settings' | 'admin';
6
+ export declare type BotQuery = 'on' | 'command' | 'hears' | 'gameQuery' | 'inlineQuery' | 'callbackQuery';
7
+ export declare type ComposerMethodArgs<T extends Composer<never>, U extends FilterQuery | StringOrRegexQuery | CommandQuery> = Filter<Parameters<any>, Middleware<never>>;
8
+ export declare type ChatTypesEnum = Chat['type'];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=grammy-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grammy-types.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/types/grammy-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './grammy-types';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./grammy-types"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/types/index.ts"],"names":[],"mappings":";;;AAAA,yDAA8B"}
@@ -0,0 +1,3 @@
1
+ import { Bot } from 'grammy';
2
+ import { GrammyModuleOptions } from '../interfaces';
3
+ export declare function createBotFactory(options: GrammyModuleOptions): Promise<Bot<any>>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBotFactory = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const grammy_1 = require("grammy");
6
+ const debug_1 = require("debug");
7
+ const log = (0, debug_1.default)('nestjs-grammy:create-bot-factory.util');
8
+ function createBotFactory(options) {
9
+ var _a;
10
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
11
+ const bot = new grammy_1.Bot(options.token, options.options);
12
+ bot.use(...((_a = options.middlewares) !== null && _a !== void 0 ? _a : []));
13
+ if (!bot.isInited()) {
14
+ yield bot.init();
15
+ log(`To optimize (for example):`);
16
+ log(`export BOT_INFO='${JSON.stringify(bot.botInfo)}'`);
17
+ log(`(and in forRoot():)`);
18
+ log(`options: {botInfo: JSON.parse(process.env.BOT_INFO)},`);
19
+ }
20
+ log(`createBotFactory creating bot: `, options.botName);
21
+ return bot;
22
+ });
23
+ }
24
+ exports.createBotFactory = createBotFactory;
25
+ //# sourceMappingURL=create-bot-factory.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-bot-factory.util.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/utils/create-bot-factory.util.ts"],"names":[],"mappings":";;;;AAAA,mCAA4B;AAG5B,iCAAyB;AACzB,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,uCAAuC,CAAC,CAAA;AAE1D,SAAsB,gBAAgB,CAAC,OAA4B;;;QACjE,MAAM,GAAG,GAAG,IAAI,YAAG,CAAM,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QAExD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAA,OAAO,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,CAAA;QAEvC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAChB,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACjC,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACvD,GAAG,CAAC,qBAAqB,CAAC,CAAA;YAC1B,GAAG,CAAC,uDAAuD,CAAC,CAAA;SAC7D;QACD,GAAG,CAAC,iCAAiC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACvD,OAAO,GAAG,CAAA;;CACX;AAdD,4CAcC"}
@@ -0,0 +1,3 @@
1
+ import { ComposerMetadataChatType, ComposerMetadataPredicate } from '../interfaces';
2
+ export declare function createComposerDecorator(method: ComposerMetadataChatType['method']): (arg: ComposerMetadataChatType['arg']) => MethodDecorator;
3
+ export declare function createComposerDecorator(method: ComposerMetadataPredicate['method']): (arg: ComposerMetadataPredicate['arg']) => MethodDecorator;