@gojinko/cli 2.24.0 → 2.26.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 +1 -1
- package/SKILL.md +10 -0
- package/dist/commands/find-dates.d.ts +2 -0
- package/dist/commands/find-dates.d.ts.map +1 -1
- package/dist/commands/find-dates.js +11 -1
- package/dist/commands/find-dates.js.map +1 -1
- package/dist/commands/find-destination.d.ts +2 -0
- package/dist/commands/find-destination.d.ts.map +1 -1
- package/dist/commands/find-destination.js +9 -1
- package/dist/commands/find-destination.js.map +1 -1
- package/dist/commands/flight-calendar.d.ts +23 -0
- package/dist/commands/flight-calendar.d.ts.map +1 -1
- package/dist/commands/flight-calendar.js +63 -13
- package/dist/commands/flight-calendar.js.map +1 -1
- package/dist/commands/get-booking.d.ts +26 -0
- package/dist/commands/get-booking.d.ts.map +1 -1
- package/dist/commands/get-booking.js +54 -2
- package/dist/commands/get-booking.js.map +1 -1
- package/dist/commands/ground-search.d.ts +2 -1
- package/dist/commands/ground-search.d.ts.map +1 -1
- package/dist/commands/ground-search.js +14 -25
- package/dist/commands/ground-search.js.map +1 -1
- package/dist/commands/lowest-fare.d.ts +2 -0
- package/dist/commands/lowest-fare.d.ts.map +1 -1
- package/dist/commands/lowest-fare.js +11 -1
- package/dist/commands/lowest-fare.js.map +1 -1
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +5 -0
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/shared.d.ts +10 -0
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +14 -0
- package/dist/commands/shared.js.map +1 -1
- package/dist/output/price-change.d.ts +8 -12
- package/dist/output/price-change.d.ts.map +1 -1
- package/dist/output/price-change.js +20 -26
- package/dist/output/price-change.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -89,7 +89,7 @@ Prod and sandbox keys are stored separately in `~/.jinko/config.yaml`. Resolutio
|
|
|
89
89
|
|
|
90
90
|
| Command | Description |
|
|
91
91
|
|---|---|
|
|
92
|
-
| `get-booking` | Retrieve the whole booking (flight + hotel) by reference (booking ref + last-name guest-auth). No subcommands. |
|
|
92
|
+
| `get-booking` | Retrieve the whole booking (flight + hotel) by reference (booking ref + last-name guest-auth). No subcommands. Carries `calendar` — the `.ics` files for the booking's flights and stays; the table format lists one line per file, `--format json` carries the contents. |
|
|
93
93
|
| `refund check` | Check refund eligibility for a booking |
|
|
94
94
|
| `refund commit` | Initiate a refund for a booking |
|
|
95
95
|
| `refund status` | Check the status of a previously committed refund |
|
package/SKILL.md
CHANGED
|
@@ -92,6 +92,16 @@ export JINKO_API_KEY=jnk_...
|
|
|
92
92
|
filters the results honor, `unapplied_filters` the ones they do not, each with a
|
|
93
93
|
reason. An unapplied filter is not an error — the call still returns 200. Either
|
|
94
94
|
post-filter the offers yourself or tell the user the constraint could not be met.
|
|
95
|
+
- `--include-carriers` / `--exclude-carriers` work on every flight tool
|
|
96
|
+
(`flight-search`, `flight-calendar`, `find-dates`, `lowest-fare`,
|
|
97
|
+
`find-destination`) but match different fields: on `flight-search` (live)
|
|
98
|
+
they match the MARKETING carrier; on the cache-tier tools they match the
|
|
99
|
+
VALIDATING (ticketing) carrier — the only carrier field the cache index
|
|
100
|
+
carries. Must not overlap each other (rejected with an error naming the
|
|
101
|
+
offending code). `flight-calendar`/`find-dates`/`lowest-fare` responses also
|
|
102
|
+
carry `available_airlines` — validating-carrier codes present across the
|
|
103
|
+
whole cached match set, not just the page returned, so you can discover
|
|
104
|
+
which airlines exist before retrying with `--include-carriers`.
|
|
95
105
|
- `--origin-alternate-airports` / `--destination-alternate-airports` WIDEN an airport
|
|
96
106
|
anchor: they add airports beside `--origin` / `--destination`, never remove results.
|
|
97
107
|
The anchor decides ranking, so put the airport that matters most in `--origin`.
|
|
@@ -10,6 +10,8 @@ export interface FindDatesInputs {
|
|
|
10
10
|
cabinClass: FlightFindRequest["cabin_class"];
|
|
11
11
|
directOnly: boolean;
|
|
12
12
|
limit?: number;
|
|
13
|
+
includeCarriers?: string[];
|
|
14
|
+
excludeCarriers?: string[];
|
|
13
15
|
}
|
|
14
16
|
/** Expand a YYYY-MM month into a full-month [start, end] range, or null if malformed. */
|
|
15
17
|
export declare function monthToRange(month: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-dates.d.ts","sourceRoot":"","sources":["../../src/commands/find-dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"find-dates.d.ts","sourceRoot":"","sources":["../../src/commands/find-dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAW7D,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQvC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,GACrB,iBAAiB,CAuBnB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkH/D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { withClient, output, resolveDeprecatedFlag, userIntentOption } from "./shared.js";
|
|
1
|
+
import { withClient, output, resolveDeprecatedFlag, userIntentOption, normalizeCarrierCodes, } from "./shared.js";
|
|
2
2
|
const DEFAULT_STAY_DAYS = 7;
|
|
3
3
|
/** Expand a YYYY-MM month into a full-month [start, end] range, or null if malformed. */
|
|
4
4
|
export function monthToRange(month) {
|
|
@@ -34,6 +34,12 @@ export function buildFindDatesRequest(input) {
|
|
|
34
34
|
if (input.limit !== undefined) {
|
|
35
35
|
request.limit = input.limit;
|
|
36
36
|
}
|
|
37
|
+
const includeCarriers = normalizeCarrierCodes(input.includeCarriers);
|
|
38
|
+
if (includeCarriers)
|
|
39
|
+
request.include_carriers = includeCarriers;
|
|
40
|
+
const excludeCarriers = normalizeCarrierCodes(input.excludeCarriers);
|
|
41
|
+
if (excludeCarriers)
|
|
42
|
+
request.exclude_carriers = excludeCarriers;
|
|
37
43
|
return request;
|
|
38
44
|
}
|
|
39
45
|
export function registerFindDatesCommand(program) {
|
|
@@ -50,6 +56,8 @@ export function registerFindDatesCommand(program) {
|
|
|
50
56
|
.option("--cabin-class <class>", "cabin class: economy, premium_economy, business, first (default: economy). JSON: `cabin_class`.")
|
|
51
57
|
.option("--direct-only", "only direct flights. JSON: `direct_only`.")
|
|
52
58
|
.option("--limit <n>", "max date-pairs to return (1-100, default 20). JSON: `limit`.")
|
|
59
|
+
.option("--include-carriers <codes...>", "keep only itineraries whose VALIDATING (ticketing) carrier is one of these IATA 2-3 character codes (e.g. UA) — the only carrier field the cache index carries. Must not overlap --exclude-carriers. JSON: `include_carriers`.")
|
|
60
|
+
.option("--exclude-carriers <codes...>", "drop itineraries whose VALIDATING (ticketing) carrier is one of these codes. Must not overlap --include-carriers. JSON: `exclude_carriers`.")
|
|
53
61
|
.addOption(userIntentOption())
|
|
54
62
|
// Deprecated aliases — Phase 1 transition (JIN-665), remove in next major.
|
|
55
63
|
.option("--from <origin>", "DEPRECATED: use --origins.")
|
|
@@ -82,6 +90,8 @@ export function registerFindDatesCommand(program) {
|
|
|
82
90
|
cabinClass,
|
|
83
91
|
directOnly: opts.directOnly ?? false,
|
|
84
92
|
limit: opts.limit ? Number(opts.limit) : undefined,
|
|
93
|
+
includeCarriers: opts.includeCarriers,
|
|
94
|
+
excludeCarriers: opts.excludeCarriers,
|
|
85
95
|
});
|
|
86
96
|
const data = await client.findDates(request);
|
|
87
97
|
if (globals.format === "table") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-dates.js","sourceRoot":"","sources":["../../src/commands/find-dates.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"find-dates.js","sourceRoot":"","sources":["../../src/commands/find-dates.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;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;
|
|
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;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,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;AA8CD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAiCtE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsEnF;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkJrE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { withClient, output, userIntentOption } from './shared.js';
|
|
1
|
+
import { withClient, output, userIntentOption, normalizeCarrierCodes } from './shared.js';
|
|
2
2
|
const SUMMARY = 'Discover travel destinations accessible from your departure airports';
|
|
3
3
|
const DESCRIPTION = 'Surface inspiration when a user knows where they want to leave from but not where they want to go. ' +
|
|
4
4
|
'Typical prompts include "cheap beach getaways from New York" or "weekend trips out of London under €200". ' +
|
|
@@ -140,6 +140,12 @@ export function buildRequestBody(opts) {
|
|
|
140
140
|
body.cabin_class = opts.cabinClass;
|
|
141
141
|
if (opts.directOnly)
|
|
142
142
|
body.direct_only = true;
|
|
143
|
+
const includeCarriers = normalizeCarrierCodes(opts.includeCarriers);
|
|
144
|
+
if (includeCarriers)
|
|
145
|
+
body.include_carriers = includeCarriers;
|
|
146
|
+
const excludeCarriers = normalizeCarrierCodes(opts.excludeCarriers);
|
|
147
|
+
if (excludeCarriers)
|
|
148
|
+
body.exclude_carriers = excludeCarriers;
|
|
143
149
|
// Passengers (canonical flat leaf names)
|
|
144
150
|
applyPassengers(body, opts);
|
|
145
151
|
// Price
|
|
@@ -181,6 +187,8 @@ export function registerFindDestinationCommand(program) {
|
|
|
181
187
|
.option('--trip-type <type>', '`oneway` or `roundtrip` (inferred from --return-dates if omitted). JSON: `trip_type`.')
|
|
182
188
|
.option('--cabin-class <class>', '`economy`, `premium_economy`, `business`, or `first` (default: `economy`). JSON: `cabin_class`.', 'economy')
|
|
183
189
|
.option('--direct-only', 'Only return nonstop flights. JSON: `direct_only`.')
|
|
190
|
+
.option('--include-carriers <codes...>', 'Keep only itineraries whose VALIDATING (ticketing) carrier is one of these IATA 2-3 character codes (e.g. UA) — the only carrier field the cache index carries. Must not overlap --exclude-carriers. JSON: `include_carriers`.')
|
|
191
|
+
.option('--exclude-carriers <codes...>', 'Drop itineraries whose VALIDATING (ticketing) carrier is one of these codes. Must not overlap --include-carriers. JSON: `exclude_carriers`.')
|
|
184
192
|
// Passengers (canonical flat leaf names).
|
|
185
193
|
.option('--adults <n>', 'Adult passengers (default: 1). JSON: `adults`.')
|
|
186
194
|
.option('--children <n>', 'Child passengers. JSON: `children`.')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-destination.js","sourceRoot":"","sources":["../../src/commands/find-destination.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"find-destination.js","sourceRoot":"","sources":["../../src/commands/find-destination.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,26 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import type { FlightFindRequest } from '@gojinko/api-client';
|
|
3
|
+
/** Resolved, validated inputs for a flight-calendar request. */
|
|
4
|
+
export interface FlightCalendarInputs {
|
|
5
|
+
origins: string[];
|
|
6
|
+
destinations?: string[];
|
|
7
|
+
startDate: string;
|
|
8
|
+
endDate: string;
|
|
9
|
+
tripType: 'oneway' | 'roundtrip';
|
|
10
|
+
stayDays?: number;
|
|
11
|
+
cabinClass: FlightFindRequest['cabin_class'];
|
|
12
|
+
directOnly: boolean;
|
|
13
|
+
adults: number;
|
|
14
|
+
limit?: number;
|
|
15
|
+
offset?: number;
|
|
16
|
+
includeCarriers?: string[];
|
|
17
|
+
excludeCarriers?: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build the canonical FLAT discovery body (jinko-api POST /v1/flight_calendar).
|
|
21
|
+
* `stay_days` is only attached for roundtrips so the BFF can pair departures
|
|
22
|
+
* with returns; one-way requests omit it — same contract as find-dates.ts.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildFlightCalendarRequest(input: FlightCalendarInputs): FlightFindRequest;
|
|
2
25
|
export declare function registerFlightCalendarCommand(program: Command): void;
|
|
3
26
|
//# sourceMappingURL=flight-calendar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flight-calendar.d.ts","sourceRoot":"","sources":["../../src/commands/flight-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"flight-calendar.d.ts","sourceRoot":"","sources":["../../src/commands/flight-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAW7D,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,oBAAoB,GAAG,iBAAiB,CAqBzF;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmHpE"}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
|
-
import { withClient, output, resolveDeprecatedFlag, userIntentOption } from './shared.js';
|
|
1
|
+
import { withClient, output, resolveDeprecatedFlag, userIntentOption, normalizeCarrierCodes, } from './shared.js';
|
|
2
|
+
const DEFAULT_STAY_DAYS = 7;
|
|
3
|
+
/**
|
|
4
|
+
* Build the canonical FLAT discovery body (jinko-api POST /v1/flight_calendar).
|
|
5
|
+
* `stay_days` is only attached for roundtrips so the BFF can pair departures
|
|
6
|
+
* with returns; one-way requests omit it — same contract as find-dates.ts.
|
|
7
|
+
*/
|
|
8
|
+
export function buildFlightCalendarRequest(input) {
|
|
9
|
+
const request = {
|
|
10
|
+
origins: input.origins,
|
|
11
|
+
destinations: input.destinations,
|
|
12
|
+
departure_date_ranges: [{ start: input.startDate, end: input.endDate }],
|
|
13
|
+
trip_type: input.tripType,
|
|
14
|
+
cabin_class: input.cabinClass,
|
|
15
|
+
direct_only: input.directOnly,
|
|
16
|
+
adults: input.adults,
|
|
17
|
+
sort_by: 'lowest',
|
|
18
|
+
...(input.tripType === 'roundtrip'
|
|
19
|
+
? { stay_days: input.stayDays ?? DEFAULT_STAY_DAYS }
|
|
20
|
+
: {}),
|
|
21
|
+
...(input.limit !== undefined ? { limit: input.limit } : {}),
|
|
22
|
+
...(input.offset !== undefined ? { offset: input.offset } : {}),
|
|
23
|
+
};
|
|
24
|
+
const includeCarriers = normalizeCarrierCodes(input.includeCarriers);
|
|
25
|
+
if (includeCarriers)
|
|
26
|
+
request.include_carriers = includeCarriers;
|
|
27
|
+
const excludeCarriers = normalizeCarrierCodes(input.excludeCarriers);
|
|
28
|
+
if (excludeCarriers)
|
|
29
|
+
request.exclude_carriers = excludeCarriers;
|
|
30
|
+
return request;
|
|
31
|
+
}
|
|
2
32
|
export function registerFlightCalendarCommand(program) {
|
|
3
33
|
program
|
|
4
34
|
.command('flight-calendar')
|
|
@@ -8,10 +38,15 @@ export function registerFlightCalendarCommand(program) {
|
|
|
8
38
|
.option('--origins <codes...>', 'origin IATA airport/city codes. JSON: `origins[]`. [required]')
|
|
9
39
|
.option('--destinations <codes...>', 'destination IATA airport/city codes. Omit to scan all destinations. JSON: `destinations[]`.')
|
|
10
40
|
.option('--month <month>', 'month to display (YYYY-MM), defaults to current month')
|
|
41
|
+
.option('--trip-type <type>', 'oneway or roundtrip (default: roundtrip). JSON: `trip_type`.')
|
|
42
|
+
.option('--stay-days <n>', 'nights away for a roundtrip (default: 7). JSON: `stay_days`.')
|
|
11
43
|
.option('--cabin-class <class>', 'cabin class: economy, premium_economy, business, first (default: economy). JSON: `cabin_class`.')
|
|
44
|
+
.option('--adults <n>', 'number of adult passengers (default: 1). JSON: `adults`.')
|
|
12
45
|
.option('--direct-only', 'only direct flights. JSON: `direct_only`.')
|
|
13
46
|
.option('--limit <n>', 'max results to return per page (1-100, default 20). JSON: `limit`.')
|
|
14
47
|
.option('--offset <n>', 'number of results to skip, for pagination (default 0). JSON: `offset`.')
|
|
48
|
+
.option('--include-carriers <codes...>', 'keep only itineraries whose VALIDATING (ticketing) carrier is one of these IATA 2-3 character codes (e.g. UA) — the only carrier field the cache index carries. Must not overlap --exclude-carriers. JSON: `include_carriers`.')
|
|
49
|
+
.option('--exclude-carriers <codes...>', 'drop itineraries whose VALIDATING (ticketing) carrier is one of these codes. Must not overlap --include-carriers. JSON: `exclude_carriers`.')
|
|
15
50
|
.addOption(userIntentOption())
|
|
16
51
|
// Deprecated aliases — Phase 1 transition (JIN-665), remove in next major.
|
|
17
52
|
.option('--from <origin>', 'DEPRECATED: use --origins.')
|
|
@@ -27,6 +62,19 @@ export function registerFlightCalendarCommand(program) {
|
|
|
27
62
|
console.error('Error: --origins is required (--destinations is optional — omit to scan all destinations).');
|
|
28
63
|
process.exit(3);
|
|
29
64
|
}
|
|
65
|
+
const tripType = opts.tripType ?? 'roundtrip';
|
|
66
|
+
if (tripType !== 'oneway' && tripType !== 'roundtrip') {
|
|
67
|
+
console.error('Error: --trip-type must be "oneway" or "roundtrip".');
|
|
68
|
+
process.exit(3);
|
|
69
|
+
}
|
|
70
|
+
let adults = 1;
|
|
71
|
+
if (opts.adults !== undefined) {
|
|
72
|
+
adults = Number(opts.adults);
|
|
73
|
+
if (!Number.isInteger(adults) || adults < 1) {
|
|
74
|
+
console.error('Error: --adults must be a positive integer.');
|
|
75
|
+
process.exit(3);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
30
78
|
const month = opts.month ?? new Date().toISOString().slice(0, 7);
|
|
31
79
|
const [year, mon] = month.split('-').map(Number);
|
|
32
80
|
if (!year || !mon) {
|
|
@@ -53,22 +101,24 @@ export function registerFlightCalendarCommand(program) {
|
|
|
53
101
|
process.exit(3);
|
|
54
102
|
}
|
|
55
103
|
}
|
|
56
|
-
|
|
57
|
-
const request = {
|
|
104
|
+
const request = buildFlightCalendarRequest({
|
|
58
105
|
origins,
|
|
59
106
|
destinations,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
107
|
+
startDate,
|
|
108
|
+
endDate,
|
|
109
|
+
tripType,
|
|
110
|
+
stayDays: opts.stayDays ? Number(opts.stayDays) : undefined,
|
|
111
|
+
cabinClass,
|
|
112
|
+
directOnly: opts.directOnly ?? false,
|
|
113
|
+
adults,
|
|
114
|
+
limit,
|
|
115
|
+
offset,
|
|
116
|
+
includeCarriers: opts.includeCarriers,
|
|
117
|
+
excludeCarriers: opts.excludeCarriers,
|
|
118
|
+
});
|
|
69
119
|
const data = await client.flightCalendar(request);
|
|
70
120
|
if (globals.format === 'table') {
|
|
71
|
-
console.log(`\nFlight calendar: ${origins.join(',')} → ${destinations.join(',')} (${month})`);
|
|
121
|
+
console.log(`\nFlight calendar: ${origins.join(',')} → ${destinations.join(',')} (${month}, ${tripType})`);
|
|
72
122
|
console.log(`Date range: ${startDate} to ${endDate}\n`);
|
|
73
123
|
}
|
|
74
124
|
output(data, { format: globals.format });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flight-calendar.js","sourceRoot":"","sources":["../../src/commands/flight-calendar.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"flight-calendar.js","sourceRoot":"","sources":["../../src/commands/flight-calendar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,29 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import type { BookingGetResponse } from '@gojinko/api-client';
|
|
3
|
+
/**
|
|
4
|
+
* One compact line per calendar file (JIN-2176): the iTIP method and the
|
|
5
|
+
* filename the confirmation email attached that same file under.
|
|
6
|
+
*
|
|
7
|
+
* The iCalendar body itself is deliberately NOT printed — it is multi-kilobyte
|
|
8
|
+
* CRLF text, and a consumer that wants the bytes reads them from `--format
|
|
9
|
+
* json`, which carries the response untouched.
|
|
10
|
+
*
|
|
11
|
+
* Empty when the booking carries no calendar — a booking with no flight and no
|
|
12
|
+
* hotel omits it altogether — so those bookings print nothing extra. Pure —
|
|
13
|
+
* exported for tests.
|
|
14
|
+
*/
|
|
15
|
+
export declare function calendarLines(response: BookingGetResponse): string[];
|
|
16
|
+
/**
|
|
17
|
+
* Print the booking, then the calendar summary under it.
|
|
18
|
+
*
|
|
19
|
+
* JSON output gets the calendar for free — `calendar` is a response field and
|
|
20
|
+
* travels through `output` untouched — so only the human format needs anything
|
|
21
|
+
* extra. There the files are summarised INSTEAD of dumped: `output` renders a
|
|
22
|
+
* nested object by JSON.stringify-ing it into a single table cell, which for an
|
|
23
|
+
* iCalendar body means thousands of characters of escaped CRLF on one line.
|
|
24
|
+
* Swapping it for the summary keeps the table readable and leaves the bytes one
|
|
25
|
+
* `--format json` away. Exported for tests.
|
|
26
|
+
*/
|
|
27
|
+
export declare function renderGetBookingResponse(response: BookingGetResponse, format: 'json' | 'table'): void;
|
|
2
28
|
export declare function registerGetBookingCommand(program: Command): void;
|
|
3
29
|
//# sourceMappingURL=get-booking.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-booking.d.ts","sourceRoot":"","sources":["../../src/commands/get-booking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"get-booking.d.ts","sourceRoot":"","sources":["../../src/commands/get-booking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAUpE;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,MAAM,GAAG,OAAO,GACvB,IAAI,CAQN;AAkBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAYhE"}
|
|
@@ -1,4 +1,56 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
1
2
|
import { withClient, output, resolveDeprecatedFlag, userIntentOption } from './shared.js';
|
|
3
|
+
/**
|
|
4
|
+
* One compact line per calendar file (JIN-2176): the iTIP method and the
|
|
5
|
+
* filename the confirmation email attached that same file under.
|
|
6
|
+
*
|
|
7
|
+
* The iCalendar body itself is deliberately NOT printed — it is multi-kilobyte
|
|
8
|
+
* CRLF text, and a consumer that wants the bytes reads them from `--format
|
|
9
|
+
* json`, which carries the response untouched.
|
|
10
|
+
*
|
|
11
|
+
* Empty when the booking carries no calendar — a booking with no flight and no
|
|
12
|
+
* hotel omits it altogether — so those bookings print nothing extra. Pure —
|
|
13
|
+
* exported for tests.
|
|
14
|
+
*/
|
|
15
|
+
export function calendarLines(response) {
|
|
16
|
+
const files = response.booking?.calendar?.files ?? [];
|
|
17
|
+
if (files.length === 0)
|
|
18
|
+
return [];
|
|
19
|
+
const method = (file) => file.method ?? '—';
|
|
20
|
+
const width = Math.max(...files.map((file) => method(file).length));
|
|
21
|
+
return [
|
|
22
|
+
'Calendar:',
|
|
23
|
+
...files.map((file) => ` ${method(file).padEnd(width)} ${file.filename ?? '—'}`),
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
/** The same response with `booking.calendar` dropped. */
|
|
27
|
+
function withoutCalendar(response) {
|
|
28
|
+
if (!response.booking)
|
|
29
|
+
return response;
|
|
30
|
+
const { calendar: _calendar, ...booking } = response.booking;
|
|
31
|
+
return { ...response, booking };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Print the booking, then the calendar summary under it.
|
|
35
|
+
*
|
|
36
|
+
* JSON output gets the calendar for free — `calendar` is a response field and
|
|
37
|
+
* travels through `output` untouched — so only the human format needs anything
|
|
38
|
+
* extra. There the files are summarised INSTEAD of dumped: `output` renders a
|
|
39
|
+
* nested object by JSON.stringify-ing it into a single table cell, which for an
|
|
40
|
+
* iCalendar body means thousands of characters of escaped CRLF on one line.
|
|
41
|
+
* Swapping it for the summary keeps the table readable and leaves the bytes one
|
|
42
|
+
* `--format json` away. Exported for tests.
|
|
43
|
+
*/
|
|
44
|
+
export function renderGetBookingResponse(response, format) {
|
|
45
|
+
const lines = format === 'table' ? calendarLines(response) : [];
|
|
46
|
+
output(lines.length > 0 ? withoutCalendar(response) : response, { format });
|
|
47
|
+
if (lines.length === 0)
|
|
48
|
+
return;
|
|
49
|
+
console.log('');
|
|
50
|
+
console.log(chalk.bold(lines[0]));
|
|
51
|
+
for (const line of lines.slice(1))
|
|
52
|
+
console.log(line);
|
|
53
|
+
}
|
|
2
54
|
// Commander action for `get-booking`. The canonical flag is `--booking-ref`
|
|
3
55
|
// (matches the jinko-api `booking_ref` leaf); `--ref` is kept as a deprecated
|
|
4
56
|
// alias (JIN-665).
|
|
@@ -12,13 +64,13 @@ const action = withClient(async (client, globals, opts) => {
|
|
|
12
64
|
booking_ref: bookingRef,
|
|
13
65
|
last_name: opts.lastName,
|
|
14
66
|
});
|
|
15
|
-
|
|
67
|
+
renderGetBookingResponse(response, globals.format);
|
|
16
68
|
});
|
|
17
69
|
export function registerGetBookingCommand(program) {
|
|
18
70
|
program
|
|
19
71
|
.command('get-booking')
|
|
20
72
|
.summary("Retrieve a booking using the Jinko booking reference and the traveler's last name")
|
|
21
|
-
.description(
|
|
73
|
+
.description("Anonymous retrieval for a booking the user already made. Use it when the traveler has their Jinko booking reference and last name, for example to look up the itinerary days later without signing in. Returns the full booking envelope: status, travelers, and itinerary items with confirmation numbers (PNR for flights, confirmation number for hotels), plus `calendar` — the iCalendar (.ics) files for the booking's flights and stays, the same bytes the confirmation email attaches. The human format lists one line per file; `--format json` carries the file contents.")
|
|
22
74
|
.option('--booking-ref <ref>', 'Jinko booking reference (e.g. JNK-A7B3X9) — the `booking_ref` returned by trip-status / agent-pay submit, not a supplier PNR. JSON: `booking_ref`. [required]')
|
|
23
75
|
.requiredOption('--last-name <name>', 'Last name of the primary traveler. JSON: `last_name`. [required]')
|
|
24
76
|
.addOption(userIntentOption())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-booking.js","sourceRoot":"","sources":["../../src/commands/get-booking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1F,4EAA4E;AAC5E,8EAA8E;AAC9E,mBAAmB;AACnB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACxD,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAC9F,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;QACvC,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,IAAI,CAAC,QAAQ;KACzB,CAAC,CAAC;IACH,
|
|
1
|
+
{"version":3,"file":"get-booking.js","sourceRoot":"","sources":["../../src/commands/get-booking.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1F;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,QAA4B;IACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,CAAC,IAA4B,EAAU,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,OAAO;QACL,WAAW;QACX,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,SAAS,eAAe,CAAC,QAA4B;IACnD,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC7D,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA4B,EAC5B,MAAwB;IAExB,MAAM,KAAK,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,mBAAmB;AACnB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACxD,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAC9F,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;QACvC,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,IAAI,CAAC,QAAQ;KACzB,CAAC,CAAC;IACH,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,mFAAmF,CAAC;SAC5F,WAAW,CACV,sjBAAsjB,CACvjB;SACA,MAAM,CAAC,qBAAqB,EAAE,+JAA+J,CAAC;SAC9L,cAAc,CAAC,oBAAoB,EAAE,kEAAkE,CAAC;SACxG,SAAS,CAAC,gBAAgB,EAAE,CAAC;SAC7B,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;SACvD,MAAM,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import type
|
|
2
|
+
import { type GroundSearchRequest } from "@gojinko/api-client";
|
|
3
3
|
/** Resolved, validated inputs for a ground_search request. */
|
|
4
4
|
export interface GroundSearchInputs {
|
|
5
5
|
departureCity?: string;
|
|
@@ -49,6 +49,7 @@ interface ConnectionLike {
|
|
|
49
49
|
value?: number;
|
|
50
50
|
currency?: string;
|
|
51
51
|
decimal_places?: number;
|
|
52
|
+
display?: string;
|
|
52
53
|
};
|
|
53
54
|
}>;
|
|
54
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ground-search.d.ts","sourceRoot":"","sources":["../../src/commands/ground-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ground-search.d.ts","sourceRoot":"","sources":["../../src/commands/ground-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAgB,KAAK,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAoBhG,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,kBAAkB,GACxB,mBAAmB,CA+BrB;AAED,UAAU,cAAc;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,eAAe,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,iBAAiB,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,WAAW,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,cAAc,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAChG,CAAC,CAAC;CACJ;AAsDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,CAiCzE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2HlE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { tryReadMoney } from "@gojinko/api-client";
|
|
1
2
|
import { withClient, output, userIntentOption } from "./shared.js";
|
|
2
3
|
const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
3
4
|
/**
|
|
@@ -92,36 +93,24 @@ function dayOffsetSuffix(departure, arrival) {
|
|
|
92
93
|
return `+${days}d`;
|
|
93
94
|
}
|
|
94
95
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
96
|
+
* The cheapest fare, read through the api-client money reader: the fare's own
|
|
97
|
+
* `display` string when it carries one, else "GBP 18.00" built from the reading.
|
|
98
|
+
*
|
|
99
|
+
* Fares are compared by major amount, not by the raw figure, so a scale is
|
|
100
|
+
* always applied before comparing. The reader honours an explicit
|
|
101
|
+
* `decimal_places: 0` and, when the field is genuinely absent, the currency's
|
|
102
|
+
* ISO digits — assuming 2 would print a JPY fare of {value: 3200} as
|
|
103
|
+
* "JPY 32.00". A fare whose money cannot be read is skipped rather than
|
|
104
|
+
* printed wrong.
|
|
100
105
|
*/
|
|
101
|
-
function isoFractionDigits(currency) {
|
|
102
|
-
if (!currency)
|
|
103
|
-
return 2;
|
|
104
|
-
try {
|
|
105
|
-
return (new Intl.NumberFormat("en-US", { style: "currency", currency })
|
|
106
|
-
.resolvedOptions().maximumFractionDigits ?? 2);
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
return 2;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
106
|
function cheapestFare(c) {
|
|
113
107
|
const prices = (c.fares ?? [])
|
|
114
|
-
.map((f) => f.total_price)
|
|
115
|
-
.filter((p) =>
|
|
108
|
+
.map((f) => tryReadMoney(f.total_price))
|
|
109
|
+
.filter((p) => p !== undefined);
|
|
116
110
|
if (!prices.length)
|
|
117
111
|
return "";
|
|
118
|
-
const cheapest = prices.reduce((a, b) => (
|
|
119
|
-
|
|
120
|
-
// "unset" — hence `??` — and a genuinely absent field falls back to the
|
|
121
|
-
// currency's own ISO digits rather than assuming 2.
|
|
122
|
-
const places = cheapest.decimal_places ?? isoFractionDigits(cheapest.currency);
|
|
123
|
-
const amount = (cheapest.value ?? 0) / 10 ** places;
|
|
124
|
-
return `${amount.toFixed(places)} ${cheapest.currency ?? ""}`.trim();
|
|
112
|
+
const cheapest = prices.reduce((a, b) => (a.amount <= b.amount ? a : b));
|
|
113
|
+
return cheapest.display ?? `${cheapest.currency} ${cheapest.text}`;
|
|
125
114
|
}
|
|
126
115
|
/**
|
|
127
116
|
* Table view. The connection id is printed in full and never truncated: it is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ground-search.js","sourceRoot":"","sources":["../../src/commands/ground-search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ground-search.js","sourceRoot":"","sources":["../../src/commands/ground-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export interface LowestFareInputs {
|
|
|
8
8
|
returnDate?: string;
|
|
9
9
|
cabinClass: FlightFindRequest["cabin_class"];
|
|
10
10
|
directOnly: boolean;
|
|
11
|
+
includeCarriers?: string[];
|
|
12
|
+
excludeCarriers?: string[];
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* Build the canonical FLAT lowest_fare body (jinko-api POST /v1/lowest_fare).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lowest-fare.d.ts","sourceRoot":"","sources":["../../src/commands/lowest-fare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"lowest-fare.d.ts","sourceRoot":"","sources":["../../src/commands/lowest-fare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAW7D,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,gBAAgB,GACtB,iBAAiB,CAmBnB;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuGhE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { withClient, output, resolveDeprecatedFlag, userIntentOption } from "./shared.js";
|
|
1
|
+
import { withClient, output, resolveDeprecatedFlag, userIntentOption, normalizeCarrierCodes, } from "./shared.js";
|
|
2
2
|
const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
3
3
|
/**
|
|
4
4
|
* Build the canonical FLAT lowest_fare body (jinko-api POST /v1/lowest_fare).
|
|
@@ -19,6 +19,12 @@ export function buildLowestFareRequest(input) {
|
|
|
19
19
|
if (input.returnDate) {
|
|
20
20
|
request.return_dates = [input.returnDate];
|
|
21
21
|
}
|
|
22
|
+
const includeCarriers = normalizeCarrierCodes(input.includeCarriers);
|
|
23
|
+
if (includeCarriers)
|
|
24
|
+
request.include_carriers = includeCarriers;
|
|
25
|
+
const excludeCarriers = normalizeCarrierCodes(input.excludeCarriers);
|
|
26
|
+
if (excludeCarriers)
|
|
27
|
+
request.exclude_carriers = excludeCarriers;
|
|
22
28
|
return request;
|
|
23
29
|
}
|
|
24
30
|
export function registerLowestFareCommand(program) {
|
|
@@ -32,6 +38,8 @@ export function registerLowestFareCommand(program) {
|
|
|
32
38
|
.option("--return-date <date>", "return date (YYYY-MM-DD) — makes it a round-trip. JSON: `return_dates[0]`.")
|
|
33
39
|
.option("--cabin-class <class>", "cabin class: economy, premium_economy, business, first (default: economy). JSON: `cabin_class`.")
|
|
34
40
|
.option("--direct-only", "only direct flights. JSON: `direct_only`.")
|
|
41
|
+
.option("--include-carriers <codes...>", "keep only itineraries whose VALIDATING (ticketing) carrier is one of these IATA 2-3 character codes (e.g. UA) — the only carrier field the cache index carries. Must not overlap --exclude-carriers. JSON: `include_carriers`.")
|
|
42
|
+
.option("--exclude-carriers <codes...>", "drop itineraries whose VALIDATING (ticketing) carrier is one of these codes. Must not overlap --include-carriers. JSON: `exclude_carriers`.")
|
|
35
43
|
.addOption(userIntentOption())
|
|
36
44
|
// Deprecated aliases — Phase 1 transition (JIN-665), remove in next major.
|
|
37
45
|
.option("--from <origin>", "DEPRECATED: use --origins.")
|
|
@@ -60,6 +68,8 @@ export function registerLowestFareCommand(program) {
|
|
|
60
68
|
returnDate: opts.returnDate,
|
|
61
69
|
cabinClass,
|
|
62
70
|
directOnly: opts.directOnly ?? false,
|
|
71
|
+
includeCarriers: opts.includeCarriers,
|
|
72
|
+
excludeCarriers: opts.excludeCarriers,
|
|
63
73
|
});
|
|
64
74
|
const data = await client.lowestFare(request);
|
|
65
75
|
if (globals.format === "table") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lowest-fare.js","sourceRoot":"","sources":["../../src/commands/lowest-fare.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"lowest-fare.js","sourceRoot":"","sources":["../../src/commands/lowest-fare.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAuSpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmC5D"}
|
package/dist/commands/schema.js
CHANGED
|
@@ -32,6 +32,8 @@ const SCHEMAS = {
|
|
|
32
32
|
flights_per_destination: "number? (default 1)",
|
|
33
33
|
limit: "number? (default 20)",
|
|
34
34
|
price_constraints: "{ max_total?: number }?",
|
|
35
|
+
include_carriers: "string[]? (2-3 char IATA/ICAO, matches the VALIDATING/ticketing carrier — the only carrier field the cache index carries. Must not overlap exclude_carriers.)",
|
|
36
|
+
exclude_carriers: "string[]? (same VALIDATING-carrier match as include_carriers; must not overlap it)",
|
|
35
37
|
},
|
|
36
38
|
response: {
|
|
37
39
|
origin: "{ city_code, city_name, country_code }",
|
|
@@ -113,9 +115,12 @@ const SCHEMAS = {
|
|
|
113
115
|
month: "string (YYYY-MM)",
|
|
114
116
|
cabin_class: "string? (default economy)",
|
|
115
117
|
direct_only: "boolean?",
|
|
118
|
+
include_carriers: "string[]? (2-3 char IATA/ICAO, matches the VALIDATING/ticketing carrier — the only carrier field the cache index carries. Must not overlap exclude_carriers.)",
|
|
119
|
+
exclude_carriers: "string[]? (same VALIDATING-carrier match as include_carriers; must not overlap it)",
|
|
116
120
|
},
|
|
117
121
|
response: {
|
|
118
122
|
itineraries: "[{ id, slices, total_amount, ... }]",
|
|
123
|
+
available_airlines: "string[]? (VALIDATING-carrier codes across the WHOLE cached match set — not just this page — ordered by count descending; lets you discover airlines to retry with include_carriers)",
|
|
119
124
|
},
|
|
120
125
|
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
126
|
},
|
|
@@ -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;;;;;;GAMG;AAEH;;;;GAIG;AACH,MAAM,eAAe,GACnB,gGAAgG,CAAC;AAEnG,oDAAoD;AACpD,MAAM,WAAW,GACf,upBAAupB,CAAC;AAE1pB,gFAAgF;AAChF,MAAM,WAAW,GACf,2pBAA2pB,CAAC;AAE9pB,qDAAqD;AACrD,MAAM,WAAW,GACf,+HAA+H,CAAC;AAElI,MAAM,OAAO,GAWT;IACF,kBAAkB,EAAE;QAClB,WAAW,EACT,yEAAyE;QAC3E,OAAO,EAAE;YACP,UAAU,EAAE,iBAAiB;YAC7B,OAAO,EAAE;gBACP,SAAS,EAAE,uBAAuB;gBAClC,KAAK,EAAE,0DAA0D;gBACjE,SAAS,EAAE,oBAAoB;aAChC;YACD,uBAAuB,EAAE,qBAAqB;YAC9C,KAAK,EAAE,sBAAsB;YAC7B,iBAAiB,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,16 @@ export declare function exitWithError(err: unknown, globals: GlobalOptions): nev
|
|
|
30
30
|
* Returns the resolved canonical value so callers can use it inline.
|
|
31
31
|
*/
|
|
32
32
|
export declare function resolveDeprecatedFlag<T>(canonical: T | undefined, deprecated: T | undefined, oldFlag: string, newFlag: string): T | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Uppercase a list of carrier codes, dropping it when empty (an empty list is
|
|
35
|
+
* not a filter). Shared by every command that takes `--include-carriers` /
|
|
36
|
+
* `--exclude-carriers` (flight-search, price-monitoring, and the cache-tier
|
|
37
|
+
* commands — flight-calendar, find-dates, lowest-fare, find-destination) so
|
|
38
|
+
* `af kl` and `AF KL` land on the wire the same way. The platform validates
|
|
39
|
+
* case-insensitively and normalizes on its own, so this is a convenience for
|
|
40
|
+
* consistent JSON output, not a correctness requirement.
|
|
41
|
+
*/
|
|
42
|
+
export declare function normalizeCarrierCodes(list: string[] | undefined): string[] | undefined;
|
|
33
43
|
/**
|
|
34
44
|
* Fresh `--user-intent` option for the intent-eligible commands — the CLI
|
|
35
45
|
* commands whose underlying API call is one of the 21 public POST operations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,iEAAiE;AACjE,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,IAAI,SAAkB;CAKpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK,CAkBzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,SAAS,EAAE,CAAC,GAAG,SAAS,EACxB,UAAU,EAAE,CAAC,GAAG,SAAS,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,CAAC,GAAG,SAAS,CAMf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAY/E;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,CACP,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,aAAa,EAEtB,OAAO,CAAC,EAAE,GAAG,EACb,GAAG,CAAC,EAAE,OAAO,KACV,OAAO,CAAC,IAAI,CAAC,IAGK,MAAM,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,mBAuCrD"}
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,iEAAiE;AACjE,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,IAAI,SAAkB;CAKpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK,CAkBzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,SAAS,EAAE,CAAC,GAAG,SAAS,EACxB,UAAU,EAAE,CAAC,GAAG,SAAS,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,CAAC,GAAG,SAAS,CAMf;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAGtF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAY/E;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,CACP,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,aAAa,EAEtB,OAAO,CAAC,EAAE,GAAG,EACb,GAAG,CAAC,EAAE,OAAO,KACV,OAAO,CAAC,IAAI,CAAC,IAGK,MAAM,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,mBAuCrD"}
|
package/dist/commands/shared.js
CHANGED
|
@@ -54,6 +54,20 @@ export function resolveDeprecatedFlag(canonical, deprecated, oldFlag, newFlag) {
|
|
|
54
54
|
}
|
|
55
55
|
return canonical;
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Uppercase a list of carrier codes, dropping it when empty (an empty list is
|
|
59
|
+
* not a filter). Shared by every command that takes `--include-carriers` /
|
|
60
|
+
* `--exclude-carriers` (flight-search, price-monitoring, and the cache-tier
|
|
61
|
+
* commands — flight-calendar, find-dates, lowest-fare, find-destination) so
|
|
62
|
+
* `af kl` and `AF KL` land on the wire the same way. The platform validates
|
|
63
|
+
* case-insensitively and normalizes on its own, so this is a convenience for
|
|
64
|
+
* consistent JSON output, not a correctness requirement.
|
|
65
|
+
*/
|
|
66
|
+
export function normalizeCarrierCodes(list) {
|
|
67
|
+
if (!list || list.length === 0)
|
|
68
|
+
return undefined;
|
|
69
|
+
return list.map((code) => code.toUpperCase());
|
|
70
|
+
}
|
|
57
71
|
/**
|
|
58
72
|
* Fresh `--user-intent` option for the intent-eligible commands — the CLI
|
|
59
73
|
* commands whose underlying API call is one of the 21 public POST operations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type MoneyReading } from '@gojinko/api-client';
|
|
1
2
|
/**
|
|
2
3
|
* Price-change notices for trip and checkout responses (JIN-2086 S2).
|
|
3
4
|
*
|
|
@@ -11,27 +12,23 @@
|
|
|
11
12
|
* They go to STDERR, like the deprecation notices: stdout stays exactly the
|
|
12
13
|
* response body so `jinko checkout | jq` keeps working.
|
|
13
14
|
*/
|
|
14
|
-
interface Money {
|
|
15
|
-
readonly amount: number;
|
|
16
|
-
readonly currency: string;
|
|
17
|
-
readonly decimal_places?: number;
|
|
18
|
-
}
|
|
19
15
|
export interface ItemPriceChange {
|
|
20
16
|
/** The item the move belongs to, when the response named one. */
|
|
21
17
|
readonly itemId?: string;
|
|
22
|
-
readonly original:
|
|
23
|
-
readonly current:
|
|
18
|
+
readonly original: MoneyReading;
|
|
19
|
+
readonly current: MoneyReading;
|
|
24
20
|
/** `current` minus `original`, SIGNED: negative when the price fell. */
|
|
25
|
-
readonly delta:
|
|
21
|
+
readonly delta: MoneyReading;
|
|
26
22
|
}
|
|
27
23
|
/**
|
|
28
24
|
* Reads every stated price move off a response body.
|
|
29
25
|
*
|
|
30
26
|
* Defensive on purpose: the CLI talks to whatever the deployed API is, and the
|
|
31
27
|
* item arrays it reads are typed `unknown[]` on two of the four responses. A
|
|
32
|
-
* block missing any of the three figures
|
|
33
|
-
* — "changed from 100.00 to
|
|
34
|
-
* own `price` is still in
|
|
28
|
+
* block missing any of the three figures, or carrying one the money reader
|
|
29
|
+
* rejects, is dropped rather than half-reported — "changed from 100.00 to
|
|
30
|
+
* (unknown)" says less than nothing, and the item's own `price` is still in
|
|
31
|
+
* the body.
|
|
35
32
|
*/
|
|
36
33
|
export declare function readPriceChanges(response: unknown): ItemPriceChange[];
|
|
37
34
|
/** One line per moved item; an empty array when no price moved. */
|
|
@@ -41,5 +38,4 @@ export declare function priceChangeNotices(response: unknown): string[];
|
|
|
41
38
|
* is already on stdout and the notices are the last thing a human reads.
|
|
42
39
|
*/
|
|
43
40
|
export declare function printPriceChangeNotices(response: unknown, write?: (line: string) => void): void;
|
|
44
|
-
export {};
|
|
45
41
|
//# sourceMappingURL=price-change.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price-change.d.ts","sourceRoot":"","sources":["../../src/output/price-change.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"price-change.d.ts","sourceRoot":"","sources":["../../src/output/price-change.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,eAAe,EAAE,CAyBrE;AAsBD,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,CAU9D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,OAAO,EACjB,KAAK,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA2C,GACnE,IAAI,CAIN"}
|
|
@@ -1,26 +1,14 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
|
|
3
|
-
if (!value || typeof value !== 'object')
|
|
4
|
-
return undefined;
|
|
5
|
-
const money = value;
|
|
6
|
-
if (typeof money.amount !== 'number' || !Number.isFinite(money.amount))
|
|
7
|
-
return undefined;
|
|
8
|
-
if (typeof money.currency !== 'string' || money.currency === '')
|
|
9
|
-
return undefined;
|
|
10
|
-
return {
|
|
11
|
-
amount: money.amount,
|
|
12
|
-
currency: money.currency,
|
|
13
|
-
...(typeof money.decimal_places === 'number' ? { decimal_places: money.decimal_places } : {}),
|
|
14
|
-
};
|
|
15
|
-
}
|
|
2
|
+
import { tryReadMoney } from '@gojinko/api-client';
|
|
16
3
|
/**
|
|
17
4
|
* Reads every stated price move off a response body.
|
|
18
5
|
*
|
|
19
6
|
* Defensive on purpose: the CLI talks to whatever the deployed API is, and the
|
|
20
7
|
* item arrays it reads are typed `unknown[]` on two of the four responses. A
|
|
21
|
-
* block missing any of the three figures
|
|
22
|
-
* — "changed from 100.00 to
|
|
23
|
-
* own `price` is still in
|
|
8
|
+
* block missing any of the three figures, or carrying one the money reader
|
|
9
|
+
* rejects, is dropped rather than half-reported — "changed from 100.00 to
|
|
10
|
+
* (unknown)" says less than nothing, and the item's own `price` is still in
|
|
11
|
+
* the body.
|
|
24
12
|
*/
|
|
25
13
|
export function readPriceChanges(response) {
|
|
26
14
|
if (!response || typeof response !== 'object')
|
|
@@ -37,9 +25,9 @@ export function readPriceChanges(response) {
|
|
|
37
25
|
if (!block || typeof block !== 'object')
|
|
38
26
|
continue;
|
|
39
27
|
const change = block;
|
|
40
|
-
const original =
|
|
41
|
-
const current =
|
|
42
|
-
const delta =
|
|
28
|
+
const original = tryReadMoney(change.original);
|
|
29
|
+
const current = tryReadMoney(change.current);
|
|
30
|
+
const delta = tryReadMoney(change.delta);
|
|
43
31
|
if (!original || !current || !delta)
|
|
44
32
|
continue;
|
|
45
33
|
const itemId = record.item_id;
|
|
@@ -53,16 +41,22 @@ export function readPriceChanges(response) {
|
|
|
53
41
|
return changes;
|
|
54
42
|
}
|
|
55
43
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
44
|
+
* One amount as the server wrote it when the object carries `display`, else the
|
|
45
|
+
* same shape built from the reading: ISO code first, then the major amount —
|
|
46
|
+
* "USD 159.77". The reader applies the published money rule, so a scaled figure
|
|
47
|
+
* is divided into major units and an unscaled amount is printed at the
|
|
48
|
+
* currency's own ISO digits.
|
|
58
49
|
*/
|
|
59
50
|
function formatMoney(money) {
|
|
60
|
-
|
|
61
|
-
return `${money.amount.toFixed(digits)} ${money.currency}`;
|
|
51
|
+
return money.display ?? `${money.currency} ${money.text}`;
|
|
62
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* A difference prints like any amount, with "+" in front when the price rose.
|
|
55
|
+
* A fall needs nothing added: `display` and the reader's text both put the
|
|
56
|
+
* minus after the code ("USD -10.00"), so either source gives the same line.
|
|
57
|
+
*/
|
|
63
58
|
function formatDelta(delta) {
|
|
64
|
-
|
|
65
|
-
return `${delta.amount > 0 ? '+' : ''}${delta.amount.toFixed(digits)} ${delta.currency}`;
|
|
59
|
+
return `${delta.amount > 0 ? '+' : ''}${formatMoney(delta)}`;
|
|
66
60
|
}
|
|
67
61
|
/** One line per moved item; an empty array when no price moved. */
|
|
68
62
|
export function priceChangeNotices(response) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price-change.js","sourceRoot":"","sources":["../../src/output/price-change.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"price-change.js","sourceRoot":"","sources":["../../src/output/price-change.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.26.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.26.0",
|
|
21
21
|
"commander": "^12.1.0",
|
|
22
22
|
"chalk": "^5.4.1"
|
|
23
23
|
},
|