{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} module Servant.Reason.Internal.Foreign where import Data.Proxy (Proxy (Proxy)) import Reason (ReasonDatatype, ReasonType, toReasonType) import Servant.Foreign (Foreign, GenerateList, HasForeign, HasForeignType, Req, listFromAPI, typeFor) data LangReason instance (ReasonType a) => HasForeignType LangReason ReasonDatatype a where typeFor _ _ _ = toReasonType (Proxy :: Proxy a) getEndpoints :: ( HasForeign LangReason ReasonDatatype api , GenerateList ReasonDatatype (Foreign ReasonDatatype api)) => Proxy api -> [Req ReasonDatatype] getEndpoints = listFromAPI (Proxy :: Proxy LangReason) (Proxy :: Proxy ReasonDatatype)