@escapenavigator/types 2.0.24 → 2.0.26

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 (51) hide show
  1. package/dist/admin/admin.ro.d.ts +8 -0
  2. package/dist/admin/aggregator-order/create-aggregator-order.dto.d.ts +2 -0
  3. package/dist/admin/aggregator-order/create-aggregator-order.dto.js +6 -0
  4. package/dist/admin/create-admin.dto.d.ts +8 -0
  5. package/dist/admin/create-admin.dto.js +48 -0
  6. package/dist/aggregator-companies/aggregator-quest-status.enum.d.ts +20 -0
  7. package/dist/aggregator-companies/aggregator-quest-status.enum.js +24 -0
  8. package/dist/agregator/agregator-find-questroom-by-title.ro.js +1 -1
  9. package/dist/agregator/agregator-questroom-card.ro.js +1 -1
  10. package/dist/agregator/agregator-questroom.ro.js +1 -1
  11. package/dist/constants/all-languages-by-namespace.js +9 -0
  12. package/dist/constants/country-by-namespace.js +9 -0
  13. package/dist/constants/country-name-by-country.js +9 -0
  14. package/dist/constants/currency-by-country.js +9 -0
  15. package/dist/constants/emergency-phones.js +19 -0
  16. package/dist/constants/language-by-country.js +9 -0
  17. package/dist/constants/language-flag-by-language.js +4 -0
  18. package/dist/constants/language-name-by-language.js +4 -0
  19. package/dist/constants/namespace-by-country.js +9 -0
  20. package/dist/constants/navigator-certificate-nominals-by-country.js +46 -0
  21. package/dist/openapi/slots/openapi-widget-slot.ro.d.ts +1 -1
  22. package/dist/openapi/slots/openapi-widget-slot.ro.js +1 -0
  23. package/dist/openapi/widget/openapi-widget-info.ro.d.ts +1 -0
  24. package/dist/openapi/widget/openapi-widget-info.ro.js +4 -0
  25. package/dist/order/import/order-import.types.d.ts +91 -0
  26. package/dist/order/import/order-import.types.js +7 -0
  27. package/dist/profile/company-ai-context.d.ts +1 -0
  28. package/dist/profile/enum/profile-currency.d.ts +8 -1
  29. package/dist/profile/enum/profile-currency.js +7 -0
  30. package/dist/profile/enum/profile-integration-type.enum.d.ts +2 -0
  31. package/dist/profile/enum/profile-integration-type.enum.js +2 -0
  32. package/dist/profile/widget-customization/update-widget-customization.dto.d.ts +4 -0
  33. package/dist/profile/widget-customization/update-widget-customization.dto.js +20 -1
  34. package/dist/profile/widget-customization/widget-customization.ro.d.ts +2 -0
  35. package/dist/profile/widget-customization/widget-customization.ro.js +4 -0
  36. package/dist/questroom/questroom-ai-context.d.ts +1 -0
  37. package/dist/shared/enum/countries.enum.d.ts +10 -1
  38. package/dist/shared/enum/countries.enum.js +9 -0
  39. package/dist/shared/enum/languages.enum.d.ts +5 -1
  40. package/dist/shared/enum/languages.enum.js +4 -0
  41. package/dist/shared/enum/namespaces.enum.d.ts +10 -1
  42. package/dist/shared/enum/namespaces.enum.js +9 -0
  43. package/dist/shared/language-to-country.js +4 -0
  44. package/dist/shared/normalize-search-text.d.ts +9 -0
  45. package/dist/shared/normalize-search-text.js +30 -0
  46. package/dist/shared/query.dto.d.ts +5 -0
  47. package/dist/shared/query.dto.js +4 -0
  48. package/dist/survey/survey-response.ro.d.ts +7 -0
  49. package/dist/survey/survey-response.ro.js +8 -0
  50. package/dist/tsconfig.build.tsbuildinfo +1 -1
  51. package/package.json +2 -2
