@curless/hotel-storefront 0.36.0 → 0.37.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/backend.d.ts +33 -1
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js.map +1 -1
- package/dist/huazhu/backend.d.ts.map +1 -1
- package/dist/huazhu/backend.js +79 -8
- package/dist/huazhu/backend.js.map +1 -1
- package/dist/huazhu/make.d.ts.map +1 -1
- package/dist/huazhu/make.js +6 -0
- package/dist/huazhu/make.js.map +1 -1
- package/dist/legal.d.ts.map +1 -1
- package/dist/legal.js +4 -1
- package/dist/legal.js.map +1 -1
- package/dist/lib.d.ts +1 -1
- package/dist/lib.d.ts.map +1 -1
- package/dist/paid.d.ts +40 -0
- package/dist/paid.d.ts.map +1 -0
- package/dist/paid.js +257 -0
- package/dist/paid.js.map +1 -0
- package/dist/payments/checkout.d.ts +5 -0
- package/dist/payments/checkout.d.ts.map +1 -1
- package/dist/payments/checkout.js.map +1 -1
- package/dist/payments/fake-stripe.d.ts +1 -0
- package/dist/payments/fake-stripe.d.ts.map +1 -1
- package/dist/payments/fake-stripe.js +1 -0
- package/dist/payments/fake-stripe.js.map +1 -1
- package/dist/payments/stripe-checkout.d.ts +8 -1
- package/dist/payments/stripe-checkout.d.ts.map +1 -1
- package/dist/payments/stripe-checkout.js +9 -1
- package/dist/payments/stripe-checkout.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +34 -1
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/dist/backend.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Booking, BookingChange, BookingResult, CancellationPreview, ChangePreview, DateOption, Extra, Guest, HotelDetail, HotelPolicy, HotelSearch, HotelSearchResult, Identity, Member, Names, NoRoomsArgs, NoRoomsCode, Quote, RoomRequestKind, RoomRequests, Stay, TripDraft } from './types.js';
|
|
1
|
+
import type { Booking, BookingChange, BookingResult, CancellationPreview, ChangePreview, DateOption, Extra, Guest, HotelDetail, HotelPolicy, HotelSearch, HotelSearchResult, Identity, Member, Money, Names, NoRoomsArgs, NoRoomsCode, Quote, RoomRequestKind, RoomRequests, Stay, TripDraft } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Where the rooms come from.
|
|
4
4
|
*
|
|
@@ -324,6 +324,38 @@ export type HotelBackend = {
|
|
|
324
324
|
cancelBooking(bookingRef: string, who: Identity, reason?: string): Promise<Booking | null>;
|
|
325
325
|
/** The hotel's own published policies. */
|
|
326
326
|
policies(hotelId: string): Promise<HotelPolicy[]>;
|
|
327
|
+
/**
|
|
328
|
+
* Where a guest lands from the payment page, paid (robin, 2026-10-15: "支付
|
|
329
|
+
* 成功要返回一个预订成功页面") - what became of the stay that page paid for,
|
|
330
|
+
* by the page's own session id. Undefined: no booking here was paid on that
|
|
331
|
+
* page, and the page says no more than that. Absent: nothing here is paid in
|
|
332
|
+
* advance, and there is no such page.
|
|
333
|
+
*
|
|
334
|
+
* ⚠️ ANYBODY WITH THE ADDRESS CAN OPEN IT. No name, email or phone of the
|
|
335
|
+
* guest's - what a confirmation in the hotel's lobby would show, no more.
|
|
336
|
+
*/
|
|
337
|
+
paymentReturn?(sessionId: string): Promise<PaymentReturn | undefined>;
|
|
338
|
+
};
|
|
339
|
+
/** What the page a paid guest lands on says - see `HotelBackend.paymentReturn`. */
|
|
340
|
+
export type PaymentReturn = {
|
|
341
|
+
/**
|
|
342
|
+
* `booked` - the hotel's system has it. `booking` - paid, and the hotel is
|
|
343
|
+
* still being asked. `refunded` - paid, not booked (or cancelled since), and
|
|
344
|
+
* the money is going back or back. `not-paid` - the page was not paid, or
|
|
345
|
+
* closed. `unknown` - none of these can be said.
|
|
346
|
+
*/
|
|
347
|
+
state: 'booked' | 'booking' | 'refunded' | 'not-paid' | 'unknown';
|
|
348
|
+
/** The confirmation code the guest quotes. */
|
|
349
|
+
code?: string;
|
|
350
|
+
hotelName: string;
|
|
351
|
+
hotelNames?: Names;
|
|
352
|
+
stay: {
|
|
353
|
+
checkIn: string;
|
|
354
|
+
checkOut: string;
|
|
355
|
+
};
|
|
356
|
+
/** The room and rate, as the booking names them. */
|
|
357
|
+
room: string;
|
|
358
|
+
amount: Money;
|
|
327
359
|
};
|
|
328
360
|
/**
|
|
329
361
|
* What a party too big for any one room here needs, said once for every backend.
|
package/dist/backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
|
package/dist/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;GAYG;AACH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAE3B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAW,CAAC;AAE1E,kEAAkE;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAkD,EAAY,EAAE,CAAC;IAC5F,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI;QACnC,CAAC,CAAC,CAAC,qBAAqB,YAAY,CAAC,IAAI,aAAa,CAAC;QACvD,CAAC,CAAC,EAAE,CAAC;IACP,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK;QACrC,CAAC,CAAC,CAAC,uBAAuB,YAAY,CAAC,KAAK,aAAa,CAAC;QAC1D,CAAC,CAAC,EAAE,CAAC;IACP,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK;QAC7C,CAAC,CAAC,CAAC,6BAA6B,YAAY,CAAC,KAAK,aAAa,CAAC;QAChE,CAAC,CAAC,EAAE,CAAC;CACR,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,UAAU;IACV,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,iBAAiB;CAClB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsB,aAAa,CAAC,MAAM,CACrE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,KAAK,iBAAiB,CACjF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AA4FpC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAwB;IACpD,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,MAAM;CAChB,CAAC;AAgOF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,OAAe,EAAU,EAAE,CACpE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC;AAEpC,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,MAAc,EACd,OAAe,EACwC,EAAE;IACzD,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,EAAE,GAAG,EAAE,yBAAyB,MAAM,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IACtC,OAAO;QACL,GAAG,EAAE,uBAAuB,MAAM,wBAAwB,OAAO,iBAAiB,CAAC,SAAS;QAC5F,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;KAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE,CAC/C,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/huazhu/backend.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,mBAAmB,EAExB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/huazhu/backend.ts"],"names":[],"mappings":"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"}
|
package/dist/huazhu/backend.js
CHANGED
|
@@ -24,9 +24,10 @@ export const HUAZHU_CAPABILITIES = {
|
|
|
24
24
|
// booking that suggested "Check-in times at …" leading to it (2026-09-30
|
|
25
25
|
// audit, on the sandbox).
|
|
26
26
|
policies: false,
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
|
|
27
|
+
// No phone required: Huazhu's booking asks for a name and nothing else of
|
|
28
|
+
// the guest - email and phone are its optional fields - and what Huazhu
|
|
29
|
+
// does not require, neither do we (robin, 2026-10-15). It was required from
|
|
30
|
+
// 2026-10-05, for the hotel to reach a guest who had paid nothing.
|
|
30
31
|
// Its hotels are in China and charge in yuan.
|
|
31
32
|
oneCurrency: true,
|
|
32
33
|
// What the card shows as an example code: ours, from `newPublicCode`.
|
|
@@ -1964,6 +1965,7 @@ export const createHuazhuHotels = (opts) => {
|
|
|
1964
1965
|
title: `${plan.qline.hotelName} · ${plan.qline.title}`.slice(0, 200),
|
|
1965
1966
|
amountMinor: allIn,
|
|
1966
1967
|
currency: cur,
|
|
1968
|
+
email: guest.email,
|
|
1967
1969
|
});
|
|
1968
1970
|
}
|
|
1969
1971
|
catch (err) {
|
|
@@ -2155,6 +2157,75 @@ export const createHuazhuHotels = (opts) => {
|
|
|
2155
2157
|
}
|
|
2156
2158
|
return { booked: made.map((b) => publicBooking(store.get(b.id) ?? b)), failed };
|
|
2157
2159
|
};
|
|
2160
|
+
/** When each payment page last moved its booking on, for the page a paid guest lands on. */
|
|
2161
|
+
const returned = new Map();
|
|
2162
|
+
/** What the landing page says of a booking - never the guest's name, email or phone. */
|
|
2163
|
+
const returnOf = (row) => {
|
|
2164
|
+
const p = row.prepaid;
|
|
2165
|
+
const state = row.status === 'confirmed'
|
|
2166
|
+
? 'booked'
|
|
2167
|
+
: row.status === 'awaiting-payment'
|
|
2168
|
+
? p?.paidAt
|
|
2169
|
+
? 'booking'
|
|
2170
|
+
: 'not-paid'
|
|
2171
|
+
: row.status === 'requested'
|
|
2172
|
+
? p?.paidAt
|
|
2173
|
+
? 'booking'
|
|
2174
|
+
: 'not-paid'
|
|
2175
|
+
: row.status === 'expired'
|
|
2176
|
+
? 'not-paid'
|
|
2177
|
+
: p?.paidAt && (p.refund || row.status === 'failed' || row.status === 'unconfirmed')
|
|
2178
|
+
? 'refunded'
|
|
2179
|
+
: row.status === 'failed' && !p?.paidAt
|
|
2180
|
+
? 'not-paid'
|
|
2181
|
+
: 'unknown';
|
|
2182
|
+
const names = hotelNamesOf(row.hotelId);
|
|
2183
|
+
return {
|
|
2184
|
+
state,
|
|
2185
|
+
code: row.confirmationCode,
|
|
2186
|
+
hotelName: row.hotelName,
|
|
2187
|
+
...(names ? { hotelNames: names } : {}),
|
|
2188
|
+
stay: { checkIn: row.stay.checkIn, checkOut: row.stay.checkOut },
|
|
2189
|
+
room: row.quote.lines[0]?.title ?? '',
|
|
2190
|
+
amount: row.quote.total,
|
|
2191
|
+
};
|
|
2192
|
+
};
|
|
2193
|
+
/**
|
|
2194
|
+
* The page a paid guest lands on (robin, 2026-10-15). Stripe sends them back
|
|
2195
|
+
* the moment the money is taken - before the next pass has booked it - so
|
|
2196
|
+
* the page moves its own booking on: the same step the pass takes, under the
|
|
2197
|
+
* same one-at-a-time, so the two never book or refund it twice.
|
|
2198
|
+
*
|
|
2199
|
+
* ⚠️ AT MOST ONE STEP EVERY 10 SECONDS A PAGE (香格里拉, 2026-10-15): the
|
|
2200
|
+
* address is public and is reloaded, prefetched and opened twice; between
|
|
2201
|
+
* steps it answers what the booking already says.
|
|
2202
|
+
*/
|
|
2203
|
+
const paymentReturn = async (sessionId) => {
|
|
2204
|
+
const found = store.all().find((b) => b.prepaid?.sessionId === sessionId);
|
|
2205
|
+
if (!found)
|
|
2206
|
+
return undefined;
|
|
2207
|
+
const at = now();
|
|
2208
|
+
if (at - (returned.get(sessionId) ?? Number.NEGATIVE_INFINITY) >= 10_000 &&
|
|
2209
|
+
!ticking &&
|
|
2210
|
+
moneyPending(found)) {
|
|
2211
|
+
returned.set(sessionId, at);
|
|
2212
|
+
if (returned.size > 1_000)
|
|
2213
|
+
for (const [k, v] of returned)
|
|
2214
|
+
if (at - v > 10 * 60_000)
|
|
2215
|
+
returned.delete(k);
|
|
2216
|
+
ticking = true;
|
|
2217
|
+
try {
|
|
2218
|
+
await settlePrepaid(found);
|
|
2219
|
+
}
|
|
2220
|
+
catch (err) {
|
|
2221
|
+
console.error(`[huazhu prepaid ${found.id}] the landing page's step failed: ${err.message}`);
|
|
2222
|
+
}
|
|
2223
|
+
finally {
|
|
2224
|
+
ticking = false;
|
|
2225
|
+
}
|
|
2226
|
+
}
|
|
2227
|
+
return returnOf(store.get(found.id) ?? found);
|
|
2228
|
+
};
|
|
2158
2229
|
return {
|
|
2159
2230
|
brand: opts.brand,
|
|
2160
2231
|
capabilities: {
|
|
@@ -2167,6 +2238,7 @@ export const createHuazhuHotels = (opts) => {
|
|
|
2167
2238
|
* deployment takes payment (make.ts): pages paid or past their time, and
|
|
2168
2239
|
* money going back.
|
|
2169
2240
|
*/
|
|
2241
|
+
...(checkout ? { paymentReturn } : {}),
|
|
2170
2242
|
async prepaidTick() {
|
|
2171
2243
|
// ⚠️ ONE PASS AT A TIME: a pass slower than the ten seconds between
|
|
2172
2244
|
// them would otherwise book a paid stay, or give money back, twice.
|
|
@@ -2749,11 +2821,10 @@ export const createHuazhuHotels = (opts) => {
|
|
|
2749
2821
|
if (trip.lines.some((l) => l.kind !== 'room')) {
|
|
2750
2822
|
throw new Error('Nothing was booked. Huazhu hotels have no add-ons here - take them out of the trip and ask again.');
|
|
2751
2823
|
}
|
|
2752
|
-
//
|
|
2753
|
-
//
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
throw new Error('A booking paid at the hotel needs the guest’s phone number, so the hotel can reach them. Ask the guest for it.');
|
|
2824
|
+
// A phone is the guest's to give or not (robin, 2026-10-15: Huazhu does
|
|
2825
|
+
// not require one) - but one given is one a desk could ring.
|
|
2826
|
+
if (guest.phone?.trim() && !isPhone(guest.phone)) {
|
|
2827
|
+
throw new Error('Nothing was booked: that phone number does not look like one a hotel could ring. Ask the guest to correct it, or book without one.');
|
|
2757
2828
|
}
|
|
2758
2829
|
const { groups } = splitByStay(trip.lines);
|
|
2759
2830
|
const lines = groups.flat();
|