@escapenavigator/types 2.0.7 → 2.0.9

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 (58) hide show
  1. package/dist/agregator/agregator-questroom-card.ro.d.ts +6 -0
  2. package/dist/agregator/agregator-questroom-card.ro.js +4 -0
  3. package/dist/agregator/agregator-questrooms-and-cities.ro.d.ts +8 -0
  4. package/dist/agregator/agregator-questrooms-and-cities.ro.js +4 -0
  5. package/dist/city-quest/bind-city-quest.dto.d.ts +4 -0
  6. package/dist/city-quest/bind-city-quest.dto.js +22 -0
  7. package/dist/city-quest/city-quest-content.d.ts +159 -0
  8. package/dist/city-quest/city-quest-content.js +2 -0
  9. package/dist/city-quest/city-quest.ro.d.ts +29 -0
  10. package/dist/city-quest/city-quest.ro.js +89 -0
  11. package/dist/city-quest/enum/city-quest-play-phase.enum.d.ts +6 -0
  12. package/dist/city-quest/enum/city-quest-play-phase.enum.js +10 -0
  13. package/dist/city-quest/enum/city-quest-session-event-type.enum.d.ts +18 -0
  14. package/dist/city-quest/enum/city-quest-session-event-type.enum.js +22 -0
  15. package/dist/city-quest/enum/city-quest-session-status.enum.d.ts +5 -0
  16. package/dist/city-quest/enum/city-quest-session-status.enum.js +9 -0
  17. package/dist/city-quest/enum/city-quest-status.enum.d.ts +7 -0
  18. package/dist/city-quest/enum/city-quest-status.enum.js +11 -0
  19. package/dist/city-quest/import-city-quest.dto.d.ts +6 -0
  20. package/dist/city-quest/import-city-quest.dto.js +28 -0
  21. package/dist/city-quest/update-city-quest.dto.d.ts +5 -0
  22. package/dist/city-quest/update-city-quest.dto.js +30 -0
  23. package/dist/city-quest/upsert-city-quest-asset.dto.d.ts +11 -0
  24. package/dist/city-quest/upsert-city-quest-asset.dto.js +40 -0
  25. package/dist/forms/widget/widget-players-form.dto.d.ts +5 -0
  26. package/dist/forms/widget/widget-players-form.dto.js +5 -0
  27. package/dist/openapi/city-quest/play-answer.dto.d.ts +5 -0
  28. package/dist/openapi/city-quest/play-answer.dto.js +30 -0
  29. package/dist/openapi/city-quest/play-finale-choice.dto.d.ts +3 -0
  30. package/dist/openapi/city-quest/play-finale-choice.dto.js +23 -0
  31. package/dist/openapi/city-quest/play-hint.dto.d.ts +3 -0
  32. package/dist/openapi/city-quest/play-hint.dto.js +22 -0
  33. package/dist/openapi/city-quest/play-issue.dto.d.ts +3 -0
  34. package/dist/openapi/city-quest/play-issue.dto.js +23 -0
  35. package/dist/openapi/city-quest/play-start-session.dto.d.ts +8 -0
  36. package/dist/openapi/city-quest/play-start-session.dto.js +41 -0
  37. package/dist/openapi/city-quest/play-state.ro.d.ts +144 -0
  38. package/dist/openapi/city-quest/play-state.ro.js +2 -0
  39. package/dist/openapi/orders/openapi-create-preorder.dto.d.ts +8 -0
  40. package/dist/openapi/orders/openapi-create-preorder.dto.js +6 -0
  41. package/dist/openapi/orders/openapi-order.ro.d.ts +6 -0
  42. package/dist/openapi/orders/openapi-order.ro.js +4 -0
  43. package/dist/openapi/orders/openapi-update-order.dto.d.ts +6 -0
  44. package/dist/openapi/orders/openapi-update-order.dto.js +6 -0
  45. package/dist/openapi/shared/openapi-questroom.ro.d.ts +2 -1
  46. package/dist/openapi/shared/openapi-questroom.ro.js +3 -2
  47. package/dist/order/order.ro.d.ts +6 -0
  48. package/dist/order/order.ro.js +4 -0
  49. package/dist/order/waivers/sign-order.dto.js +1 -1
  50. package/dist/questroom/create-questroom.dto.d.ts +2 -1
  51. package/dist/questroom/create-questroom.dto.js +5 -4
  52. package/dist/questroom/enum/players-select-mode.enum.d.ts +22 -0
  53. package/dist/questroom/enum/players-select-mode.enum.js +26 -0
  54. package/dist/questroom/questroom-admin.ro.d.ts +2 -0
  55. package/dist/questroom/questroom-admin.ro.js +4 -0
  56. package/dist/tsconfig.build.tsbuildinfo +1 -1
  57. package/dist/widget-funnel/widget-funnel-dimension.js +15 -5
  58. package/package.json +2 -2
