@escapenavigator/types 1.10.141 → 1.10.143

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 (30) hide show
  1. package/dist/email-builder/index.js +1 -1
  2. package/dist/profile/cross-sale/cross-sale-status.enum.d.ts +6 -0
  3. package/dist/profile/cross-sale/cross-sale-status.enum.js +6 -0
  4. package/dist/profile/cross-sale/crossale-discount-type.enum.d.ts +6 -0
  5. package/dist/profile/cross-sale/crossale-discount-type.enum.js +6 -0
  6. package/dist/profile/marketing-automation/marketing-automation-capabilities.d.ts +18 -0
  7. package/dist/profile/marketing-automation/marketing-automation-capabilities.js +41 -0
  8. package/dist/profile/marketing-automation/marketing-automation-config.dto.d.ts +26 -0
  9. package/dist/profile/marketing-automation/marketing-automation-config.dto.js +41 -0
  10. package/dist/profile/marketing-automation/marketing-automation-default-template.dto.d.ts +18 -0
  11. package/dist/profile/marketing-automation/marketing-automation-default-template.dto.js +45 -0
  12. package/dist/profile/marketing-automation/marketing-automation-discount-type.enum.d.ts +5 -0
  13. package/dist/profile/marketing-automation/marketing-automation-discount-type.enum.js +9 -0
  14. package/dist/profile/marketing-automation/marketing-automation-status.enum.d.ts +5 -0
  15. package/dist/profile/marketing-automation/marketing-automation-status.enum.js +9 -0
  16. package/dist/profile/marketing-automation/marketing-automation-timing.d.ts +30 -0
  17. package/dist/profile/marketing-automation/marketing-automation-timing.js +40 -0
  18. package/dist/profile/marketing-automation/marketing-automation-type.enum.d.ts +22 -0
  19. package/dist/profile/marketing-automation/marketing-automation-type.enum.js +26 -0
  20. package/dist/profile/marketing-automation/marketing-automation.dto.d.ts +36 -0
  21. package/dist/profile/marketing-automation/marketing-automation.dto.js +117 -0
  22. package/dist/profile/marketing-automation/marketing-automation.ro.d.ts +25 -0
  23. package/dist/profile/marketing-automation/marketing-automation.ro.js +84 -0
  24. package/dist/profile/marketing-email/test-send-email-v2.dto.d.ts +56 -0
  25. package/dist/profile/marketing-email/test-send-email-v2.dto.js +85 -0
  26. package/dist/questroom/create-questroom.dto.js +1 -0
  27. package/dist/shared/export-limits.d.ts +18 -0
  28. package/dist/shared/export-limits.js +19 -1
  29. package/dist/tsconfig.build.tsbuildinfo +1 -1
  30. package/package.json +2 -2
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MarketingAutomationRO = exports.MarketingAutomationLocaleRO = void 0;
13
+ /* eslint-disable max-classes-per-file */
14
+ const class_transformer_1 = require("class-transformer");
15
+ const languages_enum_1 = require("../../shared/enum/languages.enum");
16
+ const ro_class_1 = require("../../shared/ro-class");
17
+ const marketing_automation_config_dto_1 = require("./marketing-automation-config.dto");
18
+ const marketing_automation_discount_type_enum_1 = require("./marketing-automation-discount-type.enum");
19
+ const marketing_automation_status_enum_1 = require("./marketing-automation-status.enum");
20
+ const marketing_automation_type_enum_1 = require("./marketing-automation-type.enum");
21
+ class MarketingAutomationLocaleRO {
22
+ }
23
+ exports.MarketingAutomationLocaleRO = MarketingAutomationLocaleRO;
24
+ __decorate([
25
+ (0, class_transformer_1.Expose)(),
26
+ __metadata("design:type", String)
27
+ ], MarketingAutomationLocaleRO.prototype, "language", void 0);
28
+ __decorate([
29
+ (0, class_transformer_1.Expose)(),
30
+ __metadata("design:type", String)
31
+ ], MarketingAutomationLocaleRO.prototype, "feedbackText", void 0);
32
+ __decorate([
33
+ (0, class_transformer_1.Expose)(),
34
+ __metadata("design:type", String)
35
+ ], MarketingAutomationLocaleRO.prototype, "title", void 0);
36
+ __decorate([
37
+ (0, class_transformer_1.Expose)(),
38
+ __metadata("design:type", Object)
39
+ ], MarketingAutomationLocaleRO.prototype, "contentJson", void 0);
40
+ class MarketingAutomationRO extends ro_class_1.RO {
41
+ }
42
+ exports.MarketingAutomationRO = MarketingAutomationRO;
43
+ __decorate([
44
+ (0, class_transformer_1.Expose)(),
45
+ __metadata("design:type", String)
46
+ ], MarketingAutomationRO.prototype, "type", void 0);
47
+ __decorate([
48
+ (0, class_transformer_1.Expose)(),
49
+ __metadata("design:type", String)
50
+ ], MarketingAutomationRO.prototype, "status", void 0);
51
+ __decorate([
52
+ (0, class_transformer_1.Expose)(),
53
+ __metadata("design:type", Boolean)
54
+ ], MarketingAutomationRO.prototype, "isV2", void 0);
55
+ __decorate([
56
+ (0, class_transformer_1.Expose)(),
57
+ __metadata("design:type", Number)
58
+ ], MarketingAutomationRO.prototype, "discount", void 0);
59
+ __decorate([
60
+ (0, class_transformer_1.Expose)(),
61
+ __metadata("design:type", Number)
62
+ ], MarketingAutomationRO.prototype, "discountValidityDays", void 0);
63
+ __decorate([
64
+ (0, class_transformer_1.Expose)(),
65
+ __metadata("design:type", String)
66
+ ], MarketingAutomationRO.prototype, "discountType", void 0);
67
+ __decorate([
68
+ (0, class_transformer_1.Expose)(),
69
+ __metadata("design:type", Boolean)
70
+ ], MarketingAutomationRO.prototype, "sendToAllParticipants", void 0);
71
+ __decorate([
72
+ (0, class_transformer_1.Expose)(),
73
+ __metadata("design:type", Boolean)
74
+ ], MarketingAutomationRO.prototype, "requireSendAds", void 0);
75
+ __decorate([
76
+ (0, class_transformer_1.Expose)(),
77
+ (0, class_transformer_1.Type)(() => marketing_automation_config_dto_1.MarketingAutomationConfigDto),
78
+ __metadata("design:type", marketing_automation_config_dto_1.MarketingAutomationConfigDto)
79
+ ], MarketingAutomationRO.prototype, "config", void 0);
80
+ __decorate([
81
+ (0, class_transformer_1.Expose)(),
82
+ (0, class_transformer_1.Type)(() => MarketingAutomationLocaleRO),
83
+ __metadata("design:type", Array)
84
+ ], MarketingAutomationRO.prototype, "locales", void 0);
@@ -0,0 +1,56 @@
1
+ import { EmailScope } from '../../email-builder';
2
+ import { Languages } from '../../shared/enum/languages.enum';
3
+ import { EmailContentJsonV2Dto } from './create-profile-marketing-email-campaign.dto';
4
+ import { PreviewPromocodeDto } from './preview-campaign-v2.dto';
5
+ /**
6
+ * Request body for `POST /profile-marketing-email-campaigns/test-send-v2`.
7
+ *
8
+ * «Тестовая отправка» письма прямо из режима превью: бэк резолвит
9
+ * переменные шаблона на РЕАЛЬНЫХ данных и шлёт письмо на указанный
10
+ * `email`, как будто оно ушло в запланированное время.
11
+ *
12
+ * Источник данных зависит от scope письма:
13
+ * - письма, привязанные к игре/брони (`order-post-game`,
14
+ * `custom-booking-template`) → нужен `orderCode` (код брони).
15
+ * Бэк находит заказ по коду В РАМКАХ профиля (проверка владения)
16
+ * и резолвит `order.*` / `client.*` / `questroom.*` / `location.*`
17
+ * / `promocode.*` именно по нему;
18
+ * - письма, привязанные к клиенту (`birthday-marketing`,
19
+ * `marketing-campaign`) → нужен `clientId` (номер клиента в профиле).
20
+ */
21
+ export declare class TestSendMarketingEmailV2Dto {
22
+ contentJson: EmailContentJsonV2Dto;
23
+ scope: EmailScope;
24
+ /** Куда отправить тестовое письмо (inbox оператора). */
25
+ email: string;
26
+ /**
27
+ * Код брони (человекочитаемый, напр. `B1234567`). Обязателен для
28
+ * scope'ов, завязанных на игру/бронь. Бэк проверяет, что бронь
29
+ * принадлежит текущему профилю.
30
+ */
31
+ orderCode?: string;
32
+ /**
33
+ * Номер (id) клиента в рамках профиля. Обязателен для scope'ов,
34
+ * завязанных на клиента (birthday / marketing-campaign).
35
+ */
36
+ clientId?: number;
37
+ /**
38
+ * Необязательная тема письма (если редактор/форма её знает —
39
+ * напр. `locale.title` из карточки рассылки). К теме всё равно
40
+ * добавляется префикс `[TEST]`. Нужна, чтобы при отправке из
41
+ * родительской карточки проверить и тему письма.
42
+ */
43
+ subject?: string;
44
+ /**
45
+ * Язык письма. При отправке из карточки рассылки фронт шлёт язык
46
+ * выбранной локали — бэк подставляет его в `order.language`, чтобы
47
+ * резолверы выбрали нужную локаль квеста/локации и формат даты.
48
+ */
49
+ language?: Languages;
50
+ /**
51
+ * Промокод для теста (код/скидка/срок) — те же поля, что и в
52
+ * preview. Если передан, письмо рендерит реальную «валидность»
53
+ * (срок действия) из настроек скидки рассылки, а не общий образец.
54
+ */
55
+ previewPromocode?: PreviewPromocodeDto;
56
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TestSendMarketingEmailV2Dto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const email_builder_1 = require("../../email-builder");
16
+ const languages_enum_1 = require("../../shared/enum/languages.enum");
17
+ const create_profile_marketing_email_campaign_dto_1 = require("./create-profile-marketing-email-campaign.dto");
18
+ const preview_campaign_v2_dto_1 = require("./preview-campaign-v2.dto");
19
+ /**
20
+ * Request body for `POST /profile-marketing-email-campaigns/test-send-v2`.
21
+ *
22
+ * «Тестовая отправка» письма прямо из режима превью: бэк резолвит
23
+ * переменные шаблона на РЕАЛЬНЫХ данных и шлёт письмо на указанный
24
+ * `email`, как будто оно ушло в запланированное время.
25
+ *
26
+ * Источник данных зависит от scope письма:
27
+ * - письма, привязанные к игре/брони (`order-post-game`,
28
+ * `custom-booking-template`) → нужен `orderCode` (код брони).
29
+ * Бэк находит заказ по коду В РАМКАХ профиля (проверка владения)
30
+ * и резолвит `order.*` / `client.*` / `questroom.*` / `location.*`
31
+ * / `promocode.*` именно по нему;
32
+ * - письма, привязанные к клиенту (`birthday-marketing`,
33
+ * `marketing-campaign`) → нужен `clientId` (номер клиента в профиле).
34
+ */
35
+ class TestSendMarketingEmailV2Dto {
36
+ }
37
+ exports.TestSendMarketingEmailV2Dto = TestSendMarketingEmailV2Dto;
38
+ __decorate([
39
+ (0, class_validator_1.IsDefined)(),
40
+ (0, class_validator_1.ValidateNested)(),
41
+ (0, class_transformer_1.Type)(() => create_profile_marketing_email_campaign_dto_1.EmailContentJsonV2Dto),
42
+ (0, class_transformer_1.Expose)(),
43
+ __metadata("design:type", create_profile_marketing_email_campaign_dto_1.EmailContentJsonV2Dto)
44
+ ], TestSendMarketingEmailV2Dto.prototype, "contentJson", void 0);
45
+ __decorate([
46
+ (0, class_validator_1.IsEnum)(email_builder_1.EmailScope),
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", String)
49
+ ], TestSendMarketingEmailV2Dto.prototype, "scope", void 0);
50
+ __decorate([
51
+ (0, class_validator_1.IsEmail)(),
52
+ (0, class_transformer_1.Expose)(),
53
+ __metadata("design:type", String)
54
+ ], TestSendMarketingEmailV2Dto.prototype, "email", void 0);
55
+ __decorate([
56
+ (0, class_validator_1.IsOptional)(),
57
+ (0, class_validator_1.IsString)(),
58
+ (0, class_transformer_1.Expose)(),
59
+ __metadata("design:type", String)
60
+ ], TestSendMarketingEmailV2Dto.prototype, "orderCode", void 0);
61
+ __decorate([
62
+ (0, class_validator_1.IsOptional)(),
63
+ (0, class_validator_1.IsInt)(),
64
+ (0, class_transformer_1.Expose)(),
65
+ __metadata("design:type", Number)
66
+ ], TestSendMarketingEmailV2Dto.prototype, "clientId", void 0);
67
+ __decorate([
68
+ (0, class_validator_1.IsOptional)(),
69
+ (0, class_validator_1.IsString)(),
70
+ (0, class_transformer_1.Expose)(),
71
+ __metadata("design:type", String)
72
+ ], TestSendMarketingEmailV2Dto.prototype, "subject", void 0);
73
+ __decorate([
74
+ (0, class_validator_1.IsOptional)(),
75
+ (0, class_validator_1.IsEnum)(languages_enum_1.Languages),
76
+ (0, class_transformer_1.Expose)(),
77
+ __metadata("design:type", String)
78
+ ], TestSendMarketingEmailV2Dto.prototype, "language", void 0);
79
+ __decorate([
80
+ (0, class_validator_1.IsOptional)(),
81
+ (0, class_validator_1.ValidateNested)(),
82
+ (0, class_transformer_1.Type)(() => preview_campaign_v2_dto_1.PreviewPromocodeDto),
83
+ (0, class_transformer_1.Expose)(),
84
+ __metadata("design:type", preview_campaign_v2_dto_1.PreviewPromocodeDto)
85
+ ], TestSendMarketingEmailV2Dto.prototype, "previewPromocode", void 0);
@@ -302,6 +302,7 @@ __decorate([
302
302
  __decorate([
303
303
  (0, class_validator_1.IsOptional)(),
304
304
  (0, class_validator_1.IsString)(),
305
+ (0, class_transformer_1.Transform)(({ value }) => value || null),
305
306
  (0, class_transformer_1.Expose)(),
306
307
  __metadata("design:type", String)
307
308
  ], CreateQuestroomDto.prototype, "questOpeningDate", void 0);
@@ -24,3 +24,21 @@ export declare const EXPORT_LIMITS: {
24
24
  readonly GOOGLE_PLACES: 5000;
25
25
  };
26
26
  export type ExportLimitKey = keyof typeof EXPORT_LIMITS;
27
+ /**
28
+ * Единый порог для всех CSV-экспортов (`GET /<resource>/export`).
29
+ *
30
+ * Один эндпоинт, один запрос с фронта:
31
+ * - `count <= EXPORT_SYNC_LIMIT` → CSV отдаётся сразу потоком (скачивание);
32
+ * - `count > EXPORT_SYNC_LIMIT` → запускается фоновая джоба, файл уходит
33
+ * на почту пользователя; фронт показывает тост «пришлём на e-mail».
34
+ *
35
+ * Порог низкий (1000) намеренно: синхронно отдаём только «лёгкие» срезы,
36
+ * всё крупное уводим в фон, чтобы не держать HTTP-соединение и heap.
37
+ */
38
+ export declare const EXPORT_SYNC_LIMIT = 1000;
39
+ /**
40
+ * Сколько фоновых (email) экспортов разрешено запустить одному профилю в
41
+ * час. Защита от спама тяжёлыми выгрузками. При превышении бэкенд отвечает
42
+ * 429, фронт показывает тост «слишком часто, попробуйте позже».
43
+ */
44
+ export declare const EXPORT_RATE_LIMIT_PER_HOUR = 10;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EXPORT_LIMITS = void 0;
3
+ exports.EXPORT_RATE_LIMIT_PER_HOUR = exports.EXPORT_SYNC_LIMIT = exports.EXPORT_LIMITS = void 0;
4
4
  /**
5
5
  * Единые лимиты на размер XLSX-выгрузок. Импортится и бэком
6
6
  * (`*.Service.EXPORT_LIMIT` + count-precheck в контроллере), и
@@ -26,3 +26,21 @@ exports.EXPORT_LIMITS = {
26
26
  USER_SESSIONS: 5000,
27
27
  GOOGLE_PLACES: 5000,
28
28
  };
29
+ /**
30
+ * Единый порог для всех CSV-экспортов (`GET /<resource>/export`).
31
+ *
32
+ * Один эндпоинт, один запрос с фронта:
33
+ * - `count <= EXPORT_SYNC_LIMIT` → CSV отдаётся сразу потоком (скачивание);
34
+ * - `count > EXPORT_SYNC_LIMIT` → запускается фоновая джоба, файл уходит
35
+ * на почту пользователя; фронт показывает тост «пришлём на e-mail».
36
+ *
37
+ * Порог низкий (1000) намеренно: синхронно отдаём только «лёгкие» срезы,
38
+ * всё крупное уводим в фон, чтобы не держать HTTP-соединение и heap.
39
+ */
40
+ exports.EXPORT_SYNC_LIMIT = 1000;
41
+ /**
42
+ * Сколько фоновых (email) экспортов разрешено запустить одному профилю в
43
+ * час. Защита от спама тяжёлыми выгрузками. При превышении бэкенд отвечает
44
+ * 429, фронт показывает тост «слишком часто, попробуйте позже».
45
+ */
46
+ exports.EXPORT_RATE_LIMIT_PER_HOUR = 10;