@v-office/website-sdk 2.12.0 → 2.14.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.
Files changed (42) hide show
  1. package/README.md +3 -2
  2. package/dist/capabilities/search.d.mts +2 -0
  3. package/dist/capabilities/search.mjs +2 -0
  4. package/dist/cli.mjs +2 -2
  5. package/dist/{client-Bmxh2SAu.mjs → client-BvQRpzYY.mjs} +807 -305
  6. package/dist/index.d.mts +3 -56
  7. package/dist/index.mjs +1 -1
  8. package/dist/instructions/CHANGELOG.md +2 -0
  9. package/dist/instructions/MIGRATION.md +2 -0
  10. package/dist/instructions/README.md +11 -3
  11. package/dist/instructions/booking.md +56 -40
  12. package/dist/instructions/quote.md +5 -3
  13. package/dist/instructions/rentals.md +46 -1
  14. package/dist/instructions/search.md +22 -0
  15. package/dist/instructions/versions/2.13.0/CHANGELOG.md +87 -0
  16. package/dist/instructions/versions/2.13.0/MIGRATION.md +315 -0
  17. package/dist/instructions/versions/2.14.0/CHANGELOG.md +72 -0
  18. package/dist/instructions/versions/2.14.0/MIGRATION.md +148 -0
  19. package/dist/{rentals-BG1diZoo.mjs → rentals-CN01jEkv.mjs} +8 -12
  20. package/dist/{search-BlL8vSPY.mjs → search-uXcReJdL.mjs} +2 -2
  21. package/dist/{to-rental-highlights-BVikT4Iz.mjs → to-rental-highlights-D_VRHaaC.mjs} +1355 -7
  22. package/dist/translations/shared/de-DE/booking.json +7 -0
  23. package/dist/translations/shared/en-US/booking.json +7 -0
  24. package/dist/translations/v9/de-DE/filter.json +4 -4
  25. package/dist/translations/v9/de-DE/rental-attribute-options.json +174 -0
  26. package/dist/translations/v9/de-DE/rental-attributes.json +95 -45
  27. package/dist/translations/v9/en-US/core.json +1 -1
  28. package/dist/translations/v9/en-US/filter.json +2 -2
  29. package/dist/translations/v9/en-US/rental-attribute-options.json +174 -0
  30. package/dist/translations/v9/en-US/rental-attributes.json +262 -212
  31. package/instructions/CHANGELOG.md +2 -0
  32. package/instructions/MIGRATION.md +2 -0
  33. package/instructions/README.md +11 -3
  34. package/instructions/booking.md +56 -40
  35. package/instructions/quote.md +5 -3
  36. package/instructions/rentals.md +46 -1
  37. package/instructions/search.md +22 -0
  38. package/instructions/versions/2.13.0/CHANGELOG.md +87 -0
  39. package/instructions/versions/2.13.0/MIGRATION.md +315 -0
  40. package/instructions/versions/2.14.0/CHANGELOG.md +72 -0
  41. package/instructions/versions/2.14.0/MIGRATION.md +148 -0
  42. package/package.json +7 -4
