@escapenavigator/types 2.0.20 → 2.0.22

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.
@@ -44,6 +44,8 @@ export type CityAttractionRO = ResponseObject & {
44
44
  wikidataId: string | null;
45
45
  googlePlaceId: string | null;
46
46
  archived: boolean;
47
+ /** Free-mode preview: up to 3 per city fully unlocked without city pack. */
48
+ isFreePreview: boolean;
47
49
  source: AttractionSourceEnum;
48
50
  reviewStatus: AttractionReviewStatusEnum;
49
51
  rejectionReason: string | null;
@@ -34,6 +34,7 @@ export declare class CreateCityAttractionDto {
34
34
  wikidataId?: string | null;
35
35
  googlePlaceId?: string | null;
36
36
  archived?: boolean;
37
+ isFreePreview?: boolean;
37
38
  source?: AttractionSourceEnum;
38
39
  reviewStatus?: AttractionReviewStatusEnum;
39
40
  rejectionReason?: string | null;
@@ -195,6 +195,12 @@ __decorate([
195
195
  (0, class_transformer_1.Expose)(),
196
196
  __metadata("design:type", Boolean)
197
197
  ], CreateCityAttractionDto.prototype, "archived", void 0);
198
+ __decorate([
199
+ (0, class_validator_1.IsOptional)(),
200
+ (0, class_validator_1.IsBoolean)(),
201
+ (0, class_transformer_1.Expose)(),
202
+ __metadata("design:type", Boolean)
203
+ ], CreateCityAttractionDto.prototype, "isFreePreview", void 0);
198
204
  __decorate([
199
205
  (0, class_validator_1.IsOptional)(),
200
206
  (0, class_validator_1.IsEnum)(attraction_source_enum_1.AttractionSourceEnum),
@@ -1,12 +1,14 @@
1
- import { AttractionContentCard, AttractionFunFact } from '../city-attraction/attraction-content';
2
1
  /**
3
- * Partial override of attraction guide content for a route stop.
4
- * Null/omitted fields inherit from the attraction locale.
2
+ * Route-flavoured override of attraction guide content for a stop.
3
+ *
4
+ * Only the narrative differs between the free-roam attraction and the route
5
+ * stop: hook and guideTalk (route dramaturgy, navigation, cliffhangers).
6
+ * The canonical fact set (cards, funFact, lookFor) always comes from the
7
+ * attraction locale via relation and cannot be overridden — see
8
+ * docs/content-playbook.md, section 2. Null/omitted fields inherit from
9
+ * the attraction locale too.
5
10
  */
6
11
  export type ReadyRouteStopContentOverride = {
7
12
  hook?: string | null;
8
- cards?: AttractionContentCard[] | null;
9
13
  guideTalk?: string | null;
10
- funFact?: AttractionFunFact | null;
11
- lookFor?: string[] | null;
12
14
  };
@@ -0,0 +1,23 @@
1
+ export declare enum CityPlayerEntitlementScopeDtoEnum {
2
+ ROUTE = "route",
3
+ CITY = "city",
4
+ QUEST = "quest",
5
+ PASS = "pass"
6
+ }
7
+ export declare class CityPlayerDevGrantDto {
8
+ scope: CityPlayerEntitlementScopeDtoEnum;
9
+ scopeId?: number | null;
10
+ /** Matches CITY_ENTITLEMENT_DEV_SECRET when set. */
11
+ secret?: string;
12
+ }
13
+ export declare class CityPlayerDevRevokeDto {
14
+ entitlementId: number;
15
+ secret?: string;
16
+ }
17
+ /** After StoreKit/Play purchase via RevenueCat — grant entitlement on our side. */
18
+ export declare class CityPlayerIapGrantDto {
19
+ scope: CityPlayerEntitlementScopeDtoEnum;
20
+ scopeId?: number | null;
21
+ storeTransactionId: string;
22
+ productId?: string;
23
+ }
@@ -0,0 +1,81 @@
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.CityPlayerIapGrantDto = exports.CityPlayerDevRevokeDto = exports.CityPlayerDevGrantDto = exports.CityPlayerEntitlementScopeDtoEnum = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ var CityPlayerEntitlementScopeDtoEnum;
16
+ (function (CityPlayerEntitlementScopeDtoEnum) {
17
+ CityPlayerEntitlementScopeDtoEnum["ROUTE"] = "route";
18
+ CityPlayerEntitlementScopeDtoEnum["CITY"] = "city";
19
+ CityPlayerEntitlementScopeDtoEnum["QUEST"] = "quest";
20
+ CityPlayerEntitlementScopeDtoEnum["PASS"] = "pass";
21
+ })(CityPlayerEntitlementScopeDtoEnum || (exports.CityPlayerEntitlementScopeDtoEnum = CityPlayerEntitlementScopeDtoEnum = {}));
22
+ class CityPlayerDevGrantDto {
23
+ }
24
+ exports.CityPlayerDevGrantDto = CityPlayerDevGrantDto;
25
+ __decorate([
26
+ (0, class_validator_1.IsEnum)(CityPlayerEntitlementScopeDtoEnum),
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", String)
29
+ ], CityPlayerDevGrantDto.prototype, "scope", void 0);
30
+ __decorate([
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, class_validator_1.IsInt)(),
33
+ (0, class_transformer_1.Expose)(),
34
+ __metadata("design:type", Number)
35
+ ], CityPlayerDevGrantDto.prototype, "scopeId", void 0);
36
+ __decorate([
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, class_validator_1.IsString)(),
39
+ (0, class_transformer_1.Expose)(),
40
+ __metadata("design:type", String)
41
+ ], CityPlayerDevGrantDto.prototype, "secret", void 0);
42
+ class CityPlayerDevRevokeDto {
43
+ }
44
+ exports.CityPlayerDevRevokeDto = CityPlayerDevRevokeDto;
45
+ __decorate([
46
+ (0, class_validator_1.IsInt)(),
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", Number)
49
+ ], CityPlayerDevRevokeDto.prototype, "entitlementId", void 0);
50
+ __decorate([
51
+ (0, class_validator_1.IsOptional)(),
52
+ (0, class_validator_1.IsString)(),
53
+ (0, class_transformer_1.Expose)(),
54
+ __metadata("design:type", String)
55
+ ], CityPlayerDevRevokeDto.prototype, "secret", void 0);
56
+ /** After StoreKit/Play purchase via RevenueCat — grant entitlement on our side. */
57
+ class CityPlayerIapGrantDto {
58
+ }
59
+ exports.CityPlayerIapGrantDto = CityPlayerIapGrantDto;
60
+ __decorate([
61
+ (0, class_validator_1.IsEnum)(CityPlayerEntitlementScopeDtoEnum),
62
+ (0, class_transformer_1.Expose)(),
63
+ __metadata("design:type", String)
64
+ ], CityPlayerIapGrantDto.prototype, "scope", void 0);
65
+ __decorate([
66
+ (0, class_validator_1.IsOptional)(),
67
+ (0, class_validator_1.IsInt)(),
68
+ (0, class_transformer_1.Expose)(),
69
+ __metadata("design:type", Number)
70
+ ], CityPlayerIapGrantDto.prototype, "scopeId", void 0);
71
+ __decorate([
72
+ (0, class_validator_1.IsString)(),
73
+ (0, class_transformer_1.Expose)(),
74
+ __metadata("design:type", String)
75
+ ], CityPlayerIapGrantDto.prototype, "storeTransactionId", void 0);
76
+ __decorate([
77
+ (0, class_validator_1.IsOptional)(),
78
+ (0, class_validator_1.IsString)(),
79
+ (0, class_transformer_1.Expose)(),
80
+ __metadata("design:type", String)
81
+ ], CityPlayerIapGrantDto.prototype, "productId", void 0);
@@ -45,6 +45,8 @@ export type CityPlayerPersonDetailRO = {
45
45
  name: string;
46
46
  knownFor: string | null;
47
47
  description: string | null;
48
+ /** True when deep bio needs city pack / pass. */
49
+ descriptionLocked?: boolean;
48
50
  photoUrl: string | null;
49
51
  photos: string[];
50
52
  domains: PersonDomainEnum[];
@@ -89,6 +91,14 @@ export type CityPlayerAttractionMapItemRO = {
89
91
  cards: CityPlayerAttractionCardRO[];
90
92
  funFact: CityPlayerAttractionFunFactRO | null;
91
93
  lookFor: string[];
94
+ /** True when guide content is gated (needs city pack / pass). */
95
+ locked: boolean;
96
+ isFreePreview: boolean;
97
+ /**
98
+ * Нормированная значимость места 0..1 (fame + mustSee + wow).
99
+ * Управляет размером маркера на карте: топ-вехи крупнее.
100
+ */
101
+ importance: number;
92
102
  /** Люди, связанные с этим местом (для маркеров рядом с точкой). */
93
103
  people: CityPlayerAttractionPersonRO[];
94
104
  };
@@ -46,8 +46,12 @@ export type CityPlayerCatalogGameRO = {
46
46
  cityQuestId: number;
47
47
  key: string;
48
48
  title: string;
49
+ tagline?: string | null;
49
50
  coverUrl?: string | null;
50
51
  availableLanguages: Languages[];
52
+ durationMinutes?: number | null;
53
+ distanceKm?: number | null;
54
+ pointsCount?: number;
51
55
  /**
52
56
  * Ссылка на booking-страницу виджета привязанного questroom
53
57
  * (`{ordersDomain}/booking/{widgetUuid}`). Плеер открывает её для
@@ -96,6 +100,7 @@ export type CityPlayerQuestPreviewRO = {
96
100
  title: string;
97
101
  tagline?: string | null;
98
102
  city?: string | null;
103
+ cityId?: number | null;
99
104
  coverUrl?: string | null;
100
105
  voicedBy?: string | null;
101
106
  durationMinutes?: number | null;
@@ -106,4 +111,8 @@ export type CityPlayerQuestPreviewRO = {
106
111
  bookingUrl?: string | null;
107
112
  /** Ключевые вехи маршрута для схемы (фото + название + координаты). */
108
113
  keyMilestones: PlayKeyMilestoneRO[];
114
+ /** Entitlement / IAP unlock for this quest (logged-in player). */
115
+ fullyUnlocked?: boolean;
116
+ /** Ready-to-play access token when player already owns the quest. */
117
+ accessToken?: string | null;
109
118
  };
@@ -1,4 +1,5 @@
1
1
  import { AttractionContent } from '../../city-attraction/attraction-content';
2
+ import { CityPlayerAttractionPersonRO } from './city-explore.ro';
2
3
  export type CityPlayerReadyRouteListItemRO = {
3
4
  routeId: number;
4
5
  title: string;
@@ -32,6 +33,22 @@ export type CityPlayerReadyRouteStopRO = {
32
33
  /** Озвучка guideTalk стопа (маршрутная, не аудио самой точки). */
33
34
  guideAudioUrl: string | null;
34
35
  guideAudioDurationSec: number | null;
36
+ /** True when stop is past freemium and user has no entitlement. */
37
+ locked: boolean;
38
+ /**
39
+ * Нормированная значимость места 0..1 (fame + mustSee + wow).
40
+ * Управляет размером маркера на карте: топ-вехи крупнее.
41
+ */
42
+ importance: number;
43
+ /** Личности, связанные с точкой стопа. */
44
+ people: CityPlayerAttractionPersonRO[];
45
+ };
46
+ export type CityPlayerContentAccessRO = {
47
+ freeStopCount: number;
48
+ routeUnlocked: boolean;
49
+ cityUnlocked: boolean;
50
+ passActive: boolean;
51
+ fullyUnlocked: boolean;
35
52
  };
36
53
  export type CityPlayerReadyRouteDetailRO = {
37
54
  routeId: number;
@@ -47,6 +64,7 @@ export type CityPlayerReadyRouteDetailRO = {
47
64
  durationToMinutes: number | null;
48
65
  distanceKm: number | null;
49
66
  stopsCount: number;
67
+ access: CityPlayerContentAccessRO;
50
68
  /** Attraction stops only (waypoints omitted from markers). */
51
69
  stops: CityPlayerReadyRouteStopRO[];
52
70
  /** Full path including invisible waypoints [lng, lat]. */
@@ -13,6 +13,15 @@ export declare class StartCityPipelineDto {
13
13
  * (по умолчанию генерим RU + EN).
14
14
  */
15
15
  withEnglish?: boolean;
16
+ /**
17
+ * true — дополнительно сгенерировать AI-тексты (content-ru/content-en)
18
+ * для точек без контента (существующие тексты не перезаписываются).
19
+ * По умолчанию false — режим «скелет»: импорт → ресёрч → триаж →
20
+ * обогащение → автосвязи; тексты пишет редактор/агент по плейбуку.
21
+ * Генерация уместна как базовый черновик для «хвостовых» городов
22
+ * без ручной редактуры.
23
+ */
24
+ withContent?: boolean;
16
25
  /**
17
26
  * @deprecated Use withEnglish. Kept for older admin clients:
18
27
  * withRussian=false means skip non-base localization (EN).
@@ -40,6 +40,12 @@ __decorate([
40
40
  (0, class_transformer_1.Expose)(),
41
41
  __metadata("design:type", Boolean)
42
42
  ], StartCityPipelineDto.prototype, "withEnglish", void 0);
43
+ __decorate([
44
+ (0, class_validator_1.IsOptional)(),
45
+ (0, class_validator_1.IsBoolean)(),
46
+ (0, class_transformer_1.Expose)(),
47
+ __metadata("design:type", Boolean)
48
+ ], StartCityPipelineDto.prototype, "withContent", void 0);
43
49
  __decorate([
44
50
  (0, class_validator_1.IsOptional)(),
45
51
  (0, class_validator_1.IsBoolean)(),