@escapenavigator/types 2.0.9 → 2.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agregator/agregator-outdoor.ro.d.ts +97 -0
- package/dist/agregator/agregator-outdoor.ro.js +11 -0
- package/dist/agregator/agregator-questroom.ro.d.ts +8 -0
- package/dist/agregator/agregator-questroom.ro.js +4 -0
- package/dist/location/transfer-location-for-admin.dto.d.ts +5 -0
- package/dist/location/transfer-location-for-admin.dto.js +25 -0
- package/dist/openapi/city-quest/play-state.ro.d.ts +13 -1
- package/dist/profile/admin-profile.ro.d.ts +8 -0
- package/dist/profile/admin-profile.ro.js +26 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RO витрины сети городских квестов (network-страницы агрегатора).
|
|
3
|
+
*
|
|
4
|
+
* Источник данных — jsonb-контент опубликованной версии city-quest
|
|
5
|
+
* (`city-quest-versions.content`), поэтому здесь plain-типы без
|
|
6
|
+
* class-transformer: ответы собираются на беке вручную, поле за полем
|
|
7
|
+
* (спойлер-фильтр обязателен — наружу уходят только маршрутные данные,
|
|
8
|
+
* никаких заданий/ответов).
|
|
9
|
+
*/
|
|
10
|
+
/** Именованная точка маршрута без спойлеров (старт или landmark). */
|
|
11
|
+
export type AgregatorOutdoorLandmarkRO = {
|
|
12
|
+
name: string;
|
|
13
|
+
lat: number;
|
|
14
|
+
lng: number;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Маркетинговый тип игры (категории Questo): маппится из
|
|
18
|
+
* `content.display_type`, с фолбэком на эвристику по `content.genre`.
|
|
19
|
+
*/
|
|
20
|
+
export type AgregatorOutdoorDisplayType = 'scavenger_hunt' | 'walking_tour' | 'ghost_tour';
|
|
21
|
+
/** Разбивка принятых отзывов по звёздам: `{ 5: n, …, 1: n }`. */
|
|
22
|
+
export type AgregatorRatingBreakdownRO = Record<number, number>;
|
|
23
|
+
/**
|
|
24
|
+
* Маршрутные данные нашего аутдор-квеста для страницы квеста
|
|
25
|
+
* (`questroom.outdoorRoute`). Присутствует только у questroom с
|
|
26
|
+
* биндингом на опубликованную city-quest игру.
|
|
27
|
+
*/
|
|
28
|
+
export type AgregatorOutdoorRouteRO = {
|
|
29
|
+
distanceKm?: number;
|
|
30
|
+
stopsCount: number;
|
|
31
|
+
durationMinutes?: number;
|
|
32
|
+
durationRange?: [number, number];
|
|
33
|
+
start?: AgregatorOutdoorLandmarkRO & {
|
|
34
|
+
address?: string;
|
|
35
|
+
recommendedHours?: string;
|
|
36
|
+
};
|
|
37
|
+
/** 2–3 именованные точки маршрута — «что увидите», без спойлеров. */
|
|
38
|
+
landmarks: AgregatorOutdoorLandmarkRO[];
|
|
39
|
+
/** product_copy.highlights на языке запроса. */
|
|
40
|
+
highlights: string[];
|
|
41
|
+
/** product_copy.short на языке запроса. */
|
|
42
|
+
shortDescription?: string;
|
|
43
|
+
tagline?: string;
|
|
44
|
+
/** Языки, на которых можно играть (supported_answer_languages). */
|
|
45
|
+
languages: string[];
|
|
46
|
+
difficulty?: {
|
|
47
|
+
overall: number;
|
|
48
|
+
scaleMax: number;
|
|
49
|
+
observation?: number;
|
|
50
|
+
logic?: number;
|
|
51
|
+
navigation?: number;
|
|
52
|
+
};
|
|
53
|
+
leaderboard: boolean;
|
|
54
|
+
displayType: AgregatorOutdoorDisplayType;
|
|
55
|
+
genres: string[];
|
|
56
|
+
ratingBreakdown: AgregatorRatingBreakdownRO;
|
|
57
|
+
};
|
|
58
|
+
/** Карточка нашей игры на network-витрине `/tags/outdoor`. */
|
|
59
|
+
export type AgregatorNetworkQuestRO = {
|
|
60
|
+
questroomId: number;
|
|
61
|
+
slug: string;
|
|
62
|
+
title: string;
|
|
63
|
+
tagline?: string;
|
|
64
|
+
photo: string;
|
|
65
|
+
minPrice: number;
|
|
66
|
+
maxPrice: number;
|
|
67
|
+
currency?: string;
|
|
68
|
+
distanceKm?: number;
|
|
69
|
+
durationMinutes?: number;
|
|
70
|
+
durationRange?: [number, number];
|
|
71
|
+
stopsCount: number;
|
|
72
|
+
/** difficulty.overall из контента (шкала scale_max, обычно 1–5). */
|
|
73
|
+
difficulty?: number;
|
|
74
|
+
displayType: AgregatorOutdoorDisplayType;
|
|
75
|
+
rate: number;
|
|
76
|
+
reviewsCount: number;
|
|
77
|
+
start?: {
|
|
78
|
+
lat: number;
|
|
79
|
+
lng: number;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Ответ `GET agregator/questrooms/city/outdoor-network`: наши игры города
|
|
84
|
+
* + агрегаты для hero-блока витрины. Пустой `quests` = в городе нет
|
|
85
|
+
* сети, агрегатор показывает обычную tag-страницу.
|
|
86
|
+
*/
|
|
87
|
+
export type AgregatorOutdoorNetworkRO = {
|
|
88
|
+
quests: AgregatorNetworkQuestRO[];
|
|
89
|
+
stats: {
|
|
90
|
+
questCount: number;
|
|
91
|
+
avgRate: number;
|
|
92
|
+
totalReviews: number;
|
|
93
|
+
};
|
|
94
|
+
/** Выборочные точки всех игр города — блок «что увидите» и карта. */
|
|
95
|
+
landmarks: AgregatorOutdoorLandmarkRO[];
|
|
96
|
+
ratingBreakdown: AgregatorRatingBreakdownRO;
|
|
97
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RO витрины сети городских квестов (network-страницы агрегатора).
|
|
4
|
+
*
|
|
5
|
+
* Источник данных — jsonb-контент опубликованной версии city-quest
|
|
6
|
+
* (`city-quest-versions.content`), поэтому здесь plain-типы без
|
|
7
|
+
* class-transformer: ответы собираются на беке вручную, поле за полем
|
|
8
|
+
* (спойлер-фильтр обязателен — наружу уходят только маршрутные данные,
|
|
9
|
+
* никаких заданий/ответов).
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -7,6 +7,7 @@ import { ExpertReviewRO } from '../review/expert-review.ro';
|
|
|
7
7
|
import { CountriesEnum } from '../shared/enum/countries.enum';
|
|
8
8
|
import { Languages } from '../shared/enum/languages.enum';
|
|
9
9
|
import { TagsEnum } from '../shared/enum/tags.enum';
|
|
10
|
+
import { AgregatorOutdoorRouteRO } from './agregator-outdoor.ro';
|
|
10
11
|
import { AgregatorQuestroomCardRO } from './agregator-questroom-card.ro';
|
|
11
12
|
export declare const getRightLocale: ({ value, key, techLocales, locales, language, }: {
|
|
12
13
|
value: string;
|
|
@@ -86,5 +87,12 @@ export declare class AgregatorQuestroomRO {
|
|
|
86
87
|
hasSchedule?: boolean;
|
|
87
88
|
top: boolean;
|
|
88
89
|
navigatorReview?: ExpertReviewRO;
|
|
90
|
+
/**
|
|
91
|
+
* Маршрутные данные нашей city-quest игры (только у questroom с
|
|
92
|
+
* биндингом на опубликованную версию). Триггер network-варианта
|
|
93
|
+
* страницы квеста на агрегаторе. Plain-объект: собирается на беке
|
|
94
|
+
* вручную со спойлер-фильтром, class-transformer его не трогает.
|
|
95
|
+
*/
|
|
96
|
+
outdoorRoute?: AgregatorOutdoorRouteRO | null;
|
|
89
97
|
}
|
|
90
98
|
export {};
|
|
@@ -340,3 +340,7 @@ __decorate([
|
|
|
340
340
|
(0, class_transformer_1.Type)(() => expert_review_ro_1.ExpertReviewRO),
|
|
341
341
|
__metadata("design:type", expert_review_ro_1.ExpertReviewRO)
|
|
342
342
|
], AgregatorQuestroomRO.prototype, "navigatorReview", void 0);
|
|
343
|
+
__decorate([
|
|
344
|
+
(0, class_transformer_1.Expose)(),
|
|
345
|
+
__metadata("design:type", Object)
|
|
346
|
+
], AgregatorQuestroomRO.prototype, "outdoorRoute", void 0);
|
|
@@ -0,0 +1,25 @@
|
|
|
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.TransferLocationForAdminDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/** Перенос локации (со всеми её квестами) в другую компанию. Admin-only. */
|
|
16
|
+
class TransferLocationForAdminDto {
|
|
17
|
+
}
|
|
18
|
+
exports.TransferLocationForAdminDto = TransferLocationForAdminDto;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_transformer_1.Expose)(),
|
|
21
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
22
|
+
(0, class_validator_1.IsInt)(),
|
|
23
|
+
(0, class_validator_1.IsPositive)(),
|
|
24
|
+
__metadata("design:type", Number)
|
|
25
|
+
], TransferLocationForAdminDto.prototype, "profileId", void 0);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Languages } from '../../shared/enum/languages.enum';
|
|
2
1
|
import { CityQuestPlayPhaseEnum } from '../../city-quest/enum/city-quest-play-phase.enum';
|
|
3
2
|
import { CityQuestSessionStatusEnum } from '../../city-quest/enum/city-quest-session-status.enum';
|
|
3
|
+
import { Languages } from '../../shared/enum/languages.enum';
|
|
4
4
|
/**
|
|
5
5
|
* Публичные (безопасные) представления контента для игрока.
|
|
6
6
|
* Формируются сервером вручную — accepted_answers и будущие
|
|
@@ -74,6 +74,12 @@ export type PlayFinaleRO = {
|
|
|
74
74
|
label: string;
|
|
75
75
|
}>;
|
|
76
76
|
};
|
|
77
|
+
export type PlayPrologueRO = {
|
|
78
|
+
/** Экраны вступления (prologue.screen_1..N) в порядке номеров. */
|
|
79
|
+
screens: string[];
|
|
80
|
+
/** Миссия команды (prologue.team_mission) — показывается последней. */
|
|
81
|
+
teamMission?: string;
|
|
82
|
+
};
|
|
77
83
|
export type PlayResultRO = {
|
|
78
84
|
score: number;
|
|
79
85
|
bonusPoints: number;
|
|
@@ -107,6 +113,12 @@ export type PlayStateRO = {
|
|
|
107
113
|
artifactState?: string | null;
|
|
108
114
|
artifactAsset?: PlayAssetRO | null;
|
|
109
115
|
currentStop?: PlayStopRO | null;
|
|
116
|
+
/**
|
|
117
|
+
* Вступление игры (что произошло, миссия команды). Клиент показывает
|
|
118
|
+
* его перед первой точкой; отдаём всегда — чтобы можно было
|
|
119
|
+
* перечитать из меню.
|
|
120
|
+
*/
|
|
121
|
+
prologue?: PlayPrologueRO | null;
|
|
110
122
|
/** Событие маршрута, ожидающее реакции игрока. */
|
|
111
123
|
pendingRouteEvent?: PlayRouteEventRO | null;
|
|
112
124
|
finale?: PlayFinaleRO | null;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { GooglePlacesStatusEnum } from '../google-places/google-places-status.enum';
|
|
1
2
|
import { CountriesEnum } from '../shared/enum/countries.enum';
|
|
2
3
|
import { ProfileActionRO } from './action/profile-action.ro';
|
|
3
4
|
import { CrmVerificationEnum } from './enum/crm-verifiaction.enum';
|
|
@@ -12,6 +13,12 @@ import { ProfileSubscriptionTypeEnum } from './enum/profile-subscription-type.en
|
|
|
12
13
|
import { ProfileTagEnum } from './enum/profile-tag.enum';
|
|
13
14
|
import { ProfileTechStatusEnum } from './enum/profile-tech-status.enum';
|
|
14
15
|
import { ProfileCommissionRO } from './profile-commission.ro';
|
|
16
|
+
export declare class AdminProfileGooglePlaceRO {
|
|
17
|
+
id: number;
|
|
18
|
+
placeId: string;
|
|
19
|
+
locationId: number;
|
|
20
|
+
status: GooglePlacesStatusEnum;
|
|
21
|
+
}
|
|
15
22
|
declare class History {
|
|
16
23
|
createdAt: Date;
|
|
17
24
|
row: string;
|
|
@@ -64,5 +71,6 @@ export declare class AdminProfileRO {
|
|
|
64
71
|
lastVisit: Date;
|
|
65
72
|
crm: string;
|
|
66
73
|
actions: ProfileActionRO[];
|
|
74
|
+
googlePlaces: AdminProfileGooglePlaceRO[];
|
|
67
75
|
}
|
|
68
76
|
export {};
|
|
@@ -9,9 +9,10 @@ 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.AdminProfileRO = void 0;
|
|
12
|
+
exports.AdminProfileRO = exports.AdminProfileGooglePlaceRO = void 0;
|
|
13
13
|
/* eslint-disable max-classes-per-file */
|
|
14
14
|
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const google_places_status_enum_1 = require("../google-places/google-places-status.enum");
|
|
15
16
|
const countries_enum_1 = require("../shared/enum/countries.enum");
|
|
16
17
|
const profile_action_ro_1 = require("./action/profile-action.ro");
|
|
17
18
|
const crm_verifiaction_enum_1 = require("./enum/crm-verifiaction.enum");
|
|
@@ -25,6 +26,25 @@ const profile_subscription_enum_1 = require("./enum/profile-subscription.enum");
|
|
|
25
26
|
const profile_subscription_type_enum_1 = require("./enum/profile-subscription-type.enum");
|
|
26
27
|
const profile_tech_status_enum_1 = require("./enum/profile-tech-status.enum");
|
|
27
28
|
const profile_commission_ro_1 = require("./profile-commission.ro");
|
|
29
|
+
class AdminProfileGooglePlaceRO {
|
|
30
|
+
}
|
|
31
|
+
exports.AdminProfileGooglePlaceRO = AdminProfileGooglePlaceRO;
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_transformer_1.Expose)(),
|
|
34
|
+
__metadata("design:type", Number)
|
|
35
|
+
], AdminProfileGooglePlaceRO.prototype, "id", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_transformer_1.Expose)(),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], AdminProfileGooglePlaceRO.prototype, "placeId", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_transformer_1.Expose)(),
|
|
42
|
+
__metadata("design:type", Number)
|
|
43
|
+
], AdminProfileGooglePlaceRO.prototype, "locationId", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, class_transformer_1.Expose)(),
|
|
46
|
+
__metadata("design:type", String)
|
|
47
|
+
], AdminProfileGooglePlaceRO.prototype, "status", void 0);
|
|
28
48
|
class History {
|
|
29
49
|
}
|
|
30
50
|
__decorate([
|
|
@@ -229,3 +249,8 @@ __decorate([
|
|
|
229
249
|
(0, class_transformer_1.Type)(() => profile_action_ro_1.ProfileActionRO),
|
|
230
250
|
__metadata("design:type", Array)
|
|
231
251
|
], AdminProfileRO.prototype, "actions", void 0);
|
|
252
|
+
__decorate([
|
|
253
|
+
(0, class_transformer_1.Expose)(),
|
|
254
|
+
(0, class_transformer_1.Type)(() => AdminProfileGooglePlaceRO),
|
|
255
|
+
__metadata("design:type", Array)
|
|
256
|
+
], AdminProfileRO.prototype, "googlePlaces", void 0);
|