@@ -0,0 +1,315 @@
1
+ # Migration: 2.12.0 to 2.13.0
2
+
3
+ 2.13.0 introduces a breaking, shared booking-payment output for v9 and v10. The
4
+ new model is intentionally presentation-oriented: labels, amounts, deadlines,
5
+ payment locations, and breakdown lines are already translated and formatted for
6
+ the booking locale.
7
+
8
+ ## 1. Replace the Flat Payment Schedule
9
+
10
+ Before 2.13.0:
11
+
12
+ ```ts
13
+ booking.paymentSchedules;
14
+ ```
15
+
16
+ From 2.13.0:
17
+
18
+ ```ts
19
+ booking.payment.schedule;
20
+ booking.payment.alternatives;
21
+ ```
22
+
23
+ `payment.schedule` contains contractual payment steps. `payment.alternatives`
24
+ contains distinct alternatives such as paying the complete outstanding balance.
25
+
26
+ Example:
27
+
28
+ ```json
29
+ {
30
+ "bookingNumber": "B-2026-0001",
31
+ "payment": {
32
+ "schedule": [
33
+ {
34
+ "kind": "prepayment",
35
+ "label": "Anzahlung",
36
+ "amount": "76,00 €",
37
+ "dueOn": "Zahlbar bis zum 19. August 2026",
38
+ "paymentOptions": [
39
+ {
40
+ "kind": "bank_transfer",
41
+ "label": "Überweisung",
42
+ "holder": "Ferienvermietung Muster GmbH",
43
+ "iban": "DE02 1203 0000 0000 2020 51",
44
+ "remittanceText": "Buchungsnummer: B-2026-0001"
45
+ }
46
+ ]
47
+ },
48
+ {
49
+ "kind": "remaining_payment",
50
+ "label": "Restzahlung",
51
+ "amount": "304,00 €",
52
+ "dueOn": "Zahlbar bis zum 6. Februar 2027"
53
+ }
54
+ ],
55
+ "alternatives": [
56
+ {
57
+ "kind": "full_amount",
58
+ "label": "Gesamtzahlung",
59
+ "amount": "380,00 €",
60
+ "paymentOptions": [
61
+ {
62
+ "kind": "bank_transfer",
63
+ "label": "Überweisung",
64
+ "holder": "Ferienvermietung Muster GmbH",
65
+ "iban": "DE02 1203 0000 0000 2020 51",
66
+ "remittanceText": "Buchungsnummer: B-2026-0001"
67
+ }
68
+ ]
69
+ }
70
+ ]
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## 2. Read `amount` Instead of `total`
76
+
77
+ The old schedule-level `total` field has been renamed to `amount`:
78
+
79
+ ```ts
80
+ for (const entry of booking.payment.schedule) {
81
+ renderAmount(entry.amount);
82
+ }
83
+ ```
84
+
85
+ The value remains a localized display string. Do not parse it for arithmetic or
86
+ payment initiation.
87
+
88
+ Optional `lines` continue to contain translated labels and formatted amounts:
89
+
90
+ ```ts
91
+ for (const line of entry.lines ?? []) {
92
+ renderBreakdownLine(line.label, line.amount);
93
+ }
94
+ ```
95
+
96
+ ## 3. Render Schedule and Alternative Entries
97
+
98
+ To render every payment entry:
99
+
100
+ ```ts
101
+ const paymentEntries = [...booking.payment.schedule, ...booking.payment.alternatives];
102
+
103
+ for (const entry of paymentEntries) {
104
+ renderPaymentEntry(entry);
105
+ }
106
+ ```
107
+
108
+ Use the stable `kind` only for programmatic behavior. Use `label` for visible
109
+ text.
110
+
111
+ Schedule kinds:
112
+
113
+ - `prepayment`: a named v9 down payment.
114
+ - `remaining_payment`: a named v9 remaining payment.
115
+ - `installment`: a v10 installment step.
116
+ - `deposit`: a v10 deposit step.
117
+
118
+ Alternative kinds:
119
+
120
+ - `full_amount`: settle the complete currently outstanding balance.
121
+
122
+ Do not infer v9 semantics from v10 step order. A v10 installment is not
123
+ automatically a prepayment or remaining payment.
124
+
125
+ ## 4. Treat `paymentOptions` as Capability Data
126
+
127
+ `paymentOptions` is optional on scheduled steps. Its absence means the entry is
128
+ informational and is not currently payable through the SDK.
129
+
130
+ ```ts
131
+ for (const option of entry.paymentOptions ?? []) {
132
+ if (option.kind === "bank_transfer") {
133
+ renderBankTransfer(option);
134
+ } else {
135
+ renderSubmitButton(() => sdk.live.booking.submitPaymentOption(option));
136
+ }
137
+ }
138
+ ```
139
+
140
+ Do not attach payment buttons to future, on-site, or external entries merely
141
+ because they appear in `payment.schedule`.
142
+
143
+ `full_amount` alternatives always contain a `paymentOptions` array. The array can
144
+ be empty when the backend supplies no executable method.
145
+
146
+ ## 5. Render Dates and Payment Locations Directly
147
+
148
+ Before 2.13.0, `dueOn` was locale-short text even though older documentation
149
+ showed an ISO value. Consumers sometimes attempted to parse it as
150
+ `YYYY-MM-DD`.
151
+
152
+ From 2.13.0, `dueOn` is a complete localized phrase:
153
+
154
+ ```text
155
+ Zahlbar bis zum 6. Februar 2027
156
+ Payable until February 6, 2027
157
+ ```
158
+
159
+ Render it directly:
160
+
161
+ ```ts
162
+ if (entry.dueOn) renderSupportingText(entry.dueOn);
163
+ if (entry.paymentAt) renderSupportingText(entry.paymentAt);
164
+ ```
165
+
166
+ Do not prepend another due-date label and do not parse or reformat these fields.
167
+ `paymentAt` is currently populated by v10 when payment-step location information
168
+ is available.
169
+
170
+ ## 6. Account for the Corrected v9 Schedule
171
+
172
+ Legacy v9 now emits both authoritative contractual steps:
173
+
174
+ - `prepayment` with its own amount and deadline.
175
+ - `remaining_payment` with its own amount and deadline.
176
+
177
+ The `full_amount` alternative is separate. When the SDK synthesizes it from
178
+ prepayment plus remaining payment, it has no deadline. The SDK no longer copies
179
+ the prepayment deadline onto that alternative.
180
+
181
+ Consequently, code must not derive a remaining-payment deadline from
182
+ `payment.alternatives`.
183
+
184
+ ## 7. Account for the Expanded v10 Schedule
185
+
186
+ v10 now preserves all remaining backend payment steps in
187
+ `payment.schedule`, including:
188
+
189
+ - `ONLINE`
190
+ - `ON_SITE`
191
+ - `EXTERN`
192
+
193
+ Only the next eligible online step receives an initialized Adyen option. Later
194
+ steps remain available as informational entries. The complete outstanding amount
195
+ can appear separately under `payment.alternatives`.
196
+
197
+ The alternative amount is the current outstanding balance, not necessarily the
198
+ original booking total.
199
+
200
+ ## 8. Migrate Post-Booking Insurance
201
+
202
+ Before 2.13.0:
203
+
204
+ ```ts
205
+ await sdk.live.quote.bookInsurance({
206
+ quote,
207
+ bookingNumber: booking.bookingNumber,
208
+ guestToken: booking.guestToken,
209
+ });
210
+ ```
211
+
212
+ From 2.13.0:
213
+
214
+ ```ts
215
+ await sdk.live.quote.bookInsurance({
216
+ quote,
217
+ booking,
218
+ });
219
+ ```
220
+
221
+ `guestToken` is no longer public. For v9, it is stored as private state on the
222
+ opaque booking object and consumed internally by the SDK.
223
+
224
+ Keep the same live booking object until insurance booking is complete:
225
+
226
+ ```ts
227
+ const booking = await sdk.live.booking.book(input);
228
+
229
+ // Do not JSON round-trip `booking` before this call.
230
+ const insurance = await sdk.live.quote.bookInsurance({ quote, booking });
231
+ ```
232
+
233
+ Spreading, serializing, reconstructing, or transferring the booking object loses
234
+ its private backend context. If the application must cross a page reload or
235
+ process boundary, complete insurance before that boundary.
236
+
237
+ ## 9. Update Payment-Option Selection
238
+
239
+ Before 2.13.0:
240
+
241
+ ```ts
242
+ const option = booking.paymentSchedules[0]?.paymentOptions.find(
243
+ (candidate) => candidate.kind !== "bank_transfer",
244
+ );
245
+ ```
246
+
247
+ From 2.13.0:
248
+
249
+ ```ts
250
+ const option = [...booking.payment.schedule, ...booking.payment.alternatives]
251
+ .flatMap((entry) => entry.paymentOptions ?? [])
252
+ .find((candidate) => candidate.kind !== "bank_transfer");
253
+ ```
254
+
255
+ Continue passing the selected structured option unchanged to
256
+ `submitPaymentOption`.
257
+
258
+ ## 10. Handle Optional Insurance Output
259
+
260
+ `insurancePaymentOptions` is omitted when no post-booking insurance payment is
261
+ available:
262
+
263
+ ```ts
264
+ for (const option of booking.insurancePaymentOptions ?? []) {
265
+ renderInsurancePaymentOption(option);
266
+ }
267
+ ```
268
+
269
+ This keeps v10 and bookings without selected insurance minimal.
270
+
271
+ ## 11. Replace Hardcoded Search Capability Tables
272
+
273
+ This migration is optional and additive. Search UI that needs to decide which
274
+ period controls to render can query backend support without constructing an SDK:
275
+
276
+ ```ts
277
+ import {
278
+ getSupportedPeriodQueryKeys,
279
+ supportsFlexiblePeriodSearch,
280
+ type BackendKind,
281
+ } from "@v-office/website-sdk/capabilities/search";
282
+
283
+ const shouldRenderFlexiblePeriod = (backend: BackendKind) => supportsFlexiblePeriodSearch(backend);
284
+
285
+ const supportedPeriodKeys = getSupportedPeriodQueryKeys("v9");
286
+ supportedPeriodKeys.has("month"); // false
287
+ ```
288
+
289
+ Remove local v9/v10 period-key tables in favor of these helpers. Both helpers are
290
+ derived from the same core definitions used by SDK search parsing, so backend
291
+ support changes do not require consumers to update a copied matrix.
292
+
293
+ The returned `ReadonlySet` includes supported aliases such as `from`, `till`,
294
+ `nights_min`, and `nights_max`. It describes individual key support; normal
295
+ search validation still determines whether a complete combination of keys and
296
+ values is executable.
297
+
298
+ ## Recommended Verification
299
+
300
+ 1. Book a v9 reservation with distinct prepayment and remaining-payment dates.
301
+ 2. Confirm both entries retain their own translated long-form deadline.
302
+ 3. Confirm a synthesized v9 `full_amount` alternative has no deadline.
303
+ 4. Confirm future v9 remaining payment has no payment button unless the SDK
304
+ supplies a payment option.
305
+ 5. Book a v10 reservation with multiple online and on-site/external payment steps.
306
+ 6. Confirm every remaining v10 step is rendered in backend order.
307
+ 7. Confirm only the next payable online step has an Adyen option.
308
+ 8. Confirm the full-payment alternative displays the outstanding balance without
309
+ an inferred deadline.
310
+ 9. Render both supported locales and verify all amounts, dates, locations, labels,
311
+ and breakdown lines are presentation-ready.
312
+ 10. Complete v9 insurance with the live booking object and verify the private
313
+ credential is not present in serialized output.
314
+ 11. If replacing a local search capability table, confirm flexible-period controls
315
+ remain hidden for v9 and visible for v10.
@@ -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`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@v-office/website-sdk",
3
- "version": "2.12.0",
3
+ "version": "2.14.0",
4
4
  "description": "Website-facing SDK facade backed by @v-office/sdk-core",
