@v-office/website-sdk 2.13.0 → 2.15.0
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/README.md +3 -2
- package/dist/cli.mjs +2 -2
- package/dist/{client-Ma0daa2H.mjs → client-C0pqpk-N.mjs} +725 -267
- package/dist/index.d.mts +11 -0
- package/dist/index.mjs +1 -1
- package/dist/instructions/CHANGELOG.md +2 -0
- package/dist/instructions/MIGRATION.md +2 -0
- package/dist/instructions/README.md +8 -2
- package/dist/instructions/rentals.md +82 -1
- package/dist/instructions/versions/2.14.0/CHANGELOG.md +72 -0
- package/dist/instructions/versions/2.14.0/MIGRATION.md +148 -0
- package/dist/instructions/versions/2.15.0/CHANGELOG.md +66 -0
- package/dist/instructions/versions/2.15.0/MIGRATION.md +148 -0
- package/dist/{rentals-BG1diZoo.mjs → rentals--cnnFS4I.mjs} +10 -12
- package/dist/{search-Byi6XboR.mjs → search-X9spQmG5.mjs} +2 -2
- package/dist/{to-rental-highlights-BVikT4Iz.mjs → to-rental-highlights-BAsEuxoy.mjs} +1397 -8
- package/dist/translations/v9/de-DE/filter.json +4 -4
- package/dist/translations/v9/de-DE/rental-attribute-options.json +174 -0
- package/dist/translations/v9/de-DE/rental-attributes.json +95 -45
- package/dist/translations/v9/en-US/core.json +1 -1
- package/dist/translations/v9/en-US/filter.json +2 -2
- package/dist/translations/v9/en-US/rental-attribute-options.json +174 -0
- package/dist/translations/v9/en-US/rental-attributes.json +262 -212
- package/instructions/CHANGELOG.md +2 -0
- package/instructions/MIGRATION.md +2 -0
- package/instructions/README.md +8 -2
- package/instructions/rentals.md +82 -1
- package/instructions/versions/2.14.0/CHANGELOG.md +72 -0
- package/instructions/versions/2.14.0/MIGRATION.md +148 -0
- package/instructions/versions/2.15.0/CHANGELOG.md +66 -0
- package/instructions/versions/2.15.0/MIGRATION.md +148 -0
- package/package.json +6 -4
package/dist/index.d.mts
CHANGED
|
@@ -7334,6 +7334,17 @@ type KnownVofficeImageDataAttribute = KnownDataAttribute<KnownVofficeImageData>;
|
|
|
7334
7334
|
declare const VofficeFacilityDataFieldSchemas: {
|
|
7335
7335
|
readonly name: Schema.Union<readonly [Schema.String, Schema.$Record<Schema.String, Schema.String>]>;
|
|
7336
7336
|
readonly description: Schema.Union<readonly [Schema.String, Schema.$Record<Schema.String, Schema.String>]>;
|
|
7337
|
+
readonly images: Schema.mutable<Schema.$Array<Schema.Struct<{
|
|
7338
|
+
readonly id: Schema.optionalKey<Schema.Number>;
|
|
7339
|
+
readonly width: Schema.optionalKey<Schema.Number>;
|
|
7340
|
+
readonly height: Schema.optionalKey<Schema.Number>;
|
|
7341
|
+
readonly name: Schema.optionalKey<Schema.String>;
|
|
7342
|
+
readonly ask: Schema.optionalKey<Schema.NullOr<Schema.Union<readonly [Schema.String, Schema.Number]>>>;
|
|
7343
|
+
readonly tag: Schema.optionalKey<Schema.String>;
|
|
7344
|
+
readonly otaId: Schema.optionalKey<Schema.Number>;
|
|
7345
|
+
readonly titles: Schema.optionalKey<Schema.Unknown>;
|
|
7346
|
+
readonly season: Schema.optionalKey<Schema.String>;
|
|
7347
|
+
}>>>;
|
|
7337
7348
|
};
|
|
7338
7349
|
type KnownVofficeFacilityData = KnownJsonData<typeof VofficeFacilityDataFieldSchemas>;
|
|
7339
7350
|
type ParsedVofficeFacilityData = ParsedJsonData<KnownVofficeFacilityData>;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as ServiceBeonDataSchema, A as ErgoBookRequestSchema, At as quoteEffect, B as OnOfficeUnitSchema, C as DocumentResourceSchema, Ct as clearAdditionalServicesEffect, D as DocumentTypeSchema, Dt as getRentalsEffect, E as DocumentSummarySchema, Et as getInitialAvailabilityEffect, F as ErgoPolicyNumberRequestSchema, Ft as selectInsurancePaymentEffect, G as QuotePricesResponseSchema, H as PaymentScheduleSchema, I as ErgoReadPreContractRequestSchema, It as submitContactEffect, J as RawObjectResponseSchema, K as QuoteSchema, L as ErgoTripAndCustomerRequestSchema, Lt as submitPaymentOption, M as ErgoCreatePreContractRequestSchema, Mt as searchEffect, N as ErgoPersonSchema, Nt as selectCancellationPolicyEffect, O as ErgoAddressSchema, Ot as getStartDateSelectedAvailabilityEffect, P as ErgoPlanSearchRequestSchema, Pt as selectInsuranceEffect, Q as SearchPropertiesResponseSchema, R as FacilityListResponseSchema, Rt as submitPaymentOptionEffect, S as DocumentResourceResponseSchema, St as bookInsuranceEffect, T as DocumentStatusUpdateRequestSchema, Tt as getFiltersEffect, U as QuoteLineSchema, V as PaymentScheduleItemSchema, W as QuotePricesPayloadSchema, X as RegionListResponseSchema, Y as RawVofficeObjectSchema, Z as RoomImageSchema, _ as CalendarDaySchema, _t as V1_OPERATIONS, at as TileCollectionResponseSchema, b as CustomerUnitSummarySchema, bt as addAdditionalServiceEffect, c as V0OpenApiClient, ct as TravelInsuranceBookingSchema, d as makeV0OpenApiClientLive, dt as UnitListItemSchema, et as ServiceImageSchema, f as V1OpenApiClient, ft as UnitListResponseSchema, g as ApiEnvelopeBaseSchema, gt as V1_BASE_URL, h as makeV1OpenApiClientLive, ht as UnitServicePriceSchema, it as SetupResponseSchema, j as ErgoCommonFieldsSchema, jt as removeAdditionalServiceEffect, k as ErgoBankSchema, kt as getTermsAndPrivacyPolicyEffect, l as V0OpenApiClientError, lt as TravelInsuranceBookingStoreRequestSchema, m as makeV1OpenApiClientFetchLive, mt as UnitResponseSchema, nt as ServiceListResponseSchema, ot as TileSchema, p as V1OpenApiClientError, pt as UnitOfferSchema, q as QuoteServiceSchema, rt as SetupDataSchema, st as TileTagSchema, t as createWebsiteSDK, tt as ServiceLimitSchema, u as makeV0OpenApiClientFetchLive, ut as UnitIdsResponseSchema, v as CalendarResponseSchema, vt as VideoResponseSchema, w as DocumentStatusSchema, wt as createInsurancePreContractEffect, x as DocumentCollectionResponseSchema, xt as bookEffect, y as CurrentMemberResponseSchema, yt as decodeV1OperationResponse, z as OnOfficeUnitCollectionResponseSchema, zt as defineWebsiteSDKOptions } from "./client-
|
|
1
|
+
import { $ as ServiceBeonDataSchema, A as ErgoBookRequestSchema, At as quoteEffect, B as OnOfficeUnitSchema, C as DocumentResourceSchema, Ct as clearAdditionalServicesEffect, D as DocumentTypeSchema, Dt as getRentalsEffect, E as DocumentSummarySchema, Et as getInitialAvailabilityEffect, F as ErgoPolicyNumberRequestSchema, Ft as selectInsurancePaymentEffect, G as QuotePricesResponseSchema, H as PaymentScheduleSchema, I as ErgoReadPreContractRequestSchema, It as submitContactEffect, J as RawObjectResponseSchema, K as QuoteSchema, L as ErgoTripAndCustomerRequestSchema, Lt as submitPaymentOption, M as ErgoCreatePreContractRequestSchema, Mt as searchEffect, N as ErgoPersonSchema, Nt as selectCancellationPolicyEffect, O as ErgoAddressSchema, Ot as getStartDateSelectedAvailabilityEffect, P as ErgoPlanSearchRequestSchema, Pt as selectInsuranceEffect, Q as SearchPropertiesResponseSchema, R as FacilityListResponseSchema, Rt as submitPaymentOptionEffect, S as DocumentResourceResponseSchema, St as bookInsuranceEffect, T as DocumentStatusUpdateRequestSchema, Tt as getFiltersEffect, U as QuoteLineSchema, V as PaymentScheduleItemSchema, W as QuotePricesPayloadSchema, X as RegionListResponseSchema, Y as RawVofficeObjectSchema, Z as RoomImageSchema, _ as CalendarDaySchema, _t as V1_OPERATIONS, at as TileCollectionResponseSchema, b as CustomerUnitSummarySchema, bt as addAdditionalServiceEffect, c as V0OpenApiClient, ct as TravelInsuranceBookingSchema, d as makeV0OpenApiClientLive, dt as UnitListItemSchema, et as ServiceImageSchema, f as V1OpenApiClient, ft as UnitListResponseSchema, g as ApiEnvelopeBaseSchema, gt as V1_BASE_URL, h as makeV1OpenApiClientLive, ht as UnitServicePriceSchema, it as SetupResponseSchema, j as ErgoCommonFieldsSchema, jt as removeAdditionalServiceEffect, k as ErgoBankSchema, kt as getTermsAndPrivacyPolicyEffect, l as V0OpenApiClientError, lt as TravelInsuranceBookingStoreRequestSchema, m as makeV1OpenApiClientFetchLive, mt as UnitResponseSchema, nt as ServiceListResponseSchema, ot as TileSchema, p as V1OpenApiClientError, pt as UnitOfferSchema, q as QuoteServiceSchema, rt as SetupDataSchema, st as TileTagSchema, t as createWebsiteSDK, tt as ServiceLimitSchema, u as makeV0OpenApiClientFetchLive, ut as UnitIdsResponseSchema, v as CalendarResponseSchema, vt as VideoResponseSchema, w as DocumentStatusSchema, wt as createInsurancePreContractEffect, x as DocumentCollectionResponseSchema, xt as bookEffect, y as CurrentMemberResponseSchema, yt as decodeV1OperationResponse, z as OnOfficeUnitCollectionResponseSchema, zt as defineWebsiteSDKOptions } from "./client-C0pqpk-N.mjs";
|
|
2
2
|
import { AdditionalServiceLimitExceeded, CoreSDKError, CoreSDKError as CMSError, CustomAttributeCatalogSchema, GuestQuoteSchema, InvalidAdditionalServiceQuantity, LocaleSchema, SearchSearchFieldOrderBySchema, SearchSearchFieldSortSchema, SearchSearchInputSchema, SearchSearchOutputSchema, SearchSearchPriceSortSchema, SearchSearchRandomSortSchema, SearchSearchRatingSortSchema, SearchSearchSortSchema, SearchSortDirectionSchema, UnknownAdditionalService, defineCustomAttributes, defineCustomAttributesFromUnknown, fetchCustomAttributeCatalog, parseCustomAttributeCatalog, validateContactSubmitInput } from "@v-office/sdk-core";
|
|
3
3
|
//#region codegen/v9/heuristic-generation/public-api.ts
|
|
4
4
|
const customDataAttribute = (name) => name;
|
|
@@ -4,6 +4,8 @@ This file is the versioned changelog index for the website SDK instructions.
|
|
|
4
4
|
|
|
5
5
|
## Versions
|
|
6
6
|
|
|
7
|
+
- `versions/2.15.0/CHANGELOG.md`: `@v-office/website-sdk` 2.15.0 release notes.
|
|
8
|
+
- `versions/2.14.0/CHANGELOG.md`: `@v-office/website-sdk` 2.14.0 release notes.
|
|
7
9
|
- `versions/2.13.0/CHANGELOG.md`: `@v-office/website-sdk` 2.13.0 release notes.
|
|
8
10
|
- `versions/2.12.0/CHANGELOG.md`: `@v-office/website-sdk` 2.12.0 release notes.
|
|
9
11
|
- `versions/2.11.0/CHANGELOG.md`: `@v-office/website-sdk` 2.11.0 release notes.
|
|
@@ -4,6 +4,8 @@ This file is the versioned migration index for the website SDK instructions.
|
|
|
4
4
|
|
|
5
5
|
## Available Guides
|
|
6
6
|
|
|
7
|
+
- `versions/2.15.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.14.0 to 2.15.0.
|
|
8
|
+
- `versions/2.14.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.13.0 to 2.14.0.
|
|
7
9
|
- `versions/2.13.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.12.0 to 2.13.0.
|
|
8
10
|
- `versions/2.12.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.11.0 to 2.12.0.
|
|
9
11
|
- `versions/2.11.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.10.0 to 2.11.0.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Website SDK Instructions
|
|
2
2
|
|
|
3
3
|
These instructions describe the current source targeted for
|
|
4
|
-
`@v-office/website-sdk` 2.
|
|
4
|
+
`@v-office/website-sdk` 2.15.0. Package versions remain unchanged until the release
|
|
5
5
|
workflow performs the coordinated core and website bumps.
|
|
6
6
|
|
|
7
7
|
Use this directory as the consumer-facing reference for the package:
|
|
@@ -18,6 +18,12 @@ Use this directory as the consumer-facing reference for the package:
|
|
|
18
18
|
- `document-structured-json.md`: `sdk.static.documents.getTermsAndPrivacyPolicy` and structured document JSON rendering rules.
|
|
19
19
|
- `CHANGELOG.md`: versioned changelog index.
|
|
20
20
|
- `MIGRATION.md`: versioned migration index.
|
|
21
|
+
- `versions/2.15.0/`: 2.15.0 v9 facility images in normalized
|
|
22
|
+
`property.images`, responsive vOffice image URLs, and the 2.14.0-to-2.15.0
|
|
23
|
+
migration guide.
|
|
24
|
+
- `versions/2.14.0/`: 2.14.0 catalog-backed v9 property types and options,
|
|
25
|
+
corrected option/count rendering and translations, and the 2.13.0-to-2.14.0
|
|
26
|
+
migration guide.
|
|
21
27
|
- `versions/2.13.0/`: 2.13.0 static search capability discovery, shared v9/v10
|
|
22
28
|
booking-payment output, corrected remaining-payment deadlines, opaque booking
|
|
23
29
|
credentials, and the 2.12.0-to-2.13.0 migration guide.
|
|
@@ -87,5 +93,5 @@ website-sdk --backend v10 search --locale de-DE --query "adults=2" --sort '{"by"
|
|
|
87
93
|
```
|
|
88
94
|
|
|
89
95
|
Config file examples in these docs use the flat `WebsiteSDKConfig` shape introduced
|
|
90
|
-
in 2.0.0 and kept in 2.
|
|
96
|
+
in 2.0.0 and kept in 2.15.0. v10 config additionally requires `searchEndpoint` as
|
|
91
97
|
of 2.5.0.
|
|
@@ -54,7 +54,7 @@ Sample item:
|
|
|
54
54
|
"headline": "Holiday apartment near the sea",
|
|
55
55
|
"description": "Short localized rental description."
|
|
56
56
|
},
|
|
57
|
-
"highlights": ["2 bedrooms", "
|
|
57
|
+
"highlights": ["2 bedrooms", "Wi-Fi", "Parking"],
|
|
58
58
|
"attributes": [
|
|
59
59
|
{
|
|
60
60
|
"label": "Amenities",
|
|
@@ -87,6 +87,87 @@ Sample item:
|
|
|
87
87
|
|
|
88
88
|
Optional fields include `scope`, `address`, `property`, `rooms`, `roomSummary`, `vicinity`, and `reviews`.
|
|
89
89
|
|
|
90
|
+
### Legacy v9 Facility Images
|
|
91
|
+
|
|
92
|
+
From 2.15.0, v9 static rentals request facility image metadata and return it in
|
|
93
|
+
`property.images`:
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"property": {
|
|
98
|
+
"id": "1512",
|
|
99
|
+
"nameOrLabel": "Haus Köbesine",
|
|
100
|
+
"images": [
|
|
101
|
+
{
|
|
102
|
+
"idOrPath": "28458352",
|
|
103
|
+
"src": "https://dyn.v-office.com/image/xl/28458352.jpg",
|
|
104
|
+
"srcset": "https://dyn.v-office.com/image/tn/28458352.jpg 141w, https://dyn.v-office.com/image/tnx/28458352.jpg 225w, https://dyn.v-office.com/image/s/28458352.jpg 450w, https://dyn.v-office.com/image/m/28458352.jpg 600w, https://dyn.v-office.com/image/xl/28458352.jpg 1440w, https://dyn.v-office.com/image/xxl/28458352.jpg 2400w",
|
|
105
|
+
"alt": "Hauptansicht",
|
|
106
|
+
"title": "Hauptansicht",
|
|
107
|
+
"category": "buildingMain"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Facility image `src` and `srcset` URLs use `dyn.v-office.com`. Top-level v9
|
|
115
|
+
rental `images` continue to use the configured `imageProxyBaseUrl`. Consumers
|
|
116
|
+
must allow both origins when they render both collections.
|
|
117
|
+
|
|
118
|
+
The SDK supplies width-descriptor `srcset`; the UI remains responsible for an
|
|
119
|
+
HTML `sizes` attribute that matches its layout. `property.images` is omitted
|
|
120
|
+
when the facility has no usable image IDs. Because the service returns one item
|
|
121
|
+
per rental, rentals in the same facility contain the same nested property image
|
|
122
|
+
list.
|
|
123
|
+
|
|
124
|
+
See `versions/2.15.0/CHANGELOG.md` and `versions/2.15.0/MIGRATION.md`.
|
|
125
|
+
|
|
126
|
+
### Legacy v9 Built-In Attributes
|
|
127
|
+
|
|
128
|
+
From 2.14.0, built-in v9 property types and ordered option values come from the
|
|
129
|
+
vOffice property catalog rather than example-value inference. The SDK keeps
|
|
130
|
+
observed-only fields for compatibility, but examples do not redefine catalog
|
|
131
|
+
fields.
|
|
132
|
+
|
|
133
|
+
v9 `OPT` values are zero-based numeric indexes. The SDK resolves them to
|
|
134
|
+
localized display text before adding them to `attributes`, `highlights`, or
|
|
135
|
+
`vicinity`. For example:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
youthgroups = 0 → Jugendgruppen: willkommen
|
|
139
|
+
youthgroups = 1 → Jugendgruppen: nicht erlaubt
|
|
140
|
+
youthgroups = 2 → Jugendgruppen: auf Anfrage
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
An option index of `0` is a valid value, not Boolean `false`. Invalid,
|
|
144
|
+
fractional, negative, and out-of-range indexes are omitted.
|
|
145
|
+
|
|
146
|
+
Source-defined v9 `INT` values retain their numeric value, including `1`. Known
|
|
147
|
+
count attributes use localized singular and plural nouns:
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
bedrooms = 1 → 1 Schlafzimmer
|
|
151
|
+
bedrooms = 2 → 2 Schlafzimmer
|
|
152
|
+
bedrooms = 1 → 1 bedroom
|
|
153
|
+
bedrooms = 2 → 2 bedrooms
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Boolean behavior is unchanged: disabled values are omitted and enabled values
|
|
157
|
+
are rendered as the localized label.
|
|
158
|
+
|
|
159
|
+
Translation overrides use these key forms:
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
RentalAttributes.<attribute>.label
|
|
163
|
+
RentalAttributes.<attribute>.option.<zero-based-index>
|
|
164
|
+
RentalAttributes.<attribute>.count.one
|
|
165
|
+
RentalAttributes.<attribute>.count.other
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
See `versions/2.14.0/CHANGELOG.md` and
|
|
169
|
+
`versions/2.14.0/MIGRATION.md`.
|
|
170
|
+
|
|
90
171
|
### Review Items
|
|
91
172
|
|
|
92
173
|
Each review item contains at least `rating` or `text`. `id`, `author`, `label`, and `createdAt` are optional:
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Changelog: 2.14.0
|
|
2
|
+
|
|
3
|
+
This release makes the vOffice v9 property catalog authoritative for built-in
|
|
4
|
+
rental attribute types and option values. It fixes legacy option rendering,
|
|
5
|
+
preserves numeric room counts of one, and improves the German and English
|
|
6
|
+
attribute translations.
|
|
7
|
+
|
|
8
|
+
## Added
|
|
9
|
+
|
|
10
|
+
- Generated v9 property metadata now retains the source property type and every
|
|
11
|
+
ordered `OPT` value from the vOffice property export.
|
|
12
|
+
- All 31 v9 `OPT` attributes have localized German and English option labels.
|
|
13
|
+
- v9 option translations use stable numeric keys:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
RentalAttributes.<attribute>.option.<zero-based-index>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
- Count attributes can use localized singular and plural labels through:
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
RentalAttributes.<attribute>.count.one
|
|
23
|
+
RentalAttributes.<attribute>.count.other
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
- Property generation validates all 420 catalog fields, all 30 observed-only
|
|
27
|
+
compatibility fields, option-index ranges in the fixture corpus, and complete
|
|
28
|
+
option translation coverage.
|
|
29
|
+
|
|
30
|
+
## Fixed
|
|
31
|
+
|
|
32
|
+
- v9 `OPT` index `0` is no longer mistaken for a disabled Boolean value.
|
|
33
|
+
- v9 `OPT` index `1` is no longer rendered as a bare Boolean-style label.
|
|
34
|
+
- Higher option indexes are no longer rendered as quantities such as
|
|
35
|
+
`2 Jugendgruppen`.
|
|
36
|
+
- `youthgroups` now maps its zero-based values correctly:
|
|
37
|
+
- `0`: `willkommen` / `welcome`
|
|
38
|
+
- `1`: `nicht erlaubt` / `not allowed`
|
|
39
|
+
- `2`: `auf Anfrage` / `on request`
|
|
40
|
+
- Option rendering is consistent across rental attributes, highlights, and
|
|
41
|
+
vicinity output.
|
|
42
|
+
- Numeric v9 `INT` attributes retain a value of `1`. For example, bedroom counts
|
|
43
|
+
now render as `1 Schlafzimmer` or `1 bedroom` instead of only the label.
|
|
44
|
+
- Known count attributes use grammatically correct singular and plural forms.
|
|
45
|
+
- German and English v9 rental, filter, and option copy has corrected grammar,
|
|
46
|
+
spelling, capitalization, punctuation, terminology, and unit formatting.
|
|
47
|
+
- Corrected semantic translation errors, including German sea-view filtering
|
|
48
|
+
previously labeled as `Seeblick`.
|
|
49
|
+
|
|
50
|
+
## Changed
|
|
51
|
+
|
|
52
|
+
- Source-defined v9 property schemas no longer depend on whichever values happen
|
|
53
|
+
to occur in example fixtures. Examples remain inputs only for compatibility
|
|
54
|
+
fields absent from the catalog and for validation.
|
|
55
|
+
- Invalid, fractional, negative, or out-of-range v9 option indexes are omitted
|
|
56
|
+
instead of being exposed as misleading display text.
|
|
57
|
+
- English v9 rental type `FLAT` is now displayed as `Apartment`.
|
|
58
|
+
- Official Spanish Modelo 179 terminology remains Spanish in both locales to
|
|
59
|
+
avoid changing legal and cadastral meanings.
|
|
60
|
+
|
|
61
|
+
## Compatibility
|
|
62
|
+
|
|
63
|
+
- No SDK construction, configuration, service-call, or public TypeScript shape
|
|
64
|
+
changes are required.
|
|
65
|
+
- Existing Boolean behavior is unchanged: disabled values remain omitted and
|
|
66
|
+
enabled values remain label-only.
|
|
67
|
+
- Existing custom attributes and observed-only v9 compatibility fields remain
|
|
68
|
+
supported.
|
|
69
|
+
- Consumer snapshots, string comparisons, or UI tests that depend on the former
|
|
70
|
+
incorrect v9 strings must be updated.
|
|
71
|
+
|
|
72
|
+
See `versions/2.14.0/MIGRATION.md` and `../../rentals.md`.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Migration: 2.13.0 to 2.14.0
|
|
2
|
+
|
|
3
|
+
2.14.0 corrects presentation of built-in v9 rental attributes. The public SDK
|
|
4
|
+
types and service calls are unchanged, but applications that snapshot, compare,
|
|
5
|
+
filter, or parse localized attribute strings must account for corrected output.
|
|
6
|
+
|
|
7
|
+
Consumers that use only v10 are not affected by the v9 parsing changes.
|
|
8
|
+
|
|
9
|
+
## 1. Expect Correct v9 Option Labels
|
|
10
|
+
|
|
11
|
+
Before 2.14.0, numeric v9 option indexes passed through Boolean and quantity
|
|
12
|
+
heuristics. A `youthgroups` value could therefore produce:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
0 → omitted
|
|
16
|
+
1 → Jugendgruppen
|
|
17
|
+
2 → 2 Jugendgruppen
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
From 2.14.0, values resolve through the ordered vOffice option catalog:
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
0 → Jugendgruppen: willkommen
|
|
24
|
+
1 → Jugendgruppen: nicht erlaubt
|
|
25
|
+
2 → Jugendgruppen: auf Anfrage
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
English output is equivalent:
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
0 → Youth groups: welcome
|
|
32
|
+
1 → Youth groups: not allowed
|
|
33
|
+
2 → Youth groups: on request
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
This applies to all 31 built-in v9 option attributes and to every output surface
|
|
37
|
+
that renders them:
|
|
38
|
+
|
|
39
|
+
- rental `attributes`
|
|
40
|
+
- rental `highlights`
|
|
41
|
+
- rental `vicinity`
|
|
42
|
+
|
|
43
|
+
Do not parse a visible option string back into an index. Treat these values as
|
|
44
|
+
localized display text.
|
|
45
|
+
|
|
46
|
+
## 2. Preserve Numeric Counts of One
|
|
47
|
+
|
|
48
|
+
Before 2.14.0, the shared legacy renderer interpreted numeric `1` as Boolean
|
|
49
|
+
`true`, so a bedroom count could be reduced to only its label.
|
|
50
|
+
|
|
51
|
+
From 2.14.0, source-defined `INT` values remain numeric display values:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
1 Schlafzimmer
|
|
55
|
+
2 Schlafzimmer
|
|
56
|
+
1 bedroom
|
|
57
|
+
2 bedrooms
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Known count attributes use localized singular and plural nouns. Distance and
|
|
61
|
+
square-meter formatting retain their specialized output.
|
|
62
|
+
|
|
63
|
+
Update snapshots or UI assertions that expected a bare label for a count of one.
|
|
64
|
+
|
|
65
|
+
## 3. Expect Corrected Translation Copy
|
|
66
|
+
|
|
67
|
+
The v9 German and English catalogs have been proofread. Visible changes include:
|
|
68
|
+
|
|
69
|
+
- corrected compound words, capitalization, punctuation, and unit notation
|
|
70
|
+
- natural US English instead of generated key-like labels
|
|
71
|
+
- corrected German terminology and post-1996 spelling
|
|
72
|
+
- `Apartment` instead of `Flat` for the English v9 `FLAT` rental type
|
|
73
|
+
- corrected filter labels such as German `Meerblick`
|
|
74
|
+
|
|
75
|
+
Applications should render SDK output directly. Avoid branching on translated
|
|
76
|
+
labels because wording can be corrected without changing an attribute's
|
|
77
|
+
underlying meaning.
|
|
78
|
+
|
|
79
|
+
## 4. Update Translation Overrides if Needed
|
|
80
|
+
|
|
81
|
+
Attribute label overrides continue to use:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
RentalAttributes.<attribute>.label
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
v9 built-in option overrides use their zero-based source index:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
RentalAttributes.youthgroups.option.0
|
|
91
|
+
RentalAttributes.youthgroups.option.1
|
|
92
|
+
RentalAttributes.youthgroups.option.2
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Count noun overrides can distinguish singular and plural:
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
RentalAttributes.bedrooms.count.one
|
|
99
|
+
RentalAttributes.bedrooms.count.other
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Example:
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
const options = defineWebsiteSDKOptions({
|
|
106
|
+
translationOverrides: {
|
|
107
|
+
"en-US": {
|
|
108
|
+
"RentalAttributes.youthgroups.option.0": "Youth groups welcome",
|
|
109
|
+
"RentalAttributes.bedrooms.count.one": "sleeping room",
|
|
110
|
+
"RentalAttributes.bedrooms.count.other": "sleeping rooms",
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Do not reuse v10 named enum keys for v9 numeric options unless the application
|
|
117
|
+
deliberately supplies both key forms.
|
|
118
|
+
|
|
119
|
+
## 5. Invalid Option Values
|
|
120
|
+
|
|
121
|
+
The parser accepts the numeric wire format used by v9, then resolves only finite
|
|
122
|
+
integer indexes present in the catalog. Invalid, fractional, negative, and
|
|
123
|
+
out-of-range values are omitted from display output.
|
|
124
|
+
|
|
125
|
+
This preserves non-failing rental parsing while preventing unknown values from
|
|
126
|
+
appearing as fabricated quantities.
|
|
127
|
+
|
|
128
|
+
## Required Consumer Work
|
|
129
|
+
|
|
130
|
+
No configuration or API migration is required. Check the following when the
|
|
131
|
+
application consumes v9:
|
|
132
|
+
|
|
133
|
+
1. Update snapshots and visual tests for corrected option and count strings.
|
|
134
|
+
2. Remove code that compensates for missing option index `0`.
|
|
135
|
+
3. Remove parsing or special casing for strings such as `2 Jugendgruppen`.
|
|
136
|
+
4. Review translation overrides for corrected built-in copy.
|
|
137
|
+
5. Verify room counts of one and two in both supported locales.
|
|
138
|
+
6. Verify any configured option-valued highlight now displays its option label.
|
|
139
|
+
|
|
140
|
+
## Recommended Verification
|
|
141
|
+
|
|
142
|
+
1. Render `youthgroups` with values `0`, `1`, and `2`.
|
|
143
|
+
2. Render `bedrooms` with values `1` and `2`.
|
|
144
|
+
3. Confirm a Boolean value of `0` remains omitted and `1` remains label-only.
|
|
145
|
+
4. Confirm a LOCATION option such as `beachtype` appears correctly in
|
|
146
|
+
`vicinity`.
|
|
147
|
+
5. Confirm invalid option indexes do not appear.
|
|
148
|
+
6. Run consumer snapshots in `de-DE` and `en-US`.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Changelog: 2.15.0
|
|
2
|
+
|
|
3
|
+
This release adds facility images to normalized v9 static rental output. v9
|
|
4
|
+
consumers can now read responsive property images from the same
|
|
5
|
+
`property.images` field already used by the shared rental contract.
|
|
6
|
+
|
|
7
|
+
## Added
|
|
8
|
+
|
|
9
|
+
- v9 static rentals request the facility `images` data attribute through the
|
|
10
|
+
existing GraphQL `all` query.
|
|
11
|
+
- Parsed facility images are exposed under:
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
rental.property?.images;
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- Every mapped facility image includes:
|
|
18
|
+
- `idOrPath` from the vOffice image ID
|
|
19
|
+
- an `xl` fallback `src`
|
|
20
|
+
- a responsive width-descriptor `srcset`
|
|
21
|
+
- localized `alt` and `title` when a title is available
|
|
22
|
+
- `category` when vOffice supplies an image tag
|
|
23
|
+
- the original v9 image metadata under `metadata.dataImage`
|
|
24
|
+
- The generated v9 facility-data schema recognizes facility image records and
|
|
25
|
+
validates them with the existing `ImageDataSchema`.
|
|
26
|
+
- Facility `srcset` candidates use the unique vOffice dynamic-image presets:
|
|
27
|
+
`141w`, `225w`, `450w`, `600w`, `1440w`, and `2400w`. Candidates are capped
|
|
28
|
+
at the known original image width and duplicate widths are omitted.
|
|
29
|
+
|
|
30
|
+
## Changed
|
|
31
|
+
|
|
32
|
+
- v9 facility image bytes are served by the documented vOffice dynamic-image
|
|
33
|
+
origin:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
https://dyn.v-office.com/image/<size>/<image-id>.jpg
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- Facility images no longer need to be inferred from a rental image storage
|
|
40
|
+
path. That inference was invalid because facility image IDs are not present
|
|
41
|
+
in the v9 rental image rows.
|
|
42
|
+
- A v9 property shared by several rentals carries the same facility image list
|
|
43
|
+
on each normalized rental's nested `property` object.
|
|
44
|
+
|
|
45
|
+
## Unchanged
|
|
46
|
+
|
|
47
|
+
- `sdk.static.rentals.getRentals({ locale })` and its input are unchanged.
|
|
48
|
+
- The public `RentalPropertySchema` and image shape are unchanged because
|
|
49
|
+
`property.images` was already part of the shared contract.
|
|
50
|
+
- Top-level v9 rental `images` continue to use the configured
|
|
51
|
+
`imageProxyBaseUrl`.
|
|
52
|
+
- v10 rental and property image behavior is unchanged.
|
|
53
|
+
- No new SDK configuration or environment variable is required.
|
|
54
|
+
|
|
55
|
+
## Compatibility
|
|
56
|
+
|
|
57
|
+
- This is an additive output change. v9 consumers that ignore
|
|
58
|
+
`property.images` do not need code changes.
|
|
59
|
+
- Content Security Policy or image-host allowlists must permit
|
|
60
|
+
`https://dyn.v-office.com` before rendering the new v9 property images.
|
|
61
|
+
- Snapshots that include complete v9 property objects must account for the new
|
|
62
|
+
optional `images` field.
|
|
63
|
+
- Facility image entries without a numeric vOffice image ID are omitted because
|
|
64
|
+
no deterministic dynamic-image URL can be constructed.
|
|
65
|
+
|
|
66
|
+
See `versions/2.15.0/MIGRATION.md` and `../../rentals.md`.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Migration: 2.14.0 to 2.15.0
|
|
2
|
+
|
|
3
|
+
2.15.0 adds facility images to v9 static rental properties. The SDK call,
|
|
4
|
+
configuration, and public TypeScript shape are unchanged, but complete v9
|
|
5
|
+
property objects can now contain `images`.
|
|
6
|
+
|
|
7
|
+
Consumers that use only v10 are not affected.
|
|
8
|
+
|
|
9
|
+
## 1. Allow the vOffice Image Origin
|
|
10
|
+
|
|
11
|
+
v9 facility image URLs use:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
https://dyn.v-office.com
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Add that origin to image-host allowlists and Content Security Policy before
|
|
18
|
+
rendering `property.images`. For example:
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
Content-Security-Policy: img-src 'self' https://dyn.v-office.com
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Top-level v9 rental images still use the configured `imageProxyBaseUrl`. A page
|
|
25
|
+
that renders both image kinds must allow both origins.
|
|
26
|
+
|
|
27
|
+
## 2. Read Facility Images from `property.images`
|
|
28
|
+
|
|
29
|
+
No new service call is required:
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
const rentals = await sdk.static.rentals.getRentals({ locale: "de-DE" });
|
|
33
|
+
|
|
34
|
+
for (const rental of rentals) {
|
|
35
|
+
for (const image of rental.property?.images ?? []) {
|
|
36
|
+
renderPropertyImage(image);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The field remains optional. It is omitted when a rental has no facility, when
|
|
42
|
+
the facility has no images, or when no facility image has a usable numeric ID.
|
|
43
|
+
|
|
44
|
+
Example image:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"idOrPath": "28458352",
|
|
49
|
+
"src": "https://dyn.v-office.com/image/xl/28458352.jpg",
|
|
50
|
+
"srcset": "https://dyn.v-office.com/image/tn/28458352.jpg 141w, https://dyn.v-office.com/image/tnx/28458352.jpg 225w, https://dyn.v-office.com/image/s/28458352.jpg 450w, https://dyn.v-office.com/image/m/28458352.jpg 600w, https://dyn.v-office.com/image/xl/28458352.jpg 1440w, https://dyn.v-office.com/image/xxl/28458352.jpg 2400w",
|
|
51
|
+
"alt": "Hauptansicht",
|
|
52
|
+
"title": "Hauptansicht",
|
|
53
|
+
"category": "buildingMain"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 3. Provide the Layout-Specific `sizes` Attribute
|
|
58
|
+
|
|
59
|
+
The SDK provides `src` and `srcset`. The consuming UI must provide `sizes`
|
|
60
|
+
because only the application knows the rendered layout:
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
<img
|
|
64
|
+
src={image.src}
|
|
65
|
+
srcSet={image.srcset}
|
|
66
|
+
sizes="(max-width: 768px) 100vw, 50vw"
|
|
67
|
+
alt={image.alt ?? ""}
|
|
68
|
+
/>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Do not copy that example `sizes` value blindly. Match it to the actual image
|
|
72
|
+
width in the application's responsive layout.
|
|
73
|
+
|
|
74
|
+
The fallback `src` uses the `xl` vOffice preset. Browsers that support `srcset`
|
|
75
|
+
select an appropriate candidate using `srcset`, `sizes`, viewport width, and
|
|
76
|
+
device pixel ratio.
|
|
77
|
+
|
|
78
|
+
## 4. Keep Rental and Property Images Distinct
|
|
79
|
+
|
|
80
|
+
The two image collections represent different entities:
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
rental.images; // images belonging to the rental/unit
|
|
84
|
+
rental.property?.images; // images belonging to the facility/property
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
They also use different origins in v9:
|
|
88
|
+
|
|
89
|
+
- `rental.images`: configured `imageProxyBaseUrl`
|
|
90
|
+
- `rental.property.images`: `https://dyn.v-office.com`
|
|
91
|
+
|
|
92
|
+
Do not merge the arrays unless the UI deliberately presents a combined gallery.
|
|
93
|
+
Keeping them separate prevents facility images from being mistaken for
|
|
94
|
+
unit-specific rooms or amenities.
|
|
95
|
+
|
|
96
|
+
## 5. Account for Repeated Property Data
|
|
97
|
+
|
|
98
|
+
The normalized rentals API returns one item per rental. When several rentals
|
|
99
|
+
belong to the same facility, each rental contains the same nested property image
|
|
100
|
+
list.
|
|
101
|
+
|
|
102
|
+
Applications that build a property-level view can deduplicate by `property.id`:
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
const properties = new Map(
|
|
106
|
+
rentals.flatMap((rental) =>
|
|
107
|
+
rental.property == null ? [] : [[rental.property.id, rental.property] as const],
|
|
108
|
+
),
|
|
109
|
+
);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
No separate property endpoint or persistence layer was added in 2.15.0.
|
|
113
|
+
|
|
114
|
+
## 6. Update Snapshots and Complete-Object Assertions
|
|
115
|
+
|
|
116
|
+
Tests that compare only selected property fields are unaffected. Tests that
|
|
117
|
+
snapshot or deeply compare complete v9 rental output can now observe:
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
rental.property.images;
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Update those expectations without making `property.images` mandatory. Backend
|
|
124
|
+
facilities are allowed to have no usable images.
|
|
125
|
+
|
|
126
|
+
## Required Consumer Work
|
|
127
|
+
|
|
128
|
+
For applications that render v9 property images:
|
|
129
|
+
|
|
130
|
+
1. Allow `https://dyn.v-office.com` in CSP and image-host configuration.
|
|
131
|
+
2. Render `rental.property.images` separately from top-level rental images.
|
|
132
|
+
3. Supply an HTML `sizes` value appropriate for the layout.
|
|
133
|
+
4. Keep empty and missing image arrays valid.
|
|
134
|
+
5. Update complete-output snapshots.
|
|
135
|
+
|
|
136
|
+
Applications that do not render v9 property images require no migration work.
|
|
137
|
+
|
|
138
|
+
## Recommended Verification
|
|
139
|
+
|
|
140
|
+
1. Fetch v9 static rentals in both `de-DE` and `en-US`.
|
|
141
|
+
2. Confirm facilities with images expose `property.images`.
|
|
142
|
+
3. Confirm localized image titles populate `alt` and `title`.
|
|
143
|
+
4. Confirm the browser selects responsive candidates after adding `sizes`.
|
|
144
|
+
5. Confirm `dyn.v-office.com` is accepted by production CSP.
|
|
145
|
+
6. Confirm top-level rental images still use the configured image proxy.
|
|
146
|
+
7. Confirm a shared facility does not create duplicate property cards when the
|
|
147
|
+
application deduplicates by `property.id`.
|
|
148
|
+
8. Confirm v10 rental and property image rendering remains unchanged.
|