@curless/hotel-storefront 0.45.1 → 0.46.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 (51) hide show
  1. package/dist/card.generated.d.ts +1 -1
  2. package/dist/card.generated.js +2 -2
  3. package/dist/card.generated.js.map +1 -1
  4. package/dist/config.d.ts +36 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +8 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/data.d.ts +2 -0
  9. package/dist/data.d.ts.map +1 -1
  10. package/dist/data.js +281 -19
  11. package/dist/data.js.map +1 -1
  12. package/dist/demo-hotels.d.ts +52 -1
  13. package/dist/demo-hotels.d.ts.map +1 -1
  14. package/dist/demo-hotels.js +45 -11
  15. package/dist/demo-hotels.js.map +1 -1
  16. package/dist/huazhu/backend.d.ts.map +1 -1
  17. package/dist/huazhu/backend.js +9 -5
  18. package/dist/huazhu/backend.js.map +1 -1
  19. package/dist/legal.d.ts.map +1 -1
  20. package/dist/legal.js +38 -9
  21. package/dist/legal.js.map +1 -1
  22. package/dist/lib.d.ts +2 -2
  23. package/dist/lib.d.ts.map +1 -1
  24. package/dist/lib.js +1 -1
  25. package/dist/lib.js.map +1 -1
  26. package/dist/room-filters.d.ts +76 -0
  27. package/dist/room-filters.d.ts.map +1 -0
  28. package/dist/room-filters.js +191 -0
  29. package/dist/room-filters.js.map +1 -0
  30. package/dist/server.d.ts +2 -2
  31. package/dist/server.d.ts.map +1 -1
  32. package/dist/server.js +8 -4
  33. package/dist/server.js.map +1 -1
  34. package/dist/supplier.d.ts +1 -0
  35. package/dist/supplier.d.ts.map +1 -1
  36. package/dist/supplier.js +5 -1
  37. package/dist/supplier.js.map +1 -1
  38. package/dist/surface.d.ts.map +1 -1
  39. package/dist/surface.js +5 -1
  40. package/dist/surface.js.map +1 -1
  41. package/dist/tools.d.ts +20 -2
  42. package/dist/tools.d.ts.map +1 -1
  43. package/dist/tools.js +158 -9
  44. package/dist/tools.js.map +1 -1
  45. package/dist/types.d.ts +36 -4
  46. package/dist/types.d.ts.map +1 -1
  47. package/dist/vocab.d.ts +19 -0
  48. package/dist/vocab.d.ts.map +1 -1
  49. package/dist/vocab.js +48 -2
  50. package/dist/vocab.js.map +1 -1
  51. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"card.generated.js","sourceRoot":"","sources":["../src/card.generated.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,wEAAwE;AACxE,gFAAgF;AAChF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAW,MAAM,CAAC,IAAI,CAChD,sn78BAAsn78B,EACtn78B,QAAQ,CACT,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAEnB,6GAA6G;AAC7G,MAAM,CAAC,MAAM,qBAAqB,GAChC,kEAAkE,CAAC;AAErE,0GAA0G;AAC1G,MAAM,CAAC,MAAM,qBAAqB,GAChC,iLAAiL,CAAC"}
