letsfg 2026.5.68 → 2026.5.69
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/README.md +3 -3
- package/dist/{chunk-QLCIHPPX.mjs → chunk-PW775XDB.mjs} +4 -4
- package/dist/cli.js +4 -4
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -4
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -151,14 +151,14 @@ print(booking["confirmation"], booking["pay_link"])
|
|
|
151
151
|
|
|
152
152
|
### How you pay
|
|
153
153
|
|
|
154
|
-
**
|
|
154
|
+
**5% now, the rest to the hotel later.** At booking we charge 5% of the price
|
|
155
155
|
to your card as a reservation fee. The remaining balance is paid **directly to
|
|
156
156
|
the supplier** through a `pay_link` we return — we never hold it.
|
|
157
157
|
|
|
158
158
|
`balance_due_by` is the supplier's own auto-cancellation date, not a date we
|
|
159
159
|
invent. Miss it and the room is released.
|
|
160
160
|
|
|
161
|
-
The
|
|
161
|
+
The 5% is **non-refundable**. Cancelling before `balance_due_by` costs nothing
|
|
162
162
|
else; after it, the hotel's own cancellation ladder applies and can reach 100%.
|
|
163
163
|
That ladder ships in the booking's `terms`, so you can always see the cost before
|
|
164
164
|
you cancel.
|
|
@@ -184,7 +184,7 @@ is not metered, only the search call itself.
|
|
|
184
184
|
hotel signup.
|
|
185
185
|
- **Only free-cancellation, pay-later rates are sold.** Those are the rates where
|
|
186
186
|
the balance can safely be settled with the supplier after booking, which is
|
|
187
|
-
what makes
|
|
187
|
+
what makes 5%-now/rest-later work at all. You will see fewer results than a
|
|
188
188
|
metasearch shows you. Every one of them can actually be booked.
|
|
189
189
|
- **Booking is asynchronous.** `book_hotel` returns a `booking_job_id`, not a
|
|
190
190
|
booking — the real thing takes minutes. Poll `hotel_booking(job_id)` until
|
|
@@ -1709,7 +1709,7 @@ var LetsFG = class {
|
|
|
1709
1709
|
//
|
|
1710
1710
|
// Only free-cancellation, pay-later rates are sold. Those are the rates where
|
|
1711
1711
|
// the guest's balance can safely be settled with the supplier after booking,
|
|
1712
|
-
// which is what makes
|
|
1712
|
+
// which is what makes 5%-now/rest-later work. The result set is smaller than
|
|
1713
1713
|
// a metasearch's, and every row in it can actually be booked.
|
|
1714
1714
|
/**
|
|
1715
1715
|
* Resolve a place name to the city id that searchHotels() needs.
|
|
@@ -1732,7 +1732,7 @@ var LetsFG = class {
|
|
|
1732
1732
|
* — so this gets its own generous timeout rather than the client default.
|
|
1733
1733
|
*
|
|
1734
1734
|
* Each offer carries `price` (what the guest pays), `reservation_fee_now`
|
|
1735
|
-
* (the
|
|
1735
|
+
* (the 5% taken at booking), `balance_to_supplier`, `balance_due_by` and
|
|
1736
1736
|
* `free_cancellation_until`. There is no wholesale figure to quote by mistake.
|
|
1737
1737
|
*
|
|
1738
1738
|
* Keep `session_id` and the chosen offer's `combination_id_v2`: together they
|
|
@@ -1758,7 +1758,7 @@ var LetsFG = class {
|
|
|
1758
1758
|
* Start a booking. Returns a job immediately — it does NOT book inline.
|
|
1759
1759
|
*
|
|
1760
1760
|
* A booking takes minutes: the rate is re-blocked at the supplier, every
|
|
1761
|
-
* price and date rail is checked, the
|
|
1761
|
+
* price and date rail is checked, the 5% reservation fee is charged to your
|
|
1762
1762
|
* card, and only then is the room committed. No proxy holds a connection that
|
|
1763
1763
|
* long, so this returns at once and you poll hotelBooking() for the outcome.
|
|
1764
1764
|
* Use bookHotelAndWait() if you would rather block.
|
|
@@ -1840,7 +1840,7 @@ var LetsFG = class {
|
|
|
1840
1840
|
*
|
|
1841
1841
|
* Free until `balance_due_by`; after that the hotel's own cancellation ladder
|
|
1842
1842
|
* applies and can reach 100%. The ladder ships in the booking's `terms`, so
|
|
1843
|
-
* you can see the cost before calling this. The
|
|
1843
|
+
* you can see the cost before calling this. The 5% reservation fee is NOT
|
|
1844
1844
|
* refunded.
|
|
1845
1845
|
*
|
|
1846
1846
|
* This drives a browser at the supplier and takes over a minute. If it times
|
package/dist/cli.js
CHANGED
|
@@ -605,7 +605,7 @@ var LetsFG = class {
|
|
|
605
605
|
//
|
|
606
606
|
// Only free-cancellation, pay-later rates are sold. Those are the rates where
|
|
607
607
|
// the guest's balance can safely be settled with the supplier after booking,
|
|
608
|
-
// which is what makes
|
|
608
|
+
// which is what makes 5%-now/rest-later work. The result set is smaller than
|
|
609
609
|
// a metasearch's, and every row in it can actually be booked.
|
|
610
610
|
/**
|
|
611
611
|
* Resolve a place name to the city id that searchHotels() needs.
|
|
@@ -628,7 +628,7 @@ var LetsFG = class {
|
|
|
628
628
|
* — so this gets its own generous timeout rather than the client default.
|
|
629
629
|
*
|
|
630
630
|
* Each offer carries `price` (what the guest pays), `reservation_fee_now`
|
|
631
|
-
* (the
|
|
631
|
+
* (the 5% taken at booking), `balance_to_supplier`, `balance_due_by` and
|
|
632
632
|
* `free_cancellation_until`. There is no wholesale figure to quote by mistake.
|
|
633
633
|
*
|
|
634
634
|
* Keep `session_id` and the chosen offer's `combination_id_v2`: together they
|
|
@@ -654,7 +654,7 @@ var LetsFG = class {
|
|
|
654
654
|
* Start a booking. Returns a job immediately — it does NOT book inline.
|
|
655
655
|
*
|
|
656
656
|
* A booking takes minutes: the rate is re-blocked at the supplier, every
|
|
657
|
-
* price and date rail is checked, the
|
|
657
|
+
* price and date rail is checked, the 5% reservation fee is charged to your
|
|
658
658
|
* card, and only then is the room committed. No proxy holds a connection that
|
|
659
659
|
* long, so this returns at once and you poll hotelBooking() for the outcome.
|
|
660
660
|
* Use bookHotelAndWait() if you would rather block.
|
|
@@ -736,7 +736,7 @@ var LetsFG = class {
|
|
|
736
736
|
*
|
|
737
737
|
* Free until `balance_due_by`; after that the hotel's own cancellation ladder
|
|
738
738
|
* applies and can reach 100%. The ladder ships in the booking's `terms`, so
|
|
739
|
-
* you can see the cost before calling this. The
|
|
739
|
+
* you can see the cost before calling this. The 5% reservation fee is NOT
|
|
740
740
|
* refunded.
|
|
741
741
|
*
|
|
742
742
|
* This drives a browser at the supplier and takes over a minute. If it times
|
package/dist/cli.mjs
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -520,7 +520,7 @@ declare class LetsFG {
|
|
|
520
520
|
* — so this gets its own generous timeout rather than the client default.
|
|
521
521
|
*
|
|
522
522
|
* Each offer carries `price` (what the guest pays), `reservation_fee_now`
|
|
523
|
-
* (the
|
|
523
|
+
* (the 5% taken at booking), `balance_to_supplier`, `balance_due_by` and
|
|
524
524
|
* `free_cancellation_until`. There is no wholesale figure to quote by mistake.
|
|
525
525
|
*
|
|
526
526
|
* Keep `session_id` and the chosen offer's `combination_id_v2`: together they
|
|
@@ -543,7 +543,7 @@ declare class LetsFG {
|
|
|
543
543
|
* Start a booking. Returns a job immediately — it does NOT book inline.
|
|
544
544
|
*
|
|
545
545
|
* A booking takes minutes: the rate is re-blocked at the supplier, every
|
|
546
|
-
* price and date rail is checked, the
|
|
546
|
+
* price and date rail is checked, the 5% reservation fee is charged to your
|
|
547
547
|
* card, and only then is the room committed. No proxy holds a connection that
|
|
548
548
|
* long, so this returns at once and you poll hotelBooking() for the outcome.
|
|
549
549
|
* Use bookHotelAndWait() if you would rather block.
|
|
@@ -606,7 +606,7 @@ declare class LetsFG {
|
|
|
606
606
|
*
|
|
607
607
|
* Free until `balance_due_by`; after that the hotel's own cancellation ladder
|
|
608
608
|
* applies and can reach 100%. The ladder ships in the booking's `terms`, so
|
|
609
|
-
* you can see the cost before calling this. The
|
|
609
|
+
* you can see the cost before calling this. The 5% reservation fee is NOT
|
|
610
610
|
* refunded.
|
|
611
611
|
*
|
|
612
612
|
* This drives a browser at the supplier and takes over a minute. If it times
|
package/dist/index.d.ts
CHANGED
|
@@ -520,7 +520,7 @@ declare class LetsFG {
|
|
|
520
520
|
* — so this gets its own generous timeout rather than the client default.
|
|
521
521
|
*
|
|
522
522
|
* Each offer carries `price` (what the guest pays), `reservation_fee_now`
|
|
523
|
-
* (the
|
|
523
|
+
* (the 5% taken at booking), `balance_to_supplier`, `balance_due_by` and
|
|
524
524
|
* `free_cancellation_until`. There is no wholesale figure to quote by mistake.
|
|
525
525
|
*
|
|
526
526
|
* Keep `session_id` and the chosen offer's `combination_id_v2`: together they
|
|
@@ -543,7 +543,7 @@ declare class LetsFG {
|
|
|
543
543
|
* Start a booking. Returns a job immediately — it does NOT book inline.
|
|
544
544
|
*
|
|
545
545
|
* A booking takes minutes: the rate is re-blocked at the supplier, every
|
|
546
|
-
* price and date rail is checked, the
|
|
546
|
+
* price and date rail is checked, the 5% reservation fee is charged to your
|
|
547
547
|
* card, and only then is the room committed. No proxy holds a connection that
|
|
548
548
|
* long, so this returns at once and you poll hotelBooking() for the outcome.
|
|
549
549
|
* Use bookHotelAndWait() if you would rather block.
|
|
@@ -606,7 +606,7 @@ declare class LetsFG {
|
|
|
606
606
|
*
|
|
607
607
|
* Free until `balance_due_by`; after that the hotel's own cancellation ladder
|
|
608
608
|
* applies and can reach 100%. The ladder ships in the booking's `terms`, so
|
|
609
|
-
* you can see the cost before calling this. The
|
|
609
|
+
* you can see the cost before calling this. The 5% reservation fee is NOT
|
|
610
610
|
* refunded.
|
|
611
611
|
*
|
|
612
612
|
* This drives a browser at the supplier and takes over a minute. If it times
|
package/dist/index.js
CHANGED
|
@@ -1757,7 +1757,7 @@ var LetsFG = class {
|
|
|
1757
1757
|
//
|
|
1758
1758
|
// Only free-cancellation, pay-later rates are sold. Those are the rates where
|
|
1759
1759
|
// the guest's balance can safely be settled with the supplier after booking,
|
|
1760
|
-
// which is what makes
|
|
1760
|
+
// which is what makes 5%-now/rest-later work. The result set is smaller than
|
|
1761
1761
|
// a metasearch's, and every row in it can actually be booked.
|
|
1762
1762
|
/**
|
|
1763
1763
|
* Resolve a place name to the city id that searchHotels() needs.
|
|
@@ -1780,7 +1780,7 @@ var LetsFG = class {
|
|
|
1780
1780
|
* — so this gets its own generous timeout rather than the client default.
|
|
1781
1781
|
*
|
|
1782
1782
|
* Each offer carries `price` (what the guest pays), `reservation_fee_now`
|
|
1783
|
-
* (the
|
|
1783
|
+
* (the 5% taken at booking), `balance_to_supplier`, `balance_due_by` and
|
|
1784
1784
|
* `free_cancellation_until`. There is no wholesale figure to quote by mistake.
|
|
1785
1785
|
*
|
|
1786
1786
|
* Keep `session_id` and the chosen offer's `combination_id_v2`: together they
|
|
@@ -1806,7 +1806,7 @@ var LetsFG = class {
|
|
|
1806
1806
|
* Start a booking. Returns a job immediately — it does NOT book inline.
|
|
1807
1807
|
*
|
|
1808
1808
|
* A booking takes minutes: the rate is re-blocked at the supplier, every
|
|
1809
|
-
* price and date rail is checked, the
|
|
1809
|
+
* price and date rail is checked, the 5% reservation fee is charged to your
|
|
1810
1810
|
* card, and only then is the room committed. No proxy holds a connection that
|
|
1811
1811
|
* long, so this returns at once and you poll hotelBooking() for the outcome.
|
|
1812
1812
|
* Use bookHotelAndWait() if you would rather block.
|
|
@@ -1888,7 +1888,7 @@ var LetsFG = class {
|
|
|
1888
1888
|
*
|
|
1889
1889
|
* Free until `balance_due_by`; after that the hotel's own cancellation ladder
|
|
1890
1890
|
* applies and can reach 100%. The ladder ships in the booking's `terms`, so
|
|
1891
|
-
* you can see the cost before calling this. The
|
|
1891
|
+
* you can see the cost before calling this. The 5% reservation fee is NOT
|
|
1892
1892
|
* refunded.
|
|
1893
1893
|
*
|
|
1894
1894
|
* This drives a browser at the supplier and takes over a minute. If it times
|
package/dist/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "letsfg",
|
|
3
|
-
"version": "2026.5.
|
|
3
|
+
"version": "2026.5.69",
|
|
4
4
|
"description": "Flights and hotels for AI agents. Server-side engine covers hundreds of airlines; hotels are real bookable inventory with free cancellation and pay-later terms. Includes open-source ranking engine.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|