5
5
  "bin": {
6
6
  "website-sdk": "./dist/cli.mjs"
@@ -33,6 +33,7 @@
33
33
  },
34
34
  "exports": {
35
35
  ".": "./dist/index.mjs",
36
+ "./capabilities/*": "./dist/capabilities/*.mjs",
36
37
  "./cli": "./dist/cli.mjs",
37
38
  "./package.json": "./package.json"
38
39
  },
@@ -41,7 +42,7 @@
41
42
  },
42
43
  "dependencies": {
43
44
  "@graphql-typed-document-node/core": "3.2.0",
44
- "@v-office/sdk-core": "^1.12.0",
45
+ "@v-office/sdk-core": "^1.14.0",
45
46
  "effect": "4.0.0-beta.85",
46
47
  "graphql": "17.0.2",
47
48
  "yaml": "^2.9.0"
@@ -66,8 +67,9 @@
66
67
  "playground:parser": "node playground/query-parser.ts",
67
68
  "cli": "node --env-file=.env dist/cli.mjs",
68
69
  "build": "tsdown",
70
+ "codegen:v9:properties": "node codegen/v9/heuristic-generation/generate/index.ts && oxfmt codegen/v9/heuristic-generation/v9-data.ts",
69
71
  "codegen:v9:graphql": "graphql-codegen --config codegen/v9/graphql-codegen/codegen.ts",
70
- "codegen": "pnpm run codegen:v9:graphql",
72
+ "codegen": "pnpm run codegen:v9:properties && pnpm run codegen:v9:graphql",
71
73
  "dev": "tsdown --watch",
72
74
  "typecheck": "tsc --noEmit",
73
75
  "lint": "oxlint .",
@@ -75,7 +77,8 @@
75
77
  "fmt": "oxfmt",
76
78
  "fmt:check": "oxfmt --check",
77
79
  "check": "pnpm run typecheck && pnpm run lint && pnpm run fmt:check",
78
- "test": "pnpm run build && node --test test/*.test.mjs",
80
+ "test": "pnpm run test:v9:properties && pnpm run build && node --test test/*.test.mjs",
81
+ "test:v9:properties": "node --test codegen/v9/heuristic-generation/generate/property.test.ts src/legacy-v9/parser/rentals/render-property-attribute.test.ts",
79
82
  "playground:custom-attributes": "pnpm run build && node --env-file=.env playground/custom-attributes.ts"
80
83
  }
81
84
  }