1
+ {"version":3,"file":"card.generated.js","sourceRoot":"","sources":["../src/card.generated.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,wEAAwE;AACxE,gFAAgF;AAChF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAW,MAAM,CAAC,IAAI,CAChD,ky49BAAky49B,EACly49B,QAAQ,CACT,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAEnB,6GAA6G;AAC7G,MAAM,CAAC,MAAM,qBAAqB,GAChC,kEAAkE,CAAC;AAErE,0GAA0G;AAC1G,MAAM,CAAC,MAAM,qBAAqB,GAChC,iLAAiL,CAAC"}
package/dist/config.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { BackendCapabilities } from './backend.js';
1
2
  import type { BookingLimits } from './limits.js';
2
3
  /**
3
4
  * One hotel group's identity, vocabulary and wiring.
@@ -163,6 +164,32 @@ export type HotelConfig = {
163
164
  * Default `SL`.
164
165
  */
165
166
  codePrefix?: string;
167
+ /**
168
+ * demo only: the hotels - their names, rooms and rates - are INVENTED, and
169
+ * the photographs are stock photographs that are not of these hotels. The
170
+ * default is a demonstration of the group's real property list, whose
171
+ * names and photographs are the group's own.
172
+ *
173
+ * ⚠️ WITH IT THE PAGES AND THE INSTRUCTIONS NEVER CALL THE HOTELS REAL,
174
+ * THE GROUP'S OWN OR PHOTOGRAPHED. Set it whenever the file is not the
175
+ * group's real list: a page that says "the properties named here are
176
+ * real" of invented ones says something untrue about a group that has not
177
+ * signed. It says nothing of the rates being made up - they always are.
178
+ */
179
+ invented?: boolean;
180
+ /**
181
+ * demo only: what this demonstration can do, applied over
182
+ * `FULL_CAPABILITIES` (everything on). A capability turned off takes its
183
+ * tools out of the list and refuses a call to them, as every backend's
184
+ * `capabilities` do - see `DEMO_CAPABILITY_KEYS`.
185
+ *
186
+ * - `members: false` - no sign-in, sign-out or "forget my preferences".
187
+ * - `extras: false` - no add-ons.
188
+ * - `changes: false` - no changing a booking in place. ⚠️ The change tools
189
+ * also stay while `extras` is on: they set a booking's add-ons too.
190
+ * - `policies: false` - no hotel-policy answers.
191
+ */
192
+ capabilities?: DemoCapabilities;
166
193
  };
167
194
  /**
168
195
  * Taking money. Absent - and it IS absent today, by decision - the connector
@@ -209,6 +236,15 @@ export type HotelConfig = {
209
236
  updated?: string;
210
237
  };
211
238
  };
239
+ /**
240
+ * The capabilities a demonstration file can switch. Only these four: they are
241
+ * the ones that decide which tools exist, and the demonstration backend can
242
+ * stand behind each being on or off. The rest of `BackendCapabilities` is a
243
+ * fact about a real system (`booking`, `prepaid`, `unionpay`, `hourly`) or is
244
+ * set from the config's other fields (`programme`, `codePrefix`).
245
+ */
246
+ export declare const DEMO_CAPABILITY_KEYS: readonly ["members", "extras", "changes", "policies"];
247
+ export type DemoCapabilities = Partial<Pick<BackendCapabilities, (typeof DEMO_CAPABILITY_KEYS)[number]>>;
212
248
  /**
213
249
  * A group's own booking system. One kind today - Huazhu's distributor API -
214
250
  * and the next group's is another member of this union, not another config
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,3 +1,11 @@
1
+ /**
2
+ * The capabilities a demonstration file can switch. Only these four: they are
3
+ * the ones that decide which tools exist, and the demonstration backend can
4
+ * stand behind each being on or off. The rest of `BackendCapabilities` is a
5
+ * fact about a real system (`booking`, `prepaid`, `unionpay`, `hourly`) or is
6
+ * set from the config's other fields (`programme`, `codePrefix`).
7
+ */
8
+ export const DEMO_CAPABILITY_KEYS = ['members', 'extras', 'changes', 'policies'];
1
9
  const slug = (s) => s
2
10
  .toLowerCase()
