@gojinko/cli 1.0.0 → 1.1.1
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 +17 -12
- package/SKILL.md +16 -15
- package/dist/commands/auth/index.d.ts.map +1 -1
- package/dist/commands/auth/index.js +4 -1
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/exchange.d.ts +3 -0
- package/dist/commands/exchange.d.ts.map +1 -0
- package/dist/commands/exchange.js +87 -0
- package/dist/commands/exchange.js.map +1 -0
- package/dist/commands/find-flight.js +1 -1
- package/dist/commands/find-flight.js.map +1 -1
- package/dist/commands/flight-search.d.ts.map +1 -1
- package/dist/commands/flight-search.js +6 -0
- package/dist/commands/flight-search.js.map +1 -1
- package/dist/commands/hotel-search.d.ts +3 -0
- package/dist/commands/hotel-search.d.ts.map +1 -0
- package/dist/commands/hotel-search.js +82 -0
- package/dist/commands/hotel-search.js.map +1 -0
- package/dist/commands/lookup-booking.d.ts +3 -0
- package/dist/commands/lookup-booking.d.ts.map +1 -0
- package/dist/commands/lookup-booking.js +16 -0
- package/dist/commands/lookup-booking.js.map +1 -0
- package/dist/commands/refund.d.ts +16 -0
- package/dist/commands/refund.d.ts.map +1 -1
- package/dist/commands/refund.js +80 -20
- package/dist/commands/refund.js.map +1 -1
- package/dist/commands/shared.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/package.json +4 -3
package/README.md
CHANGED
|
@@ -31,21 +31,26 @@ jinko auth logout # Clear stored credentials
|
|
|
31
31
|
|
|
32
32
|
## Commands
|
|
33
33
|
|
|
34
|
-
###
|
|
34
|
+
### Exploration (cached)
|
|
35
35
|
|
|
36
36
|
| Command | Description |
|
|
37
37
|
|---|---|
|
|
38
|
-
| `find-flight` | Cheapest flights A → B, returns `offer_token` |
|
|
39
38
|
| `find-destination` | Discover destinations from an origin |
|
|
40
|
-
| `flight-calendar` | Cheapest prices across a date range |
|
|
39
|
+
| `flight-calendar` | Cheapest prices across a date range for a known route |
|
|
41
40
|
|
|
42
|
-
### Live
|
|
41
|
+
### Live pricing & trip building
|
|
43
42
|
|
|
44
43
|
| Command | Description |
|
|
45
44
|
|---|---|
|
|
46
|
-
| `flight-search` |
|
|
45
|
+
| `flight-search` | Direct search by route + dates OR price-check an `offer_token`. Returns bookable `trip_item_token`. |
|
|
47
46
|
| `trip` | Create/update a trip, add items, set travelers |
|
|
48
47
|
|
|
48
|
+
### Legacy
|
|
49
|
+
|
|
50
|
+
| Command | Description |
|
|
51
|
+
|---|---|
|
|
52
|
+
| `find-flight` | Cached route + dates search. Kept for backwards compat; prefer `flight-search` for new integrations. |
|
|
53
|
+
|
|
49
54
|
### Checkout
|
|
50
55
|
|
|
51
56
|
| Command | Description |
|
|
@@ -71,7 +76,7 @@ jinko auth logout # Clear stored credentials
|
|
|
71
76
|
## Canonical Flow
|
|
72
77
|
|
|
73
78
|
```
|
|
74
|
-
|
|
79
|
+
flight-search → trip → checkout → user pays on checkout_url → trip-status
|
|
75
80
|
```
|
|
76
81
|
|
|
77
82
|
Quote is automatic — `checkout` handles it internally. Payment happens on the Jinko web page, not in the CLI.
|
|
@@ -79,10 +84,10 @@ Quote is automatic — `checkout` handles it internally. Payment happens on the
|
|
|
79
84
|
## Examples
|
|
80
85
|
|
|
81
86
|
```bash
|
|
82
|
-
#
|
|
83
|
-
jinko
|
|
87
|
+
# Live flight search by route + dates (returns trip_item_token directly)
|
|
88
|
+
jinko flight-search --from PAR --to NYC --date 2026-06-15
|
|
84
89
|
|
|
85
|
-
#
|
|
90
|
+
# Or price-check an offer_token from flight-calendar
|
|
86
91
|
jinko flight-search --offer-token <offer_token>
|
|
87
92
|
|
|
88
93
|
# Create trip with travelers + contact
|
|
@@ -113,13 +118,13 @@ jinko refund commit --booking-ref <ref> --pnr <pnr> --reason "schedule change"
|
|
|
113
118
|
## Output Formats
|
|
114
119
|
|
|
115
120
|
```bash
|
|
116
|
-
jinko
|
|
117
|
-
jinko
|
|
121
|
+
jinko flight-search --from PAR --to NYC --date 2026-06-15
|
|
122
|
+
jinko flight-search --from PAR --to NYC --date 2026-06-15 --format table
|
|
118
123
|
```
|
|
119
124
|
|
|
120
125
|
## Schema Introspection
|
|
121
126
|
|
|
122
127
|
```bash
|
|
123
128
|
jinko schema # List all tools
|
|
124
|
-
jinko schema
|
|
129
|
+
jinko schema flight-search # Show a tool's request/response schema
|
|
125
130
|
```
|
package/SKILL.md
CHANGED
|
@@ -22,11 +22,15 @@ Opens a browser for WorkOS device flow login. Token is stored in `~/.jinko/confi
|
|
|
22
22
|
|
|
23
23
|
## Tools
|
|
24
24
|
|
|
25
|
-
###
|
|
26
|
-
- `find-
|
|
27
|
-
- `
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
### Exploration (cached, cheap)
|
|
26
|
+
- `find-destination` — discover destinations from one or more origins
|
|
27
|
+
- `flight-calendar` — cheapest prices across a date range for a known route
|
|
28
|
+
|
|
29
|
+
### Pricing (live)
|
|
30
|
+
- `flight-search` — direct search by route + dates OR price-check an `offer_token`. Returns `trip_item_token`.
|
|
31
|
+
|
|
32
|
+
### Legacy
|
|
33
|
+
- `find-flight` — cached route + dates search. Kept for backwards compat; prefer `flight-search` for any new integration.
|
|
30
34
|
|
|
31
35
|
### Trip building
|
|
32
36
|
- `trip` — create/update a trip (add items, set travelers + contact). Returns `trip_id`.
|
|
@@ -47,27 +51,24 @@ Opens a browser for WorkOS device flow login. Token is stored in `~/.jinko/confi
|
|
|
47
51
|
## Canonical Flow
|
|
48
52
|
|
|
49
53
|
```
|
|
50
|
-
1. jinko
|
|
51
|
-
→ each
|
|
52
|
-
|
|
53
|
-
2. jinko flight-search --offer-token <offer_token>
|
|
54
|
-
→ returns trip_item_token with live pricing
|
|
54
|
+
1. jinko flight-search --from PAR --to NYC --date 2026-05-01
|
|
55
|
+
→ each fare has a trip_item_token (live pricing already applied)
|
|
55
56
|
|
|
56
|
-
|
|
57
|
+
2. jinko trip \
|
|
57
58
|
--trip-item-token <trip_item_token> \
|
|
58
59
|
--travelers '[{"first_name":"Jane","last_name":"Doe","date_of_birth":"1990-01-15","gender":"FEMALE","passenger_type":"ADULT"}]' \
|
|
59
60
|
--contact '{"email":"jane@example.com","phone":"+33612345678"}'
|
|
60
61
|
→ returns trip_id
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
3. jinko checkout --trip-id <trip_id>
|
|
63
64
|
→ returns { checkout_url, items, available_ancillaries, total_amount }
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
4. (optional) jinko select-ancillaries --trip-id <id> --item-id <id> --select <offer_ids>
|
|
66
67
|
→ apply bag/seat selections
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
5. Send the user to checkout_url — they complete payment on the Jinko web page.
|
|
69
70
|
|
|
70
|
-
|
|
71
|
+
6. jinko trip-status --trip-id <trip_id>
|
|
71
72
|
→ poll until status = "fulfilled" (or "partially_fulfilled") to get PNRs.
|
|
72
73
|
```
|
|
73
74
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkK3D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { resolveAuth, writeConfigFile, clearAuthConfig, readConfigFile, CONFIG_FILE, requestDeviceAuthorization, pollForToken, OAuthError, } from '@gojinko/api-client';
|
|
1
|
+
import { resolveAuth, writeConfigFile, clearAuthConfig, clearCliSession, readConfigFile, CONFIG_FILE, requestDeviceAuthorization, pollForToken, OAuthError, } from '@gojinko/api-client';
|
|
2
2
|
import { output, outputError } from '../shared.js';
|
|
3
3
|
import { getGlobalOptions } from '../../config/config.js';
|
|
4
4
|
import { promptChoice, promptText } from './prompt.js';
|
|
@@ -97,6 +97,9 @@ export function registerAuthCommands(program) {
|
|
|
97
97
|
.action(async (_opts, cmd) => {
|
|
98
98
|
const globals = getGlobalOptions(cmd);
|
|
99
99
|
await clearAuthConfig();
|
|
100
|
+
// Also rotate the CLI session so the next login starts a fresh
|
|
101
|
+
// observability correlation id in Datadog.
|
|
102
|
+
await clearCliSession();
|
|
100
103
|
output({
|
|
101
104
|
status: 'ok',
|
|
102
105
|
message: 'Credentials cleared.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,EACX,0BAA0B,EAC1B,YAAY,EACZ,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAEzC,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEtC,8CAA8C;QAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAW,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,4EAA4E,EAAE,EAAE,OAAO,CAAC,CAAC;gBACvI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC;gBACL,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,oBAAoB,WAAW,EAAE;aAC3C,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,qCAAqC,EAAE;YACvE,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,OAAgB,EAAE;YAChF,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,SAAkB,EAAE;SACxE,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,sCAAsC,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,OAAO,CAAC,CAAC;gBACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,4EAA4E,EAAE,EAAE,OAAO,CAAC,CAAC;gBACvI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC;gBACL,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,oBAAoB,WAAW,EAAE;aAC3C,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,0BAA0B,EAAE,CAAC;YAElD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,yBAAyB,IAAI,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,gBAAgB,oBAAoB,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;YAEzF,oCAAoC;YACpC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE;gBACpD,eAAe,EAAE,MAAM,CAAC,QAAQ;gBAChC,SAAS,EAAE,MAAM,CAAC,UAAU;aAC7B,CAAC,CAAC;YAEH,MAAM,eAAe,CAAC;gBACpB,KAAK,EAAE;oBACL,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B;aACF,CAAC,CAAC;YAEH,MAAM,CAAC;gBACL,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,oDAAoD,WAAW,EAAE;aAC3E,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;gBAChC,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,KAA8B,EAAE,GAAY,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,eAAe,EAAE,CAAC;QACxB,MAAM,CAAC;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,sBAAsB;SAChC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,KAA8B,EAAE,GAAY,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC;gBACL,aAAa,EAAE,KAAK;gBACpB,OAAO,EAAE,yEAAyE;aACnF,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC,KAAK,CAAC;QAEV,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;YAC3B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;gBAC5B,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,QAAQ,CAAC;QAEf,MAAM,IAAI,GAA4B;YACpC,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,MAAM;YACb,MAAM;SACP,CAAC;QAEF,4BAA4B;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;YACtC,IAAI,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;oBACjD,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,YAAY,CAAC,GAAG,6CAA6C,CAAC;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/commands/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiF9D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { withClient, output } from './shared.js';
|
|
2
|
+
import { validateAuthFields } from './refund.js';
|
|
3
|
+
/**
|
|
4
|
+
* Build exchange auth + common fields from CLI options.
|
|
5
|
+
* Reuses the same two-mode auth validation as refund.
|
|
6
|
+
*/
|
|
7
|
+
function buildAuthFields(opts) {
|
|
8
|
+
validateAuthFields(opts);
|
|
9
|
+
return {
|
|
10
|
+
...(opts.orderId && { order_id: opts.orderId }),
|
|
11
|
+
...(opts.bookingRef && { booking_ref: opts.bookingRef }),
|
|
12
|
+
...(opts.lastName && { last_name: opts.lastName }),
|
|
13
|
+
...(opts.provider && { provider: opts.provider }),
|
|
14
|
+
...(opts.ticketNumbers && opts.ticketNumbers.length > 0 && { ticket_numbers: opts.ticketNumbers }),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function registerExchangeCommand(program) {
|
|
18
|
+
const exchange = program
|
|
19
|
+
.command('exchange')
|
|
20
|
+
.description('Shop, price, commit, or poll a flight exchange.');
|
|
21
|
+
exchange
|
|
22
|
+
.command('shop')
|
|
23
|
+
.description('Shop for flight exchange alternatives.')
|
|
24
|
+
.option('--booking-ref <ref>', 'Jinko booking reference (guest auth, requires --last-name)')
|
|
25
|
+
.option('--last-name <name>', 'Last name of the primary traveler (guest auth)')
|
|
26
|
+
.option('--order-id <id>', 'DevPlatform order ID (authenticated auth)')
|
|
27
|
+
.option('--provider <provider>', 'override provider hint')
|
|
28
|
+
.option('--ticket-numbers <numbers...>', 'one or more ticket numbers')
|
|
29
|
+
.option('--preferred-departure-date <date>', 'preferred departure date (YYYY-MM-DD)')
|
|
30
|
+
.action(withClient(async (client, globals, opts) => {
|
|
31
|
+
const response = await client.exchangeShop({
|
|
32
|
+
...buildAuthFields(opts),
|
|
33
|
+
...(opts.preferredDepartureDate && { preferred_departure_date: opts.preferredDepartureDate }),
|
|
34
|
+
});
|
|
35
|
+
output(response, { format: globals.format });
|
|
36
|
+
}));
|
|
37
|
+
exchange
|
|
38
|
+
.command('price')
|
|
39
|
+
.description('Price a specific exchange offer.')
|
|
40
|
+
.requiredOption('--offer-id <id>', 'exchange offer ID from shop response')
|
|
41
|
+
.option('--booking-ref <ref>', 'Jinko booking reference (guest auth, requires --last-name)')
|
|
42
|
+
.option('--last-name <name>', 'Last name of the primary traveler (guest auth)')
|
|
43
|
+
.option('--order-id <id>', 'DevPlatform order ID (authenticated auth)')
|
|
44
|
+
.option('--ticket-numbers <numbers...>', 'one or more ticket numbers')
|
|
45
|
+
.action(withClient(async (client, globals, opts) => {
|
|
46
|
+
const response = await client.exchangePrice({
|
|
47
|
+
...buildAuthFields(opts),
|
|
48
|
+
offer_id: opts.offerId,
|
|
49
|
+
});
|
|
50
|
+
output(response, { format: globals.format });
|
|
51
|
+
}));
|
|
52
|
+
exchange
|
|
53
|
+
.command('commit')
|
|
54
|
+
.description('Execute a flight exchange.')
|
|
55
|
+
.requiredOption('--offer-id <id>', 'exchange offer ID')
|
|
56
|
+
.requiredOption('--session-reference <ref>', 'session reference from price response')
|
|
57
|
+
.option('--booking-ref <ref>', 'Jinko booking reference (guest auth, requires --last-name)')
|
|
58
|
+
.option('--last-name <name>', 'Last name of the primary traveler (guest auth)')
|
|
59
|
+
.option('--order-id <id>', 'DevPlatform order ID (authenticated auth)')
|
|
60
|
+
.option('--ticket-numbers <numbers...>', 'one or more ticket numbers')
|
|
61
|
+
.action(withClient(async (client, globals, opts) => {
|
|
62
|
+
const response = await client.exchangeCommit({
|
|
63
|
+
...buildAuthFields(opts),
|
|
64
|
+
offer_id: opts.offerId,
|
|
65
|
+
session_reference: opts.sessionReference,
|
|
66
|
+
});
|
|
67
|
+
output(response, { format: globals.format });
|
|
68
|
+
}));
|
|
69
|
+
exchange
|
|
70
|
+
.command('status')
|
|
71
|
+
.description('Poll the status of an in-flight exchange.')
|
|
72
|
+
.option('--booking-ref <ref>', 'Jinko booking reference (guest auth, requires --last-name)')
|
|
73
|
+
.option('--last-name <name>', 'Last name of the primary traveler (guest auth)')
|
|
74
|
+
.option('--order-id <id>', 'DevPlatform order ID (authenticated auth)')
|
|
75
|
+
.option('--provider <provider>', 'override provider hint')
|
|
76
|
+
.action(withClient(async (client, globals, opts) => {
|
|
77
|
+
validateAuthFields(opts);
|
|
78
|
+
const response = await client.exchangeStatus({
|
|
79
|
+
...(opts.orderId && { order_id: opts.orderId }),
|
|
80
|
+
...(opts.bookingRef && { booking_ref: opts.bookingRef }),
|
|
81
|
+
...(opts.lastName && { last_name: opts.lastName }),
|
|
82
|
+
...(opts.provider && { provider: opts.provider }),
|
|
83
|
+
});
|
|
84
|
+
output(response, { format: globals.format });
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=exchange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../src/commands/exchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { withClient, output } from './shared.js';
|
|
|
2
2
|
export function registerFindFlightCommand(program) {
|
|
3
3
|
program
|
|
4
4
|
.command('find-flight')
|
|
5
|
-
.description('
|
|
5
|
+
.description('[legacy] Cached flight search by route + dates. Prefer `flight-search` — it returns live pricing and a bookable trip_item_token in one step.')
|
|
6
6
|
.requiredOption('--from <origin>', 'origin airport code (e.g. PAR)')
|
|
7
7
|
.requiredOption('--to <destination>', 'destination airport code (e.g. NYC)')
|
|
8
8
|
.requiredOption('--date <date>', 'departure date (YYYY-MM-DD)')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-flight.js","sourceRoot":"","sources":["../../src/commands/find-flight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"find-flight.js","sourceRoot":"","sources":["../../src/commands/find-flight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,8IAA8I,CAAC;SAC3J,cAAc,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SACnE,cAAc,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;SAC3E,cAAc,CAAC,eAAe,EAAE,6BAA6B,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACpE,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,SAAS,CAAC;SAC9F,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,8BAA8B,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,IAAI,GAA4B;YACpC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACtB,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpB,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;iBACxB;gBACD,KAAK,EAAE;oBACL,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;gBACD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAC/C,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;aACtC;YACD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;SAChC,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAiC,EAAE;YACxE,IAAI;SACI,CAAC,CAAC;QAEZ,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flight-search.d.ts","sourceRoot":"","sources":["../../src/commands/flight-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"flight-search.d.ts","sourceRoot":"","sources":["../../src/commands/flight-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkElE"}
|
|
@@ -13,6 +13,8 @@ export function registerFlightSearchCommand(program) {
|
|
|
13
13
|
.option('--cabin <class>', 'cabin class: economy, premium_economy, business, first', 'economy')
|
|
14
14
|
.option('--direct-only', 'only show direct flights')
|
|
15
15
|
.option('--max-price <amount>', 'maximum price filter')
|
|
16
|
+
.option('--include-carriers <codes...>', 'include only these IATA 2-letter carrier codes (e.g. AF KL)')
|
|
17
|
+
.option('--exclude-carriers <codes...>', 'exclude these IATA 2-letter carrier codes (e.g. FR U2)')
|
|
16
18
|
.option('--offer-token <token>', 'price-check a specific offer (live pricing)')
|
|
17
19
|
.action(withClient(async (client, globals, opts) => {
|
|
18
20
|
const isOfferCheck = Boolean(opts.offerToken);
|
|
@@ -52,6 +54,10 @@ export function registerFlightSearchCommand(program) {
|
|
|
52
54
|
body['return_date'] = opts.return;
|
|
53
55
|
if (opts.maxPrice)
|
|
54
56
|
body['max_price'] = Number(opts.maxPrice);
|
|
57
|
+
if (opts.includeCarriers)
|
|
58
|
+
body['include_carriers'] = opts.includeCarriers;
|
|
59
|
+
if (opts.excludeCarriers)
|
|
60
|
+
body['exclude_carriers'] = opts.excludeCarriers;
|
|
55
61
|
const response = await client.raw.POST('/api/v1/flights/shop', {
|
|
56
62
|
body,
|
|
57
63
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flight-search.js","sourceRoot":"","sources":["../../src/commands/flight-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,uDAAuD,CAAC;SAClF,MAAM,CAAC,sBAAsB,EAAE,mDAAmD,EAAE,MAAM,CAAC;SAC3F,MAAM,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;SAC1F,MAAM,CAAC,2BAA2B,EAAE,wDAAwD,EAAE,MAAM,CAAC;SACrG,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACpE,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,GAAG,CAAC;SACvD,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,SAAS,CAAC;SAC9F,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SACtD,MAAM,CAAC,uBAAuB,EAAE,6CAA6C,CAAC;SAC9E,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,YAAY,EAAE,CAAC;YACjB,mBAAmB;YACnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,sBAA+B,EAAE;gBACtE,IAAI,EAAE;oBACJ,WAAW,EAAE,IAAI,CAAC,UAAU;oBAC5B,UAAU,EAAE;wBACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;qBACrC;iBACF;aACO,CAAC,CAAC;YAEZ,MAAM,CAAE,QAA+B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,cAAc;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;gBAC/E,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,IAAI,GAA4B;gBACpC,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,MAAM;gBACtC,WAAW,EAAE,IAAI,CAAC,EAAE;gBACpB,gBAAgB,EAAE,IAAI,CAAC,eAAe,IAAI,MAAM;gBAChD,cAAc,EAAE,IAAI,CAAC,IAAI;gBACzB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAC/C,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;gBACrC,UAAU,EAAE;oBACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;iBACrC;aACF,CAAC;YAEF,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YACnD,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"flight-search.js","sourceRoot":"","sources":["../../src/commands/flight-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotel-search.d.ts","sourceRoot":"","sources":["../../src/commands/hotel-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuEjE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { withClient, output } from './shared.js';
|
|
2
|
+
export function registerHotelSearchCommand(program) {
|
|
3
|
+
program
|
|
4
|
+
.command('hotel-search')
|
|
5
|
+
.description('Search live hotel inventory and rates by destination, dates, and occupancy.')
|
|
6
|
+
.option('--query <text>', 'free-text destination (city, region, POI)')
|
|
7
|
+
.option('--city <name>', 'city name (e.g. "Paris")')
|
|
8
|
+
.option('--country <code>', 'ISO 3166-1 alpha-2 country code (e.g. fr)')
|
|
9
|
+
.option('--lat <latitude>', 'latitude for geo-radius search')
|
|
10
|
+
.option('--lng <longitude>', 'longitude for geo-radius search')
|
|
11
|
+
.option('--radius <km>', 'search radius in km (default 5, max 50)')
|
|
12
|
+
.option('--place-id <id>', 'Google Places ID or upstream place identifier')
|
|
13
|
+
.option('--hotel-ids <ids...>', 're-shop specific hotel IDs')
|
|
14
|
+
.option('--checkin <date>', 'check-in date (YYYY-MM-DD)', undefined)
|
|
15
|
+
.option('--checkout <date>', 'check-out date (YYYY-MM-DD)', undefined)
|
|
16
|
+
.option('--adults <n>', 'number of adults (shorthand)', '2')
|
|
17
|
+
.option('--children <ages...>', 'children ages (shorthand, e.g. 5 7)')
|
|
18
|
+
.option('--rooms <n>', 'number of rooms (shorthand)')
|
|
19
|
+
.option('--currency <code>', 'ISO 4217 currency code (default USD)')
|
|
20
|
+
.option('--nationality <code>', 'guest nationality (ISO 3166-1 alpha-2)')
|
|
21
|
+
.option('--min-rating <n>', 'minimum guest review rating (0-10)')
|
|
22
|
+
.option('--stars <n>', 'minimum star rating (1-5)')
|
|
23
|
+
.option('--min-reviews <n>', 'minimum number of reviews')
|
|
24
|
+
.option('--max-results <n>', 'maximum hotels to return (default 50)')
|
|
25
|
+
.action(withClient(async (client, globals, opts) => {
|
|
26
|
+
if (!opts.checkin || !opts.checkout) {
|
|
27
|
+
console.error('Error: --checkin and --checkout are required.');
|
|
28
|
+
process.exit(3);
|
|
29
|
+
}
|
|
30
|
+
const hasDestination = opts.query || opts.city || opts.lat || opts.placeId || opts.hotelIds;
|
|
31
|
+
if (!hasDestination) {
|
|
32
|
+
console.error('Error: provide a destination (--query, --city, --lat+--lng, --place-id, or --hotel-ids).');
|
|
33
|
+
process.exit(3);
|
|
34
|
+
}
|
|
35
|
+
const body = {
|
|
36
|
+
checkin: opts.checkin,
|
|
37
|
+
checkout: opts.checkout,
|
|
38
|
+
adults: Number(opts.adults) || 2,
|
|
39
|
+
};
|
|
40
|
+
// Destination
|
|
41
|
+
if (opts.query)
|
|
42
|
+
body['query'] = opts.query;
|
|
43
|
+
if (opts.city)
|
|
44
|
+
body['city_name'] = opts.city;
|
|
45
|
+
if (opts.country)
|
|
46
|
+
body['country_code'] = opts.country;
|
|
47
|
+
if (opts.lat)
|
|
48
|
+
body['latitude'] = Number(opts.lat);
|
|
49
|
+
if (opts.lng)
|
|
50
|
+
body['longitude'] = Number(opts.lng);
|
|
51
|
+
if (opts.radius)
|
|
52
|
+
body['radius_km'] = Number(opts.radius);
|
|
53
|
+
if (opts.placeId)
|
|
54
|
+
body['place_id'] = opts.placeId;
|
|
55
|
+
if (opts.hotelIds)
|
|
56
|
+
body['hotel_ids'] = opts.hotelIds;
|
|
57
|
+
// Occupancy shorthand
|
|
58
|
+
if (opts.children)
|
|
59
|
+
body['children'] = opts.children.map(Number);
|
|
60
|
+
if (opts.rooms)
|
|
61
|
+
body['rooms'] = Number(opts.rooms);
|
|
62
|
+
// Context
|
|
63
|
+
if (opts.currency)
|
|
64
|
+
body['currency'] = opts.currency;
|
|
65
|
+
if (opts.nationality)
|
|
66
|
+
body['guest_nationality'] = opts.nationality;
|
|
67
|
+
// Filters
|
|
68
|
+
if (opts.minRating)
|
|
69
|
+
body['min_rating'] = Number(opts.minRating);
|
|
70
|
+
if (opts.stars)
|
|
71
|
+
body['star_rating'] = Number(opts.stars);
|
|
72
|
+
if (opts.minReviews)
|
|
73
|
+
body['min_reviews'] = Number(opts.minReviews);
|
|
74
|
+
if (opts.maxResults)
|
|
75
|
+
body['max_results'] = Number(opts.maxResults);
|
|
76
|
+
const response = await client.raw.POST('/api/v1/hotels/shop', {
|
|
77
|
+
body,
|
|
78
|
+
});
|
|
79
|
+
output(response.data, { format: globals.format });
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=hotel-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotel-search.js","sourceRoot":"","sources":["../../src/commands/hotel-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookup-booking.d.ts","sourceRoot":"","sources":["../../src/commands/lookup-booking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAenE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { withClient, output } from './shared.js';
|
|
2
|
+
export function registerLookupBookingCommand(program) {
|
|
3
|
+
program
|
|
4
|
+
.command('lookup-booking')
|
|
5
|
+
.description('Look up a booking by Jinko reference + last name (guest access).')
|
|
6
|
+
.requiredOption('--ref <ref>', 'Jinko booking reference (e.g. JNK-A7B3X9)')
|
|
7
|
+
.requiredOption('--last-name <name>', 'Last name of the primary traveler')
|
|
8
|
+
.action(withClient(async (client, globals, opts) => {
|
|
9
|
+
const response = await client.lookupBooking({
|
|
10
|
+
booking_ref: opts.ref,
|
|
11
|
+
last_name: opts.lastName,
|
|
12
|
+
});
|
|
13
|
+
output(response, { format: globals.format });
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=lookup-booking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookup-booking.js","sourceRoot":"","sources":["../../src/commands/lookup-booking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,kEAAkE,CAAC;SAC/E,cAAc,CAAC,aAAa,EAAE,2CAA2C,CAAC;SAC1E,cAAc,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;SACzE,MAAM,CACL,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACzC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YAC1C,WAAW,EAAE,IAAI,CAAC,GAAG;YACrB,SAAS,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
|
|
@@ -1,3 +1,19 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Validate the refund auth-mode inputs locally so partial-pair invocations
|
|
4
|
+
* never propagate to the BFF as opaque 400s.
|
|
5
|
+
*
|
|
6
|
+
* Two mutually exclusive modes:
|
|
7
|
+
* - Authenticated: --order-id
|
|
8
|
+
* - Guest: --booking-ref + --last-name (both required together)
|
|
9
|
+
*
|
|
10
|
+
* Throws a Commander-friendly string error (matches Commander's `.error()` /
|
|
11
|
+
* thrown-string conventions) on invalid input.
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateAuthFields(opts: {
|
|
14
|
+
bookingRef?: string;
|
|
15
|
+
lastName?: string;
|
|
16
|
+
orderId?: string;
|
|
17
|
+
}): void;
|
|
2
18
|
export declare function registerRefundCommand(program: Command): void;
|
|
3
19
|
//# sourceMappingURL=refund.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refund.d.ts","sourceRoot":"","sources":["../../src/commands/refund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"refund.d.ts","sourceRoot":"","sources":["../../src/commands/refund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAiBP;AA2BD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwD5D"}
|
package/dist/commands/refund.js
CHANGED
|
@@ -1,37 +1,97 @@
|
|
|
1
1
|
import { withClient, output } from './shared.js';
|
|
2
|
+
const AUTH_MODE_ERROR = 'Provide either --order-id OR both --booking-ref and --last-name (guest mode). Exactly one auth mode is required.';
|
|
3
|
+
/**
|
|
4
|
+
* Validate the refund auth-mode inputs locally so partial-pair invocations
|
|
5
|
+
* never propagate to the BFF as opaque 400s.
|
|
6
|
+
*
|
|
7
|
+
* Two mutually exclusive modes:
|
|
8
|
+
* - Authenticated: --order-id
|
|
9
|
+
* - Guest: --booking-ref + --last-name (both required together)
|
|
10
|
+
*
|
|
11
|
+
* Throws a Commander-friendly string error (matches Commander's `.error()` /
|
|
12
|
+
* thrown-string conventions) on invalid input.
|
|
13
|
+
*/
|
|
14
|
+
export function validateAuthFields(opts) {
|
|
15
|
+
const hasOrderId = Boolean(opts.orderId);
|
|
16
|
+
const hasBookingRef = Boolean(opts.bookingRef);
|
|
17
|
+
const hasLastName = Boolean(opts.lastName);
|
|
18
|
+
const hasGuestPair = hasBookingRef && hasLastName;
|
|
19
|
+
const hasPartialGuest = (hasBookingRef || hasLastName) && !hasGuestPair;
|
|
20
|
+
if (hasOrderId && (hasBookingRef || hasLastName)) {
|
|
21
|
+
throw new Error(AUTH_MODE_ERROR);
|
|
22
|
+
}
|
|
23
|
+
if (!hasOrderId && !hasGuestPair) {
|
|
24
|
+
throw new Error(AUTH_MODE_ERROR);
|
|
25
|
+
}
|
|
26
|
+
if (hasPartialGuest) {
|
|
27
|
+
// Unreachable given the two checks above, but kept explicit for readability.
|
|
28
|
+
throw new Error(AUTH_MODE_ERROR);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Build a refund request body from CLI options, picking the right auth mode.
|
|
33
|
+
*
|
|
34
|
+
* Guest auth: --booking-ref + --last-name (public; validated by BFF).
|
|
35
|
+
* Authenticated: --order-id (DevPlatform OAuth / jnk_* keys).
|
|
36
|
+
*
|
|
37
|
+
* Exactly one mode must be provided — the BFF rejects mixed combinations.
|
|
38
|
+
*/
|
|
39
|
+
function buildAuthFields(opts) {
|
|
40
|
+
validateAuthFields(opts);
|
|
41
|
+
return {
|
|
42
|
+
...(opts.orderId && { order_id: opts.orderId }),
|
|
43
|
+
...(opts.bookingRef && { booking_ref: opts.bookingRef }),
|
|
44
|
+
...(opts.lastName && { last_name: opts.lastName }),
|
|
45
|
+
...(opts.provider && { provider: opts.provider }),
|
|
46
|
+
...(opts.ticketNumbers && opts.ticketNumbers.length > 0 && { ticket_numbers: opts.ticketNumbers }),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
2
49
|
export function registerRefundCommand(program) {
|
|
3
50
|
const refund = program
|
|
4
51
|
.command('refund')
|
|
5
|
-
.description('Check eligibility or
|
|
52
|
+
.description('Check eligibility, initiate, or poll a flight refund.');
|
|
6
53
|
refund
|
|
7
54
|
.command('check')
|
|
8
55
|
.description('Check refund eligibility and estimated amount.')
|
|
9
|
-
.
|
|
10
|
-
.
|
|
56
|
+
.option('--booking-ref <ref>', 'Jinko booking reference (guest auth, requires --last-name)')
|
|
57
|
+
.option('--last-name <name>', 'Last name of the primary traveler (guest auth)')
|
|
58
|
+
.option('--order-id <id>', 'DevPlatform order ID (authenticated auth)')
|
|
59
|
+
.option('--provider <provider>', 'override provider hint')
|
|
60
|
+
.option('--ticket-numbers <numbers...>', 'one or more ticket numbers')
|
|
11
61
|
.action(withClient(async (client, globals, opts) => {
|
|
12
|
-
const response = await client.
|
|
13
|
-
|
|
14
|
-
booking_reference: opts.bookingRef,
|
|
15
|
-
pnr: opts.pnr,
|
|
16
|
-
},
|
|
17
|
-
});
|
|
18
|
-
output(response.data, { format: globals.format });
|
|
62
|
+
const response = await client.refundCheck(buildAuthFields(opts));
|
|
63
|
+
output(response, { format: globals.format });
|
|
19
64
|
}));
|
|
20
65
|
refund
|
|
21
66
|
.command('commit')
|
|
22
67
|
.description('Initiate a refund for a booked flight.')
|
|
23
|
-
.
|
|
24
|
-
.
|
|
25
|
-
.option('--
|
|
68
|
+
.option('--booking-ref <ref>', 'Jinko booking reference (guest auth, requires --last-name)')
|
|
69
|
+
.option('--last-name <name>', 'Last name of the primary traveler (guest auth)')
|
|
70
|
+
.option('--order-id <id>', 'DevPlatform order ID (authenticated auth)')
|
|
71
|
+
.option('--provider <provider>', 'override provider hint')
|
|
72
|
+
.option('--ticket-numbers <numbers...>', 'one or more ticket numbers')
|
|
73
|
+
.action(withClient(async (client, globals, opts) => {
|
|
74
|
+
const response = await client.refundCommit(buildAuthFields(opts));
|
|
75
|
+
output(response, { format: globals.format });
|
|
76
|
+
}));
|
|
77
|
+
refund
|
|
78
|
+
.command('status')
|
|
79
|
+
.description('Poll the current status of a previously committed refund.')
|
|
80
|
+
.option('--booking-ref <ref>', 'Jinko booking reference (guest auth, requires --last-name)')
|
|
81
|
+
.option('--last-name <name>', 'Last name of the primary traveler (guest auth)')
|
|
82
|
+
.option('--order-id <id>', 'DevPlatform order ID (authenticated auth)')
|
|
83
|
+
.option('--refund-reference <ref>', 'refund reference returned by `refund commit`')
|
|
84
|
+
.option('--provider <provider>', 'override provider hint')
|
|
26
85
|
.action(withClient(async (client, globals, opts) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
},
|
|
86
|
+
validateAuthFields(opts);
|
|
87
|
+
const response = await client.refundStatus({
|
|
88
|
+
...(opts.orderId && { order_id: opts.orderId }),
|
|
89
|
+
...(opts.bookingRef && { booking_ref: opts.bookingRef }),
|
|
90
|
+
...(opts.lastName && { last_name: opts.lastName }),
|
|
91
|
+
...(opts.refundReference && { refund_reference: opts.refundReference }),
|
|
92
|
+
...(opts.provider && { provider: opts.provider }),
|
|
33
93
|
});
|
|
34
|
-
output(response
|
|
94
|
+
output(response, { format: globals.format });
|
|
35
95
|
}));
|
|
36
96
|
}
|
|
37
97
|
//# sourceMappingURL=refund.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refund.js","sourceRoot":"","sources":["../../src/commands/refund.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"refund.js","sourceRoot":"","sources":["../../src/commands/refund.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAoB,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAG/B;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,OAMkB;IAElB,8DAA8D;IAC9D,OAAO,KAAK,WAA0B,GAAG,IAAW;QAClD,uEAAuE;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAY,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAA4B,CAAC;QACjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;gBACrC,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAoB,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAG/B;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,OAMkB;IAElB,8DAA8D;IAC9D,OAAO,KAAK,WAA0B,GAAG,IAAW;QAClD,uEAAuE;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAY,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAA4B,CAAC;QACjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;gBACrC,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;gBAC9B,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;AACJ,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;AAuBpC,wBAAgB,aAAa,IAAI,OAAO,CAkCvC"}
|
package/dist/index.js
CHANGED
|
@@ -6,11 +6,14 @@ import { registerFindFlightCommand } from './commands/find-flight.js';
|
|
|
6
6
|
import { registerFindDestinationCommand } from './commands/find-destination.js';
|
|
7
7
|
import { registerFlightSearchCommand } from './commands/flight-search.js';
|
|
8
8
|
import { registerFlightCalendarCommand } from './commands/flight-calendar.js';
|
|
9
|
+
import { registerHotelSearchCommand } from './commands/hotel-search.js';
|
|
9
10
|
import { registerTripCommand } from './commands/trip.js';
|
|
10
11
|
import { registerBookCommand } from './commands/checkout.js';
|
|
11
12
|
import { registerTripStatusCommand } from './commands/trip-status.js';
|
|
12
13
|
import { registerSelectAncillariesCommand } from './commands/select-ancillaries.js';
|
|
13
14
|
import { registerRefundCommand } from './commands/refund.js';
|
|
15
|
+
import { registerExchangeCommand } from './commands/exchange.js';
|
|
16
|
+
import { registerLookupBookingCommand } from './commands/lookup-booking.js';
|
|
14
17
|
import { registerAuthCommands } from './commands/auth/index.js';
|
|
15
18
|
import { registerSchemaCommand } from './commands/schema.js';
|
|
16
19
|
import { registerConfigCommands } from './commands/config/index.js';
|
|
@@ -30,13 +33,16 @@ export function createProgram() {
|
|
|
30
33
|
registerFindDestinationCommand(program);
|
|
31
34
|
registerFlightSearchCommand(program);
|
|
32
35
|
registerFlightCalendarCommand(program);
|
|
36
|
+
registerHotelSearchCommand(program);
|
|
33
37
|
// Trip building + checkout
|
|
34
38
|
registerTripCommand(program);
|
|
35
39
|
registerBookCommand(program);
|
|
36
40
|
registerSelectAncillariesCommand(program);
|
|
37
41
|
registerTripStatusCommand(program);
|
|
38
42
|
// Post-booking
|
|
43
|
+
registerLookupBookingCommand(program);
|
|
39
44
|
registerRefundCommand(program);
|
|
45
|
+
registerExchangeCommand(program);
|
|
40
46
|
// Utility commands
|
|
41
47
|
registerAuthCommands(program);
|
|
42
48
|
registerConfigCommands(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,iEAAiE;AACjE,sEAAsE;AACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACpE,CAAC;AAEzB,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,8EAA8E,CAAC;SAC3F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;SACpB,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,EAAE,MAAM,CAAC;SAC7E,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC,CAAC;IAEzE,YAAY;IACZ,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxC,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,6BAA6B,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,iEAAiE;AACjE,sEAAsE;AACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACpE,CAAC;AAEzB,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,8EAA8E,CAAC;SAC3F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;SACpB,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,EAAE,MAAM,CAAC;SAC7E,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC,CAAC;IAEzE,YAAY;IACZ,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxC,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACvC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAEpC,2BAA2B;IAC3B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC1C,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAEnC,eAAe;IACf,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEjC,mBAAmB;IACnB,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gojinko/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"jinko": "./dist/bin/jinko.js"
|
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
"start": "tsx src/bin/jinko.ts",
|
|
14
14
|
"test": "vitest run",
|
|
15
15
|
"test:watch": "vitest",
|
|
16
|
-
"lint": "tsc --noEmit"
|
|
16
|
+
"lint": "tsc --noEmit",
|
|
17
|
+
"docs:gen": "tsx scripts/gen-cli-docs.ts"
|
|
17
18
|
},
|
|
18
19
|
"dependencies": {
|
|
19
|
-
"@gojinko/api-client": "1.
|
|
20
|
+
"@gojinko/api-client": "1.1.1",
|
|
20
21
|
"commander": "^12.1.0",
|
|
21
22
|
"chalk": "^5.4.1",
|
|
22
23
|
"open": "^10.0.0",
|