@@ -28,6 +28,12 @@ export declare class AgregatorQuestroomCardRO {
28
28
  language: Languages;
29
29
  slug: string;
30
30
  top: boolean;
31
+ /**
32
+ * Приоритетное размещение (собственные квесты навигатора): бек сортирует
33
+ * такие квесты первыми, фронт использует флаг для витринных блоков
34
+ * (например «Топ аутдор» на странице города).
35
+ */
36
+ promoted: boolean;
31
37
  closed: boolean;
32
38
  type: QuestroomTypeEnum;
33
39
  rate: number;
@@ -90,6 +90,10 @@ __decorate([
90
90
  (0, class_transformer_1.Expose)(),
91
91
  __metadata("design:type", Boolean)
92
92
  ], AgregatorQuestroomCardRO.prototype, "top", void 0);
93
+ __decorate([
94
+ (0, class_transformer_1.Expose)(),
95
+ __metadata("design:type", Boolean)
96
+ ], AgregatorQuestroomCardRO.prototype, "promoted", void 0);
93
97
  __decorate([
94
98
  (0, class_transformer_1.Expose)(),
95
99
  (0, class_transformer_1.Transform)(({ obj }) => { var _a; return obj.closed || ((_a = obj.profile) === null || _a === void 0 ? void 0 : _a.status) === profile_step_enum_1.ProfileStatusEnum.CLOSED; }),
@@ -21,4 +21,12 @@ export declare class AgregatorQuestroomsAndCitiesRO {
21
21
  * загруженного `relations: ['profile']`, доп. запросов нет.
22
22
  */
23
23
  companies?: AgregatorCityCompanyRO[];
24
+ /**
25
+ * Полное число видимых квестов города (агломерации) — для честного
26
+ * счётчика на фронте: `questrooms` содержит только первую страницу
27
+ * (см. CITY_INITIAL_TAKE в agregator.questrooms.ts), остальное
28
+ * догружается через `city/initial/page`. Заполняется только для
29
+ * главного города ответа.
30
+ */
31
+ total?: number;
24
32
  }
@@ -50,3 +50,7 @@ __decorate([
50
50
  (0, class_transformer_1.Type)(() => AgregatorCityCompanyRO),
51
51
  __metadata("design:type", Array)
52
52
  ], AgregatorQuestroomsAndCitiesRO.prototype, "companies", void 0);
53
+ __decorate([
54
+ (0, class_transformer_1.Expose)(),
55
+ __metadata("design:type", Number)
56
+ ], AgregatorQuestroomsAndCitiesRO.prototype, "total", void 0);
@@ -0,0 +1,4 @@
1
+ export declare class BindCityQuestDto {
2
+ /** Questroom (тип OUTDOOR), бронирования которого выдают доступ к игре. */
3
+ questroomId: number;
4
+ }
@@ -0,0 +1,22 @@
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.BindCityQuestDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ class BindCityQuestDto {
16
+ }
17
+ exports.BindCityQuestDto = BindCityQuestDto;
18
+ __decorate([
19
+ (0, class_validator_1.IsPositive)(),
20
+ (0, class_transformer_1.Expose)(),
21
+ __metadata("design:type", Number)
22
+ ], BindCityQuestDto.prototype, "questroomId", void 0);
@@ -0,0 +1,159 @@
1
+ import { Languages } from '../shared/enum/languages.enum';
2
+ /**
3
+ * Типы контента городского квеста (schema 1.1.0 из контент-пакета
4
+ * escapenaviator_city_quests). Контент хранится целиком в jsonb
5
+ * опубликованной версии; движок читает только описанные ниже поля,
6
+ * остальное прозрачно проксируется клиенту (или игнорируется).
7
+ *
8
+ * Текстовые поля могут быть либо строкой (монолингвальный контент),
9
+ * либо словарём переводов — движок резолвит через resolveLocalized().
10
+ */
11
+ export type LocalizedText = string | Partial<Record<Languages, string>>;
12
+ export type CityQuestHint = {
13
+ level: number;
14
+ penalty: number;
15
+ text: LocalizedText;
16
+ };
17
+ export type CityQuestChoice = {
18
+ id: string;
19
+ label: LocalizedText;
20
+ };
21
+ export type CityQuestDynamicAnswer = {
22
+ /**
23
+ * Правила проверки, вычисляемые сервером в момент ответа:
24
+ * - server_compares_submitted_time_to_local_time (+ tolerance 'plus_minus_N_minutes')
25
+ * - server_accepts_current_hour_figure_number_on_12h_cycle
26
+ */
27
+ rule: string;
28
+ tolerance?: string;
29
+ };
30
+ export type CityQuestChallenge = {
31
+ type: string;
32
+ prompt: LocalizedText;
33
+ choices?: CityQuestChoice[];
34
+ accepted_answers: string[];
35
+ dynamic_answer?: CityQuestDynamicAnswer;
36
+ team_split_roles?: Array<{
37
+ role: string;
38
+ task: LocalizedText;
39
+ }>;
40
+ audio_asset?: string;
41
+ normalization?: string[];
42
+ hints: CityQuestHint[];
43
+ solution_explanation: LocalizedText;
44
+ };
45
+ export type CityQuestFallback = {
46
+ trigger: string;
47
+ alternative_prompt: LocalizedText;
48
+ accepted_answers: string[];
49
+ asset_id?: string;
50
+ };
51
+ export type CityQuestStop = {
52
+ id: string;
53
+ order: number;
54
+ chapter_title?: LocalizedText;
55
+ location: {
56
+ name: string;
57
+ display_name_before_solve?: string;
58
+ address?: string;
59
+ lat: number;
60
+ lng: number;
61
+ gps_radius_m: number;
62
+ [key: string]: unknown;
63
+ };
64
+ navigation?: {
65
+ arrival_instruction?: LocalizedText;
66
+ from_previous?: string;
67
+ walk_audio_asset?: string;
68
+ walk_micro_task?: LocalizedText;
69
+ };
70
+ story_before: LocalizedText;
71
+ story_after: LocalizedText;
72
+ historical_note?: LocalizedText;
73
+ challenge: CityQuestChallenge;
74
+ photo_challenge?: {
75
+ prompt: LocalizedText;
76
+ collage_slot?: number;
77
+ };
78
+ reward?: Record<string, unknown> & {
79
+ artifact_state?: string;
80
+ };
81
+ fallback: CityQuestFallback;
82
+ telemetry?: {
83
+ event_key?: string;
84
+ expected_solve_seconds?: number;
85
+ };
86
+ [key: string]: unknown;
87
+ };
88
+ export type CityQuestRouteEvent = {
89
+ id: string;
90
+ trigger_after_stop: string;
91
+ type: 'message' | 'theft_bonus' | 'timed_challenge';
92
+ content?: {
93
+ from?: string;
94
+ text?: LocalizedText;
95
+ };
96
+ bonus_challenge?: CityQuestChallenge;
97
+ bonus_points?: number;
98
+ soft_timer_seconds?: number;
99
+ [key: string]: unknown;
100
+ };
101
+ export type CityQuestFinale = {
102
+ final_puzzle?: CityQuestChallenge;
103
+ choice_prompt: LocalizedText;
104
+ choices: Array<{
105
+ id: string;
106
+ label: LocalizedText;
107
+ ending: LocalizedText;
108
+ }>;
109
+ recommended_canonical_ending?: string;
110
+ share_card?: unknown;
111
+ };
112
+ export type CityQuestScoring = {
113
+ starting_score?: number;
114
+ hint_penalties?: number[];
115
+ skip_penalty?: number;
116
+ wrong_answer_penalty?: number;
117
+ wrong_answer_rate_limit?: {
118
+ after_attempts: number;
119
+ cooldown_seconds: number;
120
+ };
121
+ bonus_points_max?: number;
122
+ [key: string]: unknown;
123
+ };
124
+ export type CityQuestContent = {
125
+ schema_version: string;
126
+ game_id: string;
127
+ status: string;
128
+ title: Partial<Record<Languages, string>>;
129
+ tagline?: Partial<Record<Languages, string>>;
130
+ locale_primary?: string;
131
+ supported_answer_languages?: string[];
132
+ /** IANA timezone города игры — нужен для time_dynamic задач. */
133
+ timezone?: string;
134
+ duration_minutes?: {
135
+ target: number;
136
+ range?: number[];
137
+ };
138
+ distance_km_approx?: number;
139
+ prologue?: Record<string, LocalizedText>;
140
+ onboarding?: unknown;
141
+ progress_artifact?: unknown;
142
+ meta_puzzle?: {
143
+ tokens_in_order: string[];
144
+ display_grouping?: string;
145
+ };
146
+ route_events?: CityQuestRouteEvent[];
147
+ finale: CityQuestFinale;
148
+ scoring?: CityQuestScoring;
149
+ self_guided_support?: {
150
+ auto_fallback_after_issue_reports?: {
151
+ same_stop_reports?: number;
152
+ window_hours?: number;
153
+ };
154
+ stuck_rescue?: unknown;
155
+ [key: string]: unknown;
156
+ };
157
+ stops: CityQuestStop[];
158
+ [key: string]: unknown;
159
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,29 @@
1
+ import { Languages } from '../shared/enum/languages.enum';
2
+ import { RO } from '../shared/ro-class';
3
+ import { CityQuestStatusEnum } from './enum/city-quest-status.enum';
4
+ export declare class CityQuestBindingRO {
5
+ id: number;
6
+ questroomId: number;
7
+ profileId: number;
8
+ }
9
+ export declare class CityQuestAssetRO extends RO {
10
+ assetKey: string;
11
+ language?: Languages | null;
12
+ url: string;
13
+ transcript?: string | null;
14
+ }
15
+ export declare class CityQuestRO extends RO {
16
+ /** game_id из контента (esc-muc-stolen-hour-v1). */
17
+ key: string;
18
+ city?: string;
19
+ title: Partial<Record<Languages, string>>;
20
+ status: CityQuestStatusEnum;
21
+ /** Номер последней опубликованной версии; null — ещё не публиковалась. */
22
+ publishedVersion: number | null;
23
+ /** Черновой контент (последний импорт). */
24
+ draftUpdatedAt?: Date | null;
25
+ stopsCount: number;
26
+ /** Ключи ассетов из контента, для которых не загружен файл. */
27
+ missingAssets?: string[];
28
+ bindings?: CityQuestBindingRO[];
29
+ }
@@ -0,0 +1,89 @@
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.CityQuestRO = exports.CityQuestAssetRO = exports.CityQuestBindingRO = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const languages_enum_1 = require("../shared/enum/languages.enum");
15
+ const ro_class_1 = require("../shared/ro-class");
16
+ const city_quest_status_enum_1 = require("./enum/city-quest-status.enum");
17
+ class CityQuestBindingRO {
18
+ }
19
+ exports.CityQuestBindingRO = CityQuestBindingRO;
20
+ __decorate([
21
+ (0, class_transformer_1.Expose)(),
22
+ __metadata("design:type", Number)
23
+ ], CityQuestBindingRO.prototype, "id", void 0);
24
+ __decorate([
25
+ (0, class_transformer_1.Expose)(),
26
+ __metadata("design:type", Number)
27
+ ], CityQuestBindingRO.prototype, "questroomId", void 0);
28
+ __decorate([
29
+ (0, class_transformer_1.Expose)(),
30
+ __metadata("design:type", Number)
31
+ ], CityQuestBindingRO.prototype, "profileId", void 0);
32
+ class CityQuestAssetRO extends ro_class_1.RO {
33
+ }
34
+ exports.CityQuestAssetRO = CityQuestAssetRO;
35
+ __decorate([
36
+ (0, class_transformer_1.Expose)(),
37
+ __metadata("design:type", String)
38
+ ], CityQuestAssetRO.prototype, "assetKey", void 0);
39
+ __decorate([
40
+ (0, class_transformer_1.Expose)(),
41
+ __metadata("design:type", String)
42
+ ], CityQuestAssetRO.prototype, "language", void 0);
43
+ __decorate([
44
+ (0, class_transformer_1.Expose)(),
45
+ __metadata("design:type", String)
46
+ ], CityQuestAssetRO.prototype, "url", void 0);
47
+ __decorate([
48
+ (0, class_transformer_1.Expose)(),
49
+ __metadata("design:type", String)
50
+ ], CityQuestAssetRO.prototype, "transcript", void 0);
51
+ class CityQuestRO extends ro_class_1.RO {
52
+ }
53
+ exports.CityQuestRO = CityQuestRO;
54
+ __decorate([
55
+ (0, class_transformer_1.Expose)(),
56
+ __metadata("design:type", String)
57
+ ], CityQuestRO.prototype, "key", void 0);
58
+ __decorate([
59
+ (0, class_transformer_1.Expose)(),
60
+ __metadata("design:type", String)
61
+ ], CityQuestRO.prototype, "city", void 0);
62
+ __decorate([
63
+ (0, class_transformer_1.Expose)(),
64
+ __metadata("design:type", Object)
65
+ ], CityQuestRO.prototype, "title", void 0);
66
+ __decorate([
67
+ (0, class_transformer_1.Expose)(),
68
+ __metadata("design:type", String)
69
+ ], CityQuestRO.prototype, "status", void 0);
70
+ __decorate([
71
+ (0, class_transformer_1.Expose)(),
72
+ __metadata("design:type", Number)
73
+ ], CityQuestRO.prototype, "publishedVersion", void 0);
74
+ __decorate([
75
+ (0, class_transformer_1.Expose)(),
76
+ __metadata("design:type", Date)
77
+ ], CityQuestRO.prototype, "draftUpdatedAt", void 0);
78
+ __decorate([
79
+ (0, class_transformer_1.Expose)(),
80
+ __metadata("design:type", Number)
81
+ ], CityQuestRO.prototype, "stopsCount", void 0);
82
+ __decorate([
83
+ (0, class_transformer_1.Expose)(),
84
+ __metadata("design:type", Array)
85
+ ], CityQuestRO.prototype, "missingAssets", void 0);
86
+ __decorate([
87
+ (0, class_transformer_1.Expose)(),
88
+ __metadata("design:type", Array)
89
+ ], CityQuestRO.prototype, "bindings", void 0);
@@ -0,0 +1,6 @@
1
+ export declare enum CityQuestPlayPhaseEnum {
2
+ STOPS = "stops",
3
+ FINALE_PUZZLE = "finale_puzzle",
4
+ FINALE_CHOICE = "finale_choice",
5
+ FINISHED = "finished"
6
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CityQuestPlayPhaseEnum = void 0;
4
+ var CityQuestPlayPhaseEnum;
5
+ (function (CityQuestPlayPhaseEnum) {
6
+ CityQuestPlayPhaseEnum["STOPS"] = "stops";
7
+ CityQuestPlayPhaseEnum["FINALE_PUZZLE"] = "finale_puzzle";
8
+ CityQuestPlayPhaseEnum["FINALE_CHOICE"] = "finale_choice";
9
+ CityQuestPlayPhaseEnum["FINISHED"] = "finished";
10
+ })(CityQuestPlayPhaseEnum || (exports.CityQuestPlayPhaseEnum = CityQuestPlayPhaseEnum = {}));
@@ -0,0 +1,18 @@
1
+ export declare enum CityQuestSessionEventTypeEnum {
2
+ SESSION_STARTED = "session_started",
3
+ ARRIVAL = "arrival",
4
+ ANSWER_CORRECT = "answer_correct",
5
+ ANSWER_WRONG = "answer_wrong",
6
+ HINT = "hint",
7
+ SKIP = "skip",
8
+ REVEAL = "reveal",
9
+ FALLBACK_USED = "fallback_used",
10
+ ROUTE_EVENT_DELIVERED = "route_event_delivered",
11
+ ROUTE_EVENT_SOLVED = "route_event_solved",
12
+ ROUTE_EVENT_DISMISSED = "route_event_dismissed",
13
+ FINALE_ASSEMBLY_SOLVED = "finale_assembly_solved",
14
+ FINALE_CHOICE = "finale_choice",
15
+ PAUSE = "pause",
16
+ RESUME = "resume",
17
+ ISSUE_REPORTED = "issue_reported"
18
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CityQuestSessionEventTypeEnum = void 0;
4
+ var CityQuestSessionEventTypeEnum;
5
+ (function (CityQuestSessionEventTypeEnum) {
6
+ CityQuestSessionEventTypeEnum["SESSION_STARTED"] = "session_started";
7
+ CityQuestSessionEventTypeEnum["ARRIVAL"] = "arrival";
8
+ CityQuestSessionEventTypeEnum["ANSWER_CORRECT"] = "answer_correct";
9
+ CityQuestSessionEventTypeEnum["ANSWER_WRONG"] = "answer_wrong";
10
+ CityQuestSessionEventTypeEnum["HINT"] = "hint";
11
+ CityQuestSessionEventTypeEnum["SKIP"] = "skip";
12
+ CityQuestSessionEventTypeEnum["REVEAL"] = "reveal";
13
+ CityQuestSessionEventTypeEnum["FALLBACK_USED"] = "fallback_used";
14
+ CityQuestSessionEventTypeEnum["ROUTE_EVENT_DELIVERED"] = "route_event_delivered";
15
+ CityQuestSessionEventTypeEnum["ROUTE_EVENT_SOLVED"] = "route_event_solved";
16
+ CityQuestSessionEventTypeEnum["ROUTE_EVENT_DISMISSED"] = "route_event_dismissed";
17
+ CityQuestSessionEventTypeEnum["FINALE_ASSEMBLY_SOLVED"] = "finale_assembly_solved";
18
+ CityQuestSessionEventTypeEnum["FINALE_CHOICE"] = "finale_choice";
19
+ CityQuestSessionEventTypeEnum["PAUSE"] = "pause";
20
+ CityQuestSessionEventTypeEnum["RESUME"] = "resume";
21
+ CityQuestSessionEventTypeEnum["ISSUE_REPORTED"] = "issue_reported";
22
+ })(CityQuestSessionEventTypeEnum || (exports.CityQuestSessionEventTypeEnum = CityQuestSessionEventTypeEnum = {}));
@@ -0,0 +1,5 @@
1
+ export declare enum CityQuestSessionStatusEnum {
2
+ ACTIVE = "active",
3
+ PAUSED = "paused",
4
+ FINISHED = "finished"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CityQuestSessionStatusEnum = void 0;
4
+ var CityQuestSessionStatusEnum;
5
+ (function (CityQuestSessionStatusEnum) {
6
+ CityQuestSessionStatusEnum["ACTIVE"] = "active";
7
+ CityQuestSessionStatusEnum["PAUSED"] = "paused";
8
+ CityQuestSessionStatusEnum["FINISHED"] = "finished";
9
+ })(CityQuestSessionStatusEnum || (exports.CityQuestSessionStatusEnum = CityQuestSessionStatusEnum = {}));
@@ -0,0 +1,7 @@
1
+ export declare enum CityQuestStatusEnum {
2
+ PROTOTYPE = "prototype_not_field_validated",
3
+ FIELD_TESTING = "field_testing",
4
+ READY_FOR_SALE = "ready_for_sale",
5
+ PAUSED = "paused",
6
+ RETIRED = "retired"
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CityQuestStatusEnum = void 0;
4
+ var CityQuestStatusEnum;
5
+ (function (CityQuestStatusEnum) {
6
+ CityQuestStatusEnum["PROTOTYPE"] = "prototype_not_field_validated";
7
+ CityQuestStatusEnum["FIELD_TESTING"] = "field_testing";
8
+ CityQuestStatusEnum["READY_FOR_SALE"] = "ready_for_sale";
9
+ CityQuestStatusEnum["PAUSED"] = "paused";
10
+ CityQuestStatusEnum["RETIRED"] = "retired";
11
+ })(CityQuestStatusEnum || (exports.CityQuestStatusEnum = CityQuestStatusEnum = {}));
@@ -0,0 +1,6 @@
1
+ export declare class ImportCityQuestDto {
2
+ /** Полный JSON контента игры (schema 1.1.0). Валидируется сервисом. */
3
+ content: Record<string, unknown>;
4
+ /** Город для каталога (например, "Munich"). */
5
+ city?: string;
6
+ }
@@ -0,0 +1,28 @@
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.ImportCityQuestDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ class ImportCityQuestDto {
16
+ }
17
+ exports.ImportCityQuestDto = ImportCityQuestDto;
18
+ __decorate([
19
+ (0, class_validator_1.IsObject)(),
20
+ (0, class_transformer_1.Expose)(),
21
+ __metadata("design:type", Object)
22
+ ], ImportCityQuestDto.prototype, "content", void 0);
23
+ __decorate([
24
+ (0, class_validator_1.IsOptional)(),
25
+ (0, class_validator_1.IsString)(),
26
+ (0, class_transformer_1.Expose)(),
27
+ __metadata("design:type", String)
28
+ ], ImportCityQuestDto.prototype, "city", void 0);
@@ -0,0 +1,5 @@
1
+ import { CityQuestStatusEnum } from './enum/city-quest-status.enum';
2
+ export declare class UpdateCityQuestDto {
3
+ status?: CityQuestStatusEnum;
4
+ city?: string;
5
+ }
@@ -0,0 +1,30 @@
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.UpdateCityQuestDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const city_quest_status_enum_1 = require("./enum/city-quest-status.enum");
16
+ class UpdateCityQuestDto {
17
+ }
18
+ exports.UpdateCityQuestDto = UpdateCityQuestDto;
19
+ __decorate([
20
+ (0, class_validator_1.IsOptional)(),
21
+ (0, class_validator_1.IsEnum)(city_quest_status_enum_1.CityQuestStatusEnum),
22
+ (0, class_transformer_1.Expose)(),
23
+ __metadata("design:type", String)
24
+ ], UpdateCityQuestDto.prototype, "status", void 0);
25
+ __decorate([
26
+ (0, class_validator_1.IsOptional)(),
27
+ (0, class_validator_1.IsString)(),
28
+ (0, class_transformer_1.Expose)(),
29
+ __metadata("design:type", String)
30
+ ], UpdateCityQuestDto.prototype, "city", void 0);
@@ -0,0 +1,11 @@
1
+ import { Languages } from '../shared/enum/languages.enum';
2
+ export declare class UpsertCityQuestAssetDto {
3
+ /** Ключ ассета из контента (walk_audio_asset, audio_asset, artifact_state и т.д.). */
4
+ assetKey: string;
5
+ /** Локаль озвучки. Пусто — ассет общий для всех языков (картинки, музыка). */
6
+ language?: Languages;
7
+ /** URL загруженного файла (из POST /uploads/audio | /uploads/image). */
8
+ url: string;
9
+ /** Текстовая расшифровка аудио — доступность и режим экономии батареи. */
10
+ transcript?: string;
11
+ }
@@ -0,0 +1,40 @@
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.UpsertCityQuestAssetDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const languages_enum_1 = require("../shared/enum/languages.enum");
16
+ class UpsertCityQuestAssetDto {
17
+ }
18
+ exports.UpsertCityQuestAssetDto = UpsertCityQuestAssetDto;
19
+ __decorate([
20
+ (0, class_validator_1.IsString)(),
21
+ (0, class_transformer_1.Expose)(),
22
+ __metadata("design:type", String)
23
+ ], UpsertCityQuestAssetDto.prototype, "assetKey", void 0);
24
+ __decorate([
25
+ (0, class_validator_1.IsOptional)(),
26
+ (0, class_validator_1.IsEnum)(languages_enum_1.Languages),
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", String)
29
+ ], UpsertCityQuestAssetDto.prototype, "language", void 0);
30
+ __decorate([
31
+ (0, class_validator_1.IsString)(),
32
+ (0, class_transformer_1.Expose)(),
33
+ __metadata("design:type", String)
34
+ ], UpsertCityQuestAssetDto.prototype, "url", void 0);
35
+ __decorate([
36
+ (0, class_validator_1.IsOptional)(),
37
+ (0, class_validator_1.IsString)(),
38
+ (0, class_transformer_1.Expose)(),
39
+ __metadata("design:type", String)
40
+ ], UpsertCityQuestAssetDto.prototype, "transcript", void 0);
@@ -9,6 +9,11 @@ export declare class WidgetPlayersFormDto {
9
9
  language: Languages;
10
10
  players: number;
11
11
  children: number;
12
+ /**
13
+ * «Определимся на месте» (playersSelectMode=OPTIONAL/HIDDEN): состав не
14
+ * определён, `players` засеян минимумом квеста, дети скрыты/сброшены.
15
+ */
16
+ flexPlayers?: boolean;
12
17
  comment: string;
13
18
  hasModes: boolean;
14
19
  mode: string;
@@ -50,6 +50,11 @@ __decorate([
50
50
  (0, class_transformer_1.Expose)(),
51
51
  __metadata("design:type", Number)
52
52
  ], WidgetPlayersFormDto.prototype, "children", void 0);
53
+ __decorate([
54
+ (0, class_validator_1.IsOptional)(),
55
+ (0, class_transformer_1.Expose)(),
56
+ __metadata("design:type", Boolean)
57
+ ], WidgetPlayersFormDto.prototype, "flexPlayers", void 0);
53
58
  __decorate([
54
59
  (0, class_validator_1.IsOptional)(),
55
60
  (0, class_transformer_1.Expose)(),
@@ -0,0 +1,5 @@
1
+ export declare class PlayAnswerDto {
2
+ answer: string;
3
+ /** Ключ идемпотентности: повторная отправка того же ответа не дублирует события. */
4
+ idempotencyKey?: string;
5
+ }
@@ -0,0 +1,30 @@
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.PlayAnswerDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ class PlayAnswerDto {
16
+ }
17
+ exports.PlayAnswerDto = PlayAnswerDto;
18
+ __decorate([
19
+ (0, class_validator_1.IsString)(),
20
+ (0, class_validator_1.MaxLength)(200),
21
+ (0, class_transformer_1.Expose)(),
22
+ __metadata("design:type", String)
23
+ ], PlayAnswerDto.prototype, "answer", void 0);
24
+ __decorate([
25
+ (0, class_validator_1.IsOptional)(),
26
+ (0, class_validator_1.IsString)(),
27
+ (0, class_validator_1.MaxLength)(64),
28
+ (0, class_transformer_1.Expose)(),
29
+ __metadata("design:type", String)
30
+ ], PlayAnswerDto.prototype, "idempotencyKey", void 0);