{-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeInType #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE TypeFamilyDependencies #-} {-# LANGUAGE DeriveGeneric #-} module Live6 where import Data.Aeson as A import Data.Aeson.TypeScript.TH import Data.Function import Data.Map import Data.Proxy import Data.Text data Complex a = Product Int a | Unary Int deriving Eq data Complex2 a = Product2 Int a data Complex3 k = Complex3 { bulkCommandNoArgKeys :: Map Text k } deriving (Show) $(deriveTypeScript defaultOptions ''Complex3) main :: IO () -- main = printThing (Proxy @(BulkCommandNoArg Int)) main = printThing (Proxy @(Complex3 Double)) printThing x = getTypeScriptDeclarations x & formatTSDeclarations & putStrLn