@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.
- package/CHANGELOG.md +54 -0
- package/README.md +362 -0
- package/package.json +48 -0
- package/src/decorators/composer/chat-type.decorator.d.ts +1 -0
- package/src/decorators/composer/chat-type.decorator.js +6 -0
- package/src/decorators/composer/chat-type.decorator.js.map +1 -0
- package/src/decorators/composer/drop.decorator.d.ts +1 -0
- package/src/decorators/composer/drop.decorator.js +6 -0
- package/src/decorators/composer/drop.decorator.js.map +1 -0
- package/src/decorators/composer/filter.decorator.d.ts +1 -0
- package/src/decorators/composer/filter.decorator.js +6 -0
- package/src/decorators/composer/filter.decorator.js.map +1 -0
- package/src/decorators/composer/index.d.ts +3 -0
- package/src/decorators/composer/index.js +7 -0
- package/src/decorators/composer/index.js.map +1 -0
- package/src/decorators/core/index.d.ts +2 -0
- package/src/decorators/core/index.js +6 -0
- package/src/decorators/core/index.js.map +1 -0
- package/src/decorators/core/inject-bot.decorator.d.ts +1 -0
- package/src/decorators/core/inject-bot.decorator.js +8 -0
- package/src/decorators/core/inject-bot.decorator.js.map +1 -0
- package/src/decorators/core/update.decorator.d.ts +5 -0
- package/src/decorators/core/update.decorator.js +12 -0
- package/src/decorators/core/update.decorator.js.map +1 -0
- package/src/decorators/index.d.ts +4 -0
- package/src/decorators/index.js +8 -0
- package/src/decorators/index.js.map +1 -0
- package/src/decorators/listeners/admin.decorator.d.ts +6 -0
- package/src/decorators/listeners/admin.decorator.js +11 -0
- package/src/decorators/listeners/admin.decorator.js.map +1 -0
- package/src/decorators/listeners/callback-query.decorator.d.ts +6 -0
- package/src/decorators/listeners/callback-query.decorator.js +11 -0
- package/src/decorators/listeners/callback-query.decorator.js.map +1 -0
- package/src/decorators/listeners/command.decorator.d.ts +6 -0
- package/src/decorators/listeners/command.decorator.js +11 -0
- package/src/decorators/listeners/command.decorator.js.map +1 -0
- package/src/decorators/listeners/hears.decorator.d.ts +6 -0
- package/src/decorators/listeners/hears.decorator.js +11 -0
- package/src/decorators/listeners/hears.decorator.js.map +1 -0
- package/src/decorators/listeners/help.decorator.d.ts +6 -0
- package/src/decorators/listeners/help.decorator.js +11 -0
- package/src/decorators/listeners/help.decorator.js.map +1 -0
- package/src/decorators/listeners/index.d.ts +9 -0
- package/src/decorators/listeners/index.js +14 -0
- package/src/decorators/listeners/index.js.map +1 -0
- package/src/decorators/listeners/inline-query.decorator.d.ts +6 -0
- package/src/decorators/listeners/inline-query.decorator.js +11 -0
- package/src/decorators/listeners/inline-query.decorator.js.map +1 -0
- package/src/decorators/listeners/on.decorator.d.ts +6 -0
- package/src/decorators/listeners/on.decorator.js +11 -0
- package/src/decorators/listeners/on.decorator.js.map +1 -0
- package/src/decorators/listeners/settings.decorator.d.ts +6 -0
- package/src/decorators/listeners/settings.decorator.js +11 -0
- package/src/decorators/listeners/settings.decorator.js.map +1 -0
- package/src/decorators/listeners/start.decorator.d.ts +6 -0
- package/src/decorators/listeners/start.decorator.js +11 -0
- package/src/decorators/listeners/start.decorator.js.map +1 -0
- package/src/decorators/params/context.decorator.d.ts +2 -0
- package/src/decorators/params/context.decorator.js +8 -0
- package/src/decorators/params/context.decorator.js.map +1 -0
- package/src/decorators/params/index.d.ts +4 -0
- package/src/decorators/params/index.js +8 -0
- package/src/decorators/params/index.js.map +1 -0
- package/src/decorators/params/message.decorator.d.ts +4 -0
- package/src/decorators/params/message.decorator.js +10 -0
- package/src/decorators/params/message.decorator.js.map +1 -0
- package/src/decorators/params/next.decorator.d.ts +1 -0
- package/src/decorators/params/next.decorator.js +7 -0
- package/src/decorators/params/next.decorator.js.map +1 -0
- package/src/decorators/params/sender.decorator.d.ts +4 -0
- package/src/decorators/params/sender.decorator.js +10 -0
- package/src/decorators/params/sender.decorator.js.map +1 -0
- package/src/enums/grammy-paramtype.enum.d.ts +6 -0
- package/src/enums/grammy-paramtype.enum.js +12 -0
- package/src/enums/grammy-paramtype.enum.js.map +1 -0
- package/src/enums/index.d.ts +1 -0
- package/src/enums/index.js +5 -0
- package/src/enums/index.js.map +1 -0
- package/src/errors/grammy.exception.d.ts +2 -0
- package/src/errors/grammy.exception.js +7 -0
- package/src/errors/grammy.exception.js.map +1 -0
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +5 -0
- package/src/errors/index.js.map +1 -0
- package/src/execution-context/grammy-arguments-host.d.ts +8 -0
- package/src/execution-context/grammy-arguments-host.js +20 -0
- package/src/execution-context/grammy-arguments-host.js.map +1 -0
- package/src/execution-context/grammy-execution-context.d.ts +10 -0
- package/src/execution-context/grammy-execution-context.js +23 -0
- package/src/execution-context/grammy-execution-context.js.map +1 -0
- package/src/execution-context/index.d.ts +3 -0
- package/src/execution-context/index.js +7 -0
- package/src/execution-context/index.js.map +1 -0
- package/src/execution-context/tg-arguments-host.interface.d.ts +5 -0
- package/src/execution-context/tg-arguments-host.interface.js +3 -0
- package/src/execution-context/tg-arguments-host.interface.js.map +1 -0
- package/src/factories/grammy-params-factory.d.ts +6 -0
- package/src/factories/grammy-params-factory.js +25 -0
- package/src/factories/grammy-params-factory.js.map +1 -0
- package/src/factories/index.d.ts +1 -0
- package/src/factories/index.js +5 -0
- package/src/factories/index.js.map +1 -0
- package/src/index.d.ts +13 -0
- package/src/index.js +17 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/composer-metadata.interface.d.ts +14 -0
- package/src/interfaces/composer-metadata.interface.js +3 -0
- package/src/interfaces/composer-metadata.interface.js.map +1 -0
- package/src/interfaces/grammy-exception-filter.interface.d.ts +4 -0
- package/src/interfaces/grammy-exception-filter.interface.js +3 -0
- package/src/interfaces/grammy-exception-filter.interface.js.map +1 -0
- package/src/interfaces/grammy-options.interface.d.ts +22 -0
- package/src/interfaces/grammy-options.interface.js +3 -0
- package/src/interfaces/grammy-options.interface.js.map +1 -0
- package/src/interfaces/index.d.ts +4 -0
- package/src/interfaces/index.js +8 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/listener-metadata.interface.d.ts +6 -0
- package/src/interfaces/listener-metadata.interface.js +3 -0
- package/src/interfaces/listener-metadata.interface.js.map +1 -0
- package/src/nestjs-grammy-core.module.d.ts +13 -0
- package/src/nestjs-grammy-core.module.js +108 -0
- package/src/nestjs-grammy-core.module.js.map +1 -0
- package/src/nestjs-grammy.constants.d.ts +8 -0
- package/src/nestjs-grammy.constants.js +13 -0
- package/src/nestjs-grammy.constants.js.map +1 -0
- package/src/nestjs-grammy.module.d.ts +6 -0
- package/src/nestjs-grammy.module.js +32 -0
- package/src/nestjs-grammy.module.js.map +1 -0
- package/src/services/base-explorer.service.d.ts +7 -0
- package/src/services/base-explorer.service.js +43 -0
- package/src/services/base-explorer.service.js.map +1 -0
- package/src/services/index.d.ts +3 -0
- package/src/services/index.js +7 -0
- package/src/services/index.js.map +1 -0
- package/src/services/listeners-explorer.service.d.ts +29 -0
- package/src/services/listeners-explorer.service.js +104 -0
- package/src/services/listeners-explorer.service.js.map +1 -0
- package/src/services/metadata-accessor.service.d.ts +9 -0
- package/src/services/metadata-accessor.service.js +30 -0
- package/src/services/metadata-accessor.service.js.map +1 -0
- package/src/types/grammy-types.d.ts +8 -0
- package/src/types/grammy-types.js +3 -0
- package/src/types/grammy-types.js.map +1 -0
- package/src/types/index.d.ts +1 -0
- package/src/types/index.js +5 -0
- package/src/types/index.js.map +1 -0
- package/src/utils/create-bot-factory.util.d.ts +3 -0
- package/src/utils/create-bot-factory.util.js +25 -0
- package/src/utils/create-bot-factory.util.js.map +1 -0
- package/src/utils/create-composer-decorator.util.d.ts +3 -0
- package/src/utils/create-composer-decorator.util.js +22 -0
- package/src/utils/create-composer-decorator.util.js.map +1 -0
- package/src/utils/create-emiiter-decorator.util.d.ts +3 -0
- package/src/utils/create-emiiter-decorator.util.js +23 -0
- package/src/utils/create-emiiter-decorator.util.js.map +1 -0
- package/src/utils/get-bot-name.util.d.ts +1 -0
- package/src/utils/get-bot-name.util.js +9 -0
- package/src/utils/get-bot-name.util.js.map +1 -0
- package/src/utils/index.d.ts +4 -0
- package/src/utils/index.js +8 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/param-decorator.util.d.ts +6 -0
- package/src/utils/param-decorator.util.js +26 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"grammy-options.interface.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/interfaces/grammy-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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,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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/grammy-nestjs/src/types/index.ts"],"names":[],"mappings":";;;AAAA,yDAA8B"}
|
|
@@ -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;
|