3
11
  .replace(/[^a-z0-9]+/g, '_')
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAmYA,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CACjC,CAAC;KACE,WAAW,EAAE;KACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;KAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAmC,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IAC7D,OAAO;QACL,UAAU,EAAE,QAAQ,MAAM,GAAG,MAAM,EAAE;QACrC,QAAQ,EAAE,OAAO,MAAM,GAAG,IAAI,EAAE;QAChC,yEAAyE;QACzE,0EAA0E;QAC1E,+CAA+C;QAC/C,MAAM,EAAE,WAAW,MAAM,GAAG,MAAM,EAAE;QACpC,UAAU,EAAE,QAAQ,MAAM,QAAQ;QAClC,SAAS,EAAE,UAAU,MAAM,MAAM;QACjC,QAAQ,EAAE,QAAQ,MAAM,MAAM;QAC9B,SAAS,EAAE,SAAS,MAAM,MAAM;QAChC,cAAc,EAAE,WAAW,MAAM,SAAS;QAC1C,YAAY,EAAE,WAAW,MAAM,UAAU;QACzC,mBAAmB,EAAE,WAAW,MAAM,cAAc;QACpD,aAAa,EAAE,UAAU,MAAM,SAAS;QACxC,yEAAyE;QACzE,kEAAkE;QAClE,aAAa,EAAE,WAAW,MAAM,gBAAgB;QAChD,aAAa,EAAE,UAAU,MAAM,SAAS;QACxC,QAAQ,EAAE,OAAO,MAAM,GAAG,IAAI,WAAW;QACzC,wEAAwE;QACxE,2EAA2E;QAC3E,6DAA6D;QAC7D,OAAO,EAAE,WAAW,MAAM,GAAG,MAAM,EAAE;QACrC,SAAS,EAAE,QAAQ,MAAM,WAAW;QACpC,MAAM,EAAE,WAAW,MAAM,QAAQ;QACjC,OAAO,EAAE,YAAY,MAAM,QAAQ;QACnC,iBAAiB,EAAE,UAAU,MAAM,aAAa;QAChD,uEAAuE;QACvE,2EAA2E;QAC3E,6CAA6C;QAC7C,eAAe,EAAE,OAAO,MAAM,uBAAuB;KAC7C,CAAC;AACb,CAAC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAuPA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AA4K1F,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CACjC,CAAC;KACE,WAAW,EAAE;KACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;KAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAmC,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IAC7D,OAAO;QACL,UAAU,EAAE,QAAQ,MAAM,GAAG,MAAM,EAAE;QACrC,QAAQ,EAAE,OAAO,MAAM,GAAG,IAAI,EAAE;QAChC,yEAAyE;QACzE,0EAA0E;QAC1E,+CAA+C;QAC/C,MAAM,EAAE,WAAW,MAAM,GAAG,MAAM,EAAE;QACpC,UAAU,EAAE,QAAQ,MAAM,QAAQ;QAClC,SAAS,EAAE,UAAU,MAAM,MAAM;QACjC,QAAQ,EAAE,QAAQ,MAAM,MAAM;QAC9B,SAAS,EAAE,SAAS,MAAM,MAAM;QAChC,cAAc,EAAE,WAAW,MAAM,SAAS;QAC1C,YAAY,EAAE,WAAW,MAAM,UAAU;QACzC,mBAAmB,EAAE,WAAW,MAAM,cAAc;QACpD,aAAa,EAAE,UAAU,MAAM,SAAS;QACxC,yEAAyE;QACzE,kEAAkE;QAClE,aAAa,EAAE,WAAW,MAAM,gBAAgB;QAChD,aAAa,EAAE,UAAU,MAAM,SAAS;QACxC,QAAQ,EAAE,OAAO,MAAM,GAAG,IAAI,WAAW;QACzC,wEAAwE;QACxE,2EAA2E;QAC3E,6DAA6D;QAC7D,OAAO,EAAE,WAAW,MAAM,GAAG,MAAM,EAAE;QACrC,SAAS,EAAE,QAAQ,MAAM,WAAW;QACpC,MAAM,EAAE,WAAW,MAAM,QAAQ;QACjC,OAAO,EAAE,YAAY,MAAM,QAAQ;QACnC,iBAAiB,EAAE,UAAU,MAAM,aAAa;QAChD,uEAAuE;QACvE,2EAA2E;QAC3E,6CAA6C;QAC7C,eAAe,EAAE,OAAO,MAAM,uBAAuB;KAC7C,CAAC;AACb,CAAC,CAAC"}
package/dist/data.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import type { RawHotelData } from './demo-hotels.js';
2
2
  /** A name a card prints on one line and a model reads unfenced. */
3
3
  export declare const LABEL_MAX = 120;
