The order routes (get, put, add-product, remove-product, checkout, capture)
call forwardToCms, which throws a CMS error on as
createError({ statusCode, statusMessage, data: { message, errors?, missing? } }),
built by the pure shopErrorFromCms (server/utils/cmsError.ts).
Before, the FetchError was thrown on as it was: the browser got the CMS's
status, but Nitro treated it as unhandled, answered "Server Error" without
data and logged every CMS 4xx as [unhandled]. Now the browser also gets the
CMS's message, the errors of a rejected update and the fields a checkout
misses, and no other field. A status that is the shop's own fault (401, 403,
...) is answered 500, a CMS that does not answer 503; 5xx are logged without
the query and the order uuid.
npm test runs tests/unit with Node's type stripping and no dependencies, as
in libreshop/cms. nuxt.config keeps tests/ out of the app's type check.
Refs libretech/mp#71
11 lines
306 B
TypeScript
11 lines
306 B
TypeScript
import { forwardToCms } from "~/server/utils/cmsApi";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const uuid = getRouterParam(event, "uuid");
|
|
if (!uuid) {
|
|
throw createError({ statusCode: 400, statusMessage: "Missing order UUID" });
|
|
}
|
|
|
|
return await forwardToCms(`/orders/${uuid}/cart`);
|
|
});
|