max-nestjs 0.0.5 → 0.0.6

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 (82) hide show
  1. package/dist/constants.d.ts +20 -0
  2. package/dist/constants.js +29 -0
  3. package/dist/constants.js.map +1 -0
  4. package/dist/{max-user.decorator.js → decorators/auth.js} +1 -1
  5. package/dist/decorators/auth.js.map +1 -0
  6. package/dist/decorators/common.d.ts +28 -0
  7. package/dist/decorators/common.js +42 -0
  8. package/dist/decorators/common.js.map +1 -0
  9. package/dist/decorators/index.d.ts +2 -0
  10. package/dist/decorators/index.js +19 -0
  11. package/dist/decorators/index.js.map +1 -0
  12. package/dist/execution-context.d.ts +20 -0
  13. package/dist/execution-context.js +43 -0
  14. package/dist/execution-context.js.map +1 -0
  15. package/dist/guards/auth.guard.d.ts +9 -0
  16. package/dist/{max-auth.guard.js → guards/auth.guard.js} +9 -9
  17. package/dist/guards/auth.guard.js.map +1 -0
  18. package/dist/index.d.ts +11 -8
  19. package/dist/index.js +24 -8
  20. package/dist/index.js.map +1 -1
  21. package/dist/interfaces.d.ts +44 -0
  22. package/dist/{max.interface.js → interfaces.js} +1 -1
  23. package/dist/interfaces.js.map +1 -0
  24. package/dist/max.module.d.ts +21 -3
  25. package/dist/max.module.js +151 -30
  26. package/dist/max.module.js.map +1 -1
  27. package/dist/params.factory.d.ts +7 -0
  28. package/dist/params.factory.js +31 -0
  29. package/dist/params.factory.js.map +1 -0
  30. package/dist/scenes/base-scene.d.ts +22 -0
  31. package/dist/scenes/base-scene.js +39 -0
  32. package/dist/scenes/base-scene.js.map +1 -0
  33. package/dist/scenes/context.d.ts +17 -0
  34. package/dist/scenes/context.js +16 -0
  35. package/dist/scenes/context.js.map +1 -0
  36. package/dist/scenes/index.d.ts +11 -0
  37. package/dist/scenes/index.js +21 -0
  38. package/dist/scenes/index.js.map +1 -0
  39. package/dist/scenes/scene-context.d.ts +38 -0
  40. package/dist/scenes/scene-context.js +95 -0
  41. package/dist/scenes/scene-context.js.map +1 -0
  42. package/dist/scenes/session.d.ts +36 -0
  43. package/dist/scenes/session.js +63 -0
  44. package/dist/scenes/session.js.map +1 -0
  45. package/dist/scenes/stage.d.ts +35 -0
  46. package/dist/scenes/stage.js +66 -0
  47. package/dist/scenes/stage.js.map +1 -0
  48. package/dist/scenes/wizard-context.d.ts +28 -0
  49. package/dist/scenes/wizard-context.js +36 -0
  50. package/dist/scenes/wizard-context.js.map +1 -0
  51. package/dist/scenes/wizard-scene.d.ts +19 -0
  52. package/dist/scenes/wizard-scene.js +49 -0
  53. package/dist/scenes/wizard-scene.js.map +1 -0
  54. package/dist/services/base-explorer.service.d.ts +7 -0
  55. package/dist/services/base-explorer.service.js +29 -0
  56. package/dist/services/base-explorer.service.js.map +1 -0
  57. package/dist/services/index.d.ts +3 -0
  58. package/dist/services/index.js +10 -0
  59. package/dist/services/index.js.map +1 -0
  60. package/dist/services/listeners-explorer.service.d.ts +33 -0
  61. package/dist/services/listeners-explorer.service.js +179 -0
  62. package/dist/services/listeners-explorer.service.js.map +1 -0
  63. package/dist/services/metadata-accessor.service.d.ts +12 -0
  64. package/dist/services/metadata-accessor.service.js +44 -0
  65. package/dist/services/metadata-accessor.service.js.map +1 -0
  66. package/dist/utils.d.ts +12 -0
  67. package/dist/utils.js +41 -0
  68. package/dist/utils.js.map +1 -0
  69. package/dist/{max.validation.d.ts → validation.d.ts} +2 -2
  70. package/dist/{max.validation.js → validation.js} +4 -4
  71. package/dist/validation.js.map +1 -0
  72. package/package.json +4 -3
  73. package/dist/max-auth.guard.d.ts +0 -9
  74. package/dist/max-auth.guard.js.map +0 -1
  75. package/dist/max-user.decorator.js.map +0 -1
  76. package/dist/max.constants.d.ts +0 -3
  77. package/dist/max.constants.js +0 -7
  78. package/dist/max.constants.js.map +0 -1
  79. package/dist/max.interface.d.ts +0 -17
  80. package/dist/max.interface.js.map +0 -1
  81. package/dist/max.validation.js.map +0 -1
  82. /package/dist/{max-user.decorator.d.ts → decorators/auth.d.ts} +0 -0