4
+ /** What a rate with no `roomsLeft` has: plenty, which the card does not remark on (it speaks at 3 or fewer). */
5
+ export declare const DEFAULT_RATE_ROOMS_LEFT = 9;
4
6
  export declare const parseHotelData: (raw: unknown) => RawHotelData;
5
7
  /** Read a brand's hotels file. `from` is the config file it was named in. */
6
8
  export declare const loadHotelData: (file: string, from?: string) => RawHotelData;
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAsB,YAAY,EAA0B,MAAM,kBAAkB,CAAC;AA0DjG,mEAAmE;AACnE,eAAO,MAAM,SAAS,MAAM,CAAC;AA8R7B,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,KAAG,YAgC7C,CAAC;AAyCF,6EAA6E;AAC7E,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,YAS3D,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAsB,YAAY,EAA0B,MAAM,kBAAkB,CAAC;AAoEjG,mEAAmE;AACnE,eAAO,MAAM,SAAS,MAAM,CAAC;AAuG7B,gHAAgH;AAChH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAsezC,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,KAAG,YAgC7C,CAAC;AAyCF,6EAA6E;AAC7E,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,YAS3D,CAAC"}
package/dist/data.js CHANGED
@@ -130,34 +130,301 @@ const time = (v, where, what) => {
130
130
  throw new DataError(where, `${what} must look like 15:00`);
131
131
  return s;
132
132
  };
