@gojinko/api-client 0.3.0 → 0.4.5
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 +142 -31
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/oauth.d.ts +5 -0
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +35 -2
- package/dist/oauth.js.map +1 -1
- package/dist/tools.d.ts +25 -9
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +12 -6
- package/dist/tools.js.map +1 -1
- package/dist/types/devplatform.d.ts +37 -0
- package/dist/types/devplatform.d.ts.map +1 -1
- package/package.json +10 -10
- package/dist/callback-server.d.ts +0 -18
- package/dist/callback-server.d.ts.map +0 -1
- package/dist/callback-server.js +0 -85
- package/dist/callback-server.js.map +0 -1
- package/dist/flights.d.ts +0 -14
- package/dist/flights.d.ts.map +0 -1
- package/dist/flights.js +0 -29
- package/dist/flights.js.map +0 -1
- package/dist/trips.d.ts +0 -18
- package/dist/trips.d.ts.map +0 -1
- package/dist/trips.js +0 -65
- package/dist/trips.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @gojinko/api-client
|
|
2
2
|
|
|
3
|
-
Typed API client for the Jinko BFF.
|
|
3
|
+
Typed API client for the Jinko BFF. 12 methods matching MCP tools 1:1.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -13,19 +13,71 @@ npm install @gojinko/api-client
|
|
|
13
13
|
```typescript
|
|
14
14
|
import { createJinkoClient } from '@gojinko/api-client';
|
|
15
15
|
|
|
16
|
+
// Uses credentials from ~/.jinko/config.yaml or JINKO_API_KEY env
|
|
17
|
+
const client = await createJinkoClient();
|
|
18
|
+
|
|
19
|
+
// Or pass an API key directly
|
|
16
20
|
const client = await createJinkoClient({ apiKey: 'jnk_...' });
|
|
17
21
|
```
|
|
18
22
|
|
|
19
|
-
##
|
|
23
|
+
## Authentication
|
|
24
|
+
|
|
25
|
+
The client resolves credentials automatically in this order:
|
|
26
|
+
|
|
27
|
+
1. `apiKey` option passed to `createJinkoClient()`
|
|
28
|
+
2. `JINKO_API_KEY` environment variable
|
|
29
|
+
3. `~/.jinko/config.yaml` — API key or OAuth tokens
|
|
30
|
+
|
|
31
|
+
OAuth tokens are set up via the CLI (`jinko auth login`) and refreshed automatically when they expire.
|
|
32
|
+
|
|
33
|
+
### Config file
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
# ~/.jinko/config.yaml
|
|
37
|
+
|
|
38
|
+
# API key auth
|
|
39
|
+
api_key: jnk_your_key
|
|
40
|
+
|
|
41
|
+
# OR OAuth auth (managed by `jinko auth login`, don't edit manually)
|
|
42
|
+
oauth:
|
|
43
|
+
access_token: eyJhbGci...
|
|
44
|
+
refresh_token: re_abc...
|
|
45
|
+
expires_at: 1711036800000
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 12 Methods
|
|
20
49
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
|
24
|
-
|
|
25
|
-
| `client.
|
|
26
|
-
| `client.
|
|
27
|
-
| `client.
|
|
28
|
-
|
|
50
|
+
### Discovery (cached)
|
|
51
|
+
|
|
52
|
+
| Method | MCP Tool | BFF Endpoint |
|
|
53
|
+
|--------|----------|--------------|
|
|
54
|
+
| `client.findFlight()` | `find_flight` | `POST /flights/search` |
|
|
55
|
+
| `client.findDestination()` | `find_destination` | `POST /flights/destination-search` |
|
|
56
|
+
| `client.flightCalendar()` | `flight_calendar` | `POST /flights/search` |
|
|
57
|
+
|
|
58
|
+
### Search & Trip (live)
|
|
59
|
+
|
|
60
|
+
| Method | MCP Tool | BFF Endpoint |
|
|
61
|
+
|--------|----------|--------------|
|
|
62
|
+
| `client.flightSearch()` | `flight_search` | `POST /flights/shop` |
|
|
63
|
+
| `client.trip()` | `trip` | `POST /trips` |
|
|
64
|
+
|
|
65
|
+
### Booking — Cart V2 (live)
|
|
66
|
+
|
|
67
|
+
| Method | MCP Tool | BFF Endpoint |
|
|
68
|
+
|--------|----------|--------------|
|
|
69
|
+
| `client.quote()` | `book` (quote) | `POST /trips/checkout` |
|
|
70
|
+
| `client.selectAncillaries()` | `trip` (ancillaries) | `POST /trips/ancillaries` |
|
|
71
|
+
| `client.scheduleFulfillment()` | `book` (fulfillment) | `POST /trips/fulfillment` |
|
|
72
|
+
| `client.confirmPayment()` | `book` (confirm) | `POST /trips/confirm-payment` |
|
|
73
|
+
| `client.book()` | `book` | `POST /trips/checkout` |
|
|
74
|
+
|
|
75
|
+
### Post-Booking (live)
|
|
76
|
+
|
|
77
|
+
| Method | MCP Tool | BFF Endpoint |
|
|
78
|
+
|--------|----------|--------------|
|
|
79
|
+
| `client.refundCheck()` | — | `POST /flights/refund-check` |
|
|
80
|
+
| `client.refundCommit()` | — | `POST /flights/refund-commit` |
|
|
29
81
|
|
|
30
82
|
## Usage
|
|
31
83
|
|
|
@@ -75,7 +127,7 @@ const calendar = await client.flightCalendar({
|
|
|
75
127
|
### flight_search — Live search / price-check
|
|
76
128
|
|
|
77
129
|
```typescript
|
|
78
|
-
// Search mode
|
|
130
|
+
// Search mode (city codes — default)
|
|
79
131
|
const results = await client.flightSearch({
|
|
80
132
|
origin: 'PAR',
|
|
81
133
|
destination: 'NYC',
|
|
@@ -84,6 +136,17 @@ const results = await client.flightSearch({
|
|
|
84
136
|
passengers: { adults: 1 },
|
|
85
137
|
});
|
|
86
138
|
|
|
139
|
+
// Search mode (airport codes)
|
|
140
|
+
const results = await client.flightSearch({
|
|
141
|
+
origin: 'CDG',
|
|
142
|
+
origin_type: 'airport',
|
|
143
|
+
destination: 'JFK',
|
|
144
|
+
destination_type: 'airport',
|
|
145
|
+
departure_date: '2026-06-15',
|
|
146
|
+
trip_type: 'oneway',
|
|
147
|
+
passengers: { adults: 1 },
|
|
148
|
+
});
|
|
149
|
+
|
|
87
150
|
// Price-check mode (returns trip_item_token)
|
|
88
151
|
const fares = await client.flightSearch({
|
|
89
152
|
offer_token: 'tok_abc123',
|
|
@@ -110,41 +173,83 @@ const trip = await client.trip({
|
|
|
110
173
|
// → { trip_id, status, items, travelers, actions_performed }
|
|
111
174
|
```
|
|
112
175
|
|
|
113
|
-
###
|
|
176
|
+
### quote — Get quote with ancillary options
|
|
114
177
|
|
|
115
178
|
```typescript
|
|
116
|
-
const
|
|
117
|
-
// → {
|
|
179
|
+
const quote = await client.quote({ trip_id: '42' });
|
|
180
|
+
// → { items, available_ancillaries, pricing }
|
|
118
181
|
```
|
|
119
182
|
|
|
120
|
-
|
|
183
|
+
### selectAncillaries — Add baggage, seats, meals
|
|
121
184
|
|
|
185
|
+
```typescript
|
|
186
|
+
const updated = await client.selectAncillaries({
|
|
187
|
+
trip_id: '42',
|
|
188
|
+
item_id: 'item_1',
|
|
189
|
+
select: ['offer_id_1', 'offer_id_2'],
|
|
190
|
+
pax: 'pax_ref', // optional, for per-pax ancillaries
|
|
191
|
+
quantity: 2, // optional, default 1
|
|
192
|
+
});
|
|
122
193
|
```
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
194
|
+
|
|
195
|
+
### scheduleFulfillment — Create Stripe payment
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
const checkout = await client.scheduleFulfillment({ trip_id: '42' });
|
|
199
|
+
// → { checkout_url, session_id }
|
|
127
200
|
```
|
|
128
201
|
|
|
129
|
-
|
|
202
|
+
### confirmPayment — Verify Stripe payment after checkout
|
|
130
203
|
|
|
131
204
|
```typescript
|
|
132
|
-
|
|
133
|
-
|
|
205
|
+
const confirmation = await client.confirmPayment({
|
|
206
|
+
trip_id: '42',
|
|
207
|
+
checkout_session: 'cs_xxx',
|
|
208
|
+
});
|
|
209
|
+
// → booking confirmation
|
|
210
|
+
```
|
|
134
211
|
|
|
135
|
-
|
|
136
|
-
const client = await createJinkoClient();
|
|
212
|
+
### book — Legacy shortcut (quote + checkout in one step)
|
|
137
213
|
|
|
138
|
-
|
|
214
|
+
```typescript
|
|
215
|
+
const checkout = await client.book({ trip_id: '42' });
|
|
216
|
+
// → { checkout_url, session_id, status }
|
|
139
217
|
```
|
|
140
218
|
|
|
141
|
-
|
|
219
|
+
### refundCheck — Check refund eligibility
|
|
142
220
|
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
|
|
221
|
+
```typescript
|
|
222
|
+
const eligibility = await client.refundCheck({
|
|
223
|
+
booking_ref: 'ref_123',
|
|
224
|
+
pnr: 'ABC123',
|
|
225
|
+
});
|
|
146
226
|
```
|
|
147
227
|
|
|
228
|
+
### refundCommit — Initiate a refund
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
const refund = await client.refundCommit({
|
|
232
|
+
booking_ref: 'ref_123',
|
|
233
|
+
pnr: 'ABC123',
|
|
234
|
+
reason: 'schedule change',
|
|
235
|
+
});
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## Token Flow (Cart V2)
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
findFlight / findDestination / flightCalendar → offer_token (cached)
|
|
242
|
+
flightSearch (with offer_token) → trip_item_token (live)
|
|
243
|
+
trip (with trip_item_token + travelers) → trip_id
|
|
244
|
+
quote (with trip_id) → items + ancillary offers
|
|
245
|
+
selectAncillaries (optional) → updated pricing
|
|
246
|
+
scheduleFulfillment (with trip_id) → checkout_url
|
|
247
|
+
[customer pays via Stripe]
|
|
248
|
+
confirmPayment (with session_id) → booking_reference
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
> **Legacy shortcut**: `client.book({ trip_id })` combines quote + checkout in one step (skips ancillary selection).
|
|
252
|
+
|
|
148
253
|
## Error Handling
|
|
149
254
|
|
|
150
255
|
```typescript
|
|
@@ -154,7 +259,7 @@ try {
|
|
|
154
259
|
const client = await createJinkoClient();
|
|
155
260
|
} catch (error) {
|
|
156
261
|
if (error instanceof AuthError) {
|
|
157
|
-
// No credentials configured
|
|
262
|
+
// No credentials configured — run `jinko auth login`
|
|
158
263
|
}
|
|
159
264
|
if (error instanceof ApiError) {
|
|
160
265
|
console.error(error.code, error.message, error.statusCode);
|
|
@@ -173,6 +278,12 @@ import type {
|
|
|
173
278
|
FlightSearchPriceCheckRequest,
|
|
174
279
|
TripRequest,
|
|
175
280
|
CheckoutRequest,
|
|
281
|
+
QuoteRequest,
|
|
282
|
+
SelectAncillariesRequest,
|
|
283
|
+
ScheduleFulfillmentRequest,
|
|
284
|
+
ConfirmPaymentRequest,
|
|
285
|
+
RefundCheckRequest,
|
|
286
|
+
RefundCommitRequest,
|
|
176
287
|
Traveler,
|
|
177
288
|
Contact,
|
|
178
289
|
} from '@gojinko/api-client';
|
|
@@ -183,7 +294,7 @@ import type {
|
|
|
183
294
|
The underlying openapi-fetch client is still accessible:
|
|
184
295
|
|
|
185
296
|
```typescript
|
|
186
|
-
const response = await client.raw.POST('/api/v1/
|
|
297
|
+
const response = await client.raw.POST('/api/v1/flights/shop' as never, {
|
|
187
298
|
body: { ... },
|
|
188
299
|
} as never);
|
|
189
300
|
```
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { createJinkoClient, type ClientOptions, type JinkoClient, type JinkoRawC
|
|
|
2
2
|
export { type JinkoTools } from './tools.js';
|
|
3
3
|
export { resolveAuth, readConfigFile, writeConfigFile, clearAuthConfig, CONFIG_DIR, CONFIG_FILE, type AuthMethod, type ResolvedAuth, type OAuthConfig } from './auth.js';
|
|
4
4
|
export { ApiError, AuthError, ValidationError, type ApiErrorDetail } from './errors.js';
|
|
5
|
-
export { requestDeviceAuthorization, pollForToken, refreshAccessToken, isTokenExpired, OAuthError, OAuthRefreshError, type OAuthTokens, type DeviceAuthorization, } from './oauth.js';
|
|
5
|
+
export { requestDeviceAuthorization, pollForToken, refreshAccessToken, isTokenExpired, OAuthError, OAuthRefreshError, resolveExpiresAt, type OAuthTokens, type DeviceAuthorization, } from './oauth.js';
|
|
6
6
|
export type { paths, components } from './types/generated.js';
|
|
7
|
-
export type { FlightPassengers, ShopPassengers, FlightSearchFilters, FlightPriceConstraints, DateRange, FlightFindRequest, FlightDestinationSearchRequest, FlightSearchRequest, FlightSearchLiveRequest, FlightSearchPriceCheckRequest, Traveler, Contact, TripUpsertTravelers, TripRequest, CheckoutRequest, BookRequest, } from './types/devplatform.js';
|
|
7
|
+
export type { FlightPassengers, ShopPassengers, FlightSearchFilters, FlightPriceConstraints, DateRange, FlightFindRequest, FlightDestinationSearchRequest, FlightSearchRequest, FlightSearchLiveRequest, FlightSearchPriceCheckRequest, Traveler, Contact, TripUpsertTravelers, TripRequest, QuoteRequest, ScheduleFulfillmentRequest, CheckoutRequest, BookRequest, AncillarySelection, SelectAncillariesRequest, ConfirmPaymentRequest, RefundCheckRequest, RefundCommitRequest, } from './types/devplatform.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACzK,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACzK,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC1B,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createJinkoClient } from './client.js';
|
|
2
2
|
export { resolveAuth, readConfigFile, writeConfigFile, clearAuthConfig, CONFIG_DIR, CONFIG_FILE } from './auth.js';
|
|
3
3
|
export { ApiError, AuthError, ValidationError } from './errors.js';
|
|
4
|
-
export { requestDeviceAuthorization, pollForToken, refreshAccessToken, isTokenExpired, OAuthError, OAuthRefreshError, } from './oauth.js';
|
|
4
|
+
export { requestDeviceAuthorization, pollForToken, refreshAccessToken, isTokenExpired, OAuthError, OAuthRefreshError, resolveExpiresAt, } from './oauth.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA6D,MAAM,aAAa,CAAC;AAE3G,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAwD,MAAM,WAAW,CAAC;AACzK,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA6D,MAAM,aAAa,CAAC;AAE3G,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAwD,MAAM,WAAW,CAAC;AACzK,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,gBAAgB,GAGjB,MAAM,YAAY,CAAC"}
|
package/dist/oauth.d.ts
CHANGED
|
@@ -38,4 +38,9 @@ export declare function refreshAccessToken(refreshToken: string): Promise<OAuthT
|
|
|
38
38
|
* Check if tokens are expired (with buffer).
|
|
39
39
|
*/
|
|
40
40
|
export declare function isTokenExpired(tokens: OAuthTokens, bufferSeconds?: number): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Derive expires_at (ms) from the token response.
|
|
43
|
+
* Prefers `expires_in` from the response, falls back to the JWT `exp` claim.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveExpiresAt(accessToken: string, expiresIn?: number): number;
|
|
41
46
|
//# sourceMappingURL=oauth.d.ts.map
|
package/dist/oauth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,SAAwE;CAI5F;AAED;;GAEG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAa/E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B,GACA,OAAO,CAAC,WAAW,CAAC,CAqDtB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BnF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,SAAK,GAAG,OAAO,CAE/E"}
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,SAAwE;CAI5F;AAED;;GAEG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAa/E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B,GACA,OAAO,CAAC,WAAW,CAAC,CAqDtB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BnF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,SAAK,GAAG,OAAO,CAE/E;AAQD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBhF"}
|
package/dist/oauth.js
CHANGED
|
@@ -55,7 +55,7 @@ export async function pollForToken(deviceCode, options) {
|
|
|
55
55
|
return {
|
|
56
56
|
access_token: data.access_token,
|
|
57
57
|
refresh_token: data.refresh_token,
|
|
58
|
-
expires_at:
|
|
58
|
+
expires_at: resolveExpiresAt(data.access_token, data.expires_in),
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
const error = await response.json();
|
|
@@ -96,7 +96,7 @@ export async function refreshAccessToken(refreshToken) {
|
|
|
96
96
|
return {
|
|
97
97
|
access_token: data.access_token,
|
|
98
98
|
refresh_token: data.refresh_token,
|
|
99
|
-
expires_at:
|
|
99
|
+
expires_at: resolveExpiresAt(data.access_token, data.expires_in),
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
/**
|
|
@@ -105,6 +105,39 @@ export async function refreshAccessToken(refreshToken) {
|
|
|
105
105
|
export function isTokenExpired(tokens, bufferSeconds = 60) {
|
|
106
106
|
return Date.now() >= tokens.expires_at - bufferSeconds * 1000;
|
|
107
107
|
}
|
|
108
|
+
/** Maximum token lifetime we trust from a JWT exp claim (24 hours). */
|
|
109
|
+
const MAX_TOKEN_TTL_MS = 24 * 60 * 60 * 1000;
|
|
110
|
+
/** Fallback token lifetime when neither expires_in nor JWT exp is available (5 minutes). */
|
|
111
|
+
const FALLBACK_TOKEN_TTL_MS = 5 * 60 * 1000;
|
|
112
|
+
/**
|
|
113
|
+
* Derive expires_at (ms) from the token response.
|
|
114
|
+
* Prefers `expires_in` from the response, falls back to the JWT `exp` claim.
|
|
115
|
+
*/
|
|
116
|
+
export function resolveExpiresAt(accessToken, expiresIn) {
|
|
117
|
+
if (typeof expiresIn === 'number' && expiresIn > 0) {
|
|
118
|
+
return Date.now() + expiresIn * 1000;
|
|
119
|
+
}
|
|
120
|
+
// WorkOS device flow doesn't return expires_in — decode the JWT exp claim.
|
|
121
|
+
try {
|
|
122
|
+
const parts = accessToken.split('.');
|
|
123
|
+
if (parts.length === 3 && parts[1]) {
|
|
124
|
+
const decoded = JSON.parse(Buffer.from(parts[1], 'base64url').toString());
|
|
125
|
+
if (typeof decoded.exp === 'number') {
|
|
126
|
+
const expMs = decoded.exp * 1000;
|
|
127
|
+
const now = Date.now();
|
|
128
|
+
if (expMs > now && expMs <= now + MAX_TOKEN_TTL_MS) {
|
|
129
|
+
return expMs;
|
|
130
|
+
}
|
|
131
|
+
// exp is in the past or unreasonably far in the future — ignore it
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Malformed token — fall through
|
|
137
|
+
}
|
|
138
|
+
// Last resort: assume 5-minute lifetime (WorkOS default for access tokens)
|
|
139
|
+
return Date.now() + FALLBACK_TOKEN_TTL_MS;
|
|
140
|
+
}
|
|
108
141
|
function sleep(ms) {
|
|
109
142
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
110
143
|
}
|
package/dist/oauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,oBAAoB,GAAG,yDAAyD,CAAC;AACvF,MAAM,gBAAgB,GAAG,qDAAqD,CAAC;AAC/E,MAAM,SAAS,GAAG,qDAAqD,CAAC;AACxE,MAAM,SAAS,GAAG,mCAAmC,CAAC;AAiBtD,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,YAAY,OAAO,GAAG,qEAAqE;QACzF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;QAChE,IAAI,EAAE,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;KACpD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,UAAU,CAAC,wCAAwC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAyB,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,OAIC;IAED,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/C,IAAI,QAAQ,GAAG,eAAe,CAAC;IAE/B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,EAAE,EAAE,CAAC;QAEX,MAAM,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAE7B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI,EAAE,IAAI,eAAe,CAAC;gBACxB,UAAU,EAAE,8CAA8C;gBAC1D,WAAW,EAAE,UAAU;gBACvB,SAAS,EAAE,SAAS;aACrB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAI/B,CAAC;YACF,OAAO;gBACL,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,UAAU,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import type { JinkoRawClient } from './client.js';
|
|
2
|
-
import type { FlightFindRequest, FlightDestinationSearchRequest, FlightSearchRequest, TripRequest, CheckoutRequest } from './types/devplatform.js';
|
|
2
|
+
import type { FlightFindRequest, FlightDestinationSearchRequest, FlightSearchRequest, TripRequest, CheckoutRequest, QuoteRequest, ScheduleFulfillmentRequest, SelectAncillariesRequest, ConfirmPaymentRequest, RefundCheckRequest, RefundCommitRequest } from './types/devplatform.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* 10 tool methods matching MCP tool names.
|
|
5
5
|
*
|
|
6
|
-
* find_flight
|
|
7
|
-
* find_destination
|
|
8
|
-
* flight_search
|
|
9
|
-
* flight_calendar
|
|
10
|
-
* trip
|
|
11
|
-
* book
|
|
6
|
+
* find_flight → findFlight()
|
|
7
|
+
* find_destination → findDestination()
|
|
8
|
+
* flight_search → flightSearch()
|
|
9
|
+
* flight_calendar → flightCalendar()
|
|
10
|
+
* trip → trip()
|
|
11
|
+
* book → book()
|
|
12
|
+
* select_ancillaries → selectAncillaries()
|
|
13
|
+
* confirm_payment → confirmPayment()
|
|
14
|
+
* refund_check → refundCheck()
|
|
15
|
+
* refund_commit → refundCommit()
|
|
12
16
|
*/
|
|
13
17
|
export interface JinkoTools {
|
|
14
18
|
/** find_flight — cached flight search, returns offer_tokens. */
|
|
@@ -21,8 +25,20 @@ export interface JinkoTools {
|
|
|
21
25
|
readonly flightCalendar: (request: FlightFindRequest) => Promise<unknown>;
|
|
22
26
|
/** trip — create trip, add flight item, set travelers. Returns trip_id. */
|
|
23
27
|
readonly trip: (request: TripRequest) => Promise<unknown>;
|
|
24
|
-
/**
|
|
28
|
+
/** quote — schedule quote for a trip, returns items + available ancillaries. */
|
|
29
|
+
readonly quote: (request: QuoteRequest) => Promise<unknown>;
|
|
30
|
+
/** scheduleFulfillment — create Stripe payment with ancillary-inclusive amount. Returns checkout_url. */
|
|
31
|
+
readonly scheduleFulfillment: (request: ScheduleFulfillmentRequest) => Promise<unknown>;
|
|
32
|
+
/** book — (legacy) one-shot quote+checkout, returns checkout_url + session_id. */
|
|
25
33
|
readonly book: (request: CheckoutRequest) => Promise<unknown>;
|
|
34
|
+
/** select_ancillaries — select baggage, seats, meals for a trip item. */
|
|
35
|
+
readonly selectAncillaries: (request: SelectAncillariesRequest) => Promise<unknown>;
|
|
36
|
+
/** confirm_payment — verify Stripe payment after checkout. */
|
|
37
|
+
readonly confirmPayment: (request: ConfirmPaymentRequest) => Promise<unknown>;
|
|
38
|
+
/** refund_check — check refund eligibility for a booked flight. */
|
|
39
|
+
readonly refundCheck: (request: RefundCheckRequest) => Promise<unknown>;
|
|
40
|
+
/** refund_commit — initiate a refund for a booked flight. */
|
|
41
|
+
readonly refundCommit: (request: RefundCommitRequest) => Promise<unknown>;
|
|
26
42
|
}
|
|
27
43
|
export declare function createTools(raw: JinkoRawClient): JinkoTools;
|
|
28
44
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACnB,WAAW,EACX,eAAe,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtE,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAExF,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1E,4FAA4F;IAC5F,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1E,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1D,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5D,yGAAyG;IACzG,QAAQ,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,0BAA0B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAExF,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9D,yEAAyE;IACzE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpF,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9E,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAExE,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,CAoB3D"}
|
package/dist/tools.js
CHANGED
|
@@ -4,12 +4,18 @@ export function createTools(raw) {
|
|
|
4
4
|
return response.data;
|
|
5
5
|
}
|
|
6
6
|
return {
|
|
7
|
-
findFlight: (request) => post('/api/v1/
|
|
8
|
-
findDestination: (request) => post('/api/v1/
|
|
9
|
-
flightSearch: (request) => post('/api/v1/
|
|
10
|
-
flightCalendar: (request) => post('/api/v1/
|
|
11
|
-
trip: (request) => post('/api/v1/
|
|
12
|
-
|
|
7
|
+
findFlight: (request) => post('/api/v1/flights/search', request),
|
|
8
|
+
findDestination: (request) => post('/api/v1/flights/destination-search', request),
|
|
9
|
+
flightSearch: (request) => post('/api/v1/flights/shop', request),
|
|
10
|
+
flightCalendar: (request) => post('/api/v1/flights/search', request),
|
|
11
|
+
trip: (request) => post('/api/v1/trips', request),
|
|
12
|
+
quote: (request) => post('/api/v1/trips/checkout', request),
|
|
13
|
+
scheduleFulfillment: (request) => post('/api/v1/trips/fulfillment', request),
|
|
14
|
+
book: (request) => post('/api/v1/trips/checkout', request),
|
|
15
|
+
selectAncillaries: (request) => post('/api/v1/trips/ancillaries', request),
|
|
16
|
+
confirmPayment: (request) => post('/api/v1/trips/confirm-payment', request),
|
|
17
|
+
refundCheck: (request) => post('/api/v1/flights/refund-check', request),
|
|
18
|
+
refundCommit: (request) => post('/api/v1/flights/refund-commit', request),
|
|
13
19
|
};
|
|
14
20
|
}
|
|
15
21
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAmEA,MAAM,UAAU,WAAW,CAAC,GAAmB;IAC7C,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,IAAa;QAC7C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAa,EAAE,EAAE,IAAI,EAAW,CAAC,CAAC;QAClE,OAAQ,QAA+B,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;QAChE,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,oCAAoC,EAAE,OAAO,CAAC;QACjF,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC;QAChE,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;QACpE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;QACjD,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;QAC3D,mBAAmB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC;QAC5E,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;QAC1D,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC;QAC1E,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC;QAC3E,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,OAAO,CAAC;QACvE,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC;KAC1E,CAAC;AACJ,CAAC"}
|
|
@@ -77,7 +77,9 @@ export interface FlightDestinationSearchRequest {
|
|
|
77
77
|
}
|
|
78
78
|
export interface FlightSearchLiveRequest {
|
|
79
79
|
readonly origin: string;
|
|
80
|
+
readonly origin_type?: 'city' | 'airport';
|
|
80
81
|
readonly destination: string;
|
|
82
|
+
readonly destination_type?: 'city' | 'airport';
|
|
81
83
|
readonly departure_date: string;
|
|
82
84
|
readonly return_date?: string;
|
|
83
85
|
readonly trip_type?: string;
|
|
@@ -121,9 +123,44 @@ export interface TripRequest {
|
|
|
121
123
|
};
|
|
122
124
|
readonly upsert_travelers?: TripUpsertTravelers;
|
|
123
125
|
}
|
|
126
|
+
export interface QuoteRequest {
|
|
127
|
+
readonly trip_id: string;
|
|
128
|
+
}
|
|
129
|
+
export interface ScheduleFulfillmentRequest {
|
|
130
|
+
readonly trip_id: string;
|
|
131
|
+
readonly idempotency_key?: string;
|
|
132
|
+
}
|
|
124
133
|
export interface CheckoutRequest {
|
|
125
134
|
readonly trip_id: string;
|
|
126
135
|
}
|
|
136
|
+
export interface AncillarySelection {
|
|
137
|
+
readonly offer_id: string;
|
|
138
|
+
readonly category?: string;
|
|
139
|
+
readonly pax_ref_id?: string;
|
|
140
|
+
readonly segment_ref_ids?: readonly string[];
|
|
141
|
+
readonly journey_ref_id?: string;
|
|
142
|
+
readonly quantity?: number;
|
|
143
|
+
readonly provider_metadata?: Record<string, string>;
|
|
144
|
+
}
|
|
145
|
+
export interface SelectAncillariesRequest {
|
|
146
|
+
readonly trip_id: string;
|
|
147
|
+
readonly item_id: string;
|
|
148
|
+
readonly selections: readonly AncillarySelection[];
|
|
149
|
+
}
|
|
150
|
+
export interface ConfirmPaymentRequest {
|
|
151
|
+
readonly trip_id: string;
|
|
152
|
+
readonly checkout_session_id?: string;
|
|
153
|
+
readonly payment_intent_id?: string;
|
|
154
|
+
}
|
|
155
|
+
export interface RefundCheckRequest {
|
|
156
|
+
readonly booking_reference: string;
|
|
157
|
+
readonly pnr: string;
|
|
158
|
+
}
|
|
159
|
+
export interface RefundCommitRequest {
|
|
160
|
+
readonly booking_reference: string;
|
|
161
|
+
readonly pnr: string;
|
|
162
|
+
readonly reason?: string;
|
|
163
|
+
}
|
|
127
164
|
export interface BookRequest {
|
|
128
165
|
readonly trip_id?: string;
|
|
129
166
|
readonly trip_item_token?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devplatform.d.ts","sourceRoot":"","sources":["../../src/types/devplatform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"devplatform.d.ts","sourceRoot":"","sources":["../../src/types/devplatform.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gojinko/api-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,6 +10,14 @@
|
|
|
10
10
|
"import": "./dist/index.js"
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"dev": "tsc --watch",
|
|
16
|
+
"generate:api-types": "swagger2openapi bff-swagger.yaml --patch -o bff-openapi3.yaml && openapi-typescript bff-openapi3.yaml -o src/types/generated.ts",
|
|
17
|
+
"test": "vitest run",
|
|
18
|
+
"test:watch": "vitest",
|
|
19
|
+
"lint": "tsc --noEmit"
|
|
20
|
+
},
|
|
13
21
|
"dependencies": {
|
|
14
22
|
"openapi-fetch": "^0.14.1",
|
|
15
23
|
"yaml": "^2.7.0"
|
|
@@ -27,13 +35,5 @@
|
|
|
27
35
|
"swagger2openapi": "^7.0.8",
|
|
28
36
|
"typescript": "^5.6.3",
|
|
29
37
|
"vitest": "^2.1.0"
|
|
30
|
-
},
|
|
31
|
-
"scripts": {
|
|
32
|
-
"build": "tsc",
|
|
33
|
-
"dev": "tsc --watch",
|
|
34
|
-
"generate:api-types": "swagger2openapi bff-swagger.yaml --patch -o bff-openapi3.yaml && openapi-typescript bff-openapi3.yaml -o src/types/generated.ts",
|
|
35
|
-
"test": "vitest run",
|
|
36
|
-
"test:watch": "vitest",
|
|
37
|
-
"lint": "tsc --noEmit"
|
|
38
38
|
}
|
|
39
|
-
}
|
|
39
|
+
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export interface CallbackResult {
|
|
2
|
-
readonly code: string;
|
|
3
|
-
readonly state: string;
|
|
4
|
-
}
|
|
5
|
-
export interface CallbackServer {
|
|
6
|
-
readonly port: number;
|
|
7
|
-
readonly result: Promise<CallbackResult>;
|
|
8
|
-
readonly close: () => void;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Start a local HTTP server on a random port to receive the OAuth callback.
|
|
12
|
-
* Returns after the server is listening and the port is known.
|
|
13
|
-
*/
|
|
14
|
-
export declare function startCallbackServer(options: {
|
|
15
|
-
readonly expectedState: string;
|
|
16
|
-
readonly timeoutMs?: number;
|
|
17
|
-
}): Promise<CallbackServer>;
|
|
18
|
-
//# sourceMappingURL=callback-server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"callback-server.d.ts","sourceRoot":"","sources":["../src/callback-server.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAsBD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,cAAc,CAAC,CAuE1B"}
|
package/dist/callback-server.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { createServer } from 'node:http';
|
|
2
|
-
import { OAuthError } from './oauth.js';
|
|
3
|
-
const SUCCESS_HTML = `<!DOCTYPE html>
|
|
4
|
-
<html><head><title>Jinko CLI</title><style>
|
|
5
|
-
body { font-family: -apple-system, system-ui, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f8f9fa; }
|
|
6
|
-
.card { text-align: center; padding: 2rem 3rem; background: white; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
|
|
7
|
-
h1 { color: #1a1a1a; margin-bottom: 0.5rem; }
|
|
8
|
-
p { color: #666; }
|
|
9
|
-
</style></head><body>
|
|
10
|
-
<div class="card"><h1>Authenticated</h1><p>You can close this tab and return to the terminal.</p></div>
|
|
11
|
-
</body></html>`;
|
|
12
|
-
const ERROR_HTML = `<!DOCTYPE html>
|
|
13
|
-
<html><head><title>Jinko CLI — Error</title><style>
|
|
14
|
-
body { font-family: -apple-system, system-ui, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f8f9fa; }
|
|
15
|
-
.card { text-align: center; padding: 2rem 3rem; background: white; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
|
|
16
|
-
h1 { color: #c0392b; margin-bottom: 0.5rem; }
|
|
17
|
-
p { color: #666; }
|
|
18
|
-
</style></head><body>
|
|
19
|
-
<div class="card"><h1>Authentication Failed</h1><p>Please try again from the terminal.</p></div>
|
|
20
|
-
</body></html>`;
|
|
21
|
-
/**
|
|
22
|
-
* Start a local HTTP server on a random port to receive the OAuth callback.
|
|
23
|
-
* Returns after the server is listening and the port is known.
|
|
24
|
-
*/
|
|
25
|
-
export async function startCallbackServer(options) {
|
|
26
|
-
const { expectedState, timeoutMs = 120_000 } = options;
|
|
27
|
-
const server = createServer();
|
|
28
|
-
let timeoutHandle;
|
|
29
|
-
const result = new Promise((resolve, reject) => {
|
|
30
|
-
server.on('request', (req, res) => {
|
|
31
|
-
const url = new URL(req.url ?? '/', `http://localhost`);
|
|
32
|
-
if (url.pathname !== '/callback') {
|
|
33
|
-
res.writeHead(404);
|
|
34
|
-
res.end('Not found');
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
const code = url.searchParams.get('code');
|
|
38
|
-
const state = url.searchParams.get('state');
|
|
39
|
-
const error = url.searchParams.get('error');
|
|
40
|
-
if (error) {
|
|
41
|
-
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
42
|
-
res.end(ERROR_HTML);
|
|
43
|
-
reject(new OAuthError(`OAuth error: ${error}`));
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
if (!code || !state) {
|
|
47
|
-
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
48
|
-
res.end(ERROR_HTML);
|
|
49
|
-
reject(new OAuthError('Missing code or state in callback'));
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (state !== expectedState) {
|
|
53
|
-
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
54
|
-
res.end(ERROR_HTML);
|
|
55
|
-
reject(new OAuthError('State mismatch — possible CSRF attack'));
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
59
|
-
res.end(SUCCESS_HTML);
|
|
60
|
-
resolve({ code, state });
|
|
61
|
-
});
|
|
62
|
-
timeoutHandle = setTimeout(() => {
|
|
63
|
-
reject(new OAuthError(`OAuth callback timed out after ${timeoutMs / 1000}s`));
|
|
64
|
-
server.close();
|
|
65
|
-
}, timeoutMs);
|
|
66
|
-
}).finally(() => {
|
|
67
|
-
clearTimeout(timeoutHandle);
|
|
68
|
-
server.close();
|
|
69
|
-
});
|
|
70
|
-
// Wait for server to start listening so port is assigned
|
|
71
|
-
await new Promise((resolve) => {
|
|
72
|
-
server.listen(0, () => resolve());
|
|
73
|
-
});
|
|
74
|
-
const address = server.address();
|
|
75
|
-
const port = typeof address === 'object' && address ? address.port : 0;
|
|
76
|
-
return {
|
|
77
|
-
port,
|
|
78
|
-
result,
|
|
79
|
-
close: () => {
|
|
80
|
-
clearTimeout(timeoutHandle);
|
|
81
|
-
server.close();
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=callback-server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"callback-server.js","sourceRoot":"","sources":["../src/callback-server.ts"],"names":[],"mappings":"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"}
|
package/dist/flights.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { JinkoRawClient } from './client.js';
|
|
2
|
-
import type { FlightFindRequest, FlightDestinationSearchRequest, FlightSearchRequest } from './types/devplatform.js';
|
|
3
|
-
export interface FlightsApi {
|
|
4
|
-
/** find_flight — cached flight search, returns offer_tokens. */
|
|
5
|
-
readonly find: (request: FlightFindRequest) => Promise<unknown>;
|
|
6
|
-
/** find_destination — discover destinations from origin airports (cached). */
|
|
7
|
-
readonly destinations: (request: FlightDestinationSearchRequest) => Promise<unknown>;
|
|
8
|
-
/** flight_search — live search or price-check a specific offer. Returns trip_item_token. */
|
|
9
|
-
readonly search: (request: FlightSearchRequest) => Promise<unknown>;
|
|
10
|
-
/** flight_calendar — cheapest prices across a date range (cached, uses /flights/search). */
|
|
11
|
-
readonly calendar: (request: FlightFindRequest) => Promise<unknown>;
|
|
12
|
-
}
|
|
13
|
-
export declare function createFlightsApi(raw: JinkoRawClient): FlightsApi;
|
|
14
|
-
//# sourceMappingURL=flights.d.ts.map
|
package/dist/flights.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flights.d.ts","sourceRoot":"","sources":["../src/flights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAErF,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpE,4FAA4F;IAC5F,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,CA8BhE"}
|
package/dist/flights.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export function createFlightsApi(raw) {
|
|
2
|
-
return {
|
|
3
|
-
async find(request) {
|
|
4
|
-
const response = await raw.POST('/api/v1/devplatform/flights/search', {
|
|
5
|
-
body: request,
|
|
6
|
-
});
|
|
7
|
-
return response.data;
|
|
8
|
-
},
|
|
9
|
-
async destinations(request) {
|
|
10
|
-
const response = await raw.POST('/api/v1/devplatform/flights/destination-search', {
|
|
11
|
-
body: request,
|
|
12
|
-
});
|
|
13
|
-
return response.data;
|
|
14
|
-
},
|
|
15
|
-
async search(request) {
|
|
16
|
-
const response = await raw.POST('/api/v1/devplatform/flights/shop', {
|
|
17
|
-
body: request,
|
|
18
|
-
});
|
|
19
|
-
return response.data;
|
|
20
|
-
},
|
|
21
|
-
async calendar(request) {
|
|
22
|
-
const response = await raw.POST('/api/v1/devplatform/flights/search', {
|
|
23
|
-
body: request,
|
|
24
|
-
});
|
|
25
|
-
return response.data;
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=flights.js.map
|
package/dist/flights.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flights.js","sourceRoot":"","sources":["../src/flights.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,gBAAgB,CAAC,GAAmB;IAClD,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,oCAA6C,EAAE;gBAC7E,IAAI,EAAE,OAAO;aACL,CAAC,CAAC;YACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,OAAO;YACxB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,gDAAyD,EAAE;gBACzF,IAAI,EAAE,OAAO;aACL,CAAC,CAAC;YACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,OAAO;YAClB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,kCAA2C,EAAE;gBAC3E,IAAI,EAAE,OAAO;aACL,CAAC,CAAC;YACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,OAAO;YACpB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,oCAA6C,EAAE;gBAC7E,IAAI,EAAE,OAAO;aACL,CAAC,CAAC;YACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/trips.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { JinkoRawClient } from './client.js';
|
|
2
|
-
import type { TripUpsertTravelers, CheckoutRequest, BookRequest } from './types/devplatform.js';
|
|
3
|
-
export interface TripsApi {
|
|
4
|
-
/** Create an empty trip (shopping cart). */
|
|
5
|
-
readonly create: () => Promise<unknown>;
|
|
6
|
-
/** Get trip details by ID. */
|
|
7
|
-
readonly show: (tripId: string) => Promise<unknown>;
|
|
8
|
-
/** Add a flight to a trip using a trip_item_token. */
|
|
9
|
-
readonly addFlight: (tripItemToken: string, tripId?: string) => Promise<unknown>;
|
|
10
|
-
/** Set travelers (and optional contact) on a trip. */
|
|
11
|
-
readonly setTravelers: (tripId: string, upsertTravelers: TripUpsertTravelers) => Promise<unknown>;
|
|
12
|
-
/** Checkout a trip — handles quoting and returns a checkout URL. */
|
|
13
|
-
readonly checkout: (request: CheckoutRequest) => Promise<unknown>;
|
|
14
|
-
/** One-shot booking: create trip + add flight + set travelers + checkout. */
|
|
15
|
-
readonly book: (request: BookRequest) => Promise<unknown>;
|
|
16
|
-
}
|
|
17
|
-
export declare function createTripsApi(raw: JinkoRawClient): TripsApi;
|
|
18
|
-
//# sourceMappingURL=trips.d.ts.map
|
package/dist/trips.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trips.d.ts","sourceRoot":"","sources":["../src/trips.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAEV,mBAAmB,EACnB,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAExC,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjF,sDAAsD;IACtD,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAElG,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAElE,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,QAAQ,CA2E5D"}
|
package/dist/trips.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
export function createTripsApi(raw) {
|
|
2
|
-
async function postTrip(body) {
|
|
3
|
-
const response = await raw.POST('/api/v1/devplatform/trips', {
|
|
4
|
-
body,
|
|
5
|
-
});
|
|
6
|
-
return response.data;
|
|
7
|
-
}
|
|
8
|
-
async function postCheckout(body) {
|
|
9
|
-
const response = await raw.POST('/api/v1/devplatform/trips/checkout', {
|
|
10
|
-
body,
|
|
11
|
-
});
|
|
12
|
-
return response.data;
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
async create() {
|
|
16
|
-
return postTrip({});
|
|
17
|
-
},
|
|
18
|
-
async show(tripId) {
|
|
19
|
-
return postTrip({ trip_id: tripId });
|
|
20
|
-
},
|
|
21
|
-
async addFlight(tripItemToken, tripId) {
|
|
22
|
-
return postTrip({
|
|
23
|
-
...(tripId ? { trip_id: tripId } : {}),
|
|
24
|
-
add_item: { trip_item_token: tripItemToken },
|
|
25
|
-
});
|
|
26
|
-
},
|
|
27
|
-
async setTravelers(tripId, upsertTravelers) {
|
|
28
|
-
return postTrip({
|
|
29
|
-
trip_id: tripId,
|
|
30
|
-
upsert_travelers: upsertTravelers,
|
|
31
|
-
});
|
|
32
|
-
},
|
|
33
|
-
async checkout(request) {
|
|
34
|
-
return postCheckout(request);
|
|
35
|
-
},
|
|
36
|
-
async book(request) {
|
|
37
|
-
const { trip_item_token, travelers, contact } = request;
|
|
38
|
-
let tripId = request.trip_id;
|
|
39
|
-
// Step 1: Create trip with flight + travelers if trip_item_token provided.
|
|
40
|
-
if (trip_item_token) {
|
|
41
|
-
const tripBody = {
|
|
42
|
-
...(tripId ? { trip_id: tripId } : {}),
|
|
43
|
-
add_item: { trip_item_token },
|
|
44
|
-
...(travelers || contact ? {
|
|
45
|
-
upsert_travelers: {
|
|
46
|
-
travelers: travelers ?? [],
|
|
47
|
-
...(contact ? { contact } : {}),
|
|
48
|
-
},
|
|
49
|
-
} : {}),
|
|
50
|
-
};
|
|
51
|
-
const tripData = await postTrip(tripBody);
|
|
52
|
-
tripId = tripData?.['trip_id'];
|
|
53
|
-
if (!tripId) {
|
|
54
|
-
throw new Error('Failed to create trip — no trip_id returned.');
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (!tripId) {
|
|
58
|
-
throw new Error('Either trip_id or trip_item_token is required.');
|
|
59
|
-
}
|
|
60
|
-
// Step 2: Checkout.
|
|
61
|
-
return postCheckout({ trip_id: tripId });
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=trips.js.map
|
package/dist/trips.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trips.js","sourceRoot":"","sources":["../src/trips.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,cAAc,CAAC,GAAmB;IAChD,KAAK,UAAU,QAAQ,CAAC,IAAiB;QACvC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,2BAAoC,EAAE;YACpE,IAAI;SACI,CAAC,CAAC;QACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,IAAqB;QAC/C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,oCAA6C,EAAE;YAC7E,IAAI;SACI,CAAC,CAAC;QACZ,OAAQ,QAA+B,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,KAAK,CAAC,MAAM;YACV,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM;YACf,OAAO,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM;YACnC,OAAO,QAAQ,CAAC;gBACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,QAAQ,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe;YACxC,OAAO,QAAQ,CAAC;gBACd,OAAO,EAAE,MAAM;gBACf,gBAAgB,EAAE,eAAe;aAClC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,OAAO;YACpB,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YACxD,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAE7B,2EAA2E;YAC3E,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAgB;oBAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtC,QAAQ,EAAE,EAAE,eAAe,EAAE;oBAC7B,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC;wBACzB,gBAAgB,EAAE;4BAChB,SAAS,EAAE,SAAS,IAAI,EAAE;4BAC1B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAChC;qBACF,CAAC,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAwC,CAAC;gBACjF,MAAM,GAAG,QAAQ,EAAE,CAAC,SAAS,CAAW,CAAC;gBAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YAED,oBAAoB;YACpB,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
|