@@ -0,0 +1,20 @@
1
+ export declare const UPDATE_METADATA = "MAX_UPDATE_METADATA";
2
+ export declare const SCENE_METADATA = "MAX_SCENE_METADATA";
3
+ export declare const COMPOSER_METADATA = "MAX_COMPOSER_METADATA";
4
+ export declare const LISTENERS_METADATA = "MAX_LISTENERS_METADATA";
5
+ export declare const WIZARD_STEP_METADATA = "MAX_WIZARD_STEP_METADATA";
6
+ export declare const MAX_MODULE_OPTIONS = "MAX_MODULE_OPTIONS";
7
+ export declare const MAX_BOT_NAME = "MAX_BOT_NAME";
8
+ export declare const MAX_STAGE = "MAX_STAGE";
9
+ export declare const DEFAULT_BOT_NAME = "DEFAULT_MAX_BOT";
10
+ export declare const PARAM_ARGS_METADATA = "__routeArguments__";
11
+ export declare const DEFAULT_MAX_INIT_DATA_HEADER = "x-max-init-data";
12
+ export declare const MAX_WEB_APP_DATA_KEY = "WebAppData";
13
+ /** Тип параметра обработчика, разрешаемый MaxParamsFactory. */
14
+ export declare enum MaxParamtype {
15
+ CONTEXT = 0,
16
+ NEXT = 1,
17
+ SENDER = 2,
18
+ MESSAGE = 3,
19
+ PAYLOAD = 4
20
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MaxParamtype = exports.MAX_WEB_APP_DATA_KEY = exports.DEFAULT_MAX_INIT_DATA_HEADER = exports.PARAM_ARGS_METADATA = exports.DEFAULT_BOT_NAME = exports.MAX_STAGE = exports.MAX_BOT_NAME = exports.MAX_MODULE_OPTIONS = exports.WIZARD_STEP_METADATA = exports.LISTENERS_METADATA = exports.COMPOSER_METADATA = exports.SCENE_METADATA = exports.UPDATE_METADATA = void 0;
4
+ const constants_1 = require("@nestjs/common/constants");
5
+ // Метаданные классов/методов
6
+ exports.UPDATE_METADATA = 'MAX_UPDATE_METADATA';
7
+ exports.SCENE_METADATA = 'MAX_SCENE_METADATA';
8
+ exports.COMPOSER_METADATA = 'MAX_COMPOSER_METADATA';
9
+ exports.LISTENERS_METADATA = 'MAX_LISTENERS_METADATA';
10
+ exports.WIZARD_STEP_METADATA = 'MAX_WIZARD_STEP_METADATA';
11
+ // DI-токены
12
+ exports.MAX_MODULE_OPTIONS = 'MAX_MODULE_OPTIONS';
13
+ exports.MAX_BOT_NAME = 'MAX_BOT_NAME';
14
+ exports.MAX_STAGE = 'MAX_STAGE';
15
+ exports.DEFAULT_BOT_NAME = 'DEFAULT_MAX_BOT';
16
+ // Метаданные параметров (переиспользуем nest-овский ключ ROUTE_ARGS)
17
+ exports.PARAM_ARGS_METADATA = constants_1.ROUTE_ARGS_METADATA;
18
+ exports.DEFAULT_MAX_INIT_DATA_HEADER = 'x-max-init-data';
19
+ exports.MAX_WEB_APP_DATA_KEY = 'WebAppData';
20
+ /** Тип параметра обработчика, разрешаемый MaxParamsFactory. */
21
+ var MaxParamtype;
22
+ (function (MaxParamtype) {
23
+ MaxParamtype[MaxParamtype["CONTEXT"] = 0] = "CONTEXT";
24
+ MaxParamtype[MaxParamtype["NEXT"] = 1] = "NEXT";
25
+ MaxParamtype[MaxParamtype["SENDER"] = 2] = "SENDER";
26
+ MaxParamtype[MaxParamtype["MESSAGE"] = 3] = "MESSAGE";
27
+ MaxParamtype[MaxParamtype["PAYLOAD"] = 4] = "PAYLOAD";
28
+ })(MaxParamtype || (exports.MaxParamtype = MaxParamtype = {}));
29
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,wDAA8D;AAE9D,6BAA6B;AAChB,QAAA,eAAe,GAAG,qBAAqB,CAAA;AACvC,QAAA,cAAc,GAAG,oBAAoB,CAAA;AACrC,QAAA,iBAAiB,GAAG,uBAAuB,CAAA;AAC3C,QAAA,kBAAkB,GAAG,wBAAwB,CAAA;AAC7C,QAAA,oBAAoB,GAAG,0BAA0B,CAAA;AAE9D,YAAY;AACC,QAAA,kBAAkB,GAAG,oBAAoB,CAAA;AACzC,QAAA,YAAY,GAAG,cAAc,CAAA;AAC7B,QAAA,SAAS,GAAG,WAAW,CAAA;AACvB,QAAA,gBAAgB,GAAG,iBAAiB,CAAA;AAEjD,qEAAqE;AACxD,QAAA,mBAAmB,GAAG,+BAAmB,CAAA;AAEzC,QAAA,4BAA4B,GAAG,iBAAiB,CAAA;AAChD,QAAA,oBAAoB,GAAG,YAAY,CAAA;AAEhD,+DAA+D;AAC/D,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,qDAAO,CAAA;IACP,+CAAI,CAAA;IACJ,mDAAM,CAAA;IACN,qDAAO,CAAA;IACP,qDAAO,CAAA;AACT,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB"}
@@ -10,4 +10,4 @@ exports.MaxUser = (0, common_1.createParamDecorator)((prop = null, ctx) => {
10
10
  }
11
11
  return prop ? user[prop] : user;
12
12
  });