133
- const parseRoom = (raw, where, currency) => {
134
- const r = raw;
135
- const id = str(r.id, where, 'room id');
136
- const at = `${where} room ${id}`;
137
- const refundable = r.refundable === true;
138
- if (refundable && r.freeCancelHours === undefined)
139
- throw new DataError(at, 'a refundable rate must say freeCancelHours - "free to cancel" with no deadline is not a policy');
140
- if (!refundable && r.freeCancelHours !== undefined)
141
- throw new DataError(at, 'freeCancelHours on a non-refundable rate would print a free window that does not exist');
133
+ const WINDOW_KINDS = ['yes', 'no', 'partial', 'inner'];
134
+ const BED_KINDS = ['king', 'twin', 'single', 'other'];
135
+ /** The most photographs one room can carry - a gallery, not an album. */
136
+ const IMAGES_MAX = 30;
137
+ /**
138
+ * What a rate can say it is, beside its meal. A rate's meal labels (`room-only`,
139
+ * `breakfast-2` …) are made from its `breakfast` count and are never written:
140
+ * two ways to say one fact is how a rate comes to say both.
141
+ */
142
+ const OFFER_LABELS = [
143
+ 'package',
144
+ 'flash-sale',
145
+ 'night-snack',
146
+ 'early-booking',
147
+ 'promotion',
148
+ ];
149
+ /** What a rate with no `roomsLeft` has: plenty, which the card does not remark on (it speaks at 3 or fewer). */
150
+ export const DEFAULT_RATE_ROOMS_LEFT = 9;
151
+ /** The fields of a rate - a room type's own facts belong on the room type. */
152
+ const RATE_KEYS = [
153
+ 'id',
154
+ 'name',
155
+ 'names',
156
+ 'nightly',
157
+ 'roomsLeft',
158
+ 'refundable',
159
+ 'freeCancelHours',
160
+ 'breakfast',
161
+ 'payment',
162
+ 'labels',
163
+ ];
164
+ /** The fields of a room type that are a rate's: a type with `rates` takes them from each rate. */
165
+ const RATE_ONLY_KEYS = RATE_KEYS.filter((k) => !['id', 'name', 'names'].includes(k));
166
+ /** A room's cover photograph and its gallery, the cover first and none twice. */
167
+ const parseImages = (r, at) => {
168
+ const imageUrl = r.imageUrl === undefined ? undefined : str(r.imageUrl, at, 'imageUrl');
169
+ if (r.images === undefined)
170
+ return { imageUrl };
171
+ if (!Array.isArray(r.images) || r.images.length === 0 || r.images.length > IMAGES_MAX)
172
+ throw new DataError(at, `images must be a list of 1 to ${IMAGES_MAX} photograph addresses`);
173
+ const all = r.images.map((u, i) => str(u, at, `images[${i}]`));
174
+ const cover = imageUrl ?? all[0];
175
+ return { imageUrl: cover, images: [...new Set([cover, ...all])] };
176
+ };
177
+ const parseBedTypes = (v, at) => {
178
+ if (v === undefined)
179
+ return undefined;
180
+ if (!Array.isArray(v) || v.length === 0 || v.length > 4)
181
+ throw new DataError(at, 'bedTypes must be a list of 1 to 4 beds');
182
+ return v.map((b, i) => {
183
+ const x = (b ?? {});
184
+ const kind = str(x.kind, at, `bedTypes[${i}].kind`);
185
+ if (!BED_KINDS.includes(kind))
186
+ throw new DataError(at, `bedTypes[${i}].kind ${kind} is not one of ${BED_KINDS.join(', ')}`);
187
+ if (kind === 'other' && x.name === undefined)
188
+ throw new DataError(at, `bedTypes[${i}] is an "other" bed and must say its name`);
189
+ return {
190
+ kind,
191
+ ...(x.size === undefined ? {} : { size: str(x.size, at, `bedTypes[${i}].size`) }),
192
+ ...(x.name === undefined ? {} : { name: label(x.name, at, `bedTypes[${i}].name`) }),
193
+ };
194
+ });
195
+ };
196
+ /**
197
+ * What is true of the ROOM, whether the file gives it one price or a type
198
+ * several rates: its name, who it sleeps, its beds, view, photographs and
199
+ * floors. Nothing here is a price or a term.
200
+ */
201
+ const parseRoomFacts = (r, at) => {
142
202
  // The room's name in the card's languages - the group's own, see `Room.names`.
143
203
  const names = parseNames(r.names, at, 'names');
204
+ const windowKind = r.window === undefined ? undefined : str(r.window, at, 'window');
205
+ if (windowKind !== undefined && !WINDOW_KINDS.includes(windowKind))
206
+ throw new DataError(at, `window ${windowKind} is not one of ${WINDOW_KINDS.join(', ')}`);
207
+ const bedTypes = parseBedTypes(r.bedTypes, at);
144
208
  return {
145
- id,
146
209
  name: label(r.name, at, 'name'),
147
210
  ...(names && Object.keys(names).length ? { names } : {}),
148
211
  sleeps: num(r.sleeps, at, 'sleeps', 1, 8),
149
212
  sizeSqm: r.sizeSqm === undefined ? undefined : num(r.sizeSqm, at, 'sizeSqm', 5, 500),
150
213
  beds: r.beds === undefined ? undefined : str(r.beds, at, 'beds'),
151
214
  view: r.view === undefined ? undefined : str(r.view, at, 'view'),
215
+ ...parseImages(r, at),
216
+ ...(r.floor === undefined ? {} : { floor: label(r.floor, at, 'floor') }),
217
+ ...(windowKind ? { window: windowKind } : {}),
218
+ ...(bedTypes ? { bedTypes } : {}),
219
+ };
220
+ };
221
+ /**
222
+ * The terms of a rate, one-level or not: refundable says free-cancel hours,
223
+ * and a non-refundable rate does not.
224
+ */
225
+ const parseCancellation = (r, at, refundable) => {
226
+ if (refundable && r.freeCancelHours === undefined)
227
+ throw new DataError(at, 'a refundable rate must say freeCancelHours - "free to cancel" with no deadline is not a policy');
228
+ if (!refundable && r.freeCancelHours !== undefined)
229
+ throw new DataError(at, 'freeCancelHours on a non-refundable rate would print a free window that does not exist');
230
+ return refundable ? num(r.freeCancelHours, at, 'freeCancelHours', 0, 720) : undefined;
231
+ };
232
+ const parseRoom = (raw, where, currency) => {
233
+ const r = raw;
234
+ const id = str(r.id, where, 'room id');
235
+ const at = `${where} room ${id}`;
236
+ const refundable = r.refundable === true;
237
+ const freeCancelHours = parseCancellation(r, at, refundable);
238
+ return {
239
+ id,
240
+ ...parseRoomFacts(r, at),
152
241
  breakfast: r.breakfast === true,
153
- imageUrl: r.imageUrl === undefined ? undefined : str(r.imageUrl, at, 'imageUrl'),
154
242
  // A rate is in whole currency units, the way the hotel writes it - see
155
243
  // BIG_MONEY for why the ceiling is the currency's and not one number.
156
244
  nightly: num(r.nightly, at, 'nightly', 1, maxPrice(currency)),
157
245
  roomsLeft: num(r.roomsLeft, at, 'roomsLeft', 0, 500),
158
246
  refundable,
159
- freeCancelHours: refundable ? num(r.freeCancelHours, at, 'freeCancelHours', 0, 720) : undefined,
247
+ freeCancelHours,
248
+ };
249
+ };
250
+ /**
251
+ * A room TYPE that lists `rates`, as what is sold: one `RawRoom` per rate,
252
+ * each carrying the type in `roomType`, with the room's facts from the type
253
+ * and the price and terms from the rate. Nothing is sold under the type
254
+ * itself - it has no price - so a type is its rates, in the file's order.
255
+ *
256
+ * The file's two levels:
257
+ * - the type: id, name, names, sleeps, sizeSqm, beds, bedTypes, view, window,
258
+ * floor, imageUrl, images, rates;
259
+ * - a rate: id, name, names, nightly, roomsLeft, refundable, freeCancelHours,
260
+ * breakfast (0-3), payment ('at-hotel'), labels (offers).
261
+ */
262
+ const parseRoomType = (r, where, currency) => {
263
+ const typeId = str(r.id, where, 'room type id');
264
+ const at = `${where} room type ${typeId}`;
265
+ for (const k of RATE_ONLY_KEYS)
266
+ if (r[k] !== undefined)
267
+ throw new DataError(at, `${k} is a rate's field - a room type with rates takes its price and terms from each rate, so it goes inside rates`);
268
+ if (!Array.isArray(r.rates) || r.rates.length === 0)
269
+ throw new DataError(at, 'rates must be a list of at least one rate; a room with one price leaves rates out and says nightly itself');
270
+ const facts = parseRoomFacts(r, at);
271
+ const type = {
272
+ id: typeId,
273
+ name: facts.name,
274
+ ...(facts.names ? { names: facts.names } : {}),
275
+ };
276
+ const called = new Set();
277
+ return r.rates.map((raw) => {
278
+ const x = (raw ?? {});
279
+ const rateId = str(x.id, at, 'rate id');
280
+ const here = `${at} rate ${rateId}`;
281
+ // A rate with a field it is not given (sleeps, imageUrl, a typo for
282
+ // refundable) would print the room type's, or nothing, in its place.
283
+ for (const k of Object.keys(x))
284
+ if (!k.startsWith('_') && !RATE_KEYS.includes(k))
285
+ throw new DataError(here, `${k} is not a field of a rate (${RATE_KEYS.join(', ')}) - what is true of the room itself goes on the room type`);
286
+ const rateName = label(x.name, here, 'name');
287
+ if (called.has(rateName.toLowerCase()))
288
+ throw new DataError(at, `two rates are both called "${rateName}"`);
289
+ called.add(rateName.toLowerCase());
290
+ const rateNames = parseNames(x.names, here, 'names');
291
+ if (typeof x.refundable !== 'boolean')
292
+ throw new DataError(here, 'refundable must be true or false');
293
+ const refundable = x.refundable;
294
+ const freeCancelHours = parseCancellation(x, here, refundable);
295
+ // Breakfasts, counted: 0 says "room only", 1 to 3 say "breakfast for N",
296
+ // and none given says nothing at all - which is not "room only".
297
+ let meal;
298
+ let breakfasts = 0;
299
+ if (x.breakfast !== undefined) {
300
+ if (!Number.isInteger(x.breakfast) ||
301
+ x.breakfast < 0 ||
302
+ x.breakfast > 3)
303
+ throw new DataError(here, `breakfast must be 0, 1, 2 or 3 - how many breakfasts the rate includes (got ${JSON.stringify(x.breakfast)})`);
304
+ breakfasts = x.breakfast;
305
+ meal =
306
+ breakfasts === 0
307
+ ? { meal: { plan: 'none' }, labels: ['room-only'] }
308
+ : {
309
+ meal: { plan: 'breakfast', count: breakfasts },
310
+ labels: [`breakfast-${breakfasts}`],
311
+ };
312
+ }
313
+ const offers = parseOfferLabels(x.labels, here);
314
+ // ⚠️ THIS BACKEND TAKES NO MONEY, so a rate "paid in advance" cannot be
315
+ // sold by it: the guest would be told to pay, and nothing would take it.
316
+ // Refused here, where the file is read, rather than left out of the rooms
317
+ // - a price that quietly never shows is a mystery nobody can find.
318
+ if (x.payment !== undefined && x.payment !== 'at-hotel')
319
+ throw new DataError(here, x.payment === 'prepaid'
320
+ ? 'payment "prepaid" cannot be sold here - this demonstration takes no payment (a booking holds the rooms and is paid at the hotel). Leave payment out, or say "at-hotel"'
321
+ : `payment ${JSON.stringify(x.payment)} must be "at-hotel"`);
322
+ const { name: _name, names: _names, ...roomFacts } = facts;
323
+ return {
324
+ id: rateId,
325
+ // The whole offer, the way Huazhu's are: "Deluxe King · Flexible".
326
+ name: `${type.name} · ${rateName}`,
327
+ // In a language only where both halves are said in it - half a name in
328
+ // one language and half in another is no name.
329
+ ...offerNames(type.names, rateNames),
330
+ ...roomFacts,
331
+ breakfast: breakfasts > 0,
332
+ ...(meal ? { meal: meal.meal } : {}),
333
+ nightly: num(x.nightly, here, 'nightly', 1, maxPrice(currency)),
334
+ roomsLeft: x.roomsLeft === undefined
335
+ ? DEFAULT_RATE_ROOMS_LEFT
336
+ : num(x.roomsLeft, here, 'roomsLeft', 0, 500),
337
+ refundable,
338
+ freeCancelHours,
339
+ roomType: type,
340
+ rate: {
341
+ id: rateId,
342
+ name: rateName,
343
+ ...(rateNames && Object.keys(rateNames).length ? { names: rateNames } : {}),
344
+ },
345
+ ...(meal || offers.length ? { labels: [...(meal?.labels ?? []), ...offers] } : {}),
346
+ ...(x.payment === 'at-hotel' ? { payment: 'at-hotel' } : {}),
347
+ };
348
+ });
349
+ };
350
+ /** A rate's offers - the labels a file may write; its meal is not among them. */
351
+ const parseOfferLabels = (v, at) => {
352
+ if (v === undefined)
353
+ return [];
354
+ if (!Array.isArray(v))
355
+ throw new DataError(at, 'labels must be a list');
356
+ const out = [];
357
+ for (const l of v) {
358
+ if (l === 'room-only' || (typeof l === 'string' && l.startsWith('breakfast')))
359
+ throw new DataError(at, `label ${l} is said by the breakfast count - give breakfast, not the label`);
360
+ if (!OFFER_LABELS.includes(l))
361
+ throw new DataError(at, `label ${JSON.stringify(l)} is not one of ${OFFER_LABELS.join(', ')}`);
362
+ if (!out.includes(l))
363
+ out.push(l);
364
+ }
365
+ return out;
366
+ };
367
+ /** The offer's name in each language that says both the room type and the rate. */
368
+ const offerNames = (type, rate) => {
369
+ const out = {};
370
+ for (const lang of NAME_LANGS) {
371
+ const t = type?.[lang];
372
+ const r = rate?.[lang];
373
+ if (t && r)
374
+ out[lang] = `${t} · ${r}`;
375
+ }
376
+ return Object.keys(out).length ? { names: out } : {};
377
+ };
378
+ /**
379
+ * A hotel's rooms: a room with one price is one, a room type with `rates` is
380
+ * its rates - the file may mix the two.
381
+ *
382
+ * ⚠️ ONE LIST OF IDS. A trip holds a room by its id, the card keys a type by
383
+ * its id, and a type and a rate sharing one would be read as the same thing by
384
+ * one of them.
385
+ */
386
+ const parseRooms = (raw, at, currency) => {
387
+ const claimed = new Map();
388
+ const claim = (id, what, rate) => {
389
+ const other = claimed.get(id);
390
+ if (other)
391
+ throw new DataError(at, rate || other.rate
392
+ ? `${what} has the id ${id}, which ${other.what} has too - a rate's id is unique among all the ids of a hotel`
393
+ : `two room types share the id ${id}`);
394
+ claimed.set(id, { what, rate });
160
395
  };
396
+ return (Array.isArray(raw) ? raw : []).flatMap((entry) => {
397
+ const r = (entry ?? {});
398
+ if (r.rates === undefined) {
399
+ const room = parseRoom(entry, at, currency);
400
+ claim(room.id, `room ${room.id}`, false);
401
+ return [room];
402
+ }
403
+ const rooms = parseRoomType(r, at, currency);
404
+ claim(String(r.id), `room type ${String(r.id)}`, false);
405
+ for (const room of rooms)
406
+ claim(room.id, `rate ${room.id}`, true);
407
+ return rooms;
408
+ });
409
+ };
410
+ /**
411
+ * Where a hotel is, in decimal degrees: `{ "lat": 31.23, "lng": 121.47 }`.
412
+ *
413
+ * ⚠️ LATITUDE FIRST, AND NEVER 0,0. Longitude 121 in the latitude's place is
414
+ * off the map (it is refused as that), but a missing coordinate written as 0
415
+ * is a hotel in the Gulf of Guinea that still renders - so that is refused too.
416
+ */
417
+ const parseGeo = (v, at) => {
418
+ if (v === undefined)
419
+ return undefined;
420
+ if (!v || typeof v !== 'object' || Array.isArray(v))
421
+ throw new DataError(at, 'geo must be { "lat": …, "lng": … }');
422
+ const g = v;
423
+ const lat = num(g.lat, at, 'geo.lat', -90, 90);
424
+ const lng = num(g.lng, at, 'geo.lng', -180, 180);
425
+ if (lat === 0 && lng === 0)
426
+ throw new DataError(at, 'geo 0,0 is a placeholder, not a place; leave geo out');
427
+ return { lat, lng };
161
428
  };
162
429
  const parseExtra = (raw, where, currency) => {
163
430
  const e = raw;
@@ -191,15 +458,9 @@ const parseHotel = (raw, index) => {
191
458
  const currency = str(h.currency, at, 'currency');
192
459
  if (!/^[A-Z]{3}$/.test(currency))
193
460
  throw new DataError(at, `currency ${currency} must be a 3-letter code like HKD`);
194
- const rooms = Array.isArray(h.rooms) ? h.rooms.map((r) => parseRoom(r, at, currency)) : [];
461
+ const rooms = parseRooms(h.rooms, at, currency);
195
462
  if (rooms.length === 0)
196
463
  throw new DataError(at, 'a hotel with no room types cannot be booked; leave it out instead');
197
- const seen = new Set();
198
- for (const r of rooms) {
199
- if (seen.has(r.id))
200
- throw new DataError(at, `two room types share the id ${r.id}`);
201
- seen.add(r.id);
202
- }
203
464
  const policies = {};
204
465
  const rawPolicies = (h.policies ?? {});
205
466
  for (const [topic, text] of Object.entries(rawPolicies)) {
@@ -222,6 +483,7 @@ const parseHotel = (raw, index) => {
222
483
  throw new DataError(at, 'countryCode must be ISO 3166-1 alpha-2, like CN');
223
484
  })(),
224
485
  area: h.area === undefined ? undefined : label(h.area, at, 'area'),
486
+ ...(h.geo === undefined ? {} : { geo: parseGeo(h.geo, at) }),
225
487
  names: parseHotelNames(h.names, at),
226
488
  summary: str(h.summary, at, 'summary'),
227
489
  amenities: Array.isArray(h.amenities)
package/dist/data.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}