@gojinko/cli 1.1.1 → 1.2.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/README.md +22 -6
- package/dist/commands/exchange.d.ts.map +1 -1
- package/dist/commands/exchange.js +1 -15
- package/dist/commands/exchange.js.map +1 -1
- package/dist/commands/find-destination.d.ts +40 -0
- package/dist/commands/find-destination.d.ts.map +1 -1
- package/dist/commands/find-destination.js +207 -41
- package/dist/commands/find-destination.js.map +1 -1
- package/dist/commands/find-flight.js.map +1 -1
- package/dist/commands/flight-calendar.js.map +1 -1
- package/dist/commands/hotel-cancel.d.ts +16 -0
- package/dist/commands/hotel-cancel.d.ts.map +1 -0
- package/dist/commands/hotel-cancel.js +48 -0
- package/dist/commands/hotel-cancel.js.map +1 -0
- package/dist/commands/hotel-details.d.ts +3 -0
- package/dist/commands/hotel-details.d.ts.map +1 -0
- package/dist/commands/hotel-details.js +18 -0
- package/dist/commands/hotel-details.js.map +1 -0
- package/dist/commands/hotel-lookup-booking.d.ts +7 -0
- package/dist/commands/hotel-lookup-booking.d.ts.map +1 -0
- package/dist/commands/hotel-lookup-booking.js +20 -0
- package/dist/commands/hotel-lookup-booking.js.map +1 -0
- package/dist/commands/hotel-search.d.ts.map +1 -1
- package/dist/commands/hotel-search.js +19 -16
- package/dist/commands/hotel-search.js.map +1 -1
- package/dist/commands/price-monitoring.d.ts +3 -0
- package/dist/commands/price-monitoring.d.ts.map +1 -0
- package/dist/commands/price-monitoring.js +50 -0
- package/dist/commands/price-monitoring.js.map +1 -0
- package/dist/commands/refund.d.ts +21 -0
- package/dist/commands/refund.d.ts.map +1 -1
- package/dist/commands/refund.js +1 -1
- package/dist/commands/refund.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @gojinko/cli
|
|
2
2
|
|
|
3
|
-
Command-line tool for the Jinko developer platform. Search flights, build trips, and hand users off to a Jinko-hosted checkout page.
|
|
3
|
+
Command-line tool for the Jinko developer platform. Search flights and hotels, build trips (multi-domain — flights and hotels share one cart), and hand users off to a Jinko-hosted checkout page.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -43,7 +43,10 @@ jinko auth logout # Clear stored credentials
|
|
|
43
43
|
| Command | Description |
|
|
44
44
|
|---|---|
|
|
45
45
|
| `flight-search` | Direct search by route + dates OR price-check an `offer_token`. Returns bookable `trip_item_token`. |
|
|
46
|
-
| `
|
|
46
|
+
| `price-monitoring` | Cache-only price snapshot for a fixed OD + dates — intended for scheduled polling. Semantically distinct from `flight-search` (one-shot live shopping). |
|
|
47
|
+
| `hotel-search` | Live hotel search by city / query / geo / hotel-ids. Returns hotels with rooms, rates, `htl_*` offer tokens. |
|
|
48
|
+
| `hotel-details` | Lazy lookup for a specific hotel — images, amenities, location detail. Pairs with `hotel-search` when the user wants the full picture before booking. |
|
|
49
|
+
| `trip` | Create/update a trip, add flight or hotel items, set travelers |
|
|
47
50
|
|
|
48
51
|
### Legacy
|
|
49
52
|
|
|
@@ -55,7 +58,7 @@ jinko auth logout # Clear stored credentials
|
|
|
55
58
|
|
|
56
59
|
| Command | Description |
|
|
57
60
|
|---|---|
|
|
58
|
-
| `
|
|
61
|
+
| `book` | Schedule checkout, returns `checkout_url` + items + ancillaries + total |
|
|
59
62
|
| `select-ancillaries` | Optional: preselect bags / seats / meals before handoff |
|
|
60
63
|
| `trip-status` | Full lifecycle state: cart, quote, fulfillment, bookings |
|
|
61
64
|
|
|
@@ -63,8 +66,14 @@ jinko auth logout # Clear stored credentials
|
|
|
63
66
|
|
|
64
67
|
| Command | Description |
|
|
65
68
|
|---|---|
|
|
69
|
+
| `lookup-booking` | Retrieve a booking by reference (booking ref + last-name guest-auth). No subcommands. |
|
|
66
70
|
| `refund check` | Check refund eligibility for a booking |
|
|
67
71
|
| `refund commit` | Initiate a refund for a booking |
|
|
72
|
+
| `refund status` | Check the status of a previously committed refund |
|
|
73
|
+
| `exchange shop` | Search exchange options for an existing booking |
|
|
74
|
+
| `exchange price` | Price a selected exchange option |
|
|
75
|
+
| `exchange commit` | Commit a flight exchange |
|
|
76
|
+
| `exchange status` | Check the status of a previously committed exchange |
|
|
68
77
|
|
|
69
78
|
### Utility
|
|
70
79
|
|
|
@@ -76,10 +85,10 @@ jinko auth logout # Clear stored credentials
|
|
|
76
85
|
## Canonical Flow
|
|
77
86
|
|
|
78
87
|
```
|
|
79
|
-
flight-search → trip →
|
|
88
|
+
flight-search → trip → book → user pays on checkout_url → trip-status
|
|
80
89
|
```
|
|
81
90
|
|
|
82
|
-
Quote is automatic — `
|
|
91
|
+
Quote is automatic — `book` handles it internally. Payment happens on the Jinko web page, not in the CLI.
|
|
83
92
|
|
|
84
93
|
## Examples
|
|
85
94
|
|
|
@@ -90,6 +99,13 @@ jinko flight-search --from PAR --to NYC --date 2026-06-15
|
|
|
90
99
|
# Or price-check an offer_token from flight-calendar
|
|
91
100
|
jinko flight-search --offer-token <offer_token>
|
|
92
101
|
|
|
102
|
+
# Live hotel search (returns htl_* tokens that plug into trip the same way as flight tokens)
|
|
103
|
+
jinko hotel-search --city "Paris" --checkin 2026-07-15 --checkout 2026-07-18 --adults 2
|
|
104
|
+
|
|
105
|
+
# Multi-domain cart: add flight + hotel to the same trip → one Stripe checkout
|
|
106
|
+
jinko trip --trip-item-token <flight_token> # returns trip_id
|
|
107
|
+
jinko trip --trip-id <trip_id> --trip-item-token <htl_*>
|
|
108
|
+
|
|
93
109
|
# Create trip with travelers + contact
|
|
94
110
|
jinko trip \
|
|
95
111
|
--trip-item-token <token> \
|
|
@@ -97,7 +113,7 @@ jinko trip \
|
|
|
97
113
|
--contact '{"email":"jane@example.com","phone":"+33612345678"}'
|
|
98
114
|
|
|
99
115
|
# Schedule checkout → returns checkout_url
|
|
100
|
-
jinko
|
|
116
|
+
jinko book --trip-id <trip_id>
|
|
101
117
|
|
|
102
118
|
# Optional: add baggage/seats/meals before handoff
|
|
103
119
|
jinko select-ancillaries \
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/commands/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/commands/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiF9D"}
|
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
import { withClient, output } from './shared.js';
|
|
2
|
-
import { validateAuthFields } from './refund.js';
|
|
3
|
-
/**
|
|
4
|
-
* Build exchange auth + common fields from CLI options.
|
|
5
|
-
* Reuses the same two-mode auth validation as refund.
|
|
6
|
-
*/
|
|
7
|
-
function buildAuthFields(opts) {
|
|
8
|
-
validateAuthFields(opts);
|
|
9
|
-
return {
|
|
10
|
-
...(opts.orderId && { order_id: opts.orderId }),
|
|
11
|
-
...(opts.bookingRef && { booking_ref: opts.bookingRef }),
|
|
12
|
-
...(opts.lastName && { last_name: opts.lastName }),
|
|
13
|
-
...(opts.provider && { provider: opts.provider }),
|
|
14
|
-
...(opts.ticketNumbers && opts.ticketNumbers.length > 0 && { ticket_numbers: opts.ticketNumbers }),
|
|
15
|
-
};
|
|
16
|
-
}
|
|
2
|
+
import { buildAuthFields, validateAuthFields } from './refund.js';
|
|
17
3
|
export function registerExchangeCommand(program) {
|
|
18
4
|
const exchange = program
|
|
19
5
|
.command('exchange')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../src/commands/exchange.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../src/commands/exchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,43 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
export interface FindDestinationOpts {
|
|
3
|
+
origins?: string[];
|
|
4
|
+
destinations?: string[];
|
|
5
|
+
originType?: string;
|
|
6
|
+
destinationType?: string;
|
|
7
|
+
departureDates?: string[];
|
|
8
|
+
departureDateRanges?: string[];
|
|
9
|
+
returnDates?: string[];
|
|
10
|
+
returnDateRanges?: string[];
|
|
11
|
+
stayDays?: string;
|
|
12
|
+
stayDaysRange?: string;
|
|
13
|
+
tripType?: string;
|
|
14
|
+
cabinClass?: string;
|
|
15
|
+
directOnly?: boolean;
|
|
16
|
+
adults?: string;
|
|
17
|
+
children?: string;
|
|
18
|
+
infantsInLap?: string;
|
|
19
|
+
infantsInSeat?: string;
|
|
20
|
+
youth?: string;
|
|
21
|
+
student?: string;
|
|
22
|
+
ages?: string[];
|
|
23
|
+
residencyCountry?: string;
|
|
24
|
+
maxTotal?: string;
|
|
25
|
+
currency?: string;
|
|
26
|
+
locale?: string;
|
|
27
|
+
limit?: string;
|
|
28
|
+
offset?: string;
|
|
29
|
+
flightsPerDestination?: string;
|
|
30
|
+
sortBy?: string;
|
|
31
|
+
from?: string[];
|
|
32
|
+
date?: string;
|
|
33
|
+
return?: string;
|
|
34
|
+
departureRange?: string;
|
|
35
|
+
stay?: string;
|
|
36
|
+
cabin?: string;
|
|
37
|
+
maxPrice?: string;
|
|
38
|
+
sort?: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function applyDeprecatedAliases(opts: FindDestinationOpts): void;
|
|
41
|
+
export declare function buildRequestBody(opts: FindDestinationOpts): Record<string, unknown>;
|
|
2
42
|
export declare function registerFindDestinationCommand(program: Command): void;
|
|
3
43
|
//# sourceMappingURL=find-destination.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-destination.d.ts","sourceRoot":"","sources":["../../src/commands/find-destination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"find-destination.d.ts","sourceRoot":"","sources":["../../src/commands/find-destination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,MAAM,WAAW,mBAAmB;IAElC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA8DD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAiCtE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwDnF;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0IrE"}
|
|
@@ -1,49 +1,215 @@
|
|
|
1
1
|
import { withClient, output } from './shared.js';
|
|
2
|
+
const DESCRIPTION = 'Discover travel destinations accessible from your departure airports. ' +
|
|
3
|
+
'Surface inspiration when a user knows where they want to leave from but not where they want to go. ' +
|
|
4
|
+
'Typical prompts include "cheap beach getaways from New York" or "weekend trips out of London under €200". ' +
|
|
5
|
+
'Results come back ranked by lowest available fare so the user can compare options before committing to a route. ' +
|
|
6
|
+
'Same call as `POST /api/v1/flights/destination-search` — every CLI flag maps 1:1 to a JSON field.';
|
|
7
|
+
function parseDateRange(raw) {
|
|
8
|
+
const [start, end] = raw.split(':');
|
|
9
|
+
if (!start || !end) {
|
|
10
|
+
throw new Error(`Invalid date range '${raw}'. Expected YYYY-MM-DD:YYYY-MM-DD.`);
|
|
11
|
+
}
|
|
12
|
+
return { start, end };
|
|
13
|
+
}
|
|
14
|
+
function parseIntRange(raw) {
|
|
15
|
+
const [min, max] = raw.split(':').map(Number);
|
|
16
|
+
if (!Number.isFinite(min) || !Number.isFinite(max)) {
|
|
17
|
+
throw new Error(`Invalid integer range '${raw}'. Expected min:max (e.g. 5:10).`);
|
|
18
|
+
}
|
|
19
|
+
return { min, max };
|
|
20
|
+
}
|
|
21
|
+
function warn(msg) {
|
|
22
|
+
process.stderr.write(`[jinko] DEPRECATED: ${msg}\n`);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Phase 1 translation: a small, documented bridge between canonical CLI / spec
|
|
26
|
+
* names (what users learn) and the BFF's current legacy leaf names.
|
|
27
|
+
*
|
|
28
|
+
* When Phase 2 ships (BFF rename adt→adults, sort→sort_by, etc.), delete this
|
|
29
|
+
* function and its callers. CLI users see no change.
|
|
30
|
+
*
|
|
31
|
+
* Tracked: JIN-665 phase 2.
|
|
32
|
+
*/
|
|
33
|
+
const PHASE_1_PASSENGER_LEGACY = {
|
|
34
|
+
adults: 'adt',
|
|
35
|
+
children: 'chd',
|
|
36
|
+
infants_in_lap: 'inf_lap',
|
|
37
|
+
infants_in_seat: 'inf_seat',
|
|
38
|
+
};
|
|
39
|
+
function buildPassengers(opts) {
|
|
40
|
+
const canonical = {};
|
|
41
|
+
if (opts.adults !== undefined)
|
|
42
|
+
canonical.adults = Number(opts.adults);
|
|
43
|
+
if (opts.children !== undefined)
|
|
44
|
+
canonical.children = Number(opts.children);
|
|
45
|
+
if (opts.infantsInLap !== undefined)
|
|
46
|
+
canonical.infants_in_lap = Number(opts.infantsInLap);
|
|
47
|
+
if (opts.infantsInSeat !== undefined)
|
|
48
|
+
canonical.infants_in_seat = Number(opts.infantsInSeat);
|
|
49
|
+
if (opts.youth !== undefined)
|
|
50
|
+
canonical.youth = Number(opts.youth);
|
|
51
|
+
if (opts.student !== undefined)
|
|
52
|
+
canonical.student = Number(opts.student);
|
|
53
|
+
if (opts.ages?.length)
|
|
54
|
+
canonical.ages = opts.ages.map(Number);
|
|
55
|
+
if (opts.residencyCountry)
|
|
56
|
+
canonical.residency_country = opts.residencyCountry;
|
|
57
|
+
// Default to one adult so BFF doesn't reject the request.
|
|
58
|
+
if (canonical.adults === undefined && canonical.children === undefined) {
|
|
59
|
+
canonical.adults = 1;
|
|
60
|
+
}
|
|
61
|
+
// Apply Phase 1 legacy translation (adults→adt etc.). See PHASE_1_PASSENGER_LEGACY.
|
|
62
|
+
const out = {};
|
|
63
|
+
for (const [key, value] of Object.entries(canonical)) {
|
|
64
|
+
out[PHASE_1_PASSENGER_LEGACY[key] ?? key] = value;
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
export function applyDeprecatedAliases(opts) {
|
|
69
|
+
if (opts.from && !opts.origins) {
|
|
70
|
+
warn('--from is deprecated, use --origins.');
|
|
71
|
+
opts.origins = opts.from;
|
|
72
|
+
}
|
|
73
|
+
if (opts.date && !opts.departureDates) {
|
|
74
|
+
warn('--date is deprecated, use --departure-dates.');
|
|
75
|
+
opts.departureDates = [opts.date];
|
|
76
|
+
}
|
|
77
|
+
if (opts.return && !opts.returnDates) {
|
|
78
|
+
warn('--return is deprecated, use --return-dates.');
|
|
79
|
+
opts.returnDates = [opts.return];
|
|
80
|
+
}
|
|
81
|
+
if (opts.departureRange && !opts.departureDateRanges) {
|
|
82
|
+
warn('--departure-range is deprecated, use --departure-date-ranges.');
|
|
83
|
+
opts.departureDateRanges = [opts.departureRange];
|
|
84
|
+
}
|
|
85
|
+
if (opts.stay && !opts.stayDaysRange) {
|
|
86
|
+
warn('--stay is deprecated, use --stay-days-range.');
|
|
87
|
+
opts.stayDaysRange = opts.stay;
|
|
88
|
+
}
|
|
89
|
+
if (opts.cabin && !opts.cabinClass) {
|
|
90
|
+
warn('--cabin is deprecated, use --cabin-class.');
|
|
91
|
+
opts.cabinClass = opts.cabin;
|
|
92
|
+
}
|
|
93
|
+
if (opts.maxPrice && !opts.maxTotal) {
|
|
94
|
+
warn('--max-price is deprecated, use --max-total.');
|
|
95
|
+
opts.maxTotal = opts.maxPrice;
|
|
96
|
+
}
|
|
97
|
+
if (opts.sort && !opts.sortBy) {
|
|
98
|
+
warn('--sort is deprecated, use --sort-by.');
|
|
99
|
+
opts.sortBy = opts.sort;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
export function buildRequestBody(opts) {
|
|
103
|
+
if (!opts.origins || opts.origins.length === 0) {
|
|
104
|
+
throw new Error('Missing required option: --origins.');
|
|
105
|
+
}
|
|
106
|
+
const locations = { origins: opts.origins };
|
|
107
|
+
if (opts.destinations?.length)
|
|
108
|
+
locations.destinations = opts.destinations;
|
|
109
|
+
if (opts.originType)
|
|
110
|
+
locations.origin_type = opts.originType;
|
|
111
|
+
if (opts.destinationType)
|
|
112
|
+
locations.destination_type = opts.destinationType;
|
|
113
|
+
const dates = {};
|
|
114
|
+
if (opts.departureDates?.length)
|
|
115
|
+
dates.departure_dates = opts.departureDates;
|
|
116
|
+
if (opts.departureDateRanges?.length) {
|
|
117
|
+
dates.departure_date_ranges = opts.departureDateRanges.map(parseDateRange);
|
|
118
|
+
}
|
|
119
|
+
if (opts.returnDates?.length)
|
|
120
|
+
dates.return_dates = opts.returnDates;
|
|
121
|
+
if (opts.returnDateRanges?.length) {
|
|
122
|
+
dates.return_date_ranges = opts.returnDateRanges.map(parseDateRange);
|
|
123
|
+
}
|
|
124
|
+
if (opts.stayDays !== undefined)
|
|
125
|
+
dates.stay_days = Number(opts.stayDays);
|
|
126
|
+
if (opts.stayDaysRange)
|
|
127
|
+
dates.stay_days_range = parseIntRange(opts.stayDaysRange);
|
|
128
|
+
// BFF requires at least one date — default to next 12 months if none provided.
|
|
129
|
+
if (Object.keys(dates).length === 0) {
|
|
130
|
+
const today = new Date();
|
|
131
|
+
const start = today.toISOString().slice(0, 10);
|
|
132
|
+
const end = new Date(today.getFullYear() + 1, today.getMonth(), today.getDate())
|
|
133
|
+
.toISOString().slice(0, 10);
|
|
134
|
+
dates.departure_date_ranges = [{ start, end }];
|
|
135
|
+
}
|
|
136
|
+
const tripType = opts.tripType ??
|
|
137
|
+
(opts.returnDates?.length || opts.returnDateRanges?.length ? 'roundtrip' : 'oneway');
|
|
138
|
+
const filters = { locations, dates, trip_type: tripType };
|
|
139
|
+
if (opts.cabinClass)
|
|
140
|
+
filters.cabin_class = opts.cabinClass;
|
|
141
|
+
if (opts.directOnly)
|
|
142
|
+
filters.direct_only = true;
|
|
143
|
+
const body = {
|
|
144
|
+
filters,
|
|
145
|
+
passengers: buildPassengers(opts),
|
|
146
|
+
// Phase 1 legacy: BFF leaf is `sort`; CLI canonical is `--sort-by`.
|
|
147
|
+
sort: opts.sortBy,
|
|
148
|
+
limit: Number(opts.limit) || 20,
|
|
149
|
+
flights_per_destination: opts.flightsPerDestination
|
|
150
|
+
? Number(opts.flightsPerDestination)
|
|
151
|
+
: 1,
|
|
152
|
+
};
|
|
153
|
+
if (opts.maxTotal)
|
|
154
|
+
body.price_constraints = { max_total: Number(opts.maxTotal) };
|
|
155
|
+
if (opts.currency)
|
|
156
|
+
body.currency = opts.currency;
|
|
157
|
+
if (opts.locale)
|
|
158
|
+
body.locale = opts.locale;
|
|
159
|
+
if (opts.offset !== undefined)
|
|
160
|
+
body.offset = Number(opts.offset);
|
|
161
|
+
return body;
|
|
162
|
+
}
|
|
2
163
|
export function registerFindDestinationCommand(program) {
|
|
3
164
|
program
|
|
4
165
|
.command('find-destination')
|
|
5
|
-
.description(
|
|
6
|
-
|
|
7
|
-
.option('--
|
|
8
|
-
.option('--
|
|
9
|
-
.option('--
|
|
10
|
-
.option('--
|
|
11
|
-
|
|
12
|
-
.option('--
|
|
13
|
-
.option('--
|
|
166
|
+
.description(DESCRIPTION)
|
|
167
|
+
// Location
|
|
168
|
+
.option('--origins <codes...>', 'IATA airport or city codes (e.g. JFK LGA). JSON: `filters.locations.origins[]`. Required.')
|
|
169
|
+
.option('--destinations <codes...>', 'IATA airport or city codes to filter to. Omit for global discovery. JSON: `filters.locations.destinations[]`.')
|
|
170
|
+
.option('--origin-type <type>', 'How to interpret --origins: `city` or `airport` (default: `city`). JSON: `filters.locations.origin_type`.')
|
|
171
|
+
.option('--destination-type <type>', 'How to interpret --destinations: `city` or `airport` (default: `city`). JSON: `filters.locations.destination_type`.')
|
|
172
|
+
// Dates
|
|
173
|
+
.option('--departure-dates <dates...>', 'Exact departure dates (YYYY-MM-DD), OR logic. JSON: `filters.dates.departure_dates[]`.')
|
|
174
|
+
.option('--departure-date-ranges <ranges...>', 'Flexible departure ranges, repeatable. Format: `YYYY-MM-DD:YYYY-MM-DD`. JSON: `filters.dates.departure_date_ranges[]`.')
|
|
175
|
+
.option('--return-dates <dates...>', 'Exact return dates (YYYY-MM-DD), roundtrip only. JSON: `filters.dates.return_dates[]`.')
|
|
176
|
+
.option('--return-date-ranges <ranges...>', 'Flexible return ranges, roundtrip only. Format: `YYYY-MM-DD:YYYY-MM-DD`. JSON: `filters.dates.return_date_ranges[]`.')
|
|
177
|
+
.option('--stay-days <n>', 'Exact stay length in days. JSON: `filters.dates.stay_days`.')
|
|
178
|
+
.option('--stay-days-range <min:max>', 'Flexible stay range, e.g. `5:10`. JSON: `filters.dates.stay_days_range`.')
|
|
179
|
+
// Trip + filters
|
|
180
|
+
.option('--trip-type <type>', '`oneway` or `roundtrip` (inferred from --return-dates if omitted). JSON: `filters.trip_type`.')
|
|
181
|
+
.option('--cabin-class <class>', '`economy`, `premium_economy`, `business`, or `first` (default: `economy`). JSON: `filters.cabin_class`.', 'economy')
|
|
182
|
+
.option('--direct-only', 'Only return nonstop flights. JSON: `filters.direct_only`.')
|
|
183
|
+
// Passengers (canonical names — see PHASE_1_PASSENGER_LEGACY for the BFF leaf mapping)
|
|
184
|
+
.option('--adults <n>', 'Adult passengers (default: 1). JSON: `passengers.adt`† (renames to `passengers.adults` after Phase 2).')
|
|
185
|
+
.option('--children <n>', 'Child passengers. JSON: `passengers.chd`† (renames to `passengers.children` after Phase 2).')
|
|
186
|
+
.option('--infants-in-lap <n>', 'Infants on lap (no seat). JSON: `passengers.inf_lap`† (renames to `passengers.infants_in_lap` after Phase 2).')
|
|
187
|
+
.option('--infants-in-seat <n>', 'Infants in own seat. JSON: `passengers.inf_seat`† (renames to `passengers.infants_in_seat` after Phase 2).')
|
|
188
|
+
.option('--youth <n>', 'Youth fare. JSON: `passengers.youth`.')
|
|
189
|
+
.option('--student <n>', 'Student fare. JSON: `passengers.student`.')
|
|
190
|
+
.option('--ages <ages...>', 'Explicit ages array (alternative to counts). JSON: `passengers.ages[]`.')
|
|
191
|
+
.option('--residency-country <iso2>', 'Residency country, ISO 3166-1 alpha-2. JSON: `passengers.residency_country`.')
|
|
192
|
+
// Price
|
|
193
|
+
.option('--max-total <amount>', 'Maximum total price in --currency. JSON: `price_constraints.max_total`.')
|
|
194
|
+
// Presentation + pagination
|
|
195
|
+
.option('--currency <code>', 'ISO 4217 currency code (default: USD). JSON: `currency`.')
|
|
196
|
+
.option('--locale <bcp47>', 'BCP 47 locale, e.g. `en-US`, `fr-FR` (default: `en-US`). JSON: `locale`.')
|
|
197
|
+
.option('--limit <n>', 'Maximum destinations (1-100, default 20). JSON: `limit`.', '20')
|
|
198
|
+
.option('--offset <n>', 'Pagination offset (default 0). JSON: `offset`.')
|
|
199
|
+
.option('--flights-per-destination <n>', 'Itineraries per destination (1-10, default 1). JSON: `flights_per_destination`.')
|
|
200
|
+
.option('--sort-by <strategy>', '`lowest` or `recommendation` (default: `lowest`). JSON: `sort`† (renames to `sort_by` after Phase 2).', 'lowest')
|
|
201
|
+
// Deprecated aliases — Phase 1 transition, remove in next major.
|
|
202
|
+
.option('--from <origins...>', 'DEPRECATED: use --origins.')
|
|
203
|
+
.option('--date <date>', 'DEPRECATED: use --departure-dates.')
|
|
204
|
+
.option('--return <date>', 'DEPRECATED: use --return-dates.')
|
|
205
|
+
.option('--departure-range <range>', 'DEPRECATED: use --departure-date-ranges.')
|
|
206
|
+
.option('--stay <range>', 'DEPRECATED: use --stay-days-range.')
|
|
207
|
+
.option('--cabin <class>', 'DEPRECATED: use --cabin-class.')
|
|
208
|
+
.option('--max-price <amount>', 'DEPRECATED: use --max-total.')
|
|
209
|
+
.option('--sort <strategy>', 'DEPRECATED: use --sort-by.')
|
|
14
210
|
.action(withClient(async (client, globals, opts) => {
|
|
15
|
-
|
|
16
|
-
const body =
|
|
17
|
-
passengers: { adt: 1 },
|
|
18
|
-
filters: {
|
|
19
|
-
locations: {
|
|
20
|
-
origins,
|
|
21
|
-
},
|
|
22
|
-
trip_type: opts.return ? 'roundtrip' : 'oneway',
|
|
23
|
-
},
|
|
24
|
-
flights_per_destination: 1,
|
|
25
|
-
sort: opts.sort,
|
|
26
|
-
limit: Number(opts.limit) || 20,
|
|
27
|
-
};
|
|
28
|
-
// BFF requires dates — use provided date or default to next 12 months.
|
|
29
|
-
if (opts.date) {
|
|
30
|
-
body['filters']['dates'] = {
|
|
31
|
-
departure_dates: [opts.date],
|
|
32
|
-
...(opts.return ? { return_dates: [opts.return] } : {}),
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
const today = new Date();
|
|
37
|
-
const start = today.toISOString().slice(0, 10);
|
|
38
|
-
const end = new Date(today.getFullYear() + 1, today.getMonth(), today.getDate())
|
|
39
|
-
.toISOString().slice(0, 10);
|
|
40
|
-
body['filters']['dates'] = {
|
|
41
|
-
departure_date_ranges: [{ start, end }],
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
if (opts.maxPrice) {
|
|
45
|
-
body['price_constraints'] = { max_total: Number(opts.maxPrice) };
|
|
46
|
-
}
|
|
211
|
+
applyDeprecatedAliases(opts);
|
|
212
|
+
const body = buildRequestBody(opts);
|
|
47
213
|
const response = await client.raw.POST('/api/v1/flights/destination-search', {
|
|
48
214
|
body,
|
|
49
215
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-destination.js","sourceRoot":"","sources":["../../src/commands/find-destination.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,
|
|
1
|
+
{"version":3,"file":"find-destination.js","sourceRoot":"","sources":["../../src/commands/find-destination.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-flight.js","sourceRoot":"","sources":["../../src/commands/find-flight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,8IAA8I,CAAC;SAC3J,cAAc,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SACnE,cAAc,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;SAC3E,cAAc,CAAC,eAAe,EAAE,6BAA6B,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACpE,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,SAAS,CAAC;SAC9F,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,8BAA8B,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,IAAI,GAA4B;YACpC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACtB,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpB,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;iBACxB;gBACD,KAAK,EAAE;oBACL,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;gBACD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAC/C,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;aACtC;YACD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;SAChC,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"find-flight.js","sourceRoot":"","sources":["../../src/commands/find-flight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,8IAA8I,CAAC;SAC3J,cAAc,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SACnE,cAAc,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;SAC3E,cAAc,CAAC,eAAe,EAAE,6BAA6B,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACpE,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,SAAS,CAAC;SAC9F,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,8BAA8B,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,IAAI,GAA4B;YACpC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACtB,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpB,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;iBACxB;gBACD,KAAK,EAAE;oBACL,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;gBACD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAC/C,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;aACtC;YACD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;SAChC,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAC/D,IAAI;SACL,CAAC,CAAC;QAEH,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flight-calendar.js","sourceRoot":"","sources":["../../src/commands/flight-calendar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,uDAAuD,CAAC;SACpE,cAAc,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;SACxD,cAAc,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,uDAAuD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,SAAS,CAAC;SACnD,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,KAAK,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAE/D,MAAM,IAAI,GAA4B;YACpC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACtB,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpB,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;iBACxB;gBACD,KAAK,EAAE;oBACL,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;iBAC5D;gBACD,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;aACtC;YACD,IAAI,EAAE,QAAQ;SACf,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"flight-calendar.js","sourceRoot":"","sources":["../../src/commands/flight-calendar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,uDAAuD,CAAC;SACpE,cAAc,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;SACxD,cAAc,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,uDAAuD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,SAAS,CAAC;SACnD,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,KAAK,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAE/D,MAAM,IAAI,GAA4B;YACpC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACtB,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpB,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;iBACxB;gBACD,KAAK,EAAE;oBACL,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;iBAC5D;gBACD,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;aACtC;YACD,IAAI,EAAE,QAAQ;SACf,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAC/D,IAAI;SACL,CAAC,CAAC;QAEH,MAAM,IAAI,GAAI,QAA+B,CAAC,IAAI,CAAC;QAEnD,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,KAAK,KAAK,GAAG,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,OAAO,OAAO,IAAI,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* `gojinko hotel-cancel` — hotel cancellation, idempotent.
|
|
4
|
+
*
|
|
5
|
+
* Dual-auth (JIN-281, mirrors flight_refund):
|
|
6
|
+
* - Guest: --ref + --last-name (must be provided together)
|
|
7
|
+
* - Authenticated: --provider-booking-id [+ --provider]
|
|
8
|
+
*
|
|
9
|
+
* The two modes are mutually exclusive at the BFF. Idempotent: the BFF
|
|
10
|
+
* persists the cancellation result and re-serves the stored response on
|
|
11
|
+
* subsequent calls (with `idempotent: true`). Safe to retry.
|
|
12
|
+
*
|
|
13
|
+
* Wraps BFF POST /api/v1/hotels/cancel-booking.
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerHotelCancelCommand(program: Command): void;
|
|
16
|
+
//# sourceMappingURL=hotel-cancel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotel-cancel.d.ts","sourceRoot":"","sources":["../../src/commands/hotel-cancel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8CjE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { withClient, output } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* `gojinko hotel-cancel` — hotel cancellation, idempotent.
|
|
4
|
+
*
|
|
5
|
+
* Dual-auth (JIN-281, mirrors flight_refund):
|
|
6
|
+
* - Guest: --ref + --last-name (must be provided together)
|
|
7
|
+
* - Authenticated: --provider-booking-id [+ --provider]
|
|
8
|
+
*
|
|
9
|
+
* The two modes are mutually exclusive at the BFF. Idempotent: the BFF
|
|
10
|
+
* persists the cancellation result and re-serves the stored response on
|
|
11
|
+
* subsequent calls (with `idempotent: true`). Safe to retry.
|
|
12
|
+
*
|
|
13
|
+
* Wraps BFF POST /api/v1/hotels/cancel-booking.
|
|
14
|
+
*/
|
|
15
|
+
export function registerHotelCancelCommand(program) {
|
|
16
|
+
program
|
|
17
|
+
.command('hotel-cancel')
|
|
18
|
+
.description('Cancel a hotel booking. Idempotent — safe to retry. Use either guest auth (--ref + --last-name) OR the authenticated shortcut (--provider-booking-id).')
|
|
19
|
+
.option('--ref <ref>', 'Jinko booking reference (e.g. JNK-A7B3X9). Guest path — pair with --last-name.')
|
|
20
|
+
.option('--last-name <name>', 'Last name of the lead guest. Guest path — pair with --ref.')
|
|
21
|
+
.option('--provider-booking-id <id>', 'Provider booking ID (authenticated shortcut). Mutually exclusive with --ref + --last-name.')
|
|
22
|
+
.option('--provider <code>', 'Provider code (e.g. "nuitee"). Optional, only meaningful with --provider-booking-id.')
|
|
23
|
+
.action(withClient(async (client, globals, opts) => {
|
|
24
|
+
const hasGuest = Boolean(opts.ref) && Boolean(opts.lastName);
|
|
25
|
+
const guestPartial = (Boolean(opts.ref) && !opts.lastName) || (!opts.ref && Boolean(opts.lastName));
|
|
26
|
+
const hasProviderId = Boolean(opts.providerBookingId);
|
|
27
|
+
if (guestPartial) {
|
|
28
|
+
console.error('Error: --ref and --last-name must be provided together.');
|
|
29
|
+
process.exit(3);
|
|
30
|
+
}
|
|
31
|
+
if (hasGuest && hasProviderId) {
|
|
32
|
+
console.error('Error: --ref + --last-name and --provider-booking-id are mutually exclusive. Pass one mode.');
|
|
33
|
+
process.exit(3);
|
|
34
|
+
}
|
|
35
|
+
if (!hasGuest && !hasProviderId) {
|
|
36
|
+
console.error('Error: provide either --ref + --last-name (guest) or --provider-booking-id (authenticated).');
|
|
37
|
+
process.exit(3);
|
|
38
|
+
}
|
|
39
|
+
const response = await client.hotelCancelBooking({
|
|
40
|
+
booking_ref: opts.ref,
|
|
41
|
+
last_name: opts.lastName,
|
|
42
|
+
provider_booking_id: opts.providerBookingId,
|
|
43
|
+
provider: opts.provider,
|
|
44
|
+
});
|
|
45
|
+
output(response, { format: globals.format });
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=hotel-cancel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotel-cancel.js","sourceRoot":"","sources":["../../src/commands/hotel-cancel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CACV,wJAAwJ,CACzJ;SACA,MAAM,CAAC,aAAa,EAAE,gFAAgF,CAAC;SACvG,MAAM,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;SAC1F,MAAM,CACL,4BAA4B,EAC5B,4FAA4F,CAC7F;SACA,MAAM,CAAC,mBAAmB,EAAE,sFAAsF,CAAC;SACnH,MAAM,CACL,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,YAAY,GAChB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,QAAQ,IAAI,aAAa,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CACX,6FAA6F,CAC9F,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CACX,6FAA6F,CAC9F,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC;YAC/C,WAAW,EAAE,IAAI,CAAC,GAAG;YACrB,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,mBAAmB,EAAE,IAAI,CAAC,iBAAiB;YAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotel-details.d.ts","sourceRoot":"","sources":["../../src/commands/hotel-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAelE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { withClient, output } from './shared.js';
|
|
2
|
+
export function registerHotelDetailsCommand(program) {
|
|
3
|
+
program
|
|
4
|
+
.command('hotel-details')
|
|
5
|
+
.description('Fetch rich metadata (gallery, facilities, policies, per-room details) for a single hotel.')
|
|
6
|
+
.requiredOption('--hotel-id <id>', 'hotel ID (from a prior hotel-search offer)')
|
|
7
|
+
.option('--checkin <date>', 'check-in date (YYYY-MM-DD) — accepted for future cache-key alignment, currently unused by the BFF')
|
|
8
|
+
.option('--checkout <date>', 'check-out date (YYYY-MM-DD) — accepted for future cache-key alignment, currently unused by the BFF')
|
|
9
|
+
.action(withClient(async (client, globals, opts) => {
|
|
10
|
+
const response = await client.hotelDetails({
|
|
11
|
+
hotel_id: opts.hotelId,
|
|
12
|
+
...(opts.checkin ? { checkin: opts.checkin } : {}),
|
|
13
|
+
...(opts.checkout ? { checkout: opts.checkout } : {}),
|
|
14
|
+
});
|
|
15
|
+
output(response, { format: globals.format });
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=hotel-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotel-details.js","sourceRoot":"","sources":["../../src/commands/hotel-details.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,2FAA2F,CAAC;SACxG,cAAc,CAAC,iBAAiB,EAAE,4CAA4C,CAAC;SAC/E,MAAM,CAAC,kBAAkB,EAAE,mGAAmG,CAAC;SAC/H,MAAM,CAAC,mBAAmB,EAAE,oGAAoG,CAAC;SACjI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;YACzC,QAAQ,EAAE,IAAI,CAAC,OAAO;YACtB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* `gojinko hotel-lookup-booking` — guest-access hotel booking retrieval.
|
|
4
|
+
* JIN-281. Wraps BFF POST /api/v1/hotels/retrieve-booking.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerHotelLookupBookingCommand(program: Command): void;
|
|
7
|
+
//# sourceMappingURL=hotel-lookup-booking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotel-lookup-booking.d.ts","sourceRoot":"","sources":["../../src/commands/hotel-lookup-booking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiBxE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { withClient, output } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* `gojinko hotel-lookup-booking` — guest-access hotel booking retrieval.
|
|
4
|
+
* JIN-281. Wraps BFF POST /api/v1/hotels/retrieve-booking.
|
|
5
|
+
*/
|
|
6
|
+
export function registerHotelLookupBookingCommand(program) {
|
|
7
|
+
program
|
|
8
|
+
.command('hotel-lookup-booking')
|
|
9
|
+
.description('Look up a hotel booking by Jinko reference + last name (guest access). Returns status, hotel details, total, and cancellation policy.')
|
|
10
|
+
.requiredOption('--ref <ref>', 'Jinko booking reference (e.g. JNK-A7B3X9)')
|
|
11
|
+
.requiredOption('--last-name <name>', 'Last name of the lead guest')
|
|
12
|
+
.action(withClient(async (client, globals, opts) => {
|
|
13
|
+
const response = await client.hotelRetrieveBooking({
|
|
14
|
+
booking_ref: opts.ref,
|
|
15
|
+
last_name: opts.lastName,
|
|
16
|
+
});
|
|
17
|
+
output(response, { format: globals.format });
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=hotel-lookup-booking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotel-lookup-booking.js","sourceRoot":"","sources":["../../src/commands/hotel-lookup-booking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAAC,OAAgB;IAChE,OAAO;SACJ,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CACV,uIAAuI,CACxI;SACA,cAAc,CAAC,aAAa,EAAE,2CAA2C,CAAC;SAC1E,cAAc,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;SACnE,MAAM,CACL,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACzC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC;YACjD,WAAW,EAAE,IAAI,CAAC,GAAG;YACrB,SAAS,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotel-search.d.ts","sourceRoot":"","sources":["../../src/commands/hotel-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"hotel-search.d.ts","sourceRoot":"","sources":["../../src/commands/hotel-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyEjE"}
|
|
@@ -20,6 +20,7 @@ export function registerHotelSearchCommand(program) {
|
|
|
20
20
|
.option('--nationality <code>', 'guest nationality (ISO 3166-1 alpha-2)')
|
|
21
21
|
.option('--min-rating <n>', 'minimum guest review rating (0-10)')
|
|
22
22
|
.option('--stars <n>', 'minimum star rating (1-5)')
|
|
23
|
+
.option('--max-stars <n>', 'maximum star rating (1-5)')
|
|
23
24
|
.option('--min-reviews <n>', 'minimum number of reviews')
|
|
24
25
|
.option('--max-results <n>', 'maximum hotels to return (default 50)')
|
|
25
26
|
.action(withClient(async (client, globals, opts) => {
|
|
@@ -39,40 +40,42 @@ export function registerHotelSearchCommand(program) {
|
|
|
39
40
|
};
|
|
40
41
|
// Destination
|
|
41
42
|
if (opts.query)
|
|
42
|
-
body
|
|
43
|
+
body.query = opts.query;
|
|
43
44
|
if (opts.city)
|
|
44
|
-
body
|
|
45
|
+
body.city_name = opts.city;
|
|
45
46
|
if (opts.country)
|
|
46
|
-
body
|
|
47
|
+
body.country_code = opts.country;
|
|
47
48
|
if (opts.lat)
|
|
48
|
-
body
|
|
49
|
+
body.latitude = Number(opts.lat);
|
|
49
50
|
if (opts.lng)
|
|
50
|
-
body
|
|
51
|
+
body.longitude = Number(opts.lng);
|
|
51
52
|
if (opts.radius)
|
|
52
|
-
body
|
|
53
|
+
body.radius_km = Number(opts.radius);
|
|
53
54
|
if (opts.placeId)
|
|
54
|
-
body
|
|
55
|
+
body.place_id = opts.placeId;
|
|
55
56
|
if (opts.hotelIds)
|
|
56
|
-
body
|
|
57
|
+
body.hotel_ids = opts.hotelIds;
|
|
57
58
|
// Occupancy shorthand
|
|
58
59
|
if (opts.children)
|
|
59
|
-
body
|
|
60
|
+
body.children = opts.children.map(Number);
|
|
60
61
|
if (opts.rooms)
|
|
61
|
-
body
|
|
62
|
+
body.rooms = Number(opts.rooms);
|
|
62
63
|
// Context
|
|
63
64
|
if (opts.currency)
|
|
64
|
-
body
|
|
65
|
+
body.currency = opts.currency;
|
|
65
66
|
if (opts.nationality)
|
|
66
|
-
body
|
|
67
|
+
body.guest_nationality = opts.nationality;
|
|
67
68
|
// Filters
|
|
68
69
|
if (opts.minRating)
|
|
69
|
-
body
|
|
70
|
+
body.min_rating = Number(opts.minRating);
|
|
70
71
|
if (opts.stars)
|
|
71
|
-
body
|
|
72
|
+
body.min_star_rating = Number(opts.stars);
|
|
73
|
+
if (opts.maxStars)
|
|
74
|
+
body.max_star_rating = Number(opts.maxStars);
|
|
72
75
|
if (opts.minReviews)
|
|
73
|
-
body
|
|
76
|
+
body.min_reviews = Number(opts.minReviews);
|
|
74
77
|
if (opts.maxResults)
|
|
75
|
-
body
|
|
78
|
+
body.max_results = Number(opts.maxResults);
|
|
76
79
|
const response = await client.raw.POST('/api/v1/hotels/shop', {
|
|
77
80
|
body,
|
|
78
81
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotel-search.js","sourceRoot":"","sources":["../../src/commands/hotel-search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hotel-search.js","sourceRoot":"","sources":["../../src/commands/hotel-search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKjD,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,gBAAgB,EAAE,2CAA2C,CAAC;SACrE,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;SACnD,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;SACvE,MAAM,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,CAAC;SAC1E,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;SAC5D,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,SAAS,CAAC;SACnE,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,SAAS,CAAC;SACrE,MAAM,CAAC,cAAc,EAAE,8BAA8B,EAAE,GAAG,CAAC;SAC3D,MAAM,CAAC,sBAAsB,EAAE,qCAAqC,CAAC;SACrE,MAAM,CAAC,aAAa,EAAE,6BAA6B,CAAC;SACpD,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;SACnE,MAAM,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;SACxE,MAAM,CAAC,kBAAkB,EAAE,oCAAoC,CAAC;SAChE,MAAM,CAAC,aAAa,EAAE,2BAA2B,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;SACtD,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;SACxD,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;SACpE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC;QAC5F,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;YAC1G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAmB;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;SACjC,CAAC;QAEF,cAAc;QACd,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1C,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;QACnD,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC/C,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,sBAAsB;QACtB,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,QAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEhD,UAAU;QACV,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjD,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC;QAEhE,UAAU;QACV,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC5D,IAAI;SACL,CAAC,CAAC;QAEH,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-monitoring.d.ts","sourceRoot":"","sources":["../../src/commands/price-monitoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4DrE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { withClient, output } from './shared.js';
|
|
2
|
+
// price_monitoring — cache-only flight price snapshot for a fixed OD +
|
|
3
|
+
// dates pair. JIN-256. Intended to be wired into a cron / scheduled job
|
|
4
|
+
// so partners can track a route over time. On cache miss the BFF returns
|
|
5
|
+
// status:"stale" and this command surfaces it as a non-zero-but-not-error
|
|
6
|
+
// path — the caller can use --format=json + jq to act on it.
|
|
7
|
+
export function registerPriceMonitoringCommand(program) {
|
|
8
|
+
program
|
|
9
|
+
.command('price-monitoring')
|
|
10
|
+
.description('Cache-only flight price snapshot for a fixed OD + dates pair. Poll-friendly; never triggers a live call.')
|
|
11
|
+
.option('--from <origin>', 'origin IATA code (e.g. PAR for city, CDG for airport)')
|
|
12
|
+
.option('--origin-type <type>', 'origin code type: city or airport (default: city)', 'city')
|
|
13
|
+
.option('--to <destination>', 'destination IATA code (e.g. NYC for city, JFK for airport)')
|
|
14
|
+
.option('--destination-type <type>', 'destination code type: city or airport (default: city)', 'city')
|
|
15
|
+
.option('--date <date>', 'departure date (YYYY-MM-DD)')
|
|
16
|
+
.option('--return <date>', 'return date for round-trip (YYYY-MM-DD)')
|
|
17
|
+
.option('--cabin <class>', 'cabin class: economy, premium_economy, business, first')
|
|
18
|
+
.option('--direct-only', 'only consider direct flights')
|
|
19
|
+
.option('--max-price <amount>', 'upper bound on total fare')
|
|
20
|
+
.option('--include-carriers <codes...>', 'whitelist IATA 2-letter carrier codes (e.g. AF KL)')
|
|
21
|
+
.option('--exclude-carriers <codes...>', 'blacklist IATA 2-letter carrier codes (e.g. FR U2)')
|
|
22
|
+
.action(withClient(async (client, globals, opts) => {
|
|
23
|
+
if (!opts.from || !opts.to || !opts.date) {
|
|
24
|
+
console.error('Error: --from, --to, and --date are required.');
|
|
25
|
+
process.exit(3);
|
|
26
|
+
}
|
|
27
|
+
const body = {
|
|
28
|
+
origin: String(opts.from).toUpperCase(),
|
|
29
|
+
origin_type: opts.originType ?? 'city',
|
|
30
|
+
destination: String(opts.to).toUpperCase(),
|
|
31
|
+
destination_type: opts.destinationType ?? 'city',
|
|
32
|
+
departure_date: opts.date,
|
|
33
|
+
};
|
|
34
|
+
if (opts.return)
|
|
35
|
+
body.return_date = opts.return;
|
|
36
|
+
if (opts.cabin)
|
|
37
|
+
body.cabin_class = opts.cabin;
|
|
38
|
+
if (opts.directOnly)
|
|
39
|
+
body.direct_only = true;
|
|
40
|
+
if (opts.maxPrice)
|
|
41
|
+
body.max_price = Number(opts.maxPrice);
|
|
42
|
+
if (opts.includeCarriers)
|
|
43
|
+
body.include_carriers = opts.includeCarriers;
|
|
44
|
+
if (opts.excludeCarriers)
|
|
45
|
+
body.exclude_carriers = opts.excludeCarriers;
|
|
46
|
+
const response = await client.raw.POST('/api/v1/flights/monitor', { body });
|
|
47
|
+
output(response.data, { format: globals.format });
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=price-monitoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-monitoring.js","sourceRoot":"","sources":["../../src/commands/price-monitoring.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,uEAAuE;AACvE,wEAAwE;AACxE,yEAAyE;AACzE,0EAA0E;AAC1E,6DAA6D;AAC7D,MAAM,UAAU,8BAA8B,CAAC,OAAgB;IAC7D,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CACV,0GAA0G,CAC3G;SACA,MAAM,CAAC,iBAAiB,EAAE,uDAAuD,CAAC;SAClF,MAAM,CACL,sBAAsB,EACtB,mDAAmD,EACnD,MAAM,CACP;SACA,MAAM,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;SAC1F,MAAM,CACL,2BAA2B,EAC3B,wDAAwD,EACxD,MAAM,CACP;SACA,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACpE,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,CAAC;SACnF,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC;SACvD,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;SAC3D,MAAM,CACL,+BAA+B,EAC/B,oDAAoD,CACrD;SACA,MAAM,CACL,+BAA+B,EAC/B,oDAAoD,CACrD;SACA,MAAM,CACL,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAA4B;YACpC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;YACvC,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,MAAM;YACtC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC1C,gBAAgB,EAAE,IAAI,CAAC,eAAe,IAAI,MAAM;YAChD,cAAc,EAAE,IAAI,CAAC,IAAI;SAC1B,CAAC;QACF,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;QAChD,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9C,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC7C,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QACvE,IAAI,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAEvE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CACpC,yBAAkC,EAClC,EAAE,IAAI,EAAW,CAClB,CAAC;QAEF,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
|
|
@@ -15,5 +15,26 @@ export declare function validateAuthFields(opts: {
|
|
|
15
15
|
lastName?: string;
|
|
16
16
|
orderId?: string;
|
|
17
17
|
}): void;
|
|
18
|
+
/**
|
|
19
|
+
* Build a refund request body from CLI options, picking the right auth mode.
|
|
20
|
+
*
|
|
21
|
+
* Guest auth: --booking-ref + --last-name (public; validated by BFF).
|
|
22
|
+
* Authenticated: --order-id (DevPlatform OAuth / jnk_* keys).
|
|
23
|
+
*
|
|
24
|
+
* Exactly one mode must be provided — the BFF rejects mixed combinations.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildAuthFields(opts: {
|
|
27
|
+
bookingRef?: string;
|
|
28
|
+
lastName?: string;
|
|
29
|
+
orderId?: string;
|
|
30
|
+
provider?: string;
|
|
31
|
+
ticketNumbers?: string[];
|
|
32
|
+
}): {
|
|
33
|
+
ticket_numbers?: string[] | undefined;
|
|
34
|
+
provider?: string | undefined;
|
|
35
|
+
last_name?: string | undefined;
|
|
36
|
+
booking_ref?: string | undefined;
|
|
37
|
+
order_id?: string | undefined;
|
|
38
|
+
};
|
|
18
39
|
export declare function registerRefundCommand(program: Command): void;
|
|
19
40
|
//# sourceMappingURL=refund.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refund.d.ts","sourceRoot":"","sources":["../../src/commands/refund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAiBP;
|
|
1
|
+
{"version":3,"file":"refund.d.ts","sourceRoot":"","sources":["../../src/commands/refund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAiBP;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;;;;;;EASA;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwD5D"}
|
package/dist/commands/refund.js
CHANGED
|
@@ -36,7 +36,7 @@ export function validateAuthFields(opts) {
|
|
|
36
36
|
*
|
|
37
37
|
* Exactly one mode must be provided — the BFF rejects mixed combinations.
|
|
38
38
|
*/
|
|
39
|
-
function buildAuthFields(opts) {
|
|
39
|
+
export function buildAuthFields(opts) {
|
|
40
40
|
validateAuthFields(opts);
|
|
41
41
|
return {
|
|
42
42
|
...(opts.orderId && { order_id: opts.orderId }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refund.js","sourceRoot":"","sources":["../../src/commands/refund.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,eAAe,GACnB,kHAAkH,CAAC;AAErH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAIlC;IACC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,aAAa,IAAI,WAAW,CAAC;IAClD,MAAM,eAAe,GAAG,CAAC,aAAa,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;IAExE,IAAI,UAAU,IAAI,CAAC,aAAa,IAAI,WAAW,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,eAAe,EAAE,CAAC;QACpB,6EAA6E;QAC7E,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,
|
|
1
|
+
{"version":3,"file":"refund.js","sourceRoot":"","sources":["../../src/commands/refund.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,aAAa,IAAI,OAAO,CAsCvC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,9 @@ import { registerFindFlightCommand } from './commands/find-flight.js';
|
|
|
6
6
|
import { registerFindDestinationCommand } from './commands/find-destination.js';
|
|
7
7
|
import { registerFlightSearchCommand } from './commands/flight-search.js';
|
|
8
8
|
import { registerFlightCalendarCommand } from './commands/flight-calendar.js';
|
|
9
|
+
import { registerPriceMonitoringCommand } from './commands/price-monitoring.js';
|
|
9
10
|
import { registerHotelSearchCommand } from './commands/hotel-search.js';
|
|
11
|
+
import { registerHotelDetailsCommand } from './commands/hotel-details.js';
|
|
10
12
|
import { registerTripCommand } from './commands/trip.js';
|
|
11
13
|
import { registerBookCommand } from './commands/checkout.js';
|
|
12
14
|
import { registerTripStatusCommand } from './commands/trip-status.js';
|
|
@@ -14,6 +16,8 @@ import { registerSelectAncillariesCommand } from './commands/select-ancillaries.
|
|
|
14
16
|
import { registerRefundCommand } from './commands/refund.js';
|
|
15
17
|
import { registerExchangeCommand } from './commands/exchange.js';
|
|
16
18
|
import { registerLookupBookingCommand } from './commands/lookup-booking.js';
|
|
19
|
+
import { registerHotelLookupBookingCommand } from './commands/hotel-lookup-booking.js';
|
|
20
|
+
import { registerHotelCancelCommand } from './commands/hotel-cancel.js';
|
|
17
21
|
import { registerAuthCommands } from './commands/auth/index.js';
|
|
18
22
|
import { registerSchemaCommand } from './commands/schema.js';
|
|
19
23
|
import { registerConfigCommands } from './commands/config/index.js';
|
|
@@ -33,7 +37,9 @@ export function createProgram() {
|
|
|
33
37
|
registerFindDestinationCommand(program);
|
|
34
38
|
registerFlightSearchCommand(program);
|
|
35
39
|
registerFlightCalendarCommand(program);
|
|
40
|
+
registerPriceMonitoringCommand(program);
|
|
36
41
|
registerHotelSearchCommand(program);
|
|
42
|
+
registerHotelDetailsCommand(program);
|
|
37
43
|
// Trip building + checkout
|
|
38
44
|
registerTripCommand(program);
|
|
39
45
|
registerBookCommand(program);
|
|
@@ -41,6 +47,8 @@ export function createProgram() {
|
|
|
41
47
|
registerTripStatusCommand(program);
|
|
42
48
|
// Post-booking
|
|
43
49
|
registerLookupBookingCommand(program);
|
|
50
|
+
registerHotelLookupBookingCommand(program);
|
|
51
|
+
registerHotelCancelCommand(program);
|
|
44
52
|
registerRefundCommand(program);
|
|
45
53
|
registerExchangeCommand(program);
|
|
46
54
|
// Utility commands
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,iEAAiE;AACjE,sEAAsE;AACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACpE,CAAC;AAEzB,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,8EAA8E,CAAC;SAC3F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;SACpB,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,EAAE,MAAM,CAAC;SAC7E,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC,CAAC;IAEzE,YAAY;IACZ,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxC,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACvC,0BAA0B,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gojinko/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"jinko": "./dist/bin/jinko.js"
|
|
@@ -17,19 +17,16 @@
|
|
|
17
17
|
"docs:gen": "tsx scripts/gen-cli-docs.ts"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@gojinko/api-client": "1.
|
|
20
|
+
"@gojinko/api-client": "1.2.0",
|
|
21
21
|
"commander": "^12.1.0",
|
|
22
22
|
"chalk": "^5.4.1",
|
|
23
|
-
"open": "^10.0.0"
|
|
24
|
-
"zod": "^3.23.8",
|
|
25
|
-
"yaml": "^2.7.0"
|
|
23
|
+
"open": "^10.0.0"
|
|
26
24
|
},
|
|
27
25
|
"publishConfig": {
|
|
28
26
|
"access": "public"
|
|
29
27
|
},
|
|
30
28
|
"files": [
|
|
31
29
|
"dist",
|
|
32
|
-
"bin",
|
|
33
30
|
"SKILL.md",
|
|
34
31
|
"README.md"
|
|
35
32
|
],
|