packages feed

servant-typescript-0.1.0.0: app/Main.hs

{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TemplateHaskell #-}

module Main where

import Data.Aeson as A
import Data.Aeson.TH as A hiding (Options)
import Data.Aeson.TypeScript.TH
import Data.Proxy
import Servant.API
import Servant.TypeScript


data User = User {
  name :: String
  , age :: Int
  , email :: String
  } deriving (Eq, Show)
deriveJSONAndTypeScript A.defaultOptions ''User

type UserAPI = "users" :> Get '[JSON] [User]
          :<|> "albert" :> Get '[JSON] User
          :<|> "isaac" :> Get '[JSON] User

main = writeTypeScriptLibrary (Proxy @UserAPI) "/tmp/test"