@voyant-travel/flights 0.137.2 → 0.137.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hono.d.ts.map +1 -1
- package/dist/hono.js +26 -12
- package/dist/hono.test.js +16 -0
- package/package.json +1 -1
package/dist/hono.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono.d.ts","sourceRoot":"","sources":["../src/hono.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAEzC,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAGV,WAAW,EAKZ,MAAM,qBAAqB,CAAA;AAO5B,qDAAqD;AACrD,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,kBAAkB,CAChB,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAC5C,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GACxF,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAA;IAC5C,4EAA4E;IAC5E,kBAAkB,CAChB,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAA;IAClD,yDAAyD;IACzD,OAAO,CAAC,EAAE,wBAAwB,CAAA;CACnC;AAED,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"hono.d.ts","sourceRoot":"","sources":["../src/hono.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAEzC,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAGV,WAAW,EAKZ,MAAM,qBAAqB,CAAA;AAO5B,qDAAqD;AACrD,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,kBAAkB,CAChB,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAC5C,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GACxF,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAA;IAC5C,4EAA4E;IAC5E,kBAAkB,CAChB,CAAC,EAAE,OAAO,EACV,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAA;IAClD,yDAAyD;IACzD,OAAO,CAAC,EAAE,wBAAwB,CAAA;CACnC;AAED,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,CAAA;AAiE1D,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAoP1E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,UAAU,CAKrF"}
|
package/dist/hono.js
CHANGED
|
@@ -24,8 +24,17 @@ function attachPaymentSession(order, summary) {
|
|
|
24
24
|
},
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
+
function adapterErrorDetails(err) {
|
|
28
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
29
|
+
return { message, status: statusForAdapterErrorMessage(message) };
|
|
30
|
+
}
|
|
27
31
|
function statusForAdapterErrorMessage(message) {
|
|
28
|
-
|
|
32
|
+
if (/(?:not found|_not_found\b)/i.test(message))
|
|
33
|
+
return 404;
|
|
34
|
+
if (/(?:demo service is unavailable|FLIGHTS_DEMO_API_URL is not set|network connection lost|fetch failed|ECONNREFUSED|ENOTFOUND)/i.test(message)) {
|
|
35
|
+
return 503;
|
|
36
|
+
}
|
|
37
|
+
return 500;
|
|
29
38
|
}
|
|
30
39
|
function paymentSessionOptionsForIntent(intent) {
|
|
31
40
|
if (!intent || intent.type === "hold")
|
|
@@ -66,7 +75,8 @@ export function createFlightAdminRoutes(options) {
|
|
|
66
75
|
return c.json(response);
|
|
67
76
|
}
|
|
68
77
|
catch (err) {
|
|
69
|
-
|
|
78
|
+
const { message, status } = adapterErrorDetails(err);
|
|
79
|
+
return c.json({ error: message }, status);
|
|
70
80
|
}
|
|
71
81
|
});
|
|
72
82
|
// ── Ancillaries ─────────────────────────────────────────────────────────
|
|
@@ -89,7 +99,8 @@ export function createFlightAdminRoutes(options) {
|
|
|
89
99
|
return c.json(response);
|
|
90
100
|
}
|
|
91
101
|
catch (err) {
|
|
92
|
-
|
|
102
|
+
const { message, status } = adapterErrorDetails(err);
|
|
103
|
+
return c.json({ error: message }, status);
|
|
93
104
|
}
|
|
94
105
|
});
|
|
95
106
|
// ── Seat map ────────────────────────────────────────────────────────────
|
|
@@ -114,8 +125,8 @@ export function createFlightAdminRoutes(options) {
|
|
|
114
125
|
return c.json(response);
|
|
115
126
|
}
|
|
116
127
|
catch (err) {
|
|
117
|
-
const message
|
|
118
|
-
return c.json({ error: message },
|
|
128
|
+
const { message, status } = adapterErrorDetails(err);
|
|
129
|
+
return c.json({ error: message }, status);
|
|
119
130
|
}
|
|
120
131
|
});
|
|
121
132
|
// ── Re-price ────────────────────────────────────────────────────────────
|
|
@@ -134,7 +145,8 @@ export function createFlightAdminRoutes(options) {
|
|
|
134
145
|
return c.json(response);
|
|
135
146
|
}
|
|
136
147
|
catch (err) {
|
|
137
|
-
|
|
148
|
+
const { message, status } = adapterErrorDetails(err);
|
|
149
|
+
return c.json({ error: message }, status);
|
|
138
150
|
}
|
|
139
151
|
});
|
|
140
152
|
// ── Book ────────────────────────────────────────────────────────────────
|
|
@@ -162,7 +174,8 @@ export function createFlightAdminRoutes(options) {
|
|
|
162
174
|
return c.json(response);
|
|
163
175
|
}
|
|
164
176
|
catch (err) {
|
|
165
|
-
|
|
177
|
+
const { message, status } = adapterErrorDetails(err);
|
|
178
|
+
return c.json({ error: message }, status);
|
|
166
179
|
}
|
|
167
180
|
});
|
|
168
181
|
// ── List orders ─────────────────────────────────────────────────────────
|
|
@@ -199,7 +212,8 @@ export function createFlightAdminRoutes(options) {
|
|
|
199
212
|
return c.json(response);
|
|
200
213
|
}
|
|
201
214
|
catch (err) {
|
|
202
|
-
|
|
215
|
+
const { message, status } = adapterErrorDetails(err);
|
|
216
|
+
return c.json({ error: message }, status);
|
|
203
217
|
}
|
|
204
218
|
});
|
|
205
219
|
// ── Get order ───────────────────────────────────────────────────────────
|
|
@@ -217,8 +231,8 @@ export function createFlightAdminRoutes(options) {
|
|
|
217
231
|
return c.json(response);
|
|
218
232
|
}
|
|
219
233
|
catch (err) {
|
|
220
|
-
const message
|
|
221
|
-
return c.json({ error: message },
|
|
234
|
+
const { message, status } = adapterErrorDetails(err);
|
|
235
|
+
return c.json({ error: message }, status);
|
|
222
236
|
}
|
|
223
237
|
});
|
|
224
238
|
// ── Cancel order ────────────────────────────────────────────────────────
|
|
@@ -238,8 +252,8 @@ export function createFlightAdminRoutes(options) {
|
|
|
238
252
|
return c.json(response);
|
|
239
253
|
}
|
|
240
254
|
catch (err) {
|
|
241
|
-
const message
|
|
242
|
-
return c.json({ error: message },
|
|
255
|
+
const { message, status } = adapterErrorDetails(err);
|
|
256
|
+
return c.json({ error: message }, status);
|
|
243
257
|
}
|
|
244
258
|
});
|
|
245
259
|
// ── Reference: airports (with substring search) ───────────────────────────
|
package/dist/hono.test.js
CHANGED
|
@@ -32,6 +32,22 @@ describe("flights hono module", () => {
|
|
|
32
32
|
expect(res.status).toBe(200);
|
|
33
33
|
expect(adapter.searchFlights).toHaveBeenCalledTimes(1);
|
|
34
34
|
});
|
|
35
|
+
it("POST /search returns 503 when the demo adapter is unavailable", async () => {
|
|
36
|
+
const message = "Flights demo service is unavailable at http://localhost:3320. Start it with `pnpm --dir apps/flights-demo-api dev` or update FLIGHTS_DEMO_API_URL.";
|
|
37
|
+
const adapter = stubAdapter({
|
|
38
|
+
searchFlights: vi.fn(async () => {
|
|
39
|
+
throw new Error(message);
|
|
40
|
+
}),
|
|
41
|
+
});
|
|
42
|
+
const app = mount(adapter);
|
|
43
|
+
const res = await app.request("/v1/admin/flights/search", {
|
|
44
|
+
method: "POST",
|
|
45
|
+
headers: { "Content-Type": "application/json" },
|
|
46
|
+
body: JSON.stringify({ slices: [{}], passengers: { adults: 1 } }),
|
|
47
|
+
});
|
|
48
|
+
expect(res.status).toBe(503);
|
|
49
|
+
await expect(res.json()).resolves.toEqual({ error: message });
|
|
50
|
+
});
|
|
35
51
|
it("POST /search validates required fields", async () => {
|
|
36
52
|
const app = mount(stubAdapter());
|
|
37
53
|
const res = await app.request("/v1/admin/flights/search", {
|