import { MiddlewareRoute } from "../../../loaders/helpers/routing/types" import { authenticate } from "../../../utils/authenticate-middleware" import { validateAndTransformBody } from "../../utils/validate-body" import { validateAndTransformQuery } from "../../utils/validate-query" import * as QueryConfig from "./query-config" import { StoreAddCartLineItem, StoreAddCartPromotions, StoreCalculateCartTaxes, StoreCreateCart, StoreGetCartsCart, StoreRemoveCartPromotions, StoreUpdateCart, StoreUpdateCartLineItem, } from "./validators" export const storeCartRoutesMiddlewares: MiddlewareRoute[] = [ { method: "ALL", matcher: "/store/carts*", middlewares: [ authenticate("store", ["session", "bearer"], { allowUnauthenticated: true, }), ], }, { method: ["GET"], matcher: "/store/carts/:id", middlewares: [ validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, { method: ["POST"], matcher: "/store/carts", middlewares: [ validateAndTransformBody(StoreCreateCart), validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, { method: ["POST"], matcher: "/store/carts/:id", middlewares: [ validateAndTransformBody(StoreUpdateCart), validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, { method: ["POST"], matcher: "/store/carts/:id/line-items", middlewares: [ validateAndTransformBody(StoreAddCartLineItem), validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, { method: ["POST"], matcher: "/store/carts/:id/line-items/:line_id", middlewares: [ validateAndTransformBody(StoreUpdateCartLineItem), validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, { method: ["DELETE"], matcher: "/store/carts/:id/line-items/:line_id", middlewares: [ validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, { method: ["POST"], matcher: "/store/carts/:id/promotions", middlewares: [ validateAndTransformBody(StoreAddCartPromotions), validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, { method: ["POST"], matcher: "/store/carts/:id/taxes", middlewares: [ validateAndTransformBody(StoreCalculateCartTaxes), validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, { method: ["POST"], matcher: "/store/carts/:id/payment-collections", middlewares: [ validateAndTransformBody(StoreUpdateCart), validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, { method: ["DELETE"], matcher: "/store/carts/:id/promotions", middlewares: [ validateAndTransformBody(StoreRemoveCartPromotions), validateAndTransformQuery( StoreGetCartsCart, QueryConfig.retrieveTransformQueryConfig ), ], }, ]