@gojinko/cli 2.11.0 → 2.13.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/commands/get-ancillaries.d.ts +3 -0
- package/dist/commands/get-ancillaries.d.ts.map +1 -0
- package/dist/commands/get-ancillaries.js +26 -0
- package/dist/commands/get-ancillaries.js.map +1 -0
- package/dist/commands/schema.d.ts +1 -1
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +99 -85
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/trip.d.ts.map +1 -1
- package/dist/commands/trip.js +2 -2
- package/dist/commands/trip.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-ancillaries.d.ts","sourceRoot":"","sources":["../../src/commands/get-ancillaries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoCpE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { withClient, output } from "./shared.js";
|
|
2
|
+
export function registerGetAncillariesCommand(program) {
|
|
3
|
+
program
|
|
4
|
+
.command("get-ancillaries")
|
|
5
|
+
.summary("List purchasable ancillaries for a trip (bags, seats, meals) — no checkout URL")
|
|
6
|
+
.description('Lists the available ancillaries for a trip WITHOUT generating a checkout URL. A price quote runs transparently behind the API and is reused while valid, so repeat calls are cheap. Set travelers first — ancillaries are priced per passenger. If the quote is still being priced the API returns status="pricing"; by default this command polls until it is "ready". Pass --no-wait to return the pricing status immediately.')
|
|
7
|
+
.requiredOption("--trip-id <id>", "trip ID [required]")
|
|
8
|
+
.option("--no-wait", 'return immediately even if the quote is still pricing (status="pricing")')
|
|
9
|
+
.action(withClient(async (client, globals, opts) => {
|
|
10
|
+
let response = await client.getAncillaries(opts.tripId);
|
|
11
|
+
// The quote runs upstream and can still be pricing — poll the same call
|
|
12
|
+
// until it reports "ready" (unless --no-wait was passed).
|
|
13
|
+
const maxAttempts = 15;
|
|
14
|
+
let attempts = 0;
|
|
15
|
+
while (opts.wait !== false &&
|
|
16
|
+
response.status === "pricing" &&
|
|
17
|
+
attempts < maxAttempts) {
|
|
18
|
+
const delayMs = (response.retry_after_seconds ?? 2) * 1000;
|
|
19
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
20
|
+
response = await client.getAncillaries(opts.tripId);
|
|
21
|
+
attempts += 1;
|
|
22
|
+
}
|
|
23
|
+
output(response, { format: globals.format });
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=get-ancillaries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-ancillaries.js","sourceRoot":"","sources":["../../src/commands/get-ancillaries.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,OAAO,CACN,gFAAgF,CACjF;SACA,WAAW,CACV,kaAAka,CACna;SACA,cAAc,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;SACtD,MAAM,CACL,WAAW,EACX,0EAA0E,CAC3E;SACA,MAAM,CACL,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACzC,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExD,wEAAwE;QACxE,0DAA0D;QAC1D,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,OACE,IAAI,CAAC,IAAI,KAAK,KAAK;YACnB,QAAQ,CAAC,MAAM,KAAK,SAAS;YAC7B,QAAQ,GAAG,WAAW,EACtB,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,mBAAmB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7D,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,QAAQ,IAAI,CAAC,CAAC;QAChB,CAAC;QAED,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":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmC5D"}
|
package/dist/commands/schema.js
CHANGED
|
@@ -1,135 +1,149 @@
|
|
|
1
|
-
import { output } from
|
|
2
|
-
import { getGlobalOptions } from
|
|
1
|
+
import { output } from "./shared.js";
|
|
2
|
+
import { getGlobalOptions } from "../config/config.js";
|
|
3
3
|
/**
|
|
4
4
|
* Schema definitions for CLI commands. Names match MCP tools 1:1.
|
|
5
5
|
*/
|
|
6
6
|
const SCHEMAS = {
|
|
7
|
-
|
|
8
|
-
description:
|
|
7
|
+
"find-destination": {
|
|
8
|
+
description: "Discover destinations from origin airports (POST /flights/destination-search).",
|
|
9
9
|
request: {
|
|
10
|
-
passengers:
|
|
10
|
+
passengers: "{ adt: number }",
|
|
11
11
|
filters: {
|
|
12
|
-
locations:
|
|
13
|
-
dates:
|
|
14
|
-
trip_type:
|
|
12
|
+
locations: "{ origins: string[] }",
|
|
13
|
+
dates: "{ departure_dates?: string[], return_dates?: string[] }?",
|
|
14
|
+
trip_type: "oneway | roundtrip",
|
|
15
15
|
},
|
|
16
|
-
flights_per_destination:
|
|
17
|
-
limit:
|
|
18
|
-
price_constraints:
|
|
16
|
+
flights_per_destination: "number? (default 1)",
|
|
17
|
+
limit: "number? (default 20)",
|
|
18
|
+
price_constraints: "{ max_total?: number }?",
|
|
19
19
|
},
|
|
20
20
|
response: {
|
|
21
|
-
origin:
|
|
22
|
-
destinations:
|
|
23
|
-
pagination:
|
|
24
|
-
total:
|
|
21
|
+
origin: "{ city_code, city_name, country_code }",
|
|
22
|
+
destinations: "[{ iata_code, city_name, lowest_fare_flight, flights }]",
|
|
23
|
+
pagination: "{ next_page_token }",
|
|
24
|
+
total: "number",
|
|
25
25
|
},
|
|
26
26
|
},
|
|
27
|
-
|
|
28
|
-
description:
|
|
27
|
+
"flight-search": {
|
|
28
|
+
description: "Live flight search or price-check a specific offer (POST /flights/shop).",
|
|
29
29
|
request: {
|
|
30
30
|
mode_a_search: {
|
|
31
|
-
origin:
|
|
32
|
-
destination:
|
|
33
|
-
departure_date:
|
|
34
|
-
return_date:
|
|
35
|
-
trip_type:
|
|
36
|
-
cabin_class:
|
|
37
|
-
direct_only:
|
|
38
|
-
max_price:
|
|
39
|
-
passengers:
|
|
31
|
+
origin: "string (IATA code)",
|
|
32
|
+
destination: "string (IATA code)",
|
|
33
|
+
departure_date: "string (YYYY-MM-DD)",
|
|
34
|
+
return_date: "string? (YYYY-MM-DD)",
|
|
35
|
+
trip_type: "oneway | roundtrip",
|
|
36
|
+
cabin_class: "economy | premium_economy | business | first",
|
|
37
|
+
direct_only: "boolean?",
|
|
38
|
+
max_price: "number?",
|
|
39
|
+
passengers: "{ adults?: number, children?: number, infants?: number }",
|
|
40
40
|
},
|
|
41
41
|
mode_b_price_check: {
|
|
42
|
-
offer_token:
|
|
43
|
-
passengers:
|
|
42
|
+
offer_token: "string (from flight-search or flight-calendar results)",
|
|
43
|
+
passengers: "{ adults?: number, children?: number, infants?: number }",
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
46
|
response: {
|
|
47
|
-
mode:
|
|
48
|
-
flights:
|
|
49
|
-
fares:
|
|
47
|
+
mode: "search | price_check",
|
|
48
|
+
flights: "[{ offer_token, origin, destination, total_price, currency, outbound_*, inbound_*, fares? }]",
|
|
49
|
+
fares: "(price_check only) [{ trip_item_token, brand_name, cabin_class, total_price, is_refundable, ... }]",
|
|
50
50
|
},
|
|
51
51
|
},
|
|
52
|
-
|
|
53
|
-
description:
|
|
52
|
+
"flight-calendar": {
|
|
53
|
+
description: "Cheapest prices across a date range (POST /flights/search with date range).",
|
|
54
54
|
request: {
|
|
55
|
-
from:
|
|
56
|
-
to:
|
|
57
|
-
month:
|
|
58
|
-
cabin_class:
|
|
59
|
-
direct_only:
|
|
55
|
+
from: "string (IATA code, origin)",
|
|
56
|
+
to: "string (IATA code, destination)",
|
|
57
|
+
month: "string (YYYY-MM)",
|
|
58
|
+
cabin_class: "string? (default economy)",
|
|
59
|
+
direct_only: "boolean?",
|
|
60
60
|
},
|
|
61
61
|
response: {
|
|
62
|
-
itineraries:
|
|
62
|
+
itineraries: "[{ id, slices, total_amount, ... }]",
|
|
63
63
|
},
|
|
64
64
|
},
|
|
65
|
-
|
|
66
|
-
description:
|
|
65
|
+
trip: {
|
|
66
|
+
description: "Manage a trip: create, add/remove flight items, set travelers (POST /shop/sync).",
|
|
67
67
|
request: {
|
|
68
|
-
trip_id:
|
|
69
|
-
add_item:
|
|
70
|
-
remove_item:
|
|
71
|
-
upsert_travelers:
|
|
68
|
+
trip_id: "string? (omit to create new)",
|
|
69
|
+
add_item: "{ trip_item_token: string }? (from flight-search)",
|
|
70
|
+
remove_item: "{ item_id: string }? (item_id from prior trip response items[].item_id; requires trip_id; can be combined with add_item to swap in one call)",
|
|
71
|
+
upsert_travelers: "{ travelers: [{ first_name, last_name, passenger_type, date_of_birth?, gender?, frequent_flyer?: { airline, number }, ... }], contact?: { email, phone } }? (travelers + contact email/phone required to book; date_of_birth + gender required for flights, optional for hotel-only; contact name taken from first traveler)",
|
|
72
72
|
},
|
|
73
73
|
response: {
|
|
74
|
-
trip_id:
|
|
75
|
-
status:
|
|
76
|
-
items:
|
|
77
|
-
travelers:
|
|
78
|
-
contact:
|
|
79
|
-
totals:
|
|
80
|
-
actions_performed:
|
|
74
|
+
trip_id: "string",
|
|
75
|
+
status: "string",
|
|
76
|
+
items: "[{ item_id, type, description, price, currency }]",
|
|
77
|
+
travelers: "[...]",
|
|
78
|
+
contact: "{ email, phone }",
|
|
79
|
+
totals: "{ total, currency }",
|
|
80
|
+
actions_performed: "string[]",
|
|
81
81
|
},
|
|
82
82
|
},
|
|
83
|
-
|
|
84
|
-
description:
|
|
83
|
+
book: {
|
|
84
|
+
description: "Book a trip — schedules checkout and returns a Stripe payment URL, plus cart items and available ancillaries (POST /shop/sync/checkout).",
|
|
85
85
|
request: {
|
|
86
|
-
trip_id:
|
|
86
|
+
trip_id: "string (from trip command)",
|
|
87
87
|
},
|
|
88
88
|
response: {
|
|
89
|
-
session_id:
|
|
90
|
-
checkout_url:
|
|
91
|
-
expires_at:
|
|
92
|
-
status:
|
|
93
|
-
total_amount:
|
|
94
|
-
items:
|
|
89
|
+
session_id: "string",
|
|
90
|
+
checkout_url: "string",
|
|
91
|
+
expires_at: "string? (ISO datetime)",
|
|
92
|
+
status: "ready | pending | failed",
|
|
93
|
+
total_amount: "{ amount: number, currency: string }?",
|
|
94
|
+
items: "[{ item_id, kind, price, pax_count, available_ancillaries: [...], selected_ancillaries: [...] }]",
|
|
95
95
|
},
|
|
96
96
|
},
|
|
97
|
-
|
|
98
|
-
description:
|
|
97
|
+
"trip-status": {
|
|
98
|
+
description: "Full lifecycle state for a trip: cart, quote, fulfillment, bookings (GET /shop/sync/:id).",
|
|
99
99
|
request: {
|
|
100
|
-
trip_id:
|
|
100
|
+
trip_id: "string",
|
|
101
101
|
},
|
|
102
102
|
response: {
|
|
103
|
-
trip_id:
|
|
104
|
-
status:
|
|
105
|
-
travelers:
|
|
106
|
-
contact:
|
|
107
|
-
items:
|
|
108
|
-
total_amount:
|
|
109
|
-
quote:
|
|
110
|
-
fulfillment:
|
|
111
|
-
bookings:
|
|
112
|
-
created_at:
|
|
113
|
-
updated_at:
|
|
103
|
+
trip_id: "string",
|
|
104
|
+
status: "draft | quoting | quoted | fulfillment_prepared | fulfilling | fulfilled | partially_fulfilled | failed | cancelled",
|
|
105
|
+
travelers: "[...]",
|
|
106
|
+
contact: "{ email?, phone? }?",
|
|
107
|
+
items: "[{ item_id, kind, price, pax_count, available_ancillaries, selected_ancillaries }]",
|
|
108
|
+
total_amount: "{ amount, currency }?",
|
|
109
|
+
quote: "{ quoted_cart_id, status, expires_at? }?",
|
|
110
|
+
fulfillment: "{ fulfillment_cart_id, status, phase?, scheduled_at? }?",
|
|
111
|
+
bookings: "[{ item_id, kind, booking_reference, pnr?, provider_status? }]?",
|
|
112
|
+
created_at: "string (ISO)",
|
|
113
|
+
updated_at: "string (ISO)",
|
|
114
114
|
},
|
|
115
115
|
},
|
|
116
|
-
|
|
117
|
-
description:
|
|
116
|
+
"get-ancillaries": {
|
|
117
|
+
description: "List the purchasable ancillaries for a trip (bags, seats, meals) without generating a checkout URL. Runs a quote transparently and polls until ready (GET /v1/trip/:id/ancillaries).",
|
|
118
118
|
request: {
|
|
119
|
-
trip_id:
|
|
120
|
-
item_id: 'string',
|
|
121
|
-
selections: '[{ offer_id, pax_ref_id?, quantity? }]',
|
|
119
|
+
trip_id: "string",
|
|
122
120
|
},
|
|
123
121
|
response: {
|
|
124
|
-
trip_id:
|
|
125
|
-
|
|
122
|
+
trip_id: "string",
|
|
123
|
+
status: "ready | pricing",
|
|
124
|
+
quoted_cart_id: "number?",
|
|
125
|
+
expires_at: "string (ISO)?",
|
|
126
|
+
retry_after_seconds: "number? (present when status=pricing)",
|
|
127
|
+
items: "[{ item_id, kind, price, pax_count, available_ancillaries: [{ offer_id, type, label, price_per_unit, per_pax, max_quantity }], selected_ancillaries }]",
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
"select-ancillaries": {
|
|
131
|
+
description: "Select bags / seats / meals for a trip item (POST /shop/sync/ancillaries).",
|
|
132
|
+
request: {
|
|
133
|
+
trip_id: "string",
|
|
134
|
+
item_id: "string",
|
|
135
|
+
selections: "[{ offer_id, pax_ref_id?, quantity? }]",
|
|
136
|
+
},
|
|
137
|
+
response: {
|
|
138
|
+
trip_id: "string",
|
|
139
|
+
items: "[...]",
|
|
126
140
|
},
|
|
127
141
|
},
|
|
128
142
|
};
|
|
129
143
|
export function registerSchemaCommand(program) {
|
|
130
144
|
program
|
|
131
|
-
.command(
|
|
132
|
-
.description(
|
|
145
|
+
.command("schema [command]")
|
|
146
|
+
.description("Show request/response schema for a command. List all if no command given.")
|
|
133
147
|
.action((commandName, _opts, cmd) => {
|
|
134
148
|
const globals = getGlobalOptions(cmd);
|
|
135
149
|
if (!commandName) {
|
|
@@ -142,7 +156,7 @@ export function registerSchemaCommand(program) {
|
|
|
142
156
|
}
|
|
143
157
|
const schema = SCHEMAS[commandName];
|
|
144
158
|
if (!schema) {
|
|
145
|
-
const available = Object.keys(SCHEMAS).join(
|
|
159
|
+
const available = Object.keys(SCHEMAS).join(", ");
|
|
146
160
|
console.error(`Unknown command: ${commandName}. Available: ${available}`);
|
|
147
161
|
process.exit(3);
|
|
148
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trip.d.ts","sourceRoot":"","sources":["../../src/commands/trip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"trip.d.ts","sourceRoot":"","sources":["../../src/commands/trip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkE1D"}
|
package/dist/commands/trip.js
CHANGED
|
@@ -7,8 +7,8 @@ export function registerTripCommand(program) {
|
|
|
7
7
|
.option('--trip-id <id>', 'existing trip ID (omit to create new)')
|
|
8
8
|
.option('--trip-item-token <token>', 'add a flight item (from flight-search)')
|
|
9
9
|
.option('--remove-item-id <id>', 'remove an existing item by item_id (from a prior trip response items[].item_id). Requires --trip-id. Can be combined with --trip-item-token to swap an item in one call.')
|
|
10
|
-
.option('--travelers <json>', 'travelers JSON array')
|
|
11
|
-
.option('--contact <json>', 'contact JSON {email, phone}')
|
|
10
|
+
.option('--travelers <json>', 'travelers JSON array. Required to complete a booking; date_of_birth + gender are required for flights but optional for hotel-only trips; the first traveler also supplies the booking contact name.')
|
|
11
|
+
.option('--contact <json>', 'contact JSON {email, phone} — both required. Optional while building the cart, but required before booking.')
|
|
12
12
|
.action(withClient(async (client, globals, opts) => {
|
|
13
13
|
const body = {};
|
|
14
14
|
if (opts.tripId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trip.js","sourceRoot":"","sources":["../../src/commands/trip.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,OAAO,CAAC,mFAAmF,CAAC;SAC5F,WAAW,CACV,2RAA2R,CAC5R;SACA,MAAM,CAAC,gBAAgB,EAAE,uCAAuC,CAAC;SACjE,MAAM,CAAC,2BAA2B,EAAE,wCAAwC,CAAC;SAC7E,MAAM,CACL,uBAAuB,EACvB,0KAA0K,CAC3K;SACA,MAAM,
|
|
1
|
+
{"version":3,"file":"trip.js","sourceRoot":"","sources":["../../src/commands/trip.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,OAAO,CAAC,mFAAmF,CAAC;SAC5F,WAAW,CACV,2RAA2R,CAC5R;SACA,MAAM,CAAC,gBAAgB,EAAE,uCAAuC,CAAC;SACjE,MAAM,CAAC,2BAA2B,EAAE,wCAAwC,CAAC;SAC7E,MAAM,CACL,uBAAuB,EACvB,0KAA0K,CAC3K;SACA,MAAM,CACL,oBAAoB,EACpB,qMAAqM,CACtM;SACA,MAAM,CACL,kBAAkB,EAClB,6GAA6G,CAC9G;SACA,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,IAAI,GAA4B,EAAE,CAAC;QAEzC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QACvD,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7D,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,SAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAc,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,eAAe,GAA4B,EAAE,SAAS,EAAE,CAAC;YAE/D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,eAAe,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,eAAe,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAmB,CAAC,CAAC;QACxD,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
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;AA+BpC,wBAAgB,aAAa,IAAI,OAAO,CAiDvC"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import { registerHotelDetailsCommand } from "./commands/hotel-details.js";
|
|
|
13
13
|
import { registerTripCommand } from "./commands/trip.js";
|
|
14
14
|
import { registerBookCommand } from "./commands/checkout.js";
|
|
15
15
|
import { registerTripStatusCommand } from "./commands/trip-status.js";
|
|
16
|
+
import { registerGetAncillariesCommand } from "./commands/get-ancillaries.js";
|
|
16
17
|
import { registerSelectAncillariesCommand } from "./commands/select-ancillaries.js";
|
|
17
18
|
import { registerRefundCommand } from "./commands/refund.js";
|
|
18
19
|
import { registerExchangeCommand } from "./commands/exchange.js";
|
|
@@ -45,6 +46,7 @@ export function createProgram() {
|
|
|
45
46
|
// Trip building + checkout
|
|
46
47
|
registerTripCommand(program);
|
|
47
48
|
registerBookCommand(program);
|
|
49
|
+
registerGetAncillariesCommand(program);
|
|
48
50
|
registerSelectAncillariesCommand(program);
|
|
49
51
|
registerTripStatusCommand(program);
|
|
50
52
|
// Post-booking
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
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": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"jinko": "./dist/bin/jinko.js"
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"docs:gen": "tsx scripts/gen-cli-docs.ts"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@gojinko/api-client": "2.
|
|
20
|
+
"@gojinko/api-client": "2.13.0",
|
|
21
21
|
"commander": "^12.1.0",
|
|
22
22
|
"chalk": "^5.4.1",
|
|
23
23
|
"open": "^10.0.0"
|