@curless/hotel-storefront 0.53.0 → 0.55.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/about.d.ts +24 -0
- package/dist/about.d.ts.map +1 -0
- package/dist/about.js +28 -0
- package/dist/about.js.map +1 -0
- package/dist/aggregate/make.js +2 -2
- package/dist/aggregate/make.js.map +1 -1
- package/dist/backend.d.ts +15 -0
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js.map +1 -1
- package/dist/card.generated.d.ts +1 -1
- package/dist/card.generated.js +2 -2
- package/dist/card.generated.js.map +1 -1
- package/dist/config.d.ts +33 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/coupon-words.d.ts +12 -0
- package/dist/coupon-words.d.ts.map +1 -0
- package/dist/coupon-words.js +19 -0
- package/dist/coupon-words.js.map +1 -0
- package/dist/dates.js +1 -1
- package/dist/dates.js.map +1 -1
- package/dist/demo-hotels.d.ts +6 -0
- package/dist/demo-hotels.d.ts.map +1 -1
- package/dist/demo-hotels.js +57 -17
- package/dist/demo-hotels.js.map +1 -1
- package/dist/fence.d.ts.map +1 -1
- package/dist/fence.js +4 -3
- package/dist/fence.js.map +1 -1
- package/dist/huazhu/backend.d.ts +6 -0
- package/dist/huazhu/backend.d.ts.map +1 -1
- package/dist/huazhu/backend.js +25 -22
- package/dist/huazhu/backend.js.map +1 -1
- package/dist/huazhu/catalog.d.ts +6 -6
- package/dist/huazhu/catalog.d.ts.map +1 -1
- package/dist/huazhu/catalog.js +33 -15
- package/dist/huazhu/catalog.js.map +1 -1
- package/dist/huazhu/client.js +1 -1
- package/dist/huazhu/client.js.map +1 -1
- package/dist/huazhu/make.d.ts.map +1 -1
- package/dist/huazhu/make.js +1 -0
- package/dist/huazhu/make.js.map +1 -1
- package/dist/huazhu/sandbox.d.ts.map +1 -1
- package/dist/huazhu/sandbox.js +5 -3
- package/dist/huazhu/sandbox.js.map +1 -1
- package/dist/legal.d.ts.map +1 -1
- package/dist/legal.js +104 -80
- package/dist/legal.js.map +1 -1
- package/dist/lib.d.ts +1 -1
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +1 -1
- package/dist/lib.js.map +1 -1
- package/dist/otaless/backend.d.ts +31 -0
- package/dist/otaless/backend.d.ts.map +1 -0
- package/dist/otaless/backend.js +502 -0
- package/dist/otaless/backend.js.map +1 -0
- package/dist/otaless/client.d.ts +103 -0
- package/dist/otaless/client.d.ts.map +1 -0
- package/dist/otaless/client.js +110 -0
- package/dist/otaless/client.js.map +1 -0
- package/dist/otaless/fake.d.ts +27 -0
- package/dist/otaless/fake.d.ts.map +1 -0
- package/dist/otaless/fake.js +239 -0
- package/dist/otaless/fake.js.map +1 -0
- package/dist/otaless/make.d.ts +4 -0
- package/dist/otaless/make.d.ts.map +1 -0
- package/dist/otaless/make.js +71 -0
- package/dist/otaless/make.js.map +1 -0
- package/dist/paid.d.ts.map +1 -1
- package/dist/paid.js +9 -9
- package/dist/paid.js.map +1 -1
- package/dist/present.d.ts +6 -1
- package/dist/present.d.ts.map +1 -1
- package/dist/present.js +20 -5
- package/dist/present.js.map +1 -1
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +10 -3
- package/dist/reference.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -6
- package/dist/server.js.map +1 -1
- package/dist/supplier.d.ts +6 -0
- package/dist/supplier.d.ts.map +1 -1
- package/dist/supplier.js +4 -0
- package/dist/supplier.js.map +1 -1
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +100 -71
- package/dist/surface.js.map +1 -1
- package/dist/tools.d.ts +19 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +204 -102
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +58 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vocab.d.ts +0 -14
- package/dist/vocab.d.ts.map +1 -1
- package/dist/vocab.js +19 -22
- package/dist/vocab.js.map +1 -1
- 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,
|
|
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,8r9tCAA8r9tC,EAC9r9tC,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
|
@@ -118,12 +118,17 @@ export type HotelConfig = {
|
|
|
118
118
|
* rates, real bookings: nothing on the card or in the tools says "demo".
|
|
119
119
|
* `aggregate` - a market: several groups' hotels behind one connector, each
|
|
120
120
|
* made from the `data` section of that group's own connector (`suppliers`).
|
|
121
|
+
* `otaless` - a market whose groups and hotels are the Otaless hotel
|
|
122
|
+
* backend's (`otaless`, robin 2026-11-03): read-only for now, and what the
|
|
123
|
+
* backend sends is shown as it is.
|
|
121
124
|
*/
|
|
122
|
-
source: 'demo' | 'api' | 'aggregate';
|
|
125
|
+
source: 'demo' | 'api' | 'aggregate' | 'otaless';
|
|
126
|
+
/** otaless only: where the backend answers, and how its groups are named. */
|
|
127
|
+
otaless?: OtalessSource;
|
|
123
128
|
/** aggregate only: the groups this market sells, in the order its home page shows them. */
|
|
124
129
|
suppliers?: MarketSupplier[];
|
|
125
130
|
/**
|
|
126
|
-
* aggregate
|
|
131
|
+
* aggregate and otaless: how long, in milliseconds, one group's search is waited
|
|
127
132
|
* for. A group that has not answered by then is left out of that answer and
|
|
128
133
|
* named in it (`HotelSearchResult.degraded`) - as one that failed is.
|
|
129
134
|
* Default 8000.
|
|
@@ -224,6 +229,32 @@ export type HotelConfig = {
|
|
|
224
229
|
updated?: string;
|
|
225
230
|
};
|
|
226
231
|
};
|
|
232
|
+
/**
|
|
233
|
+
* The Otaless hotel backend (`data.source: 'otaless'`).
|
|
234
|
+
*
|
|
235
|
+
* ⚠️ THE ADDRESS AND THE TENANT ARE THE ENVIRONMENT'S FIRST (robin,
|
|
236
|
+
* 2026-11-03: not written into the code): `<envPrefix>_API_URL` and
|
|
237
|
+
* `<envPrefix>_TENANT_ID` win over `baseUrl` and `tenant` here. There is no
|
|
238
|
+
* other credential - the backend asks for none (docs/otaless-hotels.md §8.0).
|
|
239
|
+
*/
|
|
240
|
+
export type OtalessSource = {
|
|
241
|
+
baseUrl?: string;
|
|
242
|
+
tenant?: string;
|
|
243
|
+
/** Default `OTALESS`: `OTALESS_API_URL`, `OTALESS_TENANT_ID`. */
|
|
244
|
+
envPrefix?: string;
|
|
245
|
+
/**
|
|
246
|
+
* How a group the backend names by its `providerCode` is called here, in the
|
|
247
|
+
* order the home page shows them - the backend sends no name, logo or colour
|
|
248
|
+
* for a group (§8.1 item 6). A code not listed is shown by its code, as the
|
|
249
|
+
* backend sends it.
|
|
250
|
+
*/
|
|
251
|
+
groups?: {
|
|
252
|
+
code: string;
|
|
253
|
+
name: string;
|
|
254
|
+
names?: Names;
|
|
255
|
+
logoFile?: string;
|
|
256
|
+
}[];
|
|
257
|
+
};
|
|
227
258
|
/**
|
|
228
259
|
* The capabilities a demonstration file can switch. Only these four: they are
|
|
229
260
|
* the ones that decide which tools exist, and the demonstration backend can
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,sFAAsF;IACtF,EAAE,EAAE,MAAM,CAAC;IAEX,oFAAoF;IACpF,KAAK,EAAE,MAAM,CAAC;IAEd,qDAAqD;IACrD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd;;;;;WAKG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB;;;;;;WAMG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;;;;;;WAQG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;;;;;;;;;;WAWG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;;;;;;;WAQG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;;;;;;;;WAUG;QACH,OAAO,CAAC,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACrE;;;;;WAKG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IAEF;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,sFAAsF;QACtF,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,iCAAiC;IACjC,IAAI,EAAE;QACJ
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { HeldCoupon } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Where a spent coupon went, for the text the model reads (T4, 0.54.0):
|
|
4
|
+
* "already used on a booking" sent the guest looking for one nobody named.
|
|
5
|
+
* The booking's code is said only where this conversation made it (sign-in is
|
|
6
|
+
* a membership number and a surname, not a password - see members.ts - so a
|
|
7
|
+
* booking made elsewhere is said to exist, never named); and the way back is
|
|
8
|
+
* the C10 rule: cancelling it while it is free gives the coupon back, a
|
|
9
|
+
* cancellation that charged kept it.
|
|
10
|
+
*/
|
|
11
|
+
export declare const usedOnWords: (on: HeldCoupon["usedOn"]) => string;
|
|
12
|
+
//# sourceMappingURL=coupon-words.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coupon-words.d.ts","sourceRoot":"","sources":["../src/coupon-words.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAG,MAS4D,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a spent coupon went, for the text the model reads (T4, 0.54.0):
|
|
3
|
+
* "already used on a booking" sent the guest looking for one nobody named.
|
|
4
|
+
* The booking's code is said only where this conversation made it (sign-in is
|
|
5
|
+
* a membership number and a surname, not a password - see members.ts - so a
|
|
6
|
+
* booking made elsewhere is said to exist, never named); and the way back is
|
|
7
|
+
* the C10 rule: cancelling it while it is free gives the coupon back, a
|
|
8
|
+
* cancellation that charged kept it.
|
|
9
|
+
*/
|
|
10
|
+
export const usedOnWords = (on) => !on
|
|
11
|
+
? 'on a booking'
|
|
12
|
+
: on.stands
|
|
13
|
+
? on.code
|
|
14
|
+
? `on booking ${on.code}, which still stands - cancelling ${on.code} while it is free to cancel gives the coupon back`
|
|
15
|
+
: 'on another booking of this membership, made outside this conversation - cancelling that booking while it is free to cancel gives the coupon back'
|
|
16
|
+
: on.code
|
|
17
|
+
? `on booking ${on.code}, which has ended without giving it back (a cancellation that charged a fee keeps the coupon)`
|
|
18
|
+
: 'on a booking that has ended without giving it back (a cancellation that charged a fee keeps the coupon)';
|
|
19
|
+
//# sourceMappingURL=coupon-words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coupon-words.js","sourceRoot":"","sources":["../src/coupon-words.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAwB,EAAU,EAAE,CAC9D,CAAC,EAAE;IACD,CAAC,CAAC,cAAc;IAChB,CAAC,CAAC,EAAE,CAAC,MAAM;QACT,CAAC,CAAC,EAAE,CAAC,IAAI;YACP,CAAC,CAAC,cAAc,EAAE,CAAC,IAAI,qCAAqC,EAAE,CAAC,IAAI,mDAAmD;YACtH,CAAC,CAAC,kJAAkJ;QACtJ,CAAC,CAAC,EAAE,CAAC,IAAI;YACP,CAAC,CAAC,cAAc,EAAE,CAAC,IAAI,+FAA+F;YACtH,CAAC,CAAC,yGAAyG,CAAC"}
|
package/dist/dates.js
CHANGED
|
@@ -183,7 +183,7 @@ export const stayProblemOf = (stay, today) => {
|
|
|
183
183
|
};
|
|
184
184
|
if (n > MAX_NIGHTS)
|
|
185
185
|
return {
|
|
186
|
-
why: `
|
|
186
|
+
why: `Stays here are quoted for up to ${MAX_NIGHTS} nights at a time; that stay is ${n}.`,
|
|
187
187
|
code: 'stay-too-long',
|
|
188
188
|
args: { nights: MAX_NIGHTS },
|
|
189
189
|
};
|
package/dist/dates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../src/dates.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../src/dates.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,mEAAmE;AAInE,oFAAoF;AACpF,MAAM,EAAE,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AAEjC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAU,EAAe,EAAE,CAC/C,OAAO,CAAC,KAAK,QAAQ;IACrB,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAErB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,CAAS,EAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AAEvF,qEAAqE;AACrE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,QAAgB,EAAU,EAAE,CAClE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAEpD,kFAAkF;AAClF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,QAAgB,EAAY,EAAE;IACvE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAW,EAAE;IACrD,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC1C,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAEzD,oFAAoF;AACpF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAU,EAAU,EAAE;IACzD,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QACf,IAAI,CAAC;YACH,wEAAwE;YACxE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;gBACtC,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,SAAS;aACf,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;YACzE,4DAA4D;YAC5D,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,CAAC;QACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;QACjF,CAAC,CAAC,CAAC,CAAC;IACN,OAAO,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAU,EAAU,EAAE;IACnD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YAC7C,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACvE,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAU,EAAU,EAAE;IACjE,MAAM,KAAK,GAA+B;QACxC,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,KAAK;KACjB,CAAC;IACF,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QACf,IAAI,CAAC;YACH,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,CAAC;QACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;QACjF,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAClF,OAAO,GAAG,KAAK,CAChB,CAAC;IACF,OAAO,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC;AAClD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAU,EAAU,EAAE;IAChE,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC7C,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;YACzF,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7F,CAAC;QAAC,MAAM,CAAC;YACP,4DAA4D;QAC9D,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,CAAC;QACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;QACjF,CAAC,CAAC,CAAC,CAAC;IACN,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,qDAAqD;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,WAAmB,EAAE,EAAU,EAAU,EAAE;IACzF,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,8EAA8E;IAC9E,oEAAoE;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,uFAAuF;AACvF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAiE,EACjE,KAAa,EACE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC;AAE5D,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAiE,EACjE,KAAa,EACkD,EAAE;IACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QACtB,OAAO,EAAE,GAAG,EAAE,0CAA0C,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IACnF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvB,OAAO,EAAE,GAAG,EAAE,2CAA2C,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IACpF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC;QACR,OAAO;YACL,GAAG,EAAE,gFAAgF;YACrF,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,IAAI,CAAC,GAAG,UAAU;QAChB,OAAO;YACL,GAAG,EAAE,mCAAmC,UAAU,mCAAmC,CAAC,GAAG;YACzF,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SAC7B,CAAC;IACJ,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB,OAAO;YACL,GAAG,EAAE,YAAY,IAAI,CAAC,OAAO,8BAA8B,KAAK,GAAG;YACnE,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,EAAE,KAAK,EAAE;SAChB,CAAC;IACJ,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,cAAc;QAC9C,OAAO;YACL,GAAG,EAAE,yBAAyB,cAAc,gBAAgB,IAAI,CAAC,OAAO,kBAAkB;YAC1F,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;SAC/B,CAAC;IACJ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QACvE,OAAO,EAAE,GAAG,EAAE,yDAAyD,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAClG,IAAI,MAAM,GAAG,UAAU;QACrB,OAAO;YACL,GAAG,EAAE,aAAa,UAAU,+CAA+C;YAC3E,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;SAC9B,CAAC;IACJ,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
package/dist/demo-hotels.d.ts
CHANGED
|
@@ -240,6 +240,12 @@ export type DemoHotelsOptions = {
|
|
|
240
240
|
* two demonstration suppliers tells their codes apart by it.
|
|
241
241
|
*/
|
|
242
242
|
codePrefix?: string;
|
|
243
|
+
/**
|
|
244
|
+
* Made for a market (robin, 2026-11-03): it labels no environment as a demonstration,
|
|
245
|
+
* so its answers about a booking that is not real say the fact - not sent to the
|
|
246
|
+
* group, nothing charged - and never "demonstration".
|
|
247
|
+
*/
|
|
248
|
+
inMarket?: boolean;
|
|
243
249
|
/**
|
|
244
250
|
* What to switch off (or on) in `FULL_CAPABILITIES` - the config's
|
|
245
251
|
* `data.capabilities`. Absent, the demonstration offers everything.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo-hotels.d.ts","sourceRoot":"","sources":["../src/demo-hotels.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"demo-hotels.d.ts","sourceRoot":"","sources":["../src/demo-hotels.ts"],"names":[],"mappings":"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"}
|
package/dist/demo-hotels.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { randomInt, randomUUID } from 'node:crypto';
|
|
2
2
|
import { DEFAULT_PAGE, FULL_CAPABILITIES, LASTING_REQUESTS, MAX_PAGE, REQUEST_KINDS, REQUEST_NOTE_MAX, guestTooLong, partyNeedsOf, } from './backend.js';
|
|
3
|
+
import { usedOnWords } from './coupon-words.js';
|
|
3
4
|
import { addDays, arrivalInstant, atHotelIso, atHotelTime, eachNight, isWeekendNight, nights as nightsBetween, stayProblem, stayProblemOf, todayAt, } from './dates.js';
|
|
4
5
|
import { FACILITIES, hasFacility } from './facilities.js';
|
|
5
6
|
import { addMoney, formatMoney, minorFactor, money, multiplyMoney, taxOn, toMinor, wholeUnits, } from './money.js';
|
|
@@ -393,7 +394,7 @@ export const createDemoHotels = (opts) => {
|
|
|
393
394
|
/** The programme's coupon kinds, by id. */
|
|
394
395
|
const couponKinds = new Map((opts.data.membership?.coupons ?? []).map((c) => [c.id, c]));
|
|
395
396
|
/** A held coupon as the member sees it, on `today` - see `HeldCoupon`. */
|
|
396
|
-
const heldCoupon = (held, todayIs) => {
|
|
397
|
+
const heldCoupon = (held, todayIs, sessionId) => {
|
|
397
398
|
const kind = couponKinds.get(held.coupon);
|
|
398
399
|
if (!kind)
|
|
399
400
|
return undefined;
|
|
@@ -429,6 +430,7 @@ export const createDemoHotels = (opts) => {
|
|
|
429
430
|
: {}),
|
|
430
431
|
validFrom: held.validFrom,
|
|
431
432
|
validUntil: held.validUntil,
|
|
433
|
+
...usedOn(held.id, sessionId),
|
|
432
434
|
state: spent.has(held.id.toUpperCase())
|
|
433
435
|
? 'used'
|
|
434
436
|
: todayIs > held.validUntil
|
|
@@ -438,6 +440,19 @@ export const createDemoHotels = (opts) => {
|
|
|
438
440
|
: 'usable',
|
|
439
441
|
};
|
|
440
442
|
};
|
|
443
|
+
/** The booking a spent coupon went on, where it is still on record - see `HeldCoupon.usedOn`. */
|
|
444
|
+
const usedOn = (heldId, sessionId) => {
|
|
445
|
+
const on = spent.get(heldId.toUpperCase());
|
|
446
|
+
const b = on ? bookings.get(on) : undefined;
|
|
447
|
+
return b
|
|
448
|
+
? {
|
|
449
|
+
usedOn: {
|
|
450
|
+
stands: b.status === 'requested' || b.status === 'confirmed',
|
|
451
|
+
...(sessionId && b.owners.has(sessionId) ? { code: b.confirmationCode } : {}),
|
|
452
|
+
},
|
|
453
|
+
}
|
|
454
|
+
: {};
|
|
455
|
+
};
|
|
441
456
|
/** A member's coupons as they stand, usable first, then by when they run out. */
|
|
442
457
|
const heldCouponsOf = (raw) => {
|
|
443
458
|
const order = { usable: 0, 'not-yet': 1, used: 2, expired: 3 };
|
|
@@ -572,7 +587,7 @@ export const createDemoHotels = (opts) => {
|
|
|
572
587
|
for (const q of quotes) {
|
|
573
588
|
const n = roomNightsOf(q);
|
|
574
589
|
if (n > MAX_ROOM_NIGHTS_PER_BOOKING) {
|
|
575
|
-
return demoError('too-many-holds', `Nothing was ${done}. A
|
|
590
|
+
return demoError('too-many-holds', `Nothing was ${done}. A booking here holds at most ${MAX_ROOM_NIGHTS_PER_BOOKING} room-nights (rooms times nights), and this would be ${n}. Fewer rooms or fewer nights will go through.`);
|
|
576
591
|
}
|
|
577
592
|
}
|
|
578
593
|
const asked = quotes.reduce((sum, q) => sum + roomNightsOf(q), 0);
|
|
@@ -581,7 +596,7 @@ export const createDemoHotels = (opts) => {
|
|
|
581
596
|
return demoError('too-many-holds',
|
|
582
597
|
// The numbers that add up: "holds 16, and 20 is the most" read as
|
|
583
598
|
// room to spare (round-1 jury of the card redesign, 2026-10-12).
|
|
584
|
-
`Nothing was ${done}. This conversation already holds ${mine} room-nights, and this would bring it to ${mine + asked} — more than the ${MAX_ROOM_NIGHTS_PER_CONVERSATION} room-nights
|
|
599
|
+
`Nothing was ${done}. This conversation already holds ${mine} room-nights, and this would bring it to ${mine + asked} — more than the ${MAX_ROOM_NIGHTS_PER_CONVERSATION} room-nights that can be held here at once. Cancel a booking that is not needed, then ask again.`);
|
|
585
600
|
}
|
|
586
601
|
const address = email.trim().toLowerCase();
|
|
587
602
|
if (address &&
|
|
@@ -590,7 +605,7 @@ export const createDemoHotels = (opts) => {
|
|
|
590
605
|
return demoError('too-many-holds', `Nothing was ${done}. That email already holds as many room-nights as one guest may at once - cancel a booking that is not needed, then ask again.`);
|
|
591
606
|
}
|
|
592
607
|
if (heldBy(() => true, ignore) + asked > maxHeldRoomNights) {
|
|
593
|
-
return demoError('demo-busy', `Nothing was ${done}.
|
|
608
|
+
return demoError('demo-busy', `Nothing was ${done}. Only so many rooms can be held here at once, across everybody using it, and that many are held right now; holds lapse on their own within a couple of hours. The trip is as it was - try again later.`);
|
|
594
609
|
}
|
|
595
610
|
return undefined;
|
|
596
611
|
};
|
|
@@ -657,6 +672,7 @@ export const createDemoHotels = (opts) => {
|
|
|
657
672
|
? {
|
|
658
673
|
publicNightly: wholeUnits(money(publicSubtotal.minor / perNight.length, h.currency)),
|
|
659
674
|
publicStayTotal: addMoney(publicSubtotal, publicTaxes),
|
|
675
|
+
publicRoomCharge: publicSubtotal,
|
|
660
676
|
memberRate: {
|
|
661
677
|
programme: who?.member?.programme ?? '',
|
|
662
678
|
tier: who?.member?.tier.name ?? '',
|
|
@@ -863,6 +879,9 @@ export const createDemoHotels = (opts) => {
|
|
|
863
879
|
// What the tier took off, added up as we go - so the card can say what
|
|
864
880
|
// membership was worth on THIS trip rather than quoting a percentage.
|
|
865
881
|
let saved = 0;
|
|
882
|
+
// The rooms before taxes at the PUBLIC rate, and the add-ons - the receipt's first
|
|
883
|
+
// row for a member (0.55.0, review r3 N7): see `Quote.member.publicSubtotal`.
|
|
884
|
+
let publicSubtotal = 0;
|
|
866
885
|
// Rooms this same trip has already taken, by hotel, room type and night.
|
|
867
886
|
const taken = new Map();
|
|
868
887
|
for (const line of trip.lines) {
|
|
@@ -870,7 +889,7 @@ export const createDemoHotels = (opts) => {
|
|
|
870
889
|
if (!h) {
|
|
871
890
|
dropped.push({
|
|
872
891
|
title: line.hotelId,
|
|
873
|
-
why: 'That hotel is not
|
|
892
|
+
why: 'That hotel is not offered here any more.',
|
|
874
893
|
code: 'none-on-sale',
|
|
875
894
|
});
|
|
876
895
|
continue;
|
|
@@ -937,6 +956,9 @@ export const createDemoHotels = (opts) => {
|
|
|
937
956
|
}
|
|
938
957
|
const preTax = money((room.stayTotal.minor - room.taxesAndFees.minor) * wanted, h.currency);
|
|
939
958
|
subtotal += preTax.minor;
|
|
959
|
+
publicSubtotal += room.publicRoomCharge
|
|
960
|
+
? room.publicRoomCharge.minor * wanted
|
|
961
|
+
: preTax.minor;
|
|
940
962
|
taxes += room.taxesAndFees.minor * wanted;
|
|
941
963
|
// What the tier took off this line, all in - so the trip can say what
|
|
942
964
|
// membership was worth in money rather than quoting a percentage.
|
|
@@ -962,6 +984,7 @@ export const createDemoHotels = (opts) => {
|
|
|
962
984
|
nights: room.nights,
|
|
963
985
|
quantity: wanted,
|
|
964
986
|
unit: room.nightly,
|
|
987
|
+
...(room.publicNightly ? { publicUnit: room.publicNightly } : {}),
|
|
965
988
|
total: preTax,
|
|
966
989
|
totalWithTaxes: money(room.stayTotal.minor * wanted, h.currency),
|
|
967
990
|
refundable: room.refundable,
|
|
@@ -990,6 +1013,7 @@ export const createDemoHotels = (opts) => {
|
|
|
990
1013
|
const units = extraUnits(rawExtra, stay, line.quantity);
|
|
991
1014
|
const total = multiplyMoney(extra.price, units);
|
|
992
1015
|
subtotal += total.minor;
|
|
1016
|
+
publicSubtotal += total.minor;
|
|
993
1017
|
// Each add-on's tax rounded on its own, like each room's - see `taxOn`.
|
|
994
1018
|
const extraTax = wholeUnits(taxOn(total, h.taxRate));
|
|
995
1019
|
taxes += extraTax.minor;
|
|
@@ -1028,7 +1052,7 @@ export const createDemoHotels = (opts) => {
|
|
|
1028
1052
|
const member = who?.member;
|
|
1029
1053
|
// Every line's tax is already a whole unit - see `taxOn`.
|
|
1030
1054
|
const taxed = taxes;
|
|
1031
|
-
const { coupons, coupon, couponRefused } = couponsFor(trip.coupon, member, lines, cur);
|
|
1055
|
+
const { coupons, coupon, couponRefused } = couponsFor(trip.coupon, member, lines, cur, who?.sessionId);
|
|
1032
1056
|
// The coupon comes off the all-in total, after the tier (§2): what is
|
|
1033
1057
|
// paid at the hotel, and what points are earned on.
|
|
1034
1058
|
const paid = subtotal + taxed - (coupon?.off.minor ?? 0);
|
|
@@ -1050,6 +1074,7 @@ export const createDemoHotels = (opts) => {
|
|
|
1050
1074
|
// line pays a Jakarta guest two thousand times a Paris one.
|
|
1051
1075
|
points: Math.round((paid / minorFactor(cur) / earnRate(cur)) * member.tier.pointsPerUnit),
|
|
1052
1076
|
publicTotal: money(subtotal + taxed + saved, cur),
|
|
1077
|
+
publicSubtotal: money(publicSubtotal, cur),
|
|
1053
1078
|
},
|
|
1054
1079
|
}
|
|
1055
1080
|
: {}),
|
|
@@ -1086,7 +1111,7 @@ export const createDemoHotels = (opts) => {
|
|
|
1086
1111
|
* member rate; add-ons are not rooms and do not count. Two or three rooms of
|
|
1087
1112
|
* one stay are one stay: taken off once.
|
|
1088
1113
|
*/
|
|
1089
|
-
const couponsFor = (asked, member, lines, cur) => {
|
|
1114
|
+
const couponsFor = (asked, member, lines, cur, sessionId) => {
|
|
1090
1115
|
const raw = rawMember(member);
|
|
1091
1116
|
if (!couponKinds.size) {
|
|
1092
1117
|
return asked
|
|
@@ -1126,12 +1151,12 @@ export const createDemoHotels = (opts) => {
|
|
|
1126
1151
|
const kind = couponKinds.get(held.coupon);
|
|
1127
1152
|
// Its dates on the calendar of the hotel it would go on - all of them
|
|
1128
1153
|
// are on one clock in this demonstration, so the trip's first.
|
|
1129
|
-
const c = kind && heldCoupon(held, today(stays[0]?.hotel.id));
|
|
1154
|
+
const c = kind && heldCoupon(held, today(stays[0]?.hotel.id), sessionId);
|
|
1130
1155
|
if (!kind || !c)
|
|
1131
1156
|
continue;
|
|
1132
1157
|
const no = (code, why, more = {}) => options.push({ ...c, code, why, ...more });
|
|
1133
1158
|
if (c.state === 'used') {
|
|
1134
|
-
no('used',
|
|
1159
|
+
no('used', `It has already been used ${usedOnWords(c.usedOn)}.`);
|
|
1135
1160
|
continue;
|
|
1136
1161
|
}
|
|
1137
1162
|
if (c.state === 'expired') {
|
|
@@ -1377,7 +1402,7 @@ export const createDemoHotels = (opts) => {
|
|
|
1377
1402
|
? rooms.find((l) => h.rooms.find((r) => r.id === l.roomRef)?.refundable === false)
|
|
1378
1403
|
: undefined;
|
|
1379
1404
|
if (locked)
|
|
1380
|
-
return no(`${locked.title} is a non-refundable rate: it cannot be
|
|
1405
|
+
return no(`${locked.title} is a non-refundable rate: it cannot be changed, and cancelling it costs the whole stay. Book the new nights as their own stay - this one stands.`);
|
|
1381
1406
|
// A coupon was worked out on these nights and rooms (§2): moved, it would
|
|
1382
1407
|
// have to be worked out again, and may no longer apply. Not in place yet.
|
|
1383
1408
|
if (b.quote.coupon && movesRooms)
|
|
@@ -1483,9 +1508,10 @@ export const createDemoHotels = (opts) => {
|
|
|
1483
1508
|
? `The new nights are priced at today's rates for those nights, not at the rate this booking was made on.`
|
|
1484
1509
|
: '',
|
|
1485
1510
|
// A demonstration has no desk to settle it at (2026-10-05 audit, P2).
|
|
1486
|
-
|
|
1511
|
+
// No "demonstration" in it, anywhere (robin, 2026-11-03).
|
|
1512
|
+
'Nothing has been charged and nothing will be: this booking was not sent to the hotel group, so a difference is only what a real booking would cost more or less.',
|
|
1487
1513
|
becomesLocked
|
|
1488
|
-
? `${wantedRoom.name} is a non-refundable rate: once the booking is on it, it cannot be
|
|
1514
|
+
? `${wantedRoom.name} is a non-refundable rate: once the booking is on it, it cannot be changed, and cancelling it costs the whole stay.`
|
|
1489
1515
|
: '',
|
|
1490
1516
|
]
|
|
1491
1517
|
.filter(Boolean)
|
|
@@ -1508,6 +1534,8 @@ export const createDemoHotels = (opts) => {
|
|
|
1508
1534
|
let fee = 0;
|
|
1509
1535
|
const rules = [];
|
|
1510
1536
|
let freeUntil;
|
|
1537
|
+
/** Where each non-refundable stay's sentence is, to say again if a coupon caps the fee (T9). */
|
|
1538
|
+
const whole = [];
|
|
1511
1539
|
for (const line of b.quote.lines) {
|
|
1512
1540
|
if (line.kind !== 'room')
|
|
1513
1541
|
continue;
|
|
@@ -1519,6 +1547,7 @@ export const createDemoHotels = (opts) => {
|
|
|
1519
1547
|
if (!line.refundable) {
|
|
1520
1548
|
const withTax = wholeStayOf(line, taxRate);
|
|
1521
1549
|
fee += withTax;
|
|
1550
|
+
whole.push({ at: rules.length, title: line.title });
|
|
1522
1551
|
rules.push(`${line.title} is a non-refundable rate: the whole stay, ${formatMoney(money(withTax, currency))}, stands.`);
|
|
1523
1552
|
continue;
|
|
1524
1553
|
}
|
|
@@ -1539,8 +1568,15 @@ export const createDemoHotels = (opts) => {
|
|
|
1539
1568
|
rules.push('Add-ons are dropped at no charge.');
|
|
1540
1569
|
}
|
|
1541
1570
|
const capped = couponCap(b, fee);
|
|
1542
|
-
if (capped < fee)
|
|
1543
|
-
|
|
1571
|
+
if (capped < fee) {
|
|
1572
|
+
// ⚠️ ONE FIGURE FOR THE FEE (0.55.0, review r3 T9): "would cost ¥461" beside
|
|
1573
|
+
// "the whole stay, ¥511, stands" - the stay before the coupon - was two
|
|
1574
|
+
// numbers for one fee. Capped, a non-refundable stay is said without its
|
|
1575
|
+
// pre-coupon figure, and the fee once, as what the stay came to.
|
|
1576
|
+
for (const w of whole)
|
|
1577
|
+
rules[w.at] = `${w.title} is a non-refundable rate: the whole stay stands.`;
|
|
1578
|
+
rules.push(`The coupon took ${formatMoney(b.quote.coupon?.off ?? money(0, currency))} off this stay, so the fee is ${formatMoney(money(capped, currency))} - what the stay came to after it.`);
|
|
1579
|
+
}
|
|
1544
1580
|
return { fee: money(capped, currency), rules, freeUntil };
|
|
1545
1581
|
};
|
|
1546
1582
|
/**
|
|
@@ -2118,7 +2154,7 @@ export const createDemoHotels = (opts) => {
|
|
|
2118
2154
|
// file cannot be written (state.ts), a new booking would live only in
|
|
2119
2155
|
// memory and vanish at the next deploy - with a code the guest was given.
|
|
2120
2156
|
if (opts.state?.trouble) {
|
|
2121
|
-
throw demoError('demo-busy', 'Nothing was booked.
|
|
2157
|
+
throw demoError('demo-busy', 'Nothing was booked. Bookings cannot be taken here right now - try again later.');
|
|
2122
2158
|
}
|
|
2123
2159
|
// A trip with no room night in it has nothing to book - only add-ons.
|
|
2124
2160
|
if (!trip.lines.some((l) => l.kind === 'room')) {
|
|
@@ -2187,7 +2223,11 @@ export const createDemoHotels = (opts) => {
|
|
|
2187
2223
|
if (wantCoupon && !couponDone) {
|
|
2188
2224
|
const whole = await quoteTrip({ lines: fresh.flatMap((f) => f.lines), coupon: trip.coupon }, who);
|
|
2189
2225
|
if (whole.couponRefused) {
|
|
2190
|
-
throw demoError('coupon',
|
|
2226
|
+
throw demoError('coupon',
|
|
2227
|
+
// ⚠️ SAID ONCE (T6, 0.54.0): the trip drawn again under this says
|
|
2228
|
+
// which coupon and why, in the words every other answer uses -
|
|
2229
|
+
// this said it as well, under its English name only.
|
|
2230
|
+
'Nothing was booked, because the coupon asked for cannot be used - the trip below says which and why. Book without it only if the guest says so.');
|
|
2191
2231
|
}
|
|
2192
2232
|
const c = whole.coupon;
|
|
2193
2233
|
couponAt = c ? `${c.hotelId}|${c.checkIn}|${c.checkOut}` : undefined;
|
|
@@ -2378,7 +2418,7 @@ export const createDemoHotels = (opts) => {
|
|
|
2378
2418
|
? [
|
|
2379
2419
|
...rules,
|
|
2380
2420
|
// ⚠️ NO CARD AND NO CHECK-IN IN A DEMONSTRATION (2026-10-05 audit, P2).
|
|
2381
|
-
'This
|
|
2421
|
+
'This booking was not sent to the hotel group: nothing has been charged and nothing will be - a fee here is what a real booking on these terms would cost, not a charge.',
|
|
2382
2422
|
].join(' ')
|
|
2383
2423
|
: `This booking is ${b.status}; there is nothing left to cancel.`,
|
|
2384
2424
|
freeUntil,
|