@@ -39,23 +39,17 @@ where
3939import Control.Lens
4040import qualified Data.Aeson.Types as A
4141import Data.OpenApi
42−import Data.OpenApi.Internal.Schema
4342import Data.OpenApi.Internal.ParamSchema
43+import Data.OpenApi.Internal.Schema
4444import Data.Proxy
45+import Data.Text (Text)
46+import qualified Data.Text as T
4547import Data.Typeable
4648import Deriving.Aeson
4749import GHC.Generics
4850import GHC.TypeLits
4951
50−-- $setup
51−-- >>> import qualified Data.Yaml
52−-- >>> import qualified Data.ByteString.Char8
53−
54−#ifdef SERVANT_DESCRIPTION
55−
56−import Servant.API
57−import Data.Text (Text)
58−import qualified Data.Text as T
52+data Description (desc :: Symbol) = Description
5953
6054instance (AesonOptions xs) => AesonOptions (Description f ': xs) where
6155 aesonOptions = aesonOptions @xs
@@ -66,7 +60,9 @@ instance KnownSymbol t => OpenApiOptionModifier (Description t) where
6660toTextLine :: forall s. KnownSymbol s => Text
6761toTextLine = "\n\n" <> T.pack (symbolVal (Proxy @s))
6862
69−#endif
63+-- $setup
64+-- >>> import qualified Data.Yaml
65+-- >>> import qualified Data.ByteString.Char8
7066
7167type CustomOpenApi = CustomJSON
7268
@@ -83,7 +79,7 @@ instance
8379 ToParamSchema (CustomJSON (xs :: k) x)
8480 where
8581 toParamSchema Proxy =
86− genericToParamSchema (openApiOptionsModifier @xs defaultSchemaOptions) (Proxy @x)
82+ genericToParamSchema (openApiOptionsModifier @xs defaultSchemaOptions) (Proxy @x)
8783
8884class OpenApiOptionModifier x where
8985 openApiOptionsModifier :: SchemaOptions -> SchemaOptions
@@ -106,8 +102,10 @@ instance OpenApiOptionModifier UnwrapUnaryRecords where
106102
107103instance OpenApiOptionModifier OmitNothingFields
108104
105+#if MIN_VERSION_deriving_aeson(0,2,4)
109106instance OpenApiOptionModifier RejectUnknownFields where
110107 openApiSchemaModifier = schema . additionalProperties .~ Just (AdditionalPropertiesAllowed False)
108+#endif
111109
112110instance StringModifier f => OpenApiOptionModifier (FieldLabelModifier f) where
113111 openApiOptionsModifier o = o {fieldLabelModifier = getStringModifier @f}