Skip to content

Commit

Permalink
Merge branch 'tbaum/ingore-additional-properties'
Browse files Browse the repository at this point in the history
  • Loading branch information
AugmenTab committed Apr 10, 2024
2 parents 332df5b + 0b7d610 commit 4f0603c
Show file tree
Hide file tree
Showing 12 changed files with 229 additions and 106 deletions.
1 change: 1 addition & 0 deletions json-fleece-codegen-util/codegen-prelude.dhall
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ let
baseConfig =
{ defaultTypeOptions = TypeOptions.default
, typeOptions = [] : List SpecificTypeOptions
, strictAdditionalProperties = True
}

in
Expand Down
1 change: 1 addition & 0 deletions json-fleece-codegen-util/src/Fleece/CodeGenUtil.hs
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ data CodeGenOptions = CodeGenOptions
{ moduleBaseName :: T.Text
, defaultTypeOptions :: TypeOptions
, typeOptionsMap :: Map.Map T.Text TypeOptions
, strictAdditionalProperties :: Bool
}

data TypeOptions = TypeOptions
Expand Down
1 change: 1 addition & 0 deletions json-fleece-codegen-util/src/Fleece/CodeGenUtil/Config.hs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ decoder =
<$> Dhall.field "moduleBaseName" Dhall.strictText
<*> Dhall.field "defaultTypeOptions" typeOptionsDecoder
<*> Dhall.field "typeOptions" typeOptionsMapDecoder
<*> Dhall.field "strictAdditionalProperties" Dhall.bool
)
<*> Dhall.field "inputFileName" Dhall.string
<*> Dhall.field "destination" Dhall.string
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{-# LANGUAGE NoImplicitPrelude #-}

module TestCases.Types.MixedInAdditionalPropertiesFalse
( MixedInAdditionalPropertiesFalse(..)
, mixedInAdditionalPropertiesFalseSchema
) where

import Fleece.Core ((#+))
import qualified Fleece.Core as FC
import Prelude (($), Eq, Maybe, Show)
import qualified TestCases.Types.MixedInAdditionalPropertiesFalse.Bar as Bar
import qualified TestCases.Types.MixedInAdditionalPropertiesFalse.Foo as Foo

data MixedInAdditionalPropertiesFalse = MixedInAdditionalPropertiesFalse
{ bar :: Maybe Bar.Bar
, foo :: Maybe Foo.Foo
}
deriving (Eq, Show)

mixedInAdditionalPropertiesFalseSchema :: FC.Fleece schema => schema MixedInAdditionalPropertiesFalse
mixedInAdditionalPropertiesFalseSchema =
FC.object $
FC.constructor MixedInAdditionalPropertiesFalse
#+ FC.optional "bar" bar Bar.barSchema
#+ FC.optional "foo" foo Foo.fooSchema
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{-# LANGUAGE NoImplicitPrelude #-}

module TestCases.Types.MixedInAdditionalPropertiesFalse.Bar
( Bar(..)
, barSchema
) where

import qualified Data.Text as T
import qualified Fleece.Core as FC
import Prelude (Eq, Show)

newtype Bar = Bar T.Text
deriving (Show, Eq)

barSchema :: FC.Fleece schema => schema Bar
barSchema =
FC.coerceSchema FC.text
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{-# LANGUAGE NoImplicitPrelude #-}

module TestCases.Types.MixedInAdditionalPropertiesFalse.Foo
( Foo(..)
, fooSchema
) where

import qualified Data.Text as T
import qualified Fleece.Core as FC
import Prelude (Eq, Show)

newtype Foo = Foo T.Text
deriving (Show, Eq)

fooSchema :: FC.Fleece schema => schema Foo
fooSchema =
FC.coerceSchema FC.text
1 change: 1 addition & 0 deletions json-fleece-openapi3/examples/test-cases/codegen.dhall
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ in
{ moduleBaseName = "TestCases"
, inputFileName = "${rootDir}/test-cases.yaml"
, destination = rootDir
, strictAdditionalProperties = False
, typeOptions =
[ { type = "TestCases.Types.CustomDateFormat.CustomDateFormat"
, options =
Expand Down
3 changes: 3 additions & 0 deletions json-fleece-openapi3/examples/test-cases/test-cases.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ library
TestCases.Types.JustAdditionalPropertiesSchemaRef
TestCases.Types.JustAdditionalPropertiesTrue
TestCases.Types.LocalTimeType
TestCases.Types.MixedInAdditionalPropertiesFalse
TestCases.Types.MixedInAdditionalPropertiesFalse.Bar
TestCases.Types.MixedInAdditionalPropertiesFalse.Foo
TestCases.Types.MixedInAdditionalPropertiesTrue
TestCases.Types.MixedInAdditionalPropertiesTrue.Bar
TestCases.Types.MixedInAdditionalPropertiesTrue.Foo
Expand Down
10 changes: 10 additions & 0 deletions json-fleece-openapi3/examples/test-cases/test-cases.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -715,6 +715,16 @@ components:
type: string
additionalProperties: true

MixedInAdditionalPropertiesFalse:
type: object
description: An object with additionalProperties = false mixed in with other properties. This will produce an error if `strictAdditionalProperties` is set to `True`.
properties:
foo:
type: string
bar:
type: string
additionalProperties: false

MixedInJustAdditionalPropertiesSchemaRef:
type: object
description: An object with additionalProperties as a schema ref mixed in with other properties
Expand Down
4 changes: 4 additions & 0 deletions json-fleece-openapi3/json-fleece-openapi3.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -1951,6 +1951,9 @@ extra-source-files:
examples/test-cases/TestCases/Types/JustAdditionalPropertiesSchemaRef.hs
examples/test-cases/TestCases/Types/JustAdditionalPropertiesTrue.hs
examples/test-cases/TestCases/Types/LocalTimeType.hs
examples/test-cases/TestCases/Types/MixedInAdditionalPropertiesFalse.hs
examples/test-cases/TestCases/Types/MixedInAdditionalPropertiesFalse/Bar.hs
examples/test-cases/TestCases/Types/MixedInAdditionalPropertiesFalse/Foo.hs
examples/test-cases/TestCases/Types/MixedInAdditionalPropertiesTrue.hs
examples/test-cases/TestCases/Types/MixedInAdditionalPropertiesTrue/Bar.hs
examples/test-cases/TestCases/Types/MixedInAdditionalPropertiesTrue/Foo.hs
Expand Down Expand Up @@ -2025,6 +2028,7 @@ library
, containers ==0.6.*
, insert-ordered-containers ==0.2.*
, json-fleece-codegen-util ==0.8.*
, mtl ==2.2.*
, non-empty-text ==0.2.*
, openapi3 ==3.2.*
, text >=1.2 && <2.1
Expand Down
1 change: 1 addition & 0 deletions json-fleece-openapi3/package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ library:
- aeson >= 2.0 && < 2.2
- insert-ordered-containers >= 0.2 && < 0.3
- containers >= 0.6 && < 0.7
- mtl >= 2.2 && < 2.3
- non-empty-text >= 0.2 && < 0.3
- openapi3 >= 3.2 && < 3.3
- text >= 1.2 && < 2.1
Expand Down
Loading

0 comments on commit 4f0603c

Please sign in to comment.