@v-office/website-sdk 2.8.0 → 2.9.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/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { t as createWebsiteSDK, zt as defineWebsiteSDKOptions } from "./client-BNbBfJtO.mjs";
2
+ import { t as createWebsiteSDK, zt as defineWebsiteSDKOptions } from "./client-CYK_5Vk7.mjs";
3
3
  import { SearchSearchSortSchema, defineCustomAttributesFromUnknown } from "@v-office/sdk-core";
4
4
  import { Console, Effect, FileSystem, Layer, Option, Path, Schema, Stdio, Terminal } from "effect";
5
5
  import { Command, Flag } from "effect/unstable/cli";
@@ -16,7 +16,7 @@ var CLICheckFailed = class extends Error {
16
16
  const toCLIError = (message, cause) => cause instanceof Error ? new CLICheckFailed(`${message}: ${cause.message}`, { cause }) : new CLICheckFailed(message, { cause });
17
17
  //#endregion
18
18
  //#region package.json
19
- var version = "2.8.0";
19
+ var version = "2.9.0";
20
20
  //#endregion
21
21
  //#region src/cli/output.ts
22
22
  const toJson = (value) => Effect.try({
@@ -4952,7 +4952,7 @@ const parseV9SearchCursor = (cursor) => Effect.gen(function* () {
4952
4952
  return page;
4953
4953
  });
4954
4954
  const loadV9SearchRuntime = Effect.tryPromise({
4955
- try: () => import("./search-Dzzra6IW.mjs"),
4955
+ try: () => import("./search-CO9ID9op.mjs"),
4956
4956
  catch: (cause) => new CoreSDKError({
4957
4957
  source: "v10",
4958
4958
  operation: "v9.search.runtime",
@@ -5315,7 +5315,7 @@ const DEFAULT_RENTAL_FEEDBACK_DATA_ATTRIBUTES = [
5315
5315
  "avgRating"
5316
5316
  ];
5317
5317
  const loadV9RentalsRuntime = Effect.tryPromise({
5318
- try: () => import("./rentals-cCejb_2d.mjs"),
5318
+ try: () => import("./rentals-CFod9H4m.mjs"),
5319
5319
  catch: (cause) => new CoreSDKError({
5320
5320
  source: "v10",
5321
5321
  operation: "v9.rentals.runtime",
package/dist/index.d.mts CHANGED
@@ -22,7 +22,26 @@ type WebsiteSDKOptions = {
22
22
  readonly translationOverrides?: TranslationOverrides$1; /** The validated registry returned by `defineCustomAttributes`. */
23
23
  readonly customAttributes?: CustomAttributeRegistrySnapshot$1;
24
24
  readonly customAttributeFilterDefinitions?: readonly CustomAttributeFilterDefinition$1[];
25
+ /**
26
+ * Selects and orders rental highlights. This is an ordered allowlist, not a sort
27
+ * over every available fact.
28
+ *
29
+ * Only listed keys are emitted, even when an omitted key has a source value.
30
+ * `undefined` uses the SDK default; `[]` emits no rental highlights. Duplicate
31
+ * keys are emitted once, and unknown, unsupported, or unresolved keys are ignored.
32
+ * When multiple listed view facts have values, only the first is emitted. This
33
+ * affects `highlights` only, not `attributes` or `vicinity`.
34
+ */
25
35
  readonly rentalHighlightPrioritization?: readonly RentalHighlightPrioritizationKey$1[];
36
+ /**
37
+ * Selects and orders v10 property highlights. This is an ordered allowlist, not
38
+ * a sort over every available fact.
39
+ *
40
+ * Only listed keys are emitted, even when an omitted key has a source value.
41
+ * `undefined` uses the SDK default; `[]` emits no property highlights. Duplicate
42
+ * keys are emitted once, and unknown, unsupported, or unresolved keys are ignored.
43
+ * This affects `highlights` only, not `attributes` or `vicinity`.
44
+ */
26
45
  readonly rentalPropertyHighlightPrioritization?: readonly RentalPropertyHighlightPrioritizationKey$1[];
27
46
  readonly rentalScope?: RentalScope;
28
47
  readonly shouldAddProposedAdditionalServiceAmount?: boolean;
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-BNbBfJtO.mjs";
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-CYK_5Vk7.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,7 @@ This file is the versioned changelog index for the website SDK instructions.
4
4
 
5
5
  ## Versions
6
6
 
7
+ - `versions/2.9.0/CHANGELOG.md`: `@v-office/website-sdk` 2.9.0 release notes.
7
8
  - `versions/2.8.0/CHANGELOG.md`: `@v-office/website-sdk` 2.8.0 release notes.
8
9
  - `versions/2.7.0/CHANGELOG.md`: `@v-office/website-sdk` 2.7.0 release notes.
9
10
  - `versions/2.6.0/CHANGELOG.md`: compatibility note for an unreleased version label.
@@ -4,6 +4,7 @@ This file is the versioned migration index for the website SDK instructions.
4
4
 
5
5
  ## Available Guides
6
6
 
7
+ - `versions/2.9.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.8.0 to 2.9.0.
7
8
  - `versions/2.8.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.7.0 to 2.8.0.
8
9
  - `versions/2.7.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.5.x to 2.7.0.
9
10
  - `versions/2.6.0/MIGRATION.md`: compatibility note for an unreleased version label.
@@ -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.8.0. Package versions remain unchanged until the release
4
+ `@v-office/website-sdk` 2.9.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,7 @@ 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.9.0/`: 2.9.0 highlight-selection release notes and 2.8.0-to-2.9.0 migration guide.
21
22
  - `versions/2.8.0/`: 2.8.0 custom-attribute release notes and 2.7.0-to-2.8.0 migration guide.
22
23
  - `versions/2.7.0/`: 2.7.0 release notes and 2.5.x-to-2.7.0 migration guide.
23
24
  - `versions/2.6.0/`: compatibility pointers for the unreleased 2.6.0 version label.
@@ -74,4 +75,4 @@ website-sdk --backend v10 search --locale de-DE --query "adults=2"
74
75
  website-sdk --backend v10 search --locale de-DE --query "adults=2" --sort '{"by":"field","orderBy":{"label":"ASC"}}'
75
76
  ```
76
77
 
77
- Config file examples in these docs use the flat `WebsiteSDKConfig` shape introduced in 2.0.0 and kept in 2.8.0. v10 config additionally requires `searchEndpoint` as of 2.5.0.
78
+ Config file examples in these docs use the flat `WebsiteSDKConfig` shape introduced in 2.0.0 and kept in 2.9.0. v10 config additionally requires `searchEndpoint` as of 2.5.0.
@@ -101,12 +101,24 @@ type WebsiteSDKOptions = {
101
101
  };
102
102
  ```
103
103
 
104
+ `rentalHighlightPrioritization` and `rentalPropertyHighlightPrioritization` select
105
+ which facts become highlights and set their order. They are ordered allowlists, not
106
+ sorts over every available fact. A key that is not listed is not emitted even when
107
+ the source contains a value. This affects `highlights` only, not `attributes` or
108
+ `vicinity`. Property highlights are available only with v10 property data.
109
+
110
+ For either option, `undefined` uses the SDK default and `[]` emits no highlights.
111
+ Duplicate keys are emitted once; unknown, unsupported, or unresolved keys are
112
+ ignored. When several configured rental view facts have values, only the first one
113
+ in the ordered allowlist is emitted. View-type descriptors qualify a view and are
114
+ not part of this strongest-view selection.
115
+
104
116
  Unset options are normalized by the SDK:
105
117
 
106
118
  - `customAttributes` defaults to an empty registry.
107
119
  - `customAttributeFilterDefinitions` defaults to `[]`.
108
- - `rentalHighlightPrioritization` defaults to the SDK default rental highlight order.
109
- - `rentalPropertyHighlightPrioritization` defaults to the SDK default property highlight order.
120
+ - `rentalHighlightPrioritization` defaults to the SDK default rental highlight selection.
121
+ - `rentalPropertyHighlightPrioritization` defaults to the SDK default property highlight selection.
110
122
  - `rentalScope` defaults to `{}`.
111
123
  - `shouldAddProposedAdditionalServiceAmount` defaults to `false`.
112
124
  - `translationOverrides` is omitted unless provided.
@@ -194,6 +206,9 @@ Supported sources:
194
206
  active backend, and no generated leaf is committed unless all leaves are valid.
195
207
  Nested compositions are rejected while recursive expansion is unsupported.
196
208
 
209
+ For a new v9 `backendFilter` key, ask someone at be-on! with Hub access to add or
210
+ confirm the backend filter before configuring it in the SDK.
211
+
197
212
  Exposure:
198
213
 
199
214
  - `internal: false` exposes searchable filters through `static.filter.getFilters(...)`.
@@ -279,7 +279,7 @@ them, so an advertised bound always round-trips.
279
279
  ## Highlights and Attributes
280
280
 
281
281
  A custom attribute appears in `highlights` only when its key is listed in
282
- `rentalHighlightPrioritization`, which owns order:
282
+ `rentalHighlightPrioritization`, which is the ordered allowlist:
283
283
 
284
284
  ```ts
285
285
  const options = defineWebsiteSDKOptions({
@@ -382,6 +382,10 @@ These are **not** custom attributes and stay in `customAttributeFilterDefinition
382
382
  filters. Advertised only when every configured leaf can execute on the active
383
383
  backend with its configured value.
384
384
 
385
+ Compositions may reference stable v9 built-ins directly; `backendFilter` is only for
386
+ additional v9 keys. SDK configuration does not create those keys in Hub; ask someone
387
+ at be-on! with Hub access to add or confirm the filter before configuring it.
388
+
385
389
  ```ts
386
390
  const options = defineWebsiteSDKOptions({
387
391
  customAttributes,
@@ -93,6 +93,14 @@ Filter variants:
93
93
  }
94
94
  ```
95
95
 
96
+ v9 has a fixed built-in filter set. These filters are always advertised, parsed,
97
+ and usable as composition leaves; do not repeat them as `backendFilter` definitions.
98
+
99
+ - Numeric: `bedrooms`, `bathrooms`.
100
+ - Boolean: `pool`, `wifi`, `pets`, `privateparking`, `ac`, `washer`, `dishwasher`,
101
+ `beachfront`, `seaview`, `balcony`, `terrace`, `garden`, `bbq`, `sauna`,
102
+ `fireplace`, `tv`, `childrenWelcome`, `nonsmoking`, `kitchen`.
103
+
96
104
  `v10` config:
97
105
 
98
106
  ```json
@@ -111,7 +119,10 @@ Custom attributes come from `customAttributes`, and a definition is advertised o
111
119
  when it has a public filter and the selected backend can execute it. v9 has no
112
120
  custom-attribute search path, so v9 never advertises one; see `custom-attributes.md`.
113
121
 
114
- Backend filters and compositions come from `customAttributeFilterDefinitions`:
122
+ Backend filters and compositions come from `customAttributeFilterDefinitions`.
123
+ SDK configuration cannot create a Hub filter: for another v9 key, first ask someone
124
+ at be-on! with Hub access to add or confirm it, then configure that key as a
125
+ `backendFilter`.
115
126
 
116
127
  ```json
117
128
  {
@@ -167,7 +167,24 @@ Optional `WebsiteSDKOptions`:
167
167
  }
168
168
  ```
169
169
 
170
- `rentalHighlightPrioritization` controls the order of rental `highlights`. `rentalPropertyHighlightPrioritization` controls property highlights for v10 property data. Translation overrides affect localized labels.
170
+ `rentalHighlightPrioritization` selects which facts become rental `highlights` and
171
+ sets their order. It is an ordered allowlist, not a sort over every available fact.
172
+ A key that is not listed is not emitted even when the source contains a value.
173
+ `rentalPropertyHighlightPrioritization` has the same semantics for v10 property
174
+ highlights. Both options affect `highlights` only, not `attributes` or `vicinity`.
175
+
176
+ For either option, `undefined` uses the SDK default and `[]` emits no highlights.
177
+ Duplicate keys are emitted once; unknown, unsupported, or unresolved keys are
178
+ ignored. When several configured rental view facts have values, only the first one
179
+ in the ordered allowlist is emitted. View-type descriptors qualify a view and are
180
+ not part of this strongest-view selection. Translation overrides affect localized
181
+ labels.
182
+
183
+ The active defaults are exported as
184
+ `DEFAULT_RENTAL_HIGHLIGHT_PRIORITIZATION` and
185
+ `DEFAULT_RENTAL_PROPERTY_HIGHLIGHT_PRIORITIZATION` from
186
+ `@v-office/sdk-core`. See `versions/2.9.0/CHANGELOG.md` for the release notes and
187
+ `versions/2.9.0/MIGRATION.md` for the complete default lists and upgrade checks.
171
188
 
172
189
  In CLI JSON, `customAttributes` contains catalog and selection inputs; the CLI builds
173
190
  the validated registry. Typed applications normally call `defineCustomAttributes`
@@ -0,0 +1,37 @@
1
+ # Changelog: 2.9.0
2
+
3
+ This release makes highlight selection explicit, improves the default rental and
4
+ property rankings across coastal, lake, and mountain portfolios, and removes
5
+ duplicate rental views.
6
+
7
+ ## Changed
8
+
9
+ - `rentalHighlightPrioritization` and
10
+ `rentalPropertyHighlightPrioritization` are documented as ordered allowlists,
11
+ not sorts over every available fact. A key that is not listed is not emitted as
12
+ a highlight even when the source contains a value.
13
+ - The default rental allowlist now starts with capacity and size, moves distinctive
14
+ views and facilities ahead of common fittings, places `youthgroups` last, and
15
+ includes previously omitted terrain-specific and practical facts.
16
+ - `outdoorPool`, `indoorPool`, lake, mountain, countryside, river, and secondary
17
+ views can now appear through the default rental highlights, alongside facilities
18
+ such as `spa`, `terrace`, `lift`, `garage`, `dryer`, and `skiBootWarmer`.
19
+ - The default v10 property allowlist now prioritizes beach location and shared
20
+ facilities ahead of utilities. It also includes `locLake`, `lakedistance`,
21
+ `locMountain`, and `skidistance`.
22
+ - Rental highlights now emit only the first configured view fact that has a value.
23
+ The configured order defines which view is strongest. View-type descriptors such
24
+ as `seaviewType` remain independent qualifiers.
25
+ - Strongest-view selection applies consistently to v10 and legacy v9 rental
26
+ highlights. Keys unsupported by the active backend remain ignored.
27
+
28
+ ## Migration Impact
29
+
30
+ - Sites using the SDK defaults may receive a different highlight order and more
31
+ highlight values.
32
+ - Sites that displayed several simultaneous rental views now receive at most one
33
+ view highlight.
34
+ - Explicit custom allowlists retain their configured order and membership, apart
35
+ from the new strongest-view rule.
36
+ - No SDK construction, service-call, or output-type changes are required. Review
37
+ `versions/2.9.0/MIGRATION.md` before upgrading.
@@ -0,0 +1,153 @@
1
+ # Migration: 2.8.0 to 2.9.0
2
+
3
+ 2.9.0 changes default highlight membership and order and emits at most one rental
4
+ view highlight. Configuration and output types are unchanged.
5
+
6
+ ## 1. Treat Highlight Configuration as an Ordered Allowlist
7
+
8
+ `rentalHighlightPrioritization` and
9
+ `rentalPropertyHighlightPrioritization` select which facts become highlights and
10
+ set their order. They do not sort a complete list generated elsewhere.
11
+
12
+ - An omitted key is not emitted even when the source contains a value.
13
+ - `undefined` uses the SDK default.
14
+ - `[]` emits no highlights.
15
+ - Duplicate keys are evaluated once.
16
+ - Unknown, unresolved, or backend-unsupported keys are ignored.
17
+ - These options affect `highlights`, not `attributes` or `vicinity`.
18
+
19
+ Audit custom lists that were shortened only to express a preferred order. Add every
20
+ fact that must remain eligible for highlight output.
21
+
22
+ ## 2. Review the New Rental Default
23
+
24
+ The default rental allowlist is now:
25
+
26
+ ```ts
27
+ [
28
+ "maxPersons",
29
+ "bedrooms",
30
+ "squareMeters",
31
+ "bathrooms",
32
+ "seaview",
33
+ "lakeview",
34
+ "mountainview",
35
+ "valleyView",
36
+ "countrysideView",
37
+ "riverView",
38
+ "outdoorPool",
39
+ "indoorPool",
40
+ "sauna",
41
+ "spa",
42
+ "whirlpool",
43
+ "balcony",
44
+ "terrace",
45
+ "garden",
46
+ "beachChair",
47
+ "landingStage",
48
+ "boatBerth",
49
+ "skiBootWarmer",
50
+ "detached",
51
+ "fireplace",
52
+ "bbq",
53
+ "gym",
54
+ "closedPlot",
55
+ "beachview",
56
+ "gardenView",
57
+ "poolView",
58
+ "cityView",
59
+ "quietStreetView",
60
+ "innerCourtView",
61
+ "washer",
62
+ "dryer",
63
+ "privateparking",
64
+ "garage",
65
+ "carport",
66
+ "wifi",
67
+ "lift",
68
+ "childrenWelcome",
69
+ "nonsmoking",
70
+ "kitchen",
71
+ "dishwasher",
72
+ "tv",
73
+ "ac",
74
+ "heating",
75
+ "fridge",
76
+ "microwave",
77
+ "oven",
78
+ "stove",
79
+ "coffeemaker",
80
+ "freezer",
81
+ "electricKettle",
82
+ "youthgroups",
83
+ ];
84
+ ```
85
+
86
+ Capacity and size come first, followed by distinctive views, facilities, outdoor
87
+ space, terrain-specific draws, practical confirmers, common fittings, and finally
88
+ the minority booking rule `youthgroups`.
89
+
90
+ ## 3. Review the New Property Default
91
+
92
+ Property highlights apply only to v10 property data. Their default allowlist is:
93
+
94
+ ```ts
95
+ [
96
+ "beachfront",
97
+ "beachaccess",
98
+ "beachdistance",
99
+ "seadistance",
100
+ "locBeach",
101
+ "locLake",
102
+ "lakedistance",
103
+ "locMountain",
104
+ "skidistance",
105
+ "outdoorPool",
106
+ "indoorPool",
107
+ "garden",
108
+ "terrace",
109
+ "bbqFacilities",
110
+ "playground",
111
+ "pool4kids",
112
+ "familyRoomsAvailable",
113
+ "parking",
114
+ "wifi",
115
+ "washer",
116
+ "dryer",
117
+ "ac",
118
+ "heating",
119
+ "locGroceries",
120
+ "restaurantdistance",
121
+ "publictransportdistance",
122
+ ];
123
+ ```
124
+
125
+ Location and terrain now precede shared facilities, family signals, utilities, and
126
+ secondary map facts.
127
+
128
+ ## 4. Expect One Rental View Highlight
129
+
130
+ When several configured view facts have values, only the first one in
131
+ `rentalHighlightPrioritization` is emitted:
132
+
133
+ ```ts
134
+ rentalHighlightPrioritization: ["mountainview", "lakeview", "seaview", "gardenView", "wifi"];
135
+ ```
136
+
137
+ For this configuration, a rental with both mountain and lake views emits only the
138
+ mountain view. If `mountainview` has no value, the lake view can emit instead.
139
+ View-type descriptors such as `mountainviewType` and `seaviewType` qualify a view
140
+ and do not compete for the single view slot.
141
+
142
+ The rule applies to v10 and legacy v9. An unsupported v9 view key does not prevent
143
+ a later supported view from being emitted.
144
+
145
+ ## Recommended Verification
146
+
147
+ 1. Check search cards and rental pages that truncate highlights.
148
+ 2. Compare coastal, lake, and mountain workspaces against the new defaults.
149
+ 3. Confirm capacity and size remain available to consumers that read them from
150
+ search highlights.
151
+ 4. Verify rentals with cumulative view facts emit the expected first configured
152
+ view.
153
+ 5. Review explicit custom allowlists for facts that were unintentionally omitted.
@@ -1,4 +1,4 @@
1
- import { c as VofficeUnitDataFieldSchemas, d as VofficeUnitDataPropertyMetadata, f as parseVofficeFacilityData, i as toLocalizedString, l as VofficeUnitDataPropertyCategoryLabelKeys, m as parseVofficeUnitData, n as toImages, o as rentalsAllFeedbacksQuery, p as parseVofficeFeedbackData, r as toAddress, s as rentalsAllWithoutFeedbacksQuery, t as toRentalHighlights, u as VofficeUnitDataPropertyCategoryValues } from "./to-rental-highlights-OvNe9ZQS.mjs";
1
+ import { c as VofficeUnitDataFieldSchemas, d as VofficeUnitDataPropertyMetadata, f as parseVofficeFacilityData, i as toLocalizedString, l as VofficeUnitDataPropertyCategoryLabelKeys, m as parseVofficeUnitData, n as toImages, o as rentalsAllFeedbacksQuery, p as parseVofficeFeedbackData, r as toAddress, s as rentalsAllWithoutFeedbacksQuery, t as toRentalHighlights, u as VofficeUnitDataPropertyCategoryValues } from "./to-rental-highlights-B6a_fi0j.mjs";
2
2
  import { makeTranslate, renderLabeledAttributeValue, renderResolvedCustomAttribute, toCustomAttributeList, toResolvedCustomAttributeCategoryTranslationKey } from "@v-office/sdk-core";
3
3
  import { Effect } from "effect";
4
4
  //#region src/legacy-v9/parser/rentals/to-description.ts
@@ -1,5 +1,5 @@
1
- import { a as parseQueryParameters, i as collectQueryParameters, n as makeV9CustomAttributeFilterCapabilities, o as toQueryString, r as toBasicQueryInputs, s as applyVofficeFilterDerivedBasicQueryInputs } from "./client-BNbBfJtO.mjs";
2
- import { a as searchQuery, c as VofficeUnitDataFieldSchemas, m as parseVofficeUnitData, n as toImages, r as toAddress, t as toRentalHighlights } from "./to-rental-highlights-OvNe9ZQS.mjs";
1
+ import { a as parseQueryParameters, i as collectQueryParameters, n as makeV9CustomAttributeFilterCapabilities, o as toQueryString, r as toBasicQueryInputs, s as applyVofficeFilterDerivedBasicQueryInputs } from "./client-CYK_5Vk7.mjs";
2
+ import { a as searchQuery, c as VofficeUnitDataFieldSchemas, m as parseVofficeUnitData, n as toImages, r as toAddress, t as toRentalHighlights } from "./to-rental-highlights-B6a_fi0j.mjs";
3
3
  import { CoreSDKError, STABLE_SEARCH_INPUTS, daysBetweenLocalDates, expandCustomAttributeFilterCompositions, parseChildrenAges, parseOccupancyCount, resolveExpandedCompositions, toFormattedSearchPrice, toIsoDateFromPeriodQueryDate, toStableSearchInputBackendQueryKeys, toStableSearchInputParameterValues, toStableSearchInputQueryKeys, toUnusedFilterKeys } from "@v-office/sdk-core";
4
4
  import { Effect } from "effect";
5
5
  //#region src/legacy-v9/parser/search/input/search-input-error.ts
@@ -5870,12 +5870,29 @@ const toV9RentalHighlightKey = (key) => {
5870
5870
  };
5871
5871
  //#endregion
5872
5872
  //#region src/legacy-v9/parser/rentals/to-rental-highlights.ts
5873
+ const RENTAL_VIEW_HIGHLIGHT_KEYS = /* @__PURE__ */ new Set([
5874
+ "beachview",
5875
+ "cityView",
5876
+ "countrysideView",
5877
+ "gardenView",
5878
+ "innerCourtView",
5879
+ "lakeview",
5880
+ "mountainview",
5881
+ "poolView",
5882
+ "quietStreetView",
5883
+ "riverView",
5884
+ "seaview",
5885
+ "valleyView"
5886
+ ]);
5873
5887
  const toRentalHighlights = ({ locale, translations, highlightPrioritization, customAttributes, attributes }) => Effect.gen(function* () {
5874
5888
  const highlights = [];
5875
5889
  const seenKeys = /* @__PURE__ */ new Set();
5876
5890
  const knownAttributes = attributes.known;
5877
5891
  const translate = makeTranslate(translations, locale);
5892
+ let hasViewHighlight = false;
5878
5893
  for (const highlightKey of highlightPrioritization) {
5894
+ const isViewHighlight = RENTAL_VIEW_HIGHLIGHT_KEYS.has(highlightKey);
5895
+ if (isViewHighlight && hasViewHighlight) continue;
5879
5896
  const v9Key = toV9RentalHighlightKey(highlightKey);
5880
5897
  if (v9Key == null) {
5881
5898
  if (seenKeys.has(highlightKey)) continue;
@@ -5888,7 +5905,10 @@ const toRentalHighlights = ({ locale, translations, highlightPrioritization, cus
5888
5905
  locale,
5889
5906
  value: binding === void 0 ? void 0 : knownAttributes[binding] ?? attributes.unknown[binding]
5890
5907
  });
5891
- if (highlight != null) highlights.push(highlight);
5908
+ if (highlight != null) {
5909
+ highlights.push(highlight);
5910
+ if (isViewHighlight) hasViewHighlight = true;
5911
+ }
5892
5912
  continue;
5893
5913
  }
5894
5914
  if (seenKeys.has(v9Key)) continue;
@@ -5900,7 +5920,10 @@ const toRentalHighlights = ({ locale, translations, highlightPrioritization, cus
5900
5920
  locale,
5901
5921
  value: knownAttributes[v9Key]
5902
5922
  });
5903
- if (highlight != null) highlights.push(highlight);
5923
+ if (highlight != null) {
5924
+ highlights.push(highlight);
5925
+ if (isViewHighlight) hasViewHighlight = true;
5926
+ }
5904
5927
  }
5905
5928
  return highlights;
5906
5929
  });
@@ -4,6 +4,7 @@ This file is the versioned changelog index for the website SDK instructions.
4
4
 
5
5
  ## Versions
6
6
 
7
+ - `versions/2.9.0/CHANGELOG.md`: `@v-office/website-sdk` 2.9.0 release notes.
7
8
  - `versions/2.8.0/CHANGELOG.md`: `@v-office/website-sdk` 2.8.0 release notes.
8
9
  - `versions/2.7.0/CHANGELOG.md`: `@v-office/website-sdk` 2.7.0 release notes.
9
10
  - `versions/2.6.0/CHANGELOG.md`: compatibility note for an unreleased version label.
@@ -4,6 +4,7 @@ This file is the versioned migration index for the website SDK instructions.
4
4
 
5
5
  ## Available Guides
6
6
 
7
+ - `versions/2.9.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.8.0 to 2.9.0.
7
8
  - `versions/2.8.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.7.0 to 2.8.0.
8
9
  - `versions/2.7.0/MIGRATION.md`: migrate from `@v-office/website-sdk` 2.5.x to 2.7.0.
9
10
  - `versions/2.6.0/MIGRATION.md`: compatibility note for an unreleased version label.
@@ -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.8.0. Package versions remain unchanged until the release
4
+ `@v-office/website-sdk` 2.9.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,7 @@ 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.9.0/`: 2.9.0 highlight-selection release notes and 2.8.0-to-2.9.0 migration guide.
21
22
  - `versions/2.8.0/`: 2.8.0 custom-attribute release notes and 2.7.0-to-2.8.0 migration guide.
22
23
  - `versions/2.7.0/`: 2.7.0 release notes and 2.5.x-to-2.7.0 migration guide.
23
24
  - `versions/2.6.0/`: compatibility pointers for the unreleased 2.6.0 version label.
@@ -74,4 +75,4 @@ website-sdk --backend v10 search --locale de-DE --query "adults=2"
74
75
  website-sdk --backend v10 search --locale de-DE --query "adults=2" --sort '{"by":"field","orderBy":{"label":"ASC"}}'
75
76
  ```
76
77
 
77
- Config file examples in these docs use the flat `WebsiteSDKConfig` shape introduced in 2.0.0 and kept in 2.8.0. v10 config additionally requires `searchEndpoint` as of 2.5.0.
78
+ Config file examples in these docs use the flat `WebsiteSDKConfig` shape introduced in 2.0.0 and kept in 2.9.0. v10 config additionally requires `searchEndpoint` as of 2.5.0.
@@ -101,12 +101,24 @@ type WebsiteSDKOptions = {
101
101
  };
102
102
  ```
103
103
 
104
+ `rentalHighlightPrioritization` and `rentalPropertyHighlightPrioritization` select
105
+ which facts become highlights and set their order. They are ordered allowlists, not
106
+ sorts over every available fact. A key that is not listed is not emitted even when
107
+ the source contains a value. This affects `highlights` only, not `attributes` or
108
+ `vicinity`. Property highlights are available only with v10 property data.
109
+
110
+ For either option, `undefined` uses the SDK default and `[]` emits no highlights.
111
+ Duplicate keys are emitted once; unknown, unsupported, or unresolved keys are
112
+ ignored. When several configured rental view facts have values, only the first one
113
+ in the ordered allowlist is emitted. View-type descriptors qualify a view and are
114
+ not part of this strongest-view selection.
115
+
104
116
  Unset options are normalized by the SDK:
105
117
 
106
118
  - `customAttributes` defaults to an empty registry.
107
119
  - `customAttributeFilterDefinitions` defaults to `[]`.
108
- - `rentalHighlightPrioritization` defaults to the SDK default rental highlight order.
109
- - `rentalPropertyHighlightPrioritization` defaults to the SDK default property highlight order.
120
+ - `rentalHighlightPrioritization` defaults to the SDK default rental highlight selection.
121
+ - `rentalPropertyHighlightPrioritization` defaults to the SDK default property highlight selection.
110
122
  - `rentalScope` defaults to `{}`.
111
123
  - `shouldAddProposedAdditionalServiceAmount` defaults to `false`.
112
124
  - `translationOverrides` is omitted unless provided.
@@ -194,6 +206,9 @@ Supported sources:
194
206
  active backend, and no generated leaf is committed unless all leaves are valid.
195
207
  Nested compositions are rejected while recursive expansion is unsupported.
196
208
 
209
+ For a new v9 `backendFilter` key, ask someone at be-on! with Hub access to add or
210
+ confirm the backend filter before configuring it in the SDK.
211
+
197
212
  Exposure:
198
213
 
199
214
  - `internal: false` exposes searchable filters through `static.filter.getFilters(...)`.
@@ -279,7 +279,7 @@ them, so an advertised bound always round-trips.
279
279
  ## Highlights and Attributes
280
280
 
281
281
  A custom attribute appears in `highlights` only when its key is listed in
282
- `rentalHighlightPrioritization`, which owns order:
282
+ `rentalHighlightPrioritization`, which is the ordered allowlist:
283
283
 
284
284
  ```ts
285
285
  const options = defineWebsiteSDKOptions({
@@ -382,6 +382,10 @@ These are **not** custom attributes and stay in `customAttributeFilterDefinition
382
382
  filters. Advertised only when every configured leaf can execute on the active
383
383
  backend with its configured value.
384
384
 
385
+ Compositions may reference stable v9 built-ins directly; `backendFilter` is only for
386
+ additional v9 keys. SDK configuration does not create those keys in Hub; ask someone
387
+ at be-on! with Hub access to add or confirm the filter before configuring it.
388
+
385
389
  ```ts
386
390
  const options = defineWebsiteSDKOptions({
387
391
  customAttributes,
@@ -93,6 +93,14 @@ Filter variants:
93
93
  }
94
94
  ```
95
95
 
96
+ v9 has a fixed built-in filter set. These filters are always advertised, parsed,
97
+ and usable as composition leaves; do not repeat them as `backendFilter` definitions.
98
+
99
+ - Numeric: `bedrooms`, `bathrooms`.
100
+ - Boolean: `pool`, `wifi`, `pets`, `privateparking`, `ac`, `washer`, `dishwasher`,
101
+ `beachfront`, `seaview`, `balcony`, `terrace`, `garden`, `bbq`, `sauna`,
102
+ `fireplace`, `tv`, `childrenWelcome`, `nonsmoking`, `kitchen`.
103
+
96
104
  `v10` config:
97
105
 
98
106
  ```json
@@ -111,7 +119,10 @@ Custom attributes come from `customAttributes`, and a definition is advertised o
111
119
  when it has a public filter and the selected backend can execute it. v9 has no
112
120
  custom-attribute search path, so v9 never advertises one; see `custom-attributes.md`.
113
121
 
114
- Backend filters and compositions come from `customAttributeFilterDefinitions`:
122
+ Backend filters and compositions come from `customAttributeFilterDefinitions`.
123
+ SDK configuration cannot create a Hub filter: for another v9 key, first ask someone
124
+ at be-on! with Hub access to add or confirm it, then configure that key as a
125
+ `backendFilter`.
115
126
 
116
127
  ```json
117
128
  {
@@ -167,7 +167,24 @@ Optional `WebsiteSDKOptions`:
167
167
  }
168
168
  ```
169
169
 
170
- `rentalHighlightPrioritization` controls the order of rental `highlights`. `rentalPropertyHighlightPrioritization` controls property highlights for v10 property data. Translation overrides affect localized labels.
170
+ `rentalHighlightPrioritization` selects which facts become rental `highlights` and
171
+ sets their order. It is an ordered allowlist, not a sort over every available fact.
172
+ A key that is not listed is not emitted even when the source contains a value.
173
+ `rentalPropertyHighlightPrioritization` has the same semantics for v10 property
174
+ highlights. Both options affect `highlights` only, not `attributes` or `vicinity`.
175
+
176
+ For either option, `undefined` uses the SDK default and `[]` emits no highlights.
177
+ Duplicate keys are emitted once; unknown, unsupported, or unresolved keys are
178
+ ignored. When several configured rental view facts have values, only the first one
179
+ in the ordered allowlist is emitted. View-type descriptors qualify a view and are
180
+ not part of this strongest-view selection. Translation overrides affect localized
181
+ labels.
182
+
183
+ The active defaults are exported as
184
+ `DEFAULT_RENTAL_HIGHLIGHT_PRIORITIZATION` and
185
+ `DEFAULT_RENTAL_PROPERTY_HIGHLIGHT_PRIORITIZATION` from
186
+ `@v-office/sdk-core`. See `versions/2.9.0/CHANGELOG.md` for the release notes and
187
+ `versions/2.9.0/MIGRATION.md` for the complete default lists and upgrade checks.
171
188
 
172
189
  In CLI JSON, `customAttributes` contains catalog and selection inputs; the CLI builds
173
190
  the validated registry. Typed applications normally call `defineCustomAttributes`
@@ -0,0 +1,37 @@
1
+ # Changelog: 2.9.0
2
+
3
+ This release makes highlight selection explicit, improves the default rental and
4
+ property rankings across coastal, lake, and mountain portfolios, and removes
5
+ duplicate rental views.
6
+
7
+ ## Changed
8
+
9
+ - `rentalHighlightPrioritization` and
10
+ `rentalPropertyHighlightPrioritization` are documented as ordered allowlists,
11
+ not sorts over every available fact. A key that is not listed is not emitted as
12
+ a highlight even when the source contains a value.
13
+ - The default rental allowlist now starts with capacity and size, moves distinctive
14
+ views and facilities ahead of common fittings, places `youthgroups` last, and
15
+ includes previously omitted terrain-specific and practical facts.
16
+ - `outdoorPool`, `indoorPool`, lake, mountain, countryside, river, and secondary
17
+ views can now appear through the default rental highlights, alongside facilities
18
+ such as `spa`, `terrace`, `lift`, `garage`, `dryer`, and `skiBootWarmer`.
19
+ - The default v10 property allowlist now prioritizes beach location and shared
20
+ facilities ahead of utilities. It also includes `locLake`, `lakedistance`,
21
+ `locMountain`, and `skidistance`.
22
+ - Rental highlights now emit only the first configured view fact that has a value.
23
+ The configured order defines which view is strongest. View-type descriptors such
24
+ as `seaviewType` remain independent qualifiers.
25
+ - Strongest-view selection applies consistently to v10 and legacy v9 rental
26
+ highlights. Keys unsupported by the active backend remain ignored.
27
+
28
+ ## Migration Impact
29
+
30
+ - Sites using the SDK defaults may receive a different highlight order and more
31
+ highlight values.
32
+ - Sites that displayed several simultaneous rental views now receive at most one
33
+ view highlight.
34
+ - Explicit custom allowlists retain their configured order and membership, apart
35
+ from the new strongest-view rule.
36
+ - No SDK construction, service-call, or output-type changes are required. Review
37
+ `versions/2.9.0/MIGRATION.md` before upgrading.
@@ -0,0 +1,153 @@
1
+ # Migration: 2.8.0 to 2.9.0
2
+
3
+ 2.9.0 changes default highlight membership and order and emits at most one rental
4
+ view highlight. Configuration and output types are unchanged.
5
+
6
+ ## 1. Treat Highlight Configuration as an Ordered Allowlist
7
+
8
+ `rentalHighlightPrioritization` and
9
+ `rentalPropertyHighlightPrioritization` select which facts become highlights and
10
+ set their order. They do not sort a complete list generated elsewhere.
11
+
12
+ - An omitted key is not emitted even when the source contains a value.
13
+ - `undefined` uses the SDK default.
14
+ - `[]` emits no highlights.
15
+ - Duplicate keys are evaluated once.
16
+ - Unknown, unresolved, or backend-unsupported keys are ignored.
17
+ - These options affect `highlights`, not `attributes` or `vicinity`.
18
+
19
+ Audit custom lists that were shortened only to express a preferred order. Add every
20
+ fact that must remain eligible for highlight output.
21
+
22
+ ## 2. Review the New Rental Default
23
+
24
+ The default rental allowlist is now:
25
+
26
+ ```ts
27
+ [
28
+ "maxPersons",
29
+ "bedrooms",
30
+ "squareMeters",
31
+ "bathrooms",
32
+ "seaview",
33
+ "lakeview",
34
+ "mountainview",
35
+ "valleyView",
36
+ "countrysideView",
37
+ "riverView",
38
+ "outdoorPool",
39
+ "indoorPool",
40
+ "sauna",
41
+ "spa",
42
+ "whirlpool",
43
+ "balcony",
44
+ "terrace",
45
+ "garden",
46
+ "beachChair",
47
+ "landingStage",
48
+ "boatBerth",
49
+ "skiBootWarmer",
50
+ "detached",
51
+ "fireplace",
52
+ "bbq",
53
+ "gym",
54
+ "closedPlot",
55
+ "beachview",
56
+ "gardenView",
57
+ "poolView",
58
+ "cityView",
59
+ "quietStreetView",
60
+ "innerCourtView",
61
+ "washer",
62
+ "dryer",
63
+ "privateparking",
64
+ "garage",
65
+ "carport",
66
+ "wifi",
67
+ "lift",
68
+ "childrenWelcome",
69
+ "nonsmoking",
70
+ "kitchen",
71
+ "dishwasher",
72
+ "tv",
73
+ "ac",
74
+ "heating",
75
+ "fridge",
76
+ "microwave",
77
+ "oven",
78
+ "stove",
79
+ "coffeemaker",
80
+ "freezer",
81
+ "electricKettle",
82
+ "youthgroups",
83
+ ];
84
+ ```
85
+
86
+ Capacity and size come first, followed by distinctive views, facilities, outdoor
87
+ space, terrain-specific draws, practical confirmers, common fittings, and finally
88
+ the minority booking rule `youthgroups`.
89
+
90
+ ## 3. Review the New Property Default
91
+
92
+ Property highlights apply only to v10 property data. Their default allowlist is:
93
+
94
+ ```ts
95
+ [
96
+ "beachfront",
97
+ "beachaccess",
98
+ "beachdistance",
99
+ "seadistance",
100
+ "locBeach",
101
+ "locLake",
102
+ "lakedistance",
103
+ "locMountain",
104
+ "skidistance",
105
+ "outdoorPool",
106
+ "indoorPool",
107
+ "garden",
108
+ "terrace",
109
+ "bbqFacilities",
110
+ "playground",
111
+ "pool4kids",
112
+ "familyRoomsAvailable",
113
+ "parking",
114
+ "wifi",
115
+ "washer",
116
+ "dryer",
117
+ "ac",
118
+ "heating",
119
+ "locGroceries",
120
+ "restaurantdistance",
121
+ "publictransportdistance",
122
+ ];
123
+ ```
124
+
125
+ Location and terrain now precede shared facilities, family signals, utilities, and
126
+ secondary map facts.
127
+
128
+ ## 4. Expect One Rental View Highlight
129
+
130
+ When several configured view facts have values, only the first one in
131
+ `rentalHighlightPrioritization` is emitted:
132
+
133
+ ```ts
134
+ rentalHighlightPrioritization: ["mountainview", "lakeview", "seaview", "gardenView", "wifi"];
135
+ ```
136
+
137
+ For this configuration, a rental with both mountain and lake views emits only the
138
+ mountain view. If `mountainview` has no value, the lake view can emit instead.
139
+ View-type descriptors such as `mountainviewType` and `seaviewType` qualify a view
140
+ and do not compete for the single view slot.
141
+
142
+ The rule applies to v10 and legacy v9. An unsupported v9 view key does not prevent
143
+ a later supported view from being emitted.
144
+
145
+ ## Recommended Verification
146
+
147
+ 1. Check search cards and rental pages that truncate highlights.
148
+ 2. Compare coastal, lake, and mountain workspaces against the new defaults.
149
+ 3. Confirm capacity and size remain available to consumers that read them from
150
+ search highlights.
151
+ 4. Verify rentals with cumulative view facts emit the expected first configured
152
+ view.
153
+ 5. Review explicit custom allowlists for facts that were unintentionally omitted.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@v-office/website-sdk",
3
- "version": "2.8.0",
3
+ "version": "2.9.0",
4
4
  "description": "Website-facing SDK facade backed by @v-office/sdk-core",
5
5
  "bin": {
6
6
  "website-sdk": "./dist/cli.mjs"
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@graphql-typed-document-node/core": "3.2.0",
44
- "@v-office/sdk-core": "^1.8.0",
44
+ "@v-office/sdk-core": "^1.9.0",
45
45
  "effect": "4.0.0-beta.85",
46
46
  "graphql": "16.14.2",
47
47
  "yaml": "^2.9.0"