@gojinko/cli 2.28.0 → 2.29.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 +34 -8
- package/SKILL.md +21 -1
- package/dist/commands/cars/car-cancel.d.ts +46 -0
- package/dist/commands/cars/car-cancel.d.ts.map +1 -0
- package/dist/commands/cars/car-cancel.js +136 -0
- package/dist/commands/cars/car-cancel.js.map +1 -0
- package/dist/commands/cars/car-search.d.ts +42 -0
- package/dist/commands/cars/car-search.d.ts.map +1 -0
- package/dist/commands/cars/car-search.js +184 -0
- package/dist/commands/cars/car-search.js.map +1 -0
- package/dist/commands/cars/car-shared.d.ts +54 -0
- package/dist/commands/cars/car-shared.d.ts.map +1 -0
- package/dist/commands/cars/car-shared.js +89 -0
- package/dist/commands/cars/car-shared.js.map +1 -0
- package/dist/commands/exchange.d.ts.map +1 -1
- package/dist/commands/exchange.js +16 -13
- package/dist/commands/exchange.js.map +1 -1
- package/dist/commands/get-booking.d.ts +4 -2
- package/dist/commands/get-booking.d.ts.map +1 -1
- package/dist/commands/get-booking.js +27 -8
- package/dist/commands/get-booking.js.map +1 -1
- package/dist/commands/hotel-cancel.d.ts +0 -15
- package/dist/commands/hotel-cancel.d.ts.map +1 -1
- package/dist/commands/hotel-cancel.js +17 -45
- package/dist/commands/hotel-cancel.js.map +1 -1
- package/dist/commands/refund.d.ts +7 -9
- package/dist/commands/refund.d.ts.map +1 -1
- package/dist/commands/refund.js +26 -17
- package/dist/commands/refund.js.map +1 -1
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +61 -5
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/trip-status.d.ts.map +1 -1
- package/dist/commands/trip-status.js +4 -2
- package/dist/commands/trip-status.js.map +1 -1
- package/dist/commands/trip.d.ts.map +1 -1
- package/dist/commands/trip.js +3 -3
- package/dist/commands/trip.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/output/servicing.d.ts +2 -0
- package/dist/output/servicing.d.ts.map +1 -0
- package/dist/output/servicing.js +81 -0
- package/dist/output/servicing.js.map +1 -0
- package/package.json +2 -2
package/dist/commands/schema.js
CHANGED
|
@@ -5,7 +5,8 @@ import { getGlobalOptions } from "../config/config.js";
|
|
|
5
5
|
*
|
|
6
6
|
* HAND-MAINTAINED. This table is prose about the contract, not generated from
|
|
7
7
|
* `public-api.yaml` or `generated.ts`, so a spec sync does NOT update it —
|
|
8
|
-
* update it here when the contract moves. Last aligned to contract 0.3.0
|
|
8
|
+
* update it here when the contract moves. Last aligned to contract 0.3.0; the
|
|
9
|
+
* car entries and `contact.title` on `trip` to 0.16.0.
|
|
9
10
|
*/
|
|
10
11
|
/**
|
|
11
12
|
* The identity a submitted offer echoes back on every item and booking (C11,
|
|
@@ -19,6 +20,8 @@ const HOTEL_TERMS = '{ terms_as_of: "search" | "quote", is_refundable?, free_can
|
|
|
19
20
|
const ERROR_CODES = "error.code is a closed enum: AUTH_REQUIRED, PAYMENT_REQUIRED, RATE_LIMITED, BAD_REQUEST, FORBIDDEN, NOT_FOUND, CONFLICT, GONE (410, the generic 410 beneath QUOTE_EXPIRED and OFFER_EXPIRED — what the request named is gone for good, so repeating it cannot succeed), QUOTE_EXPIRED (410, carries expires_at and a numeric quoted_cart_id naming which quote lapsed), TRIP_EXPIRED (409, carries status), TRIP_STATE_CONFLICT (409, carries status), OFFER_EXPIRED, OFFER_UNAVAILABLE, MISSING_CUSTOMER_DETAILS, CURRENCY_UNSUPPORTED, UPSTREAM_REJECTED, UPSTREAM_UNAVAILABLE, UPSTREAM_TIMEOUT, UPSTREAM_ERROR, INTERNAL. Carried keys are SIBLINGS of error, never nested inside it.";
|
|
20
21
|
/** Every lifecycle state a trip can report (C13). */
|
|
21
22
|
const TRIP_STATUS = "draft | quoting | quoted | fulfillment_prepared | fulfilling | fulfilled | partially_fulfilled | failed | cancelled | expired";
|
|
23
|
+
/** Money on the car endpoints (C-money): always integer minor units with the scale beside it. */
|
|
24
|
+
const CAR_MONEY_FORMAT = "CarAmount is { value: INTEGER MINOR units, currency, decimal_places, display? } — divide value by 10 ** decimal_places, or print display as sent. Never assume 2 decimals. See docs.gojinko.com/concepts/money.";
|
|
22
25
|
const SCHEMAS = {
|
|
23
26
|
"find-destination": {
|
|
24
27
|
description: "Discover destinations from origin airports (POST /v1/find_destination).",
|
|
@@ -120,19 +123,19 @@ const SCHEMAS = {
|
|
|
120
123
|
money_format: "Money objects here are INTEGER MINOR UNITS: divide value by 10 ** decimal_places to display ({ value: 15977, decimal_places: 2 } is 159.77). See docs.gojinko.com/concepts/money.",
|
|
121
124
|
},
|
|
122
125
|
trip: {
|
|
123
|
-
description: "Manage a trip: create, add/remove flight
|
|
126
|
+
description: "Manage a trip: create, add/remove items (flight, hotel, ground, car), set travelers (POST /v1/trip).",
|
|
124
127
|
request: {
|
|
125
128
|
trip_id: "string? (omit to create new)",
|
|
126
|
-
add_item: "{ trip_item_token: string }? (from flight-search)",
|
|
129
|
+
add_item: "{ trip_item_token: string }? (a fare's trip_item_token from flight-search, an htl_* offer_id from hotel-search, a connection id from ground-search, or a car_* offer_id from car-search)",
|
|
127
130
|
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)",
|
|
128
|
-
upsert_travelers: "{ travelers: [{ first_name, last_name, passenger_type, date_of_birth?, gender?, frequent_flyer?: { airline, number }, known_traveler_number?, known_traveler_issuing_country?, redress_number?, redress_issuing_country?, ... }], contact?: { email, phone } }? (travelers + contact email/phone required to book; date_of_birth + gender required for flights, optional for hotel-only; KTN/redress issuing countries default to US; contact name taken from first traveler)",
|
|
131
|
+
upsert_travelers: "{ travelers: [{ first_name, last_name, passenger_type, date_of_birth?, gender?, frequent_flyer?: { airline, number }, known_traveler_number?, known_traveler_issuing_country?, redress_number?, redress_issuing_country?, ... }], contact?: { email, phone, title? } }? (travelers + contact email/phone required to book; contact.title is the honorific — mr / ms / mx — and is REQUIRED to book a car rental, optional otherwise; date_of_birth + gender required for flights, optional for hotel-only; KTN/redress issuing countries default to US; contact name taken from first traveler)",
|
|
129
132
|
},
|
|
130
133
|
response: {
|
|
131
134
|
trip_id: "string",
|
|
132
135
|
status: TRIP_STATUS,
|
|
133
136
|
items: `[{ item_id, type, description, price, currency, ${IDENTITY_FIELDS} }]`,
|
|
134
137
|
travelers: "[...]",
|
|
135
|
-
contact: "{ email, phone }",
|
|
138
|
+
contact: "{ email, phone, title? }",
|
|
136
139
|
totals: "{ total, currency }",
|
|
137
140
|
actions_performed: "string[]",
|
|
138
141
|
},
|
|
@@ -208,6 +211,59 @@ const SCHEMAS = {
|
|
|
208
211
|
},
|
|
209
212
|
money_format: "total_with_ancillaries is { amount: INTEGER MINOR units, currency, decimal_places } — divide amount by 10 ** decimal_places to display. See docs.gojinko.com/concepts/money.",
|
|
210
213
|
},
|
|
214
|
+
"car-search": {
|
|
215
|
+
description: "Live car-rental search — priced, bookable offers for a pick-up place, a date-time window and a driver (POST /v1/car_search). Each offer's `offer_id` (`car_…`) is the trip item token: pass it to `trip --trip-item-token`, then checkout as normal. There is no car exchange on this surface: a different rental means `car-cancel`, then `car-search` again.",
|
|
216
|
+
request: {
|
|
217
|
+
pick_up: "{ date_time: string (branch-local, NO timezone: 2026-09-12T10:00:00), airport_code?: string (IATA), place?: string (free text, resolved server-side), geo?: { latitude, longitude, range (metres, >= 50) } } — exactly ONE of airport_code / place / geo",
|
|
218
|
+
drop_off: "{ date_time?, airport_code?, place?, geo? }? — one-way rental only; omit it to return the car to the pick-up branch. A geo search is round-trip only.",
|
|
219
|
+
drop_off_date_time: "string? (branch-local) — the return time of a round trip; required unless drop_off.date_time is set",
|
|
220
|
+
driver_age: "number (18-99) — price-affecting, required",
|
|
221
|
+
residence_country: "string (ISO 3166-1 alpha-2, e.g. FR) — price-affecting, required",
|
|
222
|
+
currency: "string? (ISO 4217; defaults to USD)",
|
|
223
|
+
lang: "string? (BCP-47, e.g. en-gb)",
|
|
224
|
+
},
|
|
225
|
+
response: {
|
|
226
|
+
offers: "[{ offer_id (car_… — the trip item token, never truncate it), vehicle, package, pick_up, drop_off, price, driver_age_range: { min, max }, on_request (the supplier confirms by hand, so the booking settles asynchronously), cancellation_fees, expires_at (~30 min — search again after it) }]",
|
|
227
|
+
"offers[].vehicle": "{ acriss_code, name (the model, 'or similar' unless model_guaranteed), category, type, transmission, fuel_type, seats, doors, big_suitcases, small_suitcases, air_conditioned, built_in_gps, model_guaranteed, supplier_code, images: [{ url }] }",
|
|
228
|
+
"offers[].package": "{ name (the rate plan), code, supplier_name (the rental company the customer collects from — show it with every offer), supplier_code, fuel_policy, mileage_unlimited, mileage_allowance, inclusions, coverages, fees }",
|
|
229
|
+
"offers[].pick_up / offers[].drop_off": "{ name, address, city, country, phone, date_time (branch-local), time_zone (IANA — the only way to turn a local time into an instant), latitude, longitude, opening_hours, out_of_hours, requires_flight_number, terminals, is_meet_and_greet }",
|
|
230
|
+
"offers[].price": "{ pay_now (the ONLY amount Jinko charges), due_at_desk (collected by the rental desk, display-only), estimated_total, deposit (a card hold) } — never sum them into a total",
|
|
231
|
+
"offers[].cancellation_fees": "[{ type, fee, non_refundable, applicable_from, applicable_to, applicable_now, seconds_before_pick_up }] — an EMPTY list means the fee is UNKNOWN, never free",
|
|
232
|
+
resolved_place: "{ name, kind, city, country }? — what an unambiguous free-text place matched",
|
|
233
|
+
candidates: "[{ name, kind, city, country }]? — returned INSTEAD of offers when a free-text place is ambiguous: a retry signal, not an empty result — re-run with --pick-up-place \"<candidate name>\"",
|
|
234
|
+
currency: "string",
|
|
235
|
+
warnings: "[{ code, message }]? — supplier notices for branches that returned nothing (BranchClosed, NoMatches, VehiclesUnderStopSale, SupplierConnectivity); informational, offers[] is still the complete answer",
|
|
236
|
+
},
|
|
237
|
+
error_codes: ERROR_CODES,
|
|
238
|
+
money_format: CAR_MONEY_FORMAT,
|
|
239
|
+
},
|
|
240
|
+
"car-cancel": {
|
|
241
|
+
description: "Quote the fee for, commit, or poll a car-rental cancellation — subcommands preview | commit | status (POST /v1/car_cancel_preview | _commit | _status). Call get-booking first and pass the car item's --item-id. Modifying a rental (dates, vehicle, extras) is not offered: keep the booking, or cancel it and book again with car-search.",
|
|
242
|
+
request: {
|
|
243
|
+
preview: {
|
|
244
|
+
booking_ref: "string (JNK-…, from get-booking)",
|
|
245
|
+
item_id: "number? (stable booked item id from get-booking; required when the booking holds more than one car, else 409 item_selection_required lists them)",
|
|
246
|
+
last_name: "string? (required for guest lookup; an owning credential may omit it)",
|
|
247
|
+
},
|
|
248
|
+
commit: {
|
|
249
|
+
booking_ref: "string",
|
|
250
|
+
item_id: "number?",
|
|
251
|
+
last_name: "string?",
|
|
252
|
+
cancellation_id: "string (the ccl_… from preview — binds the commit to the fee the customer saw)",
|
|
253
|
+
reason: "string? (free text, carried into the cancellation email)",
|
|
254
|
+
manual_ok: "boolean? (send true ONLY to hand a manual_required preview to a Jinko agent, once the customer has agreed — nothing reaches the rental company on that call)",
|
|
255
|
+
},
|
|
256
|
+
status: { booking_ref: "string", item_id: "number?", last_name: "string?" },
|
|
257
|
+
},
|
|
258
|
+
response: {
|
|
259
|
+
preview: "{ cancellation_id (ccl_…), cancellable, fee_known (false = the fee is UNKNOWN, not free — fee and refund_amount are then absent), fee_type?, fee?, paid?, refund_amount? (paid minus fee; absent is not zero), currency?, non_refundable?, refund_pending_review?, refund_review_reason? (why a person is involved, or the supplier's reason on a cancellable: false preview), manual_required? (cannot be completed online — commit with manual_ok), expires_at? (commit before this, else preview again) }",
|
|
260
|
+
commit: "{ cancellation_id, state: preview | pending | confirmed | rejected | failed, fee_known, fee?, paid?, refund_amount?, refund_pending_review? (the booking IS cancelled, or recorded for an agent, but the refund needs a person — do not quote refund_amount as final), rejected_reason?, completed_at? }",
|
|
261
|
+
status: "{ cancellation_id, state, fee_known, fee?, paid?, refund_amount?, refund_pending_review?, rejected_reason? }",
|
|
262
|
+
},
|
|
263
|
+
error_codes: "commit answers 409 CONFLICT with a sibling `code` and cancels nothing: manual_required (resend with manual_ok once the customer agrees), quote_drift (`requote` is a fresh cancellation_id and `current.refund` the figure now — show it, then commit against requote), quote_expired (preview again), active_operation_exists (another cancellation is in flight — wait, then car-cancel status), not_cancellable (error.message says why; status reports what stands), funds_unavailable (`shortfall`, `blocking`). A wrong booking_ref + last_name pair is 404 NOT_FOUND. Otherwise: " +
|
|
264
|
+
ERROR_CODES,
|
|
265
|
+
money_format: CAR_MONEY_FORMAT,
|
|
266
|
+
},
|
|
211
267
|
"agent-pay": {
|
|
212
268
|
description: "One-call programmatic payment with a Shared Payment Token — the alternative to opening `checkout`'s checkout URL. Get `agent_spt_params` from `checkout`, mint an SPT scoped to them, then `agent-pay submit` presents trip_id + the SPT: the BFF schedules the agent fulfillment and redeems the token (POST /v1/agent_payment/submit).",
|
|
213
269
|
request: {
|
|
@@ -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
|
|
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-status.d.ts","sourceRoot":"","sources":["../../src/commands/trip-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"trip-status.d.ts","sourceRoot":"","sources":["../../src/commands/trip-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAchE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { withClient, output } from './shared.js';
|
|
2
|
+
import { publicServicingResponse } from '../output/servicing.js';
|
|
2
3
|
import { printPriceChangeNotices } from '../output/price-change.js';
|
|
3
4
|
export function registerTripStatusCommand(program) {
|
|
4
5
|
program
|
|
@@ -8,8 +9,9 @@ export function registerTripStatusCommand(program) {
|
|
|
8
9
|
.requiredOption('--trip-id <id>', 'trip ID [required]')
|
|
9
10
|
.action(withClient(async (client, globals, opts) => {
|
|
10
11
|
const response = await client.getTrip(opts.tripId);
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const publicResponse = publicServicingResponse(response, ['provider_booking_id', 'connector_reference']);
|
|
13
|
+
output(publicResponse, { format: globals.format });
|
|
14
|
+
printPriceChangeNotices(publicResponse);
|
|
13
15
|
}));
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=trip-status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trip-status.js","sourceRoot":"","sources":["../../src/commands/trip-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,6GAA6G,CAAC;SACtH,WAAW,CACV,qVAAqV,CACtV;SACA,cAAc,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;SACtD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"trip-status.js","sourceRoot":"","sources":["../../src/commands/trip-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,6GAA6G,CAAC;SACtH,WAAW,CACV,qVAAqV,CACtV;SACA,cAAc,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;SACtD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,uBAAuB,CAAC,QAAQ,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACzG,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,uBAAuB,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -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;AAKpC,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;AAKpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE1D"}
|
package/dist/commands/trip.js
CHANGED
|
@@ -4,12 +4,12 @@ export function registerTripCommand(program) {
|
|
|
4
4
|
program
|
|
5
5
|
.command('trip')
|
|
6
6
|
.summary('Create and manage a trip — add or remove items, set travelers, select ancillaries')
|
|
7
|
-
.description('Assemble and edit a trip before sending it to checkout. Use it to add a flight or
|
|
7
|
+
.description('Assemble and edit a trip before sending it to checkout. Use it to add a flight, hotel, ground or car-rental offer, set traveler details, swap one item for another, or attach ancillaries like bags and seats. Flights, hotels, ground and cars can sit side by side in the same trip and settle through a single checkout; a trip holding a car needs the contact\'s honorific (`contact.title`) before checkout.')
|
|
8
8
|
.option('--trip-id <id>', 'existing trip ID (omit to create new)')
|
|
9
|
-
.option('--trip-item-token <token>', 'add a flight
|
|
9
|
+
.option('--trip-item-token <token>', 'add an item: a fare\'s trip_item_token (flight-search), an htl_* offer_id (hotel-search), a connection id (ground-search) or a car_* offer_id (car-search). JSON: `add_item.trip_item_token`.')
|
|
10
10
|
.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.')
|
|
11
11
|
.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.')
|
|
12
|
-
.option('--contact <json>', 'contact JSON {email, phone} —
|
|
12
|
+
.option('--contact <json>', 'contact JSON {email, phone, title?} (sent as upsert_travelers.contact) — email and phone are required; title is the honorific (mr / ms / mx), required to book a car rental and optional otherwise. Optional while building the cart, but required before booking.')
|
|
13
13
|
.addOption(userIntentOption())
|
|
14
14
|
.action(withClient(async (client, globals, opts) => {
|
|
15
15
|
const body = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trip.js","sourceRoot":"","sources":["../../src/commands/trip.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,OAAO,CAAC,mFAAmF,CAAC;SAC5F,WAAW,CACV,
|
|
1
|
+
{"version":3,"file":"trip.js","sourceRoot":"","sources":["../../src/commands/trip.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,OAAO,CAAC,mFAAmF,CAAC;SAC5F,WAAW,CACV,oZAAoZ,CACrZ;SACA,MAAM,CAAC,gBAAgB,EAAE,uCAAuC,CAAC;SACjE,MAAM,CACL,2BAA2B,EAC3B,+LAA+L,CAChM;SACA,MAAM,CACL,uBAAuB,EACvB,0KAA0K,CAC3K;SACA,MAAM,CACL,oBAAoB,EACpB,qMAAqM,CACtM;SACA,MAAM,CACL,kBAAkB,EAClB,oQAAoQ,CACrQ;SACA,SAAS,CAAC,gBAAgB,EAAE,CAAC;SAC7B,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;QAC7C,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACpC,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;AAoCpC,wBAAgB,aAAa,IAAI,OAAO,CA0DvC"}
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,8 @@ import { registerRefundCommand } from "./commands/refund.js";
|
|
|
21
21
|
import { registerExchangeCommand } from "./commands/exchange.js";
|
|
22
22
|
import { registerGetBookingCommand } from "./commands/get-booking.js";
|
|
23
23
|
import { registerHotelCancelCommand } from "./commands/hotel-cancel.js";
|
|
24
|
+
import { registerCarSearchCommand } from "./commands/cars/car-search.js";
|
|
25
|
+
import { registerCarCancelCommand } from "./commands/cars/car-cancel.js";
|
|
24
26
|
import { registerAuthCommands } from "./commands/auth/index.js";
|
|
25
27
|
import { registerSchemaCommand } from "./commands/schema.js";
|
|
26
28
|
import { registerConfigCommands } from "./commands/config/index.js";
|
|
@@ -47,6 +49,7 @@ export function createProgram() {
|
|
|
47
49
|
registerHotelSearchCommand(program);
|
|
48
50
|
registerHotelDetailsCommand(program);
|
|
49
51
|
registerGroundSearchCommand(program);
|
|
52
|
+
registerCarSearchCommand(program);
|
|
50
53
|
// Trip building + checkout
|
|
51
54
|
registerTripCommand(program);
|
|
52
55
|
registerCheckoutCommand(program);
|
|
@@ -59,6 +62,9 @@ export function createProgram() {
|
|
|
59
62
|
registerHotelCancelCommand(program);
|
|
60
63
|
registerRefundCommand(program);
|
|
61
64
|
registerExchangeCommand(program);
|
|
65
|
+
// Cars cancel only (JIN-2091): there is no car-exchange — Auto Europe
|
|
66
|
+
// support is search, book and cancel (JIN-2312).
|
|
67
|
+
registerCarCancelCommand(program);
|
|
62
68
|
// Travel Demand Intelligence
|
|
63
69
|
registerTravelDemandCommands(program);
|
|
64
70
|
// Utility commands
|
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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servicing.d.ts","sourceRoot":"","sources":["../../src/output/servicing.ts"],"names":[],"mappings":"AAEA,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,SAAS,GAAE,SAAS,MAAM,EAAO,GAChC,OAAO,CAwFT"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Older API deployments may still return supplier handles. Project a copy before
|
|
2
|
+
// either output formatter sees it; airline, hotel and Jinko references remain public.
|
|
3
|
+
export function publicServicingResponse(value, extraKeys = []) {
|
|
4
|
+
const privateKeys = new Set([
|
|
5
|
+
"new_order_id",
|
|
6
|
+
"connector_booking_id",
|
|
7
|
+
"sabre_pnr",
|
|
8
|
+
"provider_order_id",
|
|
9
|
+
"provider_cancellation_id",
|
|
10
|
+
...extraKeys,
|
|
11
|
+
]);
|
|
12
|
+
const diagnosticKeys = new Set([
|
|
13
|
+
"warnings",
|
|
14
|
+
"manual_reason",
|
|
15
|
+
"message",
|
|
16
|
+
"error",
|
|
17
|
+
"error_message",
|
|
18
|
+
"refund_unavailable_reason",
|
|
19
|
+
"exchange_unavailable_reason",
|
|
20
|
+
"rejected_reason",
|
|
21
|
+
]);
|
|
22
|
+
const references = new Set();
|
|
23
|
+
const publicReferences = new Set();
|
|
24
|
+
const publicReferenceKeys = new Set([
|
|
25
|
+
"booking_ref",
|
|
26
|
+
"booking_reference",
|
|
27
|
+
"airline_locator",
|
|
28
|
+
"pnr",
|
|
29
|
+
"primary_pnr",
|
|
30
|
+
"confirmation_number",
|
|
31
|
+
]);
|
|
32
|
+
const isPrivate = (key, parentPath) => privateKeys.has(key.toLowerCase()) ||
|
|
33
|
+
(key.toLowerCase() === "booking_id" &&
|
|
34
|
+
parentPath.slice(-2).join(".") === "provider.references");
|
|
35
|
+
const collect = (node, path = []) => {
|
|
36
|
+
if (Array.isArray(node)) {
|
|
37
|
+
node.forEach((child) => collect(child, path));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (!node || typeof node !== "object")
|
|
41
|
+
return;
|
|
42
|
+
for (const [key, child] of Object.entries(node)) {
|
|
43
|
+
if (isPrivate(key, path) && typeof child === "string" && child.trim()) {
|
|
44
|
+
references.add(child.trim());
|
|
45
|
+
}
|
|
46
|
+
if (publicReferenceKeys.has(key.toLowerCase()) &&
|
|
47
|
+
typeof child === "string" &&
|
|
48
|
+
child.trim()) {
|
|
49
|
+
publicReferences.add(child.trim().toLowerCase());
|
|
50
|
+
}
|
|
51
|
+
collect(child, [...path, key.toLowerCase()]);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
collect(value);
|
|
55
|
+
// A provider and customer locator can coincide. The explicit public label
|
|
56
|
+
// wins, including when that same value is repeated in an explanation.
|
|
57
|
+
const escaped = [...references]
|
|
58
|
+
.filter((reference) => !publicReferences.has(reference.toLowerCase()))
|
|
59
|
+
.sort((a, b) => b.length - a.length)
|
|
60
|
+
.map((reference) => reference.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
61
|
+
const knownReference = escaped.length
|
|
62
|
+
? new RegExp(`(?<![a-z0-9])(?:${escaped.join("|")})(?![a-z0-9])`, "gi")
|
|
63
|
+
: undefined;
|
|
64
|
+
const project = (node, path = [], diagnostic = false) => {
|
|
65
|
+
if (typeof node === "string" && diagnostic && knownReference) {
|
|
66
|
+
return node.replace(knownReference, "[internal reference]");
|
|
67
|
+
}
|
|
68
|
+
if (Array.isArray(node))
|
|
69
|
+
return node.map((child) => project(child, path, diagnostic));
|
|
70
|
+
if (!node || typeof node !== "object")
|
|
71
|
+
return node;
|
|
72
|
+
return Object.fromEntries(Object.entries(node)
|
|
73
|
+
.filter(([key]) => !isPrivate(key, path))
|
|
74
|
+
.map(([key, child]) => [
|
|
75
|
+
key,
|
|
76
|
+
project(child, [...path, key.toLowerCase()], diagnostic || diagnosticKeys.has(key.toLowerCase())),
|
|
77
|
+
]));
|
|
78
|
+
};
|
|
79
|
+
return project(value);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=servicing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servicing.js","sourceRoot":"","sources":["../../src/output/servicing.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.29.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.29.0",
|
|
21
21
|
"commander": "^12.1.0",
|
|
22
22
|
"chalk": "^5.4.1"
|
|
23
23
|
},
|