@@ -16,6 +16,14 @@ export type AdminRO = ResponseObject & {
16
16
  canUseReviews?: boolean;
17
17
  canUseAgb?: boolean;
18
18
  canUseArticles?: boolean;
19
+ canUseAggregators?: boolean;
20
+ canUseBilling?: boolean;
21
+ canUseMarketing?: boolean;
22
+ canUseEmailService?: boolean;
23
+ canUseAnnouncements?: boolean;
24
+ canUseAcademy?: boolean;
25
+ canUseWidgetFunnel?: boolean;
26
+ canManageAdmins?: boolean;
19
27
  canLogInToCrm?: boolean;
20
28
  languages: Languages[];
21
29
  namsespaces: number[];
@@ -10,6 +10,8 @@ export declare class CreateAggregatorOrderDto {
10
10
  time: string;
11
11
  externalSlotId: string;
12
12
  price: number;
13
+ /** Количество игроков — обязательно для Partner Booking API (Morty-стандарт). */
14
+ players?: number;
13
15
  questroomId?: number;
14
16
  profileId?: number;
15
17
  }
@@ -73,6 +73,12 @@ __decorate([
73
73
  (0, class_transformer_1.Expose)(),
74
74
  __metadata("design:type", Number)
75
75
  ], CreateAggregatorOrderDto.prototype, "price", void 0);
76
+ __decorate([
77
+ (0, class_validator_1.IsOptional)(),
78
+ (0, class_validator_1.IsNumber)(),
79
+ (0, class_transformer_1.Expose)(),
80
+ __metadata("design:type", Number)
81
+ ], CreateAggregatorOrderDto.prototype, "players", void 0);
76
82
  __decorate([
77
83
  (0, class_validator_1.IsOptional)(),
78
84
  (0, class_validator_1.IsNumber)(),
@@ -15,6 +15,14 @@ export declare class CreateAdminDto {
15
15
  canUseReviews: boolean;
16
16
  canUseAgb: boolean;
17
17
  canUseArticles: boolean;
18
+ canUseAggregators: boolean;
19
+ canUseBilling: boolean;
20
+ canUseMarketing: boolean;
21
+ canUseEmailService: boolean;
22
+ canUseAnnouncements: boolean;
23
+ canUseAcademy: boolean;
24
+ canUseWidgetFunnel: boolean;
25
+ canManageAdmins: boolean;
18
26
  canLogInToCrm: boolean;
19
27
  countries: CountriesEnum[];
20
28
  languages: Languages[];
@@ -97,6 +97,54 @@ __decorate([
97
97
  (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'boolean' ? value : false)),
98
98
  __metadata("design:type", Boolean)
99
99
  ], CreateAdminDto.prototype, "canUseArticles", void 0);
100
+ __decorate([
101
+ (0, class_validator_1.IsBoolean)(),
102
+ (0, class_transformer_1.Expose)(),
103
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'boolean' ? value : false)),
104
+ __metadata("design:type", Boolean)
105
+ ], CreateAdminDto.prototype, "canUseAggregators", void 0);
106
+ __decorate([
107
+ (0, class_validator_1.IsBoolean)(),
108
+ (0, class_transformer_1.Expose)(),
109
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'boolean' ? value : false)),
110
+ __metadata("design:type", Boolean)
111
+ ], CreateAdminDto.prototype, "canUseBilling", void 0);
112
+ __decorate([
113
+ (0, class_validator_1.IsBoolean)(),
114
+ (0, class_transformer_1.Expose)(),
115
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'boolean' ? value : false)),
116
+ __metadata("design:type", Boolean)
117
+ ], CreateAdminDto.prototype, "canUseMarketing", void 0);
118
+ __decorate([
119
+ (0, class_validator_1.IsBoolean)(),
120
+ (0, class_transformer_1.Expose)(),
121
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'boolean' ? value : false)),
122
+ __metadata("design:type", Boolean)
123
+ ], CreateAdminDto.prototype, "canUseEmailService", void 0);
124
+ __decorate([
125
+ (0, class_validator_1.IsBoolean)(),
126
+ (0, class_transformer_1.Expose)(),
127
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'boolean' ? value : false)),
128
+ __metadata("design:type", Boolean)
129
+ ], CreateAdminDto.prototype, "canUseAnnouncements", void 0);
130
+ __decorate([
131
+ (0, class_validator_1.IsBoolean)(),
132
+ (0, class_transformer_1.Expose)(),
133
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'boolean' ? value : false)),
134
+ __metadata("design:type", Boolean)
135
+ ], CreateAdminDto.prototype, "canUseAcademy", void 0);
136
+ __decorate([
137
+ (0, class_validator_1.IsBoolean)(),
138
+ (0, class_transformer_1.Expose)(),
139
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'boolean' ? value : false)),
140
+ __metadata("design:type", Boolean)
141
+ ], CreateAdminDto.prototype, "canUseWidgetFunnel", void 0);
142
+ __decorate([
143
+ (0, class_validator_1.IsBoolean)(),
144
+ (0, class_transformer_1.Expose)(),
145
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'boolean' ? value : false)),
146
+ __metadata("design:type", Boolean)
147
+ ], CreateAdminDto.prototype, "canManageAdmins", void 0);
100
148
  __decorate([
101
149
  (0, class_validator_1.IsBoolean)(),
102
150
  (0, class_transformer_1.Expose)(),
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Жизненный цикл квеста внешнего агрегатора (Morty и др.) в контуре
3
+ * сверки каталога.
4
+ */
5
+ export declare enum AggregatorQuestStatusEnum {
6
+ /** Не разобран: автолинк не запускался или не дал уверенного результата. */
7
+ NEW = "new",
8
+ /** Привязан к нашему квесту (questroomId заполнен). */
9
+ LINKED = "linked",
10
+ /** Площадка привязана, но такого квеста у нас нет — кандидат на создание. */
11
+ MISSING = "missing",
12
+ /** Наш квест создан из этой записи (questroomId указывает на него). */
13
+ CREATED = "created",
14
+ /** Осознанно не создаём (закрыт у агрегатора, вне рынка и т.п.). */
15
+ IGNORED = "ignored",
16
+ /** Не эскейп-рум (VR-аркада, аттракцион и т.п.). */
17
+ NOT_ESCAPE = "not_escape",
18
+ /** Противоречие данных (например, закрыт у Morty, открыт у нас). */
19
+ CONFLICT = "conflict"
20
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AggregatorQuestStatusEnum = void 0;
4
+ /**
5
+ * Жизненный цикл квеста внешнего агрегатора (Morty и др.) в контуре
6
+ * сверки каталога.
7
+ */
8
+ var AggregatorQuestStatusEnum;
9
+ (function (AggregatorQuestStatusEnum) {
10
+ /** Не разобран: автолинк не запускался или не дал уверенного результата. */
11
+ AggregatorQuestStatusEnum["NEW"] = "new";
12
+ /** Привязан к нашему квесту (questroomId заполнен). */
13
+ AggregatorQuestStatusEnum["LINKED"] = "linked";
14
+ /** Площадка привязана, но такого квеста у нас нет — кандидат на создание. */
15
+ AggregatorQuestStatusEnum["MISSING"] = "missing";
16
+ /** Наш квест создан из этой записи (questroomId указывает на него). */
17
+ AggregatorQuestStatusEnum["CREATED"] = "created";
18
+ /** Осознанно не создаём (закрыт у агрегатора, вне рынка и т.п.). */
19
+ AggregatorQuestStatusEnum["IGNORED"] = "ignored";
20
+ /** Не эскейп-рум (VR-аркада, аттракцион и т.п.). */
21
+ AggregatorQuestStatusEnum["NOT_ESCAPE"] = "not_escape";
22
+ /** Противоречие данных (например, закрыт у Morty, открыт у нас). */
23
+ AggregatorQuestStatusEnum["CONFLICT"] = "conflict";
24
+ })(AggregatorQuestStatusEnum || (exports.AggregatorQuestStatusEnum = AggregatorQuestStatusEnum = {}));
@@ -56,7 +56,7 @@ __decorate([
56
56
  (0, class_transformer_1.Expose)(),
57
57
  (0, class_transformer_1.Transform)(({ obj }) => {
58
58
  var _a;
59
- return (obj.templateId || obj.integrationId) &&
59
+ return (obj.templateId || obj.integrationId || obj.partnerAttractionId) &&
60
60
  ((_a = obj.profile) === null || _a === void 0 ? void 0 : _a.partnerProgram) === partner_program_enum_1.PartnerProgramEnum.ACTIVE;
61
61
  }),
62
62
  __metadata("design:type", Boolean)
@@ -158,7 +158,7 @@ __decorate([
158
158
  (0, class_transformer_1.Expose)(),
159
159
  (0, class_transformer_1.Transform)(({ obj }) => {
160
160
  var _a;
161
- return (obj.templateId || obj.integrationId) &&
161
+ return (obj.templateId || obj.integrationId || obj.partnerAttractionId) &&
162
162
  ((_a = obj.profile) === null || _a === void 0 ? void 0 : _a.partnerProgram) === partner_program_enum_1.PartnerProgramEnum.ACTIVE;
163
163
  }),
164
164
  __metadata("design:type", Boolean)
@@ -326,7 +326,7 @@ __decorate([
326
326
  (0, class_transformer_1.Expose)(),
327
327
  (0, class_transformer_1.Transform)(({ obj }) => {
328
328
  var _a;
329
- return (obj.templateId || obj.integrationId) &&
329
+ return (obj.templateId || obj.integrationId || obj.partnerAttractionId) &&
330
330
  ((_a = obj.profile) === null || _a === void 0 ? void 0 : _a.partnerProgram) === partner_program_enum_1.PartnerProgramEnum.ACTIVE;
331
331
  }),
332
332
  __metadata("design:type", Boolean)
@@ -34,4 +34,13 @@ exports.allLanguagesByNamespace = {
34
34
  [namespaces_enum_1.NamespacesEnum.IZRAEL]: [languages_enum_1.Languages.HE, languages_enum_1.Languages.EN],
35
35
  [namespaces_enum_1.NamespacesEnum.IRELAND]: [languages_enum_1.Languages.EN],
36
36
  [namespaces_enum_1.NamespacesEnum.CROATIA]: [languages_enum_1.Languages.HR, languages_enum_1.Languages.EN],
37
+ [namespaces_enum_1.NamespacesEnum.NEW_ZEALAND]: [languages_enum_1.Languages.EN],
38
+ [namespaces_enum_1.NamespacesEnum.ARGENTINA]: [languages_enum_1.Languages.ES, languages_enum_1.Languages.EN],
39
+ [namespaces_enum_1.NamespacesEnum.BRAZIL]: [languages_enum_1.Languages.PT, languages_enum_1.Languages.EN],
40
+ [namespaces_enum_1.NamespacesEnum.TAIWAN]: [languages_enum_1.Languages.ZH, languages_enum_1.Languages.EN],
41
+ [namespaces_enum_1.NamespacesEnum.MEXICO]: [languages_enum_1.Languages.ES, languages_enum_1.Languages.EN],
42
+ [namespaces_enum_1.NamespacesEnum.JAPAN]: [languages_enum_1.Languages.JA, languages_enum_1.Languages.EN],
43
+ [namespaces_enum_1.NamespacesEnum.SERBIA]: [languages_enum_1.Languages.SR, languages_enum_1.Languages.EN],
44
+ [namespaces_enum_1.NamespacesEnum.SINGAPORE]: [languages_enum_1.Languages.EN],
45
+ [namespaces_enum_1.NamespacesEnum.NORWAY]: [languages_enum_1.Languages.NO, languages_enum_1.Languages.EN],
37
46
  };
@@ -34,4 +34,13 @@ exports.countryByNamespace = {
34
34
  [namespaces_enum_1.NamespacesEnum.IZRAEL]: countries_enum_1.CountriesEnum.IZRAEL,
35
35
  [namespaces_enum_1.NamespacesEnum.IRELAND]: countries_enum_1.CountriesEnum.IRELAND,
36
36
  [namespaces_enum_1.NamespacesEnum.CROATIA]: countries_enum_1.CountriesEnum.CROATIA,
37
+ [namespaces_enum_1.NamespacesEnum.NEW_ZEALAND]: countries_enum_1.CountriesEnum.NEW_ZEALAND,
38
+ [namespaces_enum_1.NamespacesEnum.ARGENTINA]: countries_enum_1.CountriesEnum.ARGENTINA,
39
+ [namespaces_enum_1.NamespacesEnum.BRAZIL]: countries_enum_1.CountriesEnum.BRAZIL,
40
+ [namespaces_enum_1.NamespacesEnum.TAIWAN]: countries_enum_1.CountriesEnum.TAIWAN,
41
+ [namespaces_enum_1.NamespacesEnum.MEXICO]: countries_enum_1.CountriesEnum.MEXICO,
42
+ [namespaces_enum_1.NamespacesEnum.JAPAN]: countries_enum_1.CountriesEnum.JAPAN,
43
+ [namespaces_enum_1.NamespacesEnum.SERBIA]: countries_enum_1.CountriesEnum.SERBIA,
44
+ [namespaces_enum_1.NamespacesEnum.SINGAPORE]: countries_enum_1.CountriesEnum.SINGAPORE,
45
+ [namespaces_enum_1.NamespacesEnum.NORWAY]: countries_enum_1.CountriesEnum.NORWAY,
37
46
  };
@@ -33,4 +33,13 @@ exports.countryNameByCountry = {
33
33
  [countries_enum_1.CountriesEnum.IZRAEL]: 'יִשְׂרָאֵל',
34
34
  [countries_enum_1.CountriesEnum.IRELAND]: 'Ireland',
35
35
  [countries_enum_1.CountriesEnum.CROATIA]: 'Hrvatska',
36
+ [countries_enum_1.CountriesEnum.NEW_ZEALAND]: 'New Zealand',
37
+ [countries_enum_1.CountriesEnum.ARGENTINA]: 'Argentina',
38
+ [countries_enum_1.CountriesEnum.BRAZIL]: 'Brasil',
39
+ [countries_enum_1.CountriesEnum.TAIWAN]: 'Taiwan',
40
+ [countries_enum_1.CountriesEnum.MEXICO]: 'México',
41
+ [countries_enum_1.CountriesEnum.JAPAN]: '日本',
42
+ [countries_enum_1.CountriesEnum.SERBIA]: 'Srbija',
43
+ [countries_enum_1.CountriesEnum.SINGAPORE]: 'Singapore',
44
+ [countries_enum_1.CountriesEnum.NORWAY]: 'Norge',
36
45
  };
@@ -34,4 +34,13 @@ exports.currencyByCountry = {
34
34
  [countries_enum_1.CountriesEnum.IZRAEL]: profile_currency_1.ProfileCurrencyEnum.ILS,
35
35
  [countries_enum_1.CountriesEnum.IRELAND]: profile_currency_1.ProfileCurrencyEnum.EUR,
36
36
  [countries_enum_1.CountriesEnum.CROATIA]: profile_currency_1.ProfileCurrencyEnum.EUR,
37
+ [countries_enum_1.CountriesEnum.NEW_ZEALAND]: profile_currency_1.ProfileCurrencyEnum.NZD,
38
+ [countries_enum_1.CountriesEnum.ARGENTINA]: profile_currency_1.ProfileCurrencyEnum.ARS,
39
+ [countries_enum_1.CountriesEnum.BRAZIL]: profile_currency_1.ProfileCurrencyEnum.BRL,
40
+ [countries_enum_1.CountriesEnum.TAIWAN]: profile_currency_1.ProfileCurrencyEnum.TWD,
41
+ [countries_enum_1.CountriesEnum.MEXICO]: profile_currency_1.ProfileCurrencyEnum.MXN,
42
+ [countries_enum_1.CountriesEnum.JAPAN]: profile_currency_1.ProfileCurrencyEnum.JPY,
43
+ [countries_enum_1.CountriesEnum.SERBIA]: profile_currency_1.ProfileCurrencyEnum.RSD,
44
+ [countries_enum_1.CountriesEnum.SINGAPORE]: profile_currency_1.ProfileCurrencyEnum.SGD,
45
+ [countries_enum_1.CountriesEnum.NORWAY]: profile_currency_1.ProfileCurrencyEnum.NOK,
37
46
  };
@@ -104,4 +104,23 @@ exports.emergencyPhones = {
104
104
  },
105
105
  [countries_enum_1.CountriesEnum.IRELAND]: { number: '112', services: ['Garda', 'Ambulance', 'Fire Brigade'] },
106
106
  [countries_enum_1.CountriesEnum.CROATIA]: { number: '112', services: ['Policija', 'Hitna pomoć', 'Vatrogasci'] },
107
+ [countries_enum_1.CountriesEnum.NEW_ZEALAND]: { number: '111', services: ['Police', 'Ambulance', 'Fire'] },
108
+ [countries_enum_1.CountriesEnum.ARGENTINA]: { number: '911', services: ['Policía', 'Ambulancia', 'Bomberos'] },
109
+ [countries_enum_1.CountriesEnum.BRAZIL]: {
110
+ police: { number: '190', name: 'Polícia' },
111
+ ambulance: { number: '192', name: 'SAMU' },
112
+ fire: { number: '193', name: 'Bombeiros' },
113
+ },
114
+ [countries_enum_1.CountriesEnum.TAIWAN]: {
115
+ police: { number: '110', name: 'Police' },
116
+ ambulance: { number: '119', name: 'Fire / Ambulance' },
117
+ },
118
+ [countries_enum_1.CountriesEnum.MEXICO]: { number: '911', services: ['Policía', 'Ambulancia', 'Bomberos'] },
119
+ [countries_enum_1.CountriesEnum.JAPAN]: {
120
+ police: { number: '110', name: 'Police' },
121
+ ambulance: { number: '119', name: 'Fire / Ambulance' },
122
+ },
123
+ [countries_enum_1.CountriesEnum.SERBIA]: { number: '112', services: ['Policija', 'Hitna pomoć', 'Vatrogasci'] },
124
+ [countries_enum_1.CountriesEnum.SINGAPORE]: { number: '999', services: ['Police', 'Ambulance', 'Fire'] },
125
+ [countries_enum_1.CountriesEnum.NORWAY]: { number: '112', services: ['Politi', 'Ambulance', 'Brann'] },
107
126
  };
@@ -34,4 +34,13 @@ exports.languageByCountry = {
34
34
  [countries_enum_1.CountriesEnum.IZRAEL]: languages_enum_1.Languages.HE,
35
35
  [countries_enum_1.CountriesEnum.IRELAND]: languages_enum_1.Languages.EN,
36
36
  [countries_enum_1.CountriesEnum.CROATIA]: languages_enum_1.Languages.HR,
37
+ [countries_enum_1.CountriesEnum.NEW_ZEALAND]: languages_enum_1.Languages.EN,
38
+ [countries_enum_1.CountriesEnum.ARGENTINA]: languages_enum_1.Languages.ES,
39
+ [countries_enum_1.CountriesEnum.BRAZIL]: languages_enum_1.Languages.PT,
40
+ [countries_enum_1.CountriesEnum.TAIWAN]: languages_enum_1.Languages.ZH,
41
+ [countries_enum_1.CountriesEnum.MEXICO]: languages_enum_1.Languages.ES,
42
+ [countries_enum_1.CountriesEnum.JAPAN]: languages_enum_1.Languages.JA,
43
+ [countries_enum_1.CountriesEnum.SERBIA]: languages_enum_1.Languages.SR,
44
+ [countries_enum_1.CountriesEnum.SINGAPORE]: languages_enum_1.Languages.EN,
45
+ [countries_enum_1.CountriesEnum.NORWAY]: languages_enum_1.Languages.NO,
37
46
  };
@@ -26,4 +26,8 @@ exports.languageFlagByLanguage = {
26
26
  [languages_enum_1.Languages.LT]: 'https://escapenavigator-images.s3.eu-central-1.amazonaws.com/inside/flags/lt.png',
27
27
  [languages_enum_1.Languages.HE]: 'https://escapenavigator-images.s3.eu-central-1.amazonaws.com/inside/flags/il.png',
28
28
  [languages_enum_1.Languages.HR]: 'https://escapenavigator-images.s3.eu-central-1.amazonaws.com/inside/flags/hr.png',
29
+ [languages_enum_1.Languages.JA]: 'https://escapenavigator-images.s3.eu-central-1.amazonaws.com/inside/flags/jp.png',
30
+ [languages_enum_1.Languages.ZH]: 'https://escapenavigator-images.s3.eu-central-1.amazonaws.com/inside/flags/tw.png',
31
+ [languages_enum_1.Languages.SR]: 'https://escapenavigator-images.s3.eu-central-1.amazonaws.com/inside/flags/rs.png',
32
+ [languages_enum_1.Languages.NO]: 'https://escapenavigator-images.s3.eu-central-1.amazonaws.com/inside/flags/no.png',
29
33
  };
@@ -26,4 +26,8 @@ exports.languageNameByLanguage = {
26
26
  [languages_enum_1.Languages.LT]: 'Lietuvių',
27
27
  [languages_enum_1.Languages.HE]: 'עברית',
28
28
  [languages_enum_1.Languages.HR]: 'Hrvatski',
29
+ [languages_enum_1.Languages.JA]: '日本語',
30
+ [languages_enum_1.Languages.ZH]: '中文',
31
+ [languages_enum_1.Languages.SR]: 'Srpski',
32
+ [languages_enum_1.Languages.NO]: 'Norsk',
29
33
  };
@@ -34,4 +34,13 @@ exports.namespaceByCountry = {
34
34
  [countries_enum_1.CountriesEnum.IZRAEL]: namespaces_enum_1.NamespacesEnum.IZRAEL,
35
35
  [countries_enum_1.CountriesEnum.IRELAND]: namespaces_enum_1.NamespacesEnum.IRELAND,
36
36
  [countries_enum_1.CountriesEnum.CROATIA]: namespaces_enum_1.NamespacesEnum.CROATIA,
37
+ [countries_enum_1.CountriesEnum.NEW_ZEALAND]: namespaces_enum_1.NamespacesEnum.NEW_ZEALAND,
38
+ [countries_enum_1.CountriesEnum.ARGENTINA]: namespaces_enum_1.NamespacesEnum.ARGENTINA,
39
+ [countries_enum_1.CountriesEnum.BRAZIL]: namespaces_enum_1.NamespacesEnum.BRAZIL,
40
+ [countries_enum_1.CountriesEnum.TAIWAN]: namespaces_enum_1.NamespacesEnum.TAIWAN,
41
+ [countries_enum_1.CountriesEnum.MEXICO]: namespaces_enum_1.NamespacesEnum.MEXICO,
42
+ [countries_enum_1.CountriesEnum.JAPAN]: namespaces_enum_1.NamespacesEnum.JAPAN,
43
+ [countries_enum_1.CountriesEnum.SERBIA]: namespaces_enum_1.NamespacesEnum.SERBIA,
44
+ [countries_enum_1.CountriesEnum.SINGAPORE]: namespaces_enum_1.NamespacesEnum.SINGAPORE,
45
+ [countries_enum_1.CountriesEnum.NORWAY]: namespaces_enum_1.NamespacesEnum.NORWAY,
37
46
  };
@@ -62,6 +62,43 @@ const pricingILS = {
62
62
  nominals: [20000, 30000, 50000, 70000],
63
63
  deliveryPrice: 2200,
64
64
  };
65
+ const pricingNZD = {
66
+ nominals: [7000, 12000, 18000, 25000],
67
+ deliveryPrice: 1000,
68
+ };
69
+ const pricingARS = {
70
+ nominals: [5000000, 10000000, 15000000, 20000000],
71
+ deliveryPrice: 500000,
72
+ };
73
+ const pricingBRL = {
74
+ nominals: [25000, 50000, 75000, 100000],
75
+ deliveryPrice: 4000,
76
+ };
77
+ const pricingTWD = {
78
+ nominals: [150000, 300000, 450000, 600000],
79
+ deliveryPrice: 25000,
80
+ };
81
+ const pricingMXN = {
82
+ nominals: [100000, 200000, 300000, 400000],
83
+ deliveryPrice: 15000,
84
+ };
85
+ /** Whole yen amounts (Stripe zero-decimal style in our minor-unit field). */
86
+ const pricingJPY = {
87
+ nominals: [10000, 15000, 20000, 30000],
88
+ deliveryPrice: 1200,
89
+ };
90
+ const pricingRSD = {
91
+ nominals: [500000, 1000000, 1500000, 2000000],
92
+ deliveryPrice: 80000,
93
+ };
94
+ const pricingSGD = {
95
+ nominals: [7000, 12000, 18000, 25000],
96
+ deliveryPrice: 1000,
97
+ };
98
+ const pricingNOK = {
99
+ nominals: [50000, 75000, 100000, 150000],
100
+ deliveryPrice: 9000,
101
+ };
65
102
  exports.navigatorCertificatePricingByCountry = {
66
103
  [countries_enum_1.CountriesEnum.GERMANY]: pricingEUR,
67
104
  [countries_enum_1.CountriesEnum.AUSTRIA]: pricingEUR,
@@ -93,5 +130,14 @@ exports.navigatorCertificatePricingByCountry = {
93
130
  [countries_enum_1.CountriesEnum.IZRAEL]: pricingILS,
94
131
  [countries_enum_1.CountriesEnum.IRELAND]: pricingEUR,
95
132
  [countries_enum_1.CountriesEnum.CROATIA]: pricingEUR,
133
+ [countries_enum_1.CountriesEnum.NEW_ZEALAND]: pricingNZD,
134
+ [countries_enum_1.CountriesEnum.ARGENTINA]: pricingARS,
135
+ [countries_enum_1.CountriesEnum.BRAZIL]: pricingBRL,
136
+ [countries_enum_1.CountriesEnum.TAIWAN]: pricingTWD,
137
+ [countries_enum_1.CountriesEnum.MEXICO]: pricingMXN,
138
+ [countries_enum_1.CountriesEnum.JAPAN]: pricingJPY,
139
+ [countries_enum_1.CountriesEnum.SERBIA]: pricingRSD,
140
+ [countries_enum_1.CountriesEnum.SINGAPORE]: pricingSGD,
141
+ [countries_enum_1.CountriesEnum.NORWAY]: pricingNOK,
96
142
  };
97
143
  exports.navigatorCertificateNominalsByCountry = Object.entries(exports.navigatorCertificatePricingByCountry).reduce((acc, [country, pricing]) => (Object.assign(Object.assign({}, acc), { [country]: pricing.nominals })), {});
@@ -1,6 +1,6 @@
1
1
  import { OpenapiBokingRuleRO } from '../shared/openapi-booking-rule.ro';
2
2
  import { OpenapiSlotTariffRO } from './openapi-slot-tariff.ro';
3
- export type SlotType = 'bookeo' | 'crm' | 'myerp' | 'kvestadmin';
3
+ export type SlotType = 'bookeo' | 'crm' | 'myerp' | 'kvestadmin' | 'partner';
4
4
  export declare class OpenapiSlotRO {
5
5
  type: SlotType;
6
6
  questroomId: number;
@@ -22,6 +22,7 @@ var SType;
22
22
  SType["CRM"] = "crm";
23
23
  SType["MYERP"] = "myerp";
24
24
  SType["KVESTADMIN"] = "kvestadmin";
25
+ SType["PARTNER"] = "partner";
25
26
  })(SType || (SType = {}));
26
27
  class OpenapiSlotRO {
27
28
  }
@@ -20,6 +20,7 @@ declare class Customization {
20
20
  style: WidgetStyleEnum;
21
21
  view: WidgetViewEnum;
22
22
  roundness: WidgetRoundnessEnum;
23
+ maxWidth?: number;
23
24
  widgetFontFamily?: string;
24
25
  bgColor?: string;
25
26
  }
@@ -59,6 +59,10 @@ __decorate([
59
59
  (0, class_transformer_1.Expose)(),
60
60
  __metadata("design:type", String)
61
61
  ], Customization.prototype, "roundness", void 0);
62
+ __decorate([
63
+ (0, class_transformer_1.Expose)(),
64
+ __metadata("design:type", Number)
65
+ ], Customization.prototype, "maxWidth", void 0);
62
66
  __decorate([
63
67
  (0, class_transformer_1.Expose)(),
64
68
  __metadata("design:type", String)
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Двухфазный импорт игр из CSV/Excel: upload → превью (маппинг колонок,
3
+ * матчинг квестов, статусы строк) → commit. Один файл может содержать
4
+ * брони по разным квестам — квест матчится по названию из колонки.
5
+ */
6
+ export type OrderImportField = 'questTitle' | 'date' | 'time' | 'name' | 'surname' | 'fullName' | 'email' | 'phone' | 'players' | 'total' | 'payed' | 'source';
7
+ /** Порядок дня/месяца в датах файла. auto — эвристика по всей колонке. */
8
+ export type OrderImportDateOrder = 'auto' | 'DMY' | 'MDY';
9
+ /** Маппинг «поле системы → индекс колонки файла». */
10
+ export type OrderImportColumnMapping = Partial<Record<OrderImportField, number>>;
11
+ export type OrderImportColumnRO = {
12
+ index: number;
13
+ header: string;
14
+ /** Распознанное поле (null — колонка не используется). */
15
+ field: OrderImportField | null;
16
+ /** Первые непустые значения колонки для превью. */
17
+ samples: string[];
18
+ };
19
+ export type OrderImportQuestMatchConfidence = 'exact' | 'fuzzy' | 'ai' | 'manual';
20
+ export type OrderImportQuestMatchRO = {
21
+ /** Название квеста как в файле (оригинал, до нормализации). */
22
+ title: string;
23
+ /** Сколько строк файла ссылаются на это название. */
24
+ rowsCount: number;
25
+ questroomId: number | null;
26
+ confidence: OrderImportQuestMatchConfidence | null;
27
+ };
28
+ export type OrderImportRowStatus = 'ok' | 'warning' | 'error' | 'duplicate';
29
+ export type OrderImportRowProblem =
30
+ /** Ошибки — строка не будет импортирована */
31
+ 'QUEST_NOT_MATCHED' | 'DATE_INVALID' | 'SLOT_NOT_FOUND' | 'SLOT_BUSY'
32
+ /** Предупреждения — строка импортируется, но стоит проверить */
33
+ | 'NO_CONTACTS' | 'NO_TIME' | 'NO_PLAYERS' | 'PRICE_MISMATCH' | 'TECHNICAL_SLOT'
34
+ /** Дубликат уже существующего заказа — будет пропущен */
35
+ | 'ALREADY_IMPORTED';
36
+ export type OrderImportRowRO = {
37
+ /** Индекс строки в файле (0 — первая строка данных). */
38
+ index: number;
39
+ status: OrderImportRowStatus;
40
+ problems: OrderImportRowProblem[];
41
+ isPast: boolean;
42
+ questTitle: string;
43
+ questroomId: number | null;
44
+ /** Wall-clock даты в таймзоне локации. */
45
+ date: string | null;
46
+ time: string | null;
47
+ clientLabel: string;
48
+ email: string | null;
49
+ phone: string | null;
50
+ players: number | null;
51
+ /** В центах. */
52
+ total: number | null;
53
+ payed: number | null;
54
+ };
55
+ export type OrderImportSummaryRO = {
56
+ total: number;
57
+ ok: number;
58
+ warnings: number;
59
+ errors: number;
60
+ duplicates: number;
61
+ past: number;
62
+ future: number;
63
+ newClients: number;
64
+ matchedClients: number;
65
+ };
66
+ export type OrderImportSessionStatus = 'draft' | 'committing' | 'committed';
67
+ export type OrderImportSessionRO = {
68
+ id: number;
69
+ status: OrderImportSessionStatus;
70
+ fileName: string;
71
+ dateOrder: OrderImportDateOrder;
72
+ /** Какой порядок дат реально применён после эвристики. */
73
+ resolvedDateOrder: 'DMY' | 'MDY';
74
+ columns: OrderImportColumnRO[];
75
+ mapping: OrderImportColumnMapping;
76
+ questMatches: OrderImportQuestMatchRO[];
77
+ rows: OrderImportRowRO[];
78
+ summary: OrderImportSummaryRO;
79
+ };
80
+ export type UpdateOrderImportDto = {
81
+ mapping?: OrderImportColumnMapping;
82
+ dateOrder?: OrderImportDateOrder;
83
+ /** Ручные метчи: «название из файла → questroomId» (null — сбросить). */
84
+ questOverrides?: Record<string, number | null>;
85
+ };
86
+ export type CommitOrderImportRO = {
87
+ createdOrders: number;
88
+ createdClients: number;
89
+ createdSlots: number;
90
+ skippedRows: number;
91
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Двухфазный импорт игр из CSV/Excel: upload → превью (маппинг колонок,
4
+ * матчинг квестов, статусы строк) → commit. Один файл может содержать
5
+ * брони по разным квестам — квест матчится по названию из колонки.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -33,6 +33,7 @@ export type CompanyAiContext = {
33
33
  city?: string;
34
34
  subwayStation?: string | null;
35
35
  phone?: string;
36
+ site?: string;
36
37
  howToFind?: string;
37
38
  prepareText?: string;
38
39
  timeZone?: string;
@@ -25,5 +25,12 @@ export declare enum ProfileCurrencyEnum {
25
25
  HRK = "HRK",
26
26
  RSD = "RSD",
27
27
  NOK = "NOK",
28
- ILS = "ILS"
28
+ ILS = "ILS",
29
+ NZD = "NZD",
30
+ ARS = "ARS",
31
+ BRL = "BRL",
32
+ TWD = "TWD",
33
+ MXN = "MXN",
34
+ JPY = "JPY",
35
+ SGD = "SGD"
29
36
  }
@@ -30,6 +30,13 @@ var ProfileCurrencyEnum;
30
30
  ProfileCurrencyEnum["RSD"] = "RSD";
31
31
  ProfileCurrencyEnum["NOK"] = "NOK";
32
32
  ProfileCurrencyEnum["ILS"] = "ILS";
33
+ ProfileCurrencyEnum["NZD"] = "NZD";
34
+ ProfileCurrencyEnum["ARS"] = "ARS";
35
+ ProfileCurrencyEnum["BRL"] = "BRL";
36
+ ProfileCurrencyEnum["TWD"] = "TWD";
37
+ ProfileCurrencyEnum["MXN"] = "MXN";
38
+ ProfileCurrencyEnum["JPY"] = "JPY";
39
+ ProfileCurrencyEnum["SGD"] = "SGD";
33
40
  })(ProfileCurrencyEnum || (exports.ProfileCurrencyEnum = ProfileCurrencyEnum = {}));
34
41
  // export enum ProfileCurrencyEnum {
35
42
  // EUR = 'EUR',
@@ -2,5 +2,7 @@ export declare enum ProfileIntegrationTypeEnum {
2
2
  BOOKEO = "bookeo",
3
3
  MYERP = "myerp",
4
4
  KVESTADMIN = "kvestadmin",
5
+ /** Partner Booking API (зеркальный Morty-стандарт): расписание тянем из внешней системы. */
6
+ PARTNER = "partner",
5
7
  NONE = "none"
6
8
  }
@@ -6,5 +6,7 @@ var ProfileIntegrationTypeEnum;
6
6
  ProfileIntegrationTypeEnum["BOOKEO"] = "bookeo";
7
7
  ProfileIntegrationTypeEnum["MYERP"] = "myerp";
8
8
  ProfileIntegrationTypeEnum["KVESTADMIN"] = "kvestadmin";
9
+ /** Partner Booking API (зеркальный Morty-стандарт): расписание тянем из внешней системы. */
10
+ ProfileIntegrationTypeEnum["PARTNER"] = "partner";
9
11
  ProfileIntegrationTypeEnum["NONE"] = "none";
10
12
  })(ProfileIntegrationTypeEnum || (exports.ProfileIntegrationTypeEnum = ProfileIntegrationTypeEnum = {}));
@@ -1,6 +1,9 @@
1
1
  import { WidgetRoundnessEnum } from './enum/widget-roundness.enum';
2
2
  import { WidgetStyleEnum } from './enum/widget-style.enum';
3
3
  import { WidgetViewEnum } from './enum/widget-view.enum';
4
+ export declare const WIDGET_DEFAULT_MAX_WIDTH = 980;
5
+ export declare const WIDGET_MIN_MAX_WIDTH = 480;
6
+ export declare const WIDGET_MAX_MAX_WIDTH = 1600;
4
7
  export declare class UpdateWidgetCustomizationDto {
5
8
  showBookedSlots: boolean;
6
9
  showWrapper: boolean;
@@ -10,6 +13,7 @@ export declare class UpdateWidgetCustomizationDto {
10
13
  showCertificatesButton: boolean;
11
14
  mainColor: string;
12
15
  roundness: WidgetRoundnessEnum;
16
+ maxWidth: number;
13
17
  widgetFontFamily?: string;
14
18
  bgColor?: string;
15
19
  }
@@ -9,13 +9,19 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.UpdateWidgetCustomizationDto = void 0;
12
+ exports.UpdateWidgetCustomizationDto = exports.WIDGET_MAX_MAX_WIDTH = exports.WIDGET_MIN_MAX_WIDTH = exports.WIDGET_DEFAULT_MAX_WIDTH = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const widget_roundness_enum_1 = require("./enum/widget-roundness.enum");
16
16
  const widget_style_enum_1 = require("./enum/widget-style.enum");
17
17
  const widget_view_enum_1 = require("./enum/widget-view.enum");
18
+ exports.WIDGET_DEFAULT_MAX_WIDTH = 980;
19
+ exports.WIDGET_MIN_MAX_WIDTH = 480;
20
+ exports.WIDGET_MAX_MAX_WIDTH = 1600;
18
21
  class UpdateWidgetCustomizationDto {
22
+ constructor() {
23
+ this.maxWidth = exports.WIDGET_DEFAULT_MAX_WIDTH;
24
+ }
19
25
  }
20
26
  exports.UpdateWidgetCustomizationDto = UpdateWidgetCustomizationDto;
21
27
  __decorate([
@@ -58,6 +64,19 @@ __decorate([
58
64
  (0, class_transformer_1.Expose)(),
59
65
  __metadata("design:type", String)
60
66
  ], UpdateWidgetCustomizationDto.prototype, "roundness", void 0);
67
+ __decorate([
68
+ (0, class_transformer_1.Transform)(({ value }) => {
69
+ if (value === '' || value === null || value === undefined) {
70
+ return exports.WIDGET_DEFAULT_MAX_WIDTH;
71
+ }
72
+ return typeof value === 'string' ? Number(value) : value;
73
+ }),
74
+ (0, class_validator_1.IsInt)(),
75
+ (0, class_validator_1.Min)(exports.WIDGET_MIN_MAX_WIDTH),
76
+ (0, class_validator_1.Max)(exports.WIDGET_MAX_MAX_WIDTH),
77
+ (0, class_transformer_1.Expose)(),
78
+ __metadata("design:type", Number)
79
+ ], UpdateWidgetCustomizationDto.prototype, "maxWidth", void 0);
61
80
  __decorate([
62
81
  (0, class_validator_1.IsOptional)(),
63
82
  (0, class_validator_1.IsString)(),