13
- //# sourceMappingURL=max-user.decorator.js.map
13
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/decorators/auth.ts"],"names":[],"mappings":";;;AAAA,2CAA4E;AAG/D,QAAA,OAAO,GAAG,IAAA,6BAAoB,EACzC,CAAC,OAAiC,IAAI,EAAE,GAAqB,EAAE,EAAE;IAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAc,CAAA;IAC3D,MAAM,IAAI,GAAG,OAAO,EAAE,WAAW,EAAE,IAAI,CAAA;IAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACjC,CAAC,CACF,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { Context } from '@maxhub/max-bot-api';
2
+ import { SceneOptions } from '../scenes';
3
+ /** Класс-обработчик апдейтов (аналог `@Controller`). Регистрируется на боте. */
4
+ export declare const Update: () => ClassDecorator;
5
+ /** Класс-обработчик отдельного composer'а; добавляется в Stage до сцен. */
6
+ export declare const MaxComposer: () => ClassDecorator;
7
+ /** Базовая сцена. */
8
+ export declare const Scene: (sceneId: string, options?: SceneOptions<Context>) => ClassDecorator;
9
+ /** Wizard-сцена (пошаговый диалог). */
10
+ export declare const Wizard: (sceneId: string, options?: SceneOptions<Context>) => ClassDecorator;
11
+ /** Инжект бота по имени. */
12
+ export declare const InjectBot: (botName?: string) => ParameterDecorator;
13
+ export declare const Use: (...args: unknown[]) => MethodDecorator;
14
+ export declare const On: (...args: ("message_callback" | "message_created" | "message_removed" | "message_edited" | "bot_added" | "bot_removed" | "user_added" | "user_removed" | "bot_started" | "chat_title_changed" | "message_construction_request" | "message_constructed" | "message_chat_created")[]) => MethodDecorator;
15
+ export declare const Command: (...args: unknown[]) => MethodDecorator;
16
+ export declare const Hears: (...args: unknown[]) => MethodDecorator;
17
+ export declare const Action: (...args: unknown[]) => MethodDecorator;
18
+ /** Обработчик входа в сцену. */
19
+ export declare const SceneEnter: (...args: unknown[]) => MethodDecorator;
20
+ /** Обработчик выхода из сцены. */
21
+ export declare const SceneLeave: (...args: unknown[]) => MethodDecorator;
22
+ /** Шаг wizard-сцены (нумерация с 0). */
23
+ export declare const WizardStep: (step: number) => MethodDecorator;
24
+ export declare const Ctx: (data?: string) => ParameterDecorator;
25
+ export declare const Next: (data?: string) => ParameterDecorator;
26
+ export declare const Sender: (data?: string) => ParameterDecorator;
27
+ export declare const Message: (data?: string) => ParameterDecorator;
28
+ export declare const Payload: (data?: string) => ParameterDecorator;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Payload = exports.Message = exports.Sender = exports.Next = exports.Ctx = exports.WizardStep = exports.SceneLeave = exports.SceneEnter = exports.Action = exports.Hears = exports.Command = exports.On = exports.Use = exports.InjectBot = exports.Wizard = exports.Scene = exports.MaxComposer = exports.Update = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const constants_1 = require("../constants");
6
+ const utils_1 = require("../utils");
7
+ // ── Классы ───────────────────────────────────────────────────────────────────
8
+ /** Класс-обработчик апдейтов (аналог `@Controller`). Регистрируется на боте. */
9
+ const Update = () => (0, common_1.SetMetadata)(constants_1.UPDATE_METADATA, true);
10
+ exports.Update = Update;
11
+ /** Класс-обработчик отдельного composer'а; добавляется в Stage до сцен. */
12
+ const MaxComposer = () => (0, common_1.SetMetadata)(constants_1.COMPOSER_METADATA, true);
13
+ exports.MaxComposer = MaxComposer;
14
+ /** Базовая сцена. */
15
+ const Scene = (sceneId, options) => (0, common_1.SetMetadata)(constants_1.SCENE_METADATA, { sceneId, type: 'base', options });
16
+ exports.Scene = Scene;
17
+ /** Wizard-сцена (пошаговый диалог). */
18
+ const Wizard = (sceneId, options) => (0, common_1.SetMetadata)(constants_1.SCENE_METADATA, { sceneId, type: 'wizard', options });
19
+ exports.Wizard = Wizard;
20
+ /** Инжект бота по имени. */
21
+ const InjectBot = (botName) => (0, common_1.Inject)((0, utils_1.getBotToken)(botName));
22
+ exports.InjectBot = InjectBot;
23
+ // ── Слушатели методов ────────────────────────────────────────────────────────
24
+ exports.Use = (0, utils_1.createListenerDecorator)('use');
25
+ exports.On = (0, utils_1.createListenerDecorator)('on');
26
+ exports.Command = (0, utils_1.createListenerDecorator)('command');
27
+ exports.Hears = (0, utils_1.createListenerDecorator)('hears');
28
+ exports.Action = (0, utils_1.createListenerDecorator)('action');
29
+ /** Обработчик входа в сцену. */
30
+ exports.SceneEnter = (0, utils_1.createListenerDecorator)('enter');
31
+ /** Обработчик выхода из сцены. */
32
+ exports.SceneLeave = (0, utils_1.createListenerDecorator)('leave');
33
+ /** Шаг wizard-сцены (нумерация с 0). */
34
+ const WizardStep = (step) => (0, common_1.SetMetadata)(constants_1.WIZARD_STEP_METADATA, { step });
35
+ exports.WizardStep = WizardStep;
36
+ // ── Параметры ────────────────────────────────────────────────────────────────
37
+ exports.Ctx = (0, utils_1.createParamDecorator)(constants_1.MaxParamtype.CONTEXT);
38
+ exports.Next = (0, utils_1.createParamDecorator)(constants_1.MaxParamtype.NEXT);
39
+ exports.Sender = (0, utils_1.createParamDecorator)(constants_1.MaxParamtype.SENDER);
40
+ exports.Message = (0, utils_1.createParamDecorator)(constants_1.MaxParamtype.MESSAGE);
41
+ exports.Payload = (0, utils_1.createParamDecorator)(constants_1.MaxParamtype.PAYLOAD);
42
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/decorators/common.ts"],"names":[],"mappings":";;;AAAA,2CAAoD;AAEpD,4CAMqB;AAGrB,oCAAqF;AAGrF,gFAAgF;AAEhF,gFAAgF;AACzE,MAAM,MAAM,GAAG,GAAmB,EAAE,CAAC,IAAA,oBAAW,EAAC,2BAAe,EAAE,IAAI,CAAC,CAAA;AAAjE,QAAA,MAAM,UAA2D;AAE9E,2EAA2E;AACpE,MAAM,WAAW,GAAG,GAAmB,EAAE,CAAC,IAAA,oBAAW,EAAC,6BAAiB,EAAE,IAAI,CAAC,CAAA;AAAxE,QAAA,WAAW,eAA6D;AAErF,qBAAqB;AACd,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,OAA+B,EAAkB,EAAE,CACxF,IAAA,oBAAW,EAAwB,0BAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;AAD3E,QAAA,KAAK,SACsE;AAExF,uCAAuC;AAChC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,OAA+B,EAAkB,EAAE,CACzF,IAAA,oBAAW,EAAwB,0BAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;AAD7E,QAAA,MAAM,UACuE;AAE1F,4BAA4B;AACrB,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAsB,EAAE,CAAC,IAAA,eAAM,EAAC,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC,CAAA;AAAlF,QAAA,SAAS,aAAyE;AAE/F,gFAAgF;AAEnE,QAAA,GAAG,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,CAAA;AACpC,QAAA,EAAE,GAAG,IAAA,+BAAuB,EAAa,IAAI,CAAC,CAAA;AAC9C,QAAA,OAAO,GAAG,IAAA,+BAAuB,EAAC,SAAS,CAAC,CAAA;AAC5C,QAAA,KAAK,GAAG,IAAA,+BAAuB,EAAC,OAAO,CAAC,CAAA;AACxC,QAAA,MAAM,GAAG,IAAA,+BAAuB,EAAC,QAAQ,CAAC,CAAA;AAEvD,gCAAgC;AACnB,QAAA,UAAU,GAAG,IAAA,+BAAuB,EAAC,OAAO,CAAC,CAAA;AAC1D,kCAAkC;AACrB,QAAA,UAAU,GAAG,IAAA,+BAAuB,EAAC,OAAO,CAAC,CAAA;AAE1D,wCAAwC;AACjC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAmB,EAAE,CAC1D,IAAA,oBAAW,EAA6B,gCAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;AAD5D,QAAA,UAAU,cACkD;AAEzE,gFAAgF;AAEnE,QAAA,GAAG,GAAG,IAAA,4BAAoB,EAAC,wBAAY,CAAC,OAAO,CAAC,CAAA;AAChD,QAAA,IAAI,GAAG,IAAA,4BAAoB,EAAC,wBAAY,CAAC,IAAI,CAAC,CAAA;AAC9C,QAAA,MAAM,GAAG,IAAA,4BAAoB,EAAC,wBAAY,CAAC,MAAM,CAAC,CAAA;AAClD,QAAA,OAAO,GAAG,IAAA,4BAAoB,EAAC,wBAAY,CAAC,OAAO,CAAC,CAAA;AACpD,QAAA,OAAO,GAAG,IAAA,4BAAoB,EAAC,wBAAY,CAAC,OAAO,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './auth';
2
+ export * from './common';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./auth"), exports);
18
+ __exportStar(require("./common"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB;AACtB,2CAAwB"}
@@ -0,0 +1,20 @@
1
+ import { ArgumentsHost, ContextType, ExecutionContext } from '@nestjs/common';
2
+ import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host';
3
+ export type MaxContextType = 'max' | ContextType;
4
+ /**
5
+ * ExecutionContext для MAX-обработчиков. Позволяет guard'ам и param-декораторам
6
+ * (`@AuthUser`) достать `ctx`/`next` из аргументов `(ctx, next)`.
7
+ * Аналог `TelegrafExecutionContext` из nestjs-telegraf.
8
+ */
9
+ export declare class MaxExecutionContext extends ExecutionContextHost {
10
+ static create(context: ExecutionContext): MaxExecutionContext;
11
+ getType<TContext extends string = MaxContextType>(): TContext;
12
+ getContext<T = unknown>(): T;
13
+ getNext<T = unknown>(): T;
14
+ }
15
+ /** Облегчённый ArgumentsHost (для exception-фильтров). */
16
+ export declare class MaxArgumentsHost extends ExecutionContextHost {
17
+ static create(context: ArgumentsHost): MaxArgumentsHost;
18
+ getContext<T = unknown>(): T;
19
+ getNext<T = unknown>(): T;
20
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MaxArgumentsHost = exports.MaxExecutionContext = void 0;
4
+ const execution_context_host_1 = require("@nestjs/core/helpers/execution-context-host");
5
+ /**
6
+ * ExecutionContext для MAX-обработчиков. Позволяет guard'ам и param-декораторам
7
+ * (`@AuthUser`) достать `ctx`/`next` из аргументов `(ctx, next)`.
8
+ * Аналог `TelegrafExecutionContext` из nestjs-telegraf.
9
+ */
10
+ class MaxExecutionContext extends execution_context_host_1.ExecutionContextHost {
11
+ static create(context) {
12
+ const type = context.getType();
13
+ const ctx = new MaxExecutionContext(context.getArgs(), context.getClass(), context.getHandler());
14
+ ctx.setType(type);
15
+ return ctx;
16
+ }
17
+ getType() {
18
+ return super.getType();
19
+ }
20
+ getContext() {
21
+ return this.getArgByIndex(0);
22
+ }
23
+ getNext() {
24
+ return this.getArgByIndex(1);
25
+ }
26
+ }
27
+ exports.MaxExecutionContext = MaxExecutionContext;
28
+ /** Облегчённый ArgumentsHost (для exception-фильтров). */
29
+ class MaxArgumentsHost extends execution_context_host_1.ExecutionContextHost {
30
+ static create(context) {
31
+ const host = new MaxArgumentsHost(context.getArgs());
32
+ host.setType(context.getType());
33
+ return host;
34
+ }
35
+ getContext() {
36
+ return this.getArgByIndex(0);
37
+ }
38
+ getNext() {
39
+ return this.getArgByIndex(1);
40
+ }
41
+ }
42
+ exports.MaxArgumentsHost = MaxArgumentsHost;
43
+ //# sourceMappingURL=execution-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../src/execution-context.ts"],"names":[],"mappings":";;;AACA,wFAAkF;AAIlF;;;;GAIG;AACH,MAAa,mBAAoB,SAAQ,6CAAoB;IAC3D,MAAM,CAAC,MAAM,CAAC,OAAyB;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,mBAAmB,CACjC,OAAO,CAAC,OAAO,EAAE,EACjB,OAAO,CAAC,QAAQ,EAAE,EAClB,OAAO,CAAC,UAAU,EAAE,CACrB,CAAA;QACD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,OAAO,EAAE,CAAA;IACxB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;CACF;AAvBD,kDAuBC;AAED,0DAA0D;AAC1D,MAAa,gBAAiB,SAAQ,6CAAoB;IACxD,MAAM,CAAC,MAAM,CAAC,OAAsB;QAClC,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;CACF;AAdD,4CAcC"}
@@ -0,0 +1,9 @@
1
+ import { CanActivate, type ExecutionContext } from '@nestjs/common';
2
+ import { MaxValidationService } from '../validation';
3
+ import { MaxModuleOptions } from '../interfaces';
4
+ export declare class MaxAuthGuard implements CanActivate {
5
+ private readonly options;
6
+ private readonly validationService;
7
+ constructor(options: MaxModuleOptions, validationService: MaxValidationService);
8
+ canActivate(context: ExecutionContext): boolean;
9
+ }
@@ -14,20 +14,20 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.MaxAuthGuard = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
- const max_constants_1 = require("./max.constants");
18
- const max_validation_1 = require("./max.validation");
17
+ const validation_1 = require("../validation");
18
+ const constants_1 = require("../constants");
19
19
  let MaxAuthGuard = class MaxAuthGuard {
20
- constructor(options, maxValidationService) {
20
+ constructor(options, validationService) {
21
21
  this.options = options;
22
- this.maxValidationService = maxValidationService;
22
+ this.validationService = validationService;
23
23
  }
24
24
  canActivate(context) {
25
25
  const request = context.switchToHttp().getRequest();
26
- const rawInitData = request.headers[this.options.headerName];
26
+ const rawInitData = request.headers[this.options.headerName ?? constants_1.DEFAULT_MAX_INIT_DATA_HEADER];
27
27
  if (!rawInitData || typeof rawInitData !== 'string') {
28
28
  throw new common_1.UnauthorizedException('MAX init data is missing');
29
29
  }
30
- const initData = this.maxValidationService.verify(rawInitData);
30
+ const initData = this.validationService.verify(rawInitData);
31
31
  request.maxInitData = initData;
32
32
  return true;
33
33
  }
@@ -35,7 +35,7 @@ let MaxAuthGuard = class MaxAuthGuard {
35
35
  exports.MaxAuthGuard = MaxAuthGuard;
36
36
  exports.MaxAuthGuard = MaxAuthGuard = __decorate([
37
37
  (0, common_1.Injectable)(),
38
- __param(0, (0, common_1.Inject)(max_constants_1.MAX_OPTIONS_SYMBOL)),
39
- __metadata("design:paramtypes", [Object, max_validation_1.MaxValidationService])
38
+ __param(0, (0, common_1.Inject)(constants_1.MAX_MODULE_OPTIONS)),
39
+ __metadata("design:paramtypes", [Object, validation_1.MaxValidationService])
40
40
  ], MaxAuthGuard);
41
- //# sourceMappingURL=max-auth.guard.js.map
41
+ //# sourceMappingURL=auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../../src/guards/auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMuB;AAEvB,8CAAoD;AAEpD,4CAA+E;AAGxE,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,YAEmB,OAAyB,EACzB,iBAAuC;QADvC,YAAO,GAAP,OAAO,CAAkB;QACzB,sBAAiB,GAAjB,iBAAiB,CAAsB;IACvD,CAAC;IAEG,WAAW,CAAC,OAAyB;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAc,CAAA;QAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,wCAA4B,CAAC,CAAA;QAE5F,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,IAAI,8BAAqB,CAAC,0BAA0B,CAAC,CAAA;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAE3D,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAA;QAE9B,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AArBY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,8BAAkB,CAAC,CAAA;6CAES,iCAAoB;GAJ/C,YAAY,CAqBxB"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- export * from './max.constants';
2
- export * from './max.interface';
3
- export * from './max.module';
4
- export * from './max-auth.guard';
5
- export * from './max.validation';
6
- export { MaxUser } from './max-user.decorator';
7
- export type { MaxInitData, MaxRequest, MaxUserData } from './types';
8
- export type { MaxBridgeInitData, MaxBridgeInitDataChat, MaxBridgeInitDataUser } from 'max-bridge';
1
+ export * from './scenes';
2
+ export * from './decorators';
3
+ export * from './guards/auth.guard';
4
+ export * from './interfaces';
5
+ export { MaxCoreModule } from './max.module';
6
+ export { MAX_BOT_NAME, MAX_STAGE, MAX_MODULE_OPTIONS, MaxParamtype } from './constants';
7
+ export { getBotToken } from './utils';
8
+ export { MaxParamsFactory } from './params.factory';
9
+ export { MaxExecutionContext, MaxArgumentsHost } from './execution-context';
10
+ export type { MaxContextType } from './execution-context';
11
+ export { MetadataAccessorService, ListenersExplorerService, BaseExplorerService } from './services';
package/dist/index.js CHANGED
@@ -14,12 +14,28 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.MaxUser = void 0;
18
- __exportStar(require("./max.constants"), exports);
19
- __exportStar(require("./max.interface"), exports);
20
- __exportStar(require("./max.module"), exports);
21
- __exportStar(require("./max-auth.guard"), exports);
22
- __exportStar(require("./max.validation"), exports);
23
- var max_user_decorator_1 = require("./max-user.decorator");
24
- Object.defineProperty(exports, "MaxUser", { enumerable: true, get: function () { return max_user_decorator_1.MaxUser; } });
17
+ exports.BaseExplorerService = exports.ListenersExplorerService = exports.MetadataAccessorService = exports.MaxArgumentsHost = exports.MaxExecutionContext = exports.MaxParamsFactory = exports.getBotToken = exports.MaxParamtype = exports.MAX_MODULE_OPTIONS = exports.MAX_STAGE = exports.MAX_BOT_NAME = exports.MaxCoreModule = void 0;
18
+ // Публичный API мини-фреймворка сцен/wizard для @maxhub/max-bot-api.
19
+ __exportStar(require("./scenes"), exports);
20
+ __exportStar(require("./decorators"), exports);
21
+ __exportStar(require("./guards/auth.guard"), exports);
22
+ __exportStar(require("./interfaces"), exports);
23
+ var max_module_1 = require("./max.module");
24
+ Object.defineProperty(exports, "MaxCoreModule", { enumerable: true, get: function () { return max_module_1.MaxCoreModule; } });
25
+ var constants_1 = require("./constants");
26
+ Object.defineProperty(exports, "MAX_BOT_NAME", { enumerable: true, get: function () { return constants_1.MAX_BOT_NAME; } });
27
+ Object.defineProperty(exports, "MAX_STAGE", { enumerable: true, get: function () { return constants_1.MAX_STAGE; } });
28
+ Object.defineProperty(exports, "MAX_MODULE_OPTIONS", { enumerable: true, get: function () { return constants_1.MAX_MODULE_OPTIONS; } });
29
+ Object.defineProperty(exports, "MaxParamtype", { enumerable: true, get: function () { return constants_1.MaxParamtype; } });
30
+ var utils_1 = require("./utils");
31
+ Object.defineProperty(exports, "getBotToken", { enumerable: true, get: function () { return utils_1.getBotToken; } });
32
+ var params_factory_1 = require("./params.factory");
33
+ Object.defineProperty(exports, "MaxParamsFactory", { enumerable: true, get: function () { return params_factory_1.MaxParamsFactory; } });
34
+ var execution_context_1 = require("./execution-context");
35
+ Object.defineProperty(exports, "MaxExecutionContext", { enumerable: true, get: function () { return execution_context_1.MaxExecutionContext; } });
36
+ Object.defineProperty(exports, "MaxArgumentsHost", { enumerable: true, get: function () { return execution_context_1.MaxArgumentsHost; } });
37
+ var services_1 = require("./services");
38
+ Object.defineProperty(exports, "MetadataAccessorService", { enumerable: true, get: function () { return services_1.MetadataAccessorService; } });
39
+ Object.defineProperty(exports, "ListenersExplorerService", { enumerable: true, get: function () { return services_1.ListenersExplorerService; } });
40
+ Object.defineProperty(exports, "BaseExplorerService", { enumerable: true, get: function () { return services_1.BaseExplorerService; } });
25
41
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAA+B;AAC/B,kDAA+B;AAC/B,+CAA4B;AAC5B,mDAAgC;AAChC,mDAAgC;AAChC,2DAA8C;AAArC,6GAAA,OAAO,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qEAAqE;AACrE,2CAAwB;AACxB,+CAA4B;AAC5B,sDAAmC;AACnC,+CAA4B;AAC5B,2CAA4C;AAAnC,2GAAA,aAAa,OAAA;AACtB,yCAAuF;AAA9E,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAAE,yGAAA,YAAY,OAAA;AAClE,iCAAqC;AAA5B,oGAAA,WAAW,OAAA;AACpB,mDAAmD;AAA1C,kHAAA,gBAAgB,OAAA;AACzB,yDAA2E;AAAlE,wHAAA,mBAAmB,OAAA;AAAE,qHAAA,gBAAgB,OAAA;AAE9C,uCAAmG;AAA1F,mHAAA,uBAAuB,OAAA;AAAE,oHAAA,wBAAwB,OAAA;AAAE,+GAAA,mBAAmB,OAAA"}
@@ -0,0 +1,44 @@
1
+ import { ModuleMetadata, Type } from '@nestjs/common';
2
+ import { Bot, Context, Middleware } from '@maxhub/max-bot-api';
3
+ import { SceneOptions } from './scenes';
4
+ /** Запись слушателя метода: имя метода composer'а + его аргументы. */
5
+ export interface ListenerMetadata {
6
+ method: 'use' | 'on' | 'command' | 'hears' | 'action' | 'enter' | 'leave';
7
+ args: unknown[];
8
+ }
9
+ export interface SceneMetadata {
10
+ sceneId: string;
11
+ type: 'base' | 'wizard';
12
+ options?: SceneOptions<Context>;
13
+ }
14
+ export interface WizardStepMetadata {
15
+ step: number;
16
+ }
17
+ export interface MaxModuleOptions {
18
+ token: string;
19
+ botName?: string;
20
+ /** Кастомный класс контекста (по умолчанию `WizardContext`). */
21
+ contextType?: new (...args: ConstructorParameters<typeof Context>) => Context;
22
+ /** Ограничить сканирование указанными модулями. */
23
+ include?: Function[];
24
+ /** Дополнительные middleware, применяемые сразу после session. */
25
+ middlewares?: ReadonlyArray<Middleware<Context>>;
26
+ /** Запускать ли polling (false для dev/тестов). */
27
+ launch?: boolean;
28
+ /**
29
+ * Имя HTTP-заголовка, из которого guard читает raw init data.
30
+ * По умолчанию: `x-max-init-data`.
31
+ */
32
+ headerName?: string;
33
+ }
34
+ export interface MaxOptionsFactory {
35
+ createMaxOptions(): Promise<MaxModuleOptions> | MaxModuleOptions;
36
+ }
37
+ export interface MaxModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
38
+ botName?: string;
39
+ useExisting?: Type<MaxOptionsFactory>;
40
+ useClass?: Type<MaxOptionsFactory>;
41
+ useFactory?: (...args: any[]) => Promise<MaxModuleOptions> | MaxModuleOptions;
42
+ inject?: any[];
43
+ }
44
+ export type MaxBot = Bot<Context>;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=max.interface.js.map
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""}
@@ -1,5 +1,23 @@
1
- import { type DynamicModule } from '@nestjs/common';
2
- import type { MaxModuleOptions } from './max.interface';
3
- export declare class MaxModule {
1
+ import { DynamicModule, OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common';
2
+ import { ModuleRef } from '@nestjs/core';
3
+ import { MaxModuleAsyncOptions, MaxModuleOptions } from './interfaces';
4
+ /**
5
+ * Корневой модуль мини-фреймворка сцен/wizard для @maxhub/max-bot-api.
6
+ * Аналог `TelegrafModule` из nestjs-telegraf.
7
+ */
8
+ export declare class MaxCoreModule implements OnApplicationBootstrap, OnApplicationShutdown {
9
+ private readonly botName;
10
+ private readonly options;
11
+ private readonly moduleRef;
12
+ private readonly logger;
13
+ private isStopping;
14
+ private bot?;
15
+ constructor(botName: string, options: MaxModuleOptions, moduleRef: ModuleRef);
4
16
  static forRoot(options: MaxModuleOptions): DynamicModule;
17
+ static forRootAsync(options: MaxModuleAsyncOptions): DynamicModule;
18
+ private static coreProviders;
19
+ private static createAsyncProviders;
20
+ onApplicationBootstrap(): void;
21
+ private initialize;
22
+ onApplicationShutdown(): void;
5
23
  }