From f6b394c3731951538801ff3ee6b0e2b6cfdd2dc6 Mon Sep 17 00:00:00 2001 From: Janus Troelsen Date: Fri, 13 Feb 2026 16:38:18 -0600 Subject: [PATCH 1/3] Named validation/transformation also changes JSON Schema title Since transformNamed will inline the wrapped object, it is inintuitive that the title of the wrapped object is not updated, since it could come from e.g. unionNamed. One would expect that the outer name would override the inner one. --- .ignore | 1 + src/Orb/OpenApi.hs | 8 ++++++++ stack.yaml.lock | 18 +++++++++--------- 3 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 .ignore diff --git a/.ignore b/.ignore new file mode 100644 index 0000000..45ba1a0 --- /dev/null +++ b/.ignore @@ -0,0 +1 @@ +src/Orb/SwaggerUI/swagger-ui-dist-5.25.2 diff --git a/src/Orb/OpenApi.hs b/src/Orb/OpenApi.hs index 30d7a9d..1a4d4cc 100644 --- a/src/Orb/OpenApi.hs +++ b/src/Orb/OpenApi.hs @@ -1153,12 +1153,20 @@ instance FC.Fleece FleeceOpenApi where , openApiKey = Just . fleeceNameToOpenApiKey $ name , openApiNullable = False , schemaComponents = components + , openApiSchema = + (openApiSchema schemaInfo) + { OpenApi._schemaTitle = Just $ fleeceNameToOpenApiKey name + } } else pure $ schemaInfo { fleeceName = name , openApiKey = Just . fleeceNameToOpenApiKey $ name + , openApiSchema = + (openApiSchema schemaInfo) + { OpenApi._schemaTitle = Just $ fleeceNameToOpenApiKey name + } } interpretValidateAnonymous _uncheck _check (FC.Schema _name (FleeceOpenApi errOrSchemaInfo)) = do diff --git a/stack.yaml.lock b/stack.yaml.lock index 7e31996..b88183b 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -57,29 +57,29 @@ packages: - completed: name: json-fleece-aeson pantry-tree: - sha256: 311e51d278ac62af3fa97d3ca287d2899cb178c09e6848c2628d96396a11cfb7 + sha256: b8b35942a6cbdcd7f17481944eb2fc2241abfac881cb96b42e1dcce059023152 size: 628 - sha256: f18caef414a23f16270c2556fe9baf5963caaf92a93ebf2b20cea03cdd66867a - size: 3074757 + sha256: c55a25175e1c1674b90d86adcce15f374c55d5ed81ee5cbcf45375d3df703ccf + size: 3074877 subdir: json-fleece-aeson - url: https://github.com/flipstone/json-fleece/archive/67ee72cbd712563e1135dfac391537a282ee870d.tar.gz + url: https://github.com/flipstone/json-fleece/archive/641631cfc2b4fe7721b6d79b875564c6892ee007.tar.gz version: 0.4.0.0 original: subdir: json-fleece-aeson - url: https://github.com/flipstone/json-fleece/archive/67ee72cbd712563e1135dfac391537a282ee870d.tar.gz + url: https://github.com/flipstone/json-fleece/archive/641631cfc2b4fe7721b6d79b875564c6892ee007.tar.gz - completed: name: json-fleece-core pantry-tree: sha256: 2d318c363da8fb4bcd6b1c0817e7528764857dee5e85d1ec74084ff65bee5685 size: 491 - sha256: f18caef414a23f16270c2556fe9baf5963caaf92a93ebf2b20cea03cdd66867a - size: 3074757 + sha256: c55a25175e1c1674b90d86adcce15f374c55d5ed81ee5cbcf45375d3df703ccf + size: 3074877 subdir: json-fleece-core - url: https://github.com/flipstone/json-fleece/archive/67ee72cbd712563e1135dfac391537a282ee870d.tar.gz + url: https://github.com/flipstone/json-fleece/archive/641631cfc2b4fe7721b6d79b875564c6892ee007.tar.gz version: 0.9.0.0 original: subdir: json-fleece-core - url: https://github.com/flipstone/json-fleece/archive/67ee72cbd712563e1135dfac391537a282ee870d.tar.gz + url: https://github.com/flipstone/json-fleece/archive/641631cfc2b4fe7721b6d79b875564c6892ee007.tar.gz snapshots: - completed: sha256: 0d0bb681dd5be9b930c8fc070d717aae757b9aed176ae6047d87624b46406816 From a4a74fd2d95a0c429b4bc660afd44f51719b2002 Mon Sep 17 00:00:00 2001 From: Janus Troelsen Date: Fri, 13 Feb 2026 16:42:16 -0600 Subject: [PATCH 2/3] Adjust nullable-ref to fit new expected behavior --- test/examples/nullable-ref.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/examples/nullable-ref.json b/test/examples/nullable-ref.json index c1b4e46..ee593a7 100644 --- a/test/examples/nullable-ref.json +++ b/test/examples/nullable-ref.json @@ -14,10 +14,12 @@ "type": "object" }, "MyBool": { + "title": "MyBool", "type": "boolean" }, "MyNullableBool": { "nullable": true, + "title": "MyNullableBool", "type": "boolean" }, "NullableRefResponse": { From a550fa998bd9fe3eda19b0a90d75202fdb10c074 Mon Sep 17 00:00:00 2001 From: Janus Troelsen Date: Sun, 15 Feb 2026 10:18:52 -0600 Subject: [PATCH 3/3] Use let binding to avoid repetition --- src/Orb/OpenApi.hs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Orb/OpenApi.hs b/src/Orb/OpenApi.hs index 1a4d4cc..260d6a7 100644 --- a/src/Orb/OpenApi.hs +++ b/src/Orb/OpenApi.hs @@ -1143,6 +1143,12 @@ instance FC.Fleece FleeceOpenApi where interpretValidateNamed name _uncheck _check (FC.Schema _unvalidatedName (FleeceOpenApi mkErrOrSchemaInfo)) = do FleeceOpenApi $ \path -> do schemaInfo <- mkErrOrSchemaInfo (addSchemaToPath name path) + let + key = Just $ fleeceNameToOpenApiKey name + schemaWithTitle = + (openApiSchema schemaInfo) + { OpenApi._schemaTitle = key + } if schemaIsPrimitive schemaInfo then do @@ -1150,23 +1156,17 @@ instance FC.Fleece FleeceOpenApi where pure $ schemaInfo { fleeceName = name - , openApiKey = Just . fleeceNameToOpenApiKey $ name + , openApiKey = key , openApiNullable = False , schemaComponents = components - , openApiSchema = - (openApiSchema schemaInfo) - { OpenApi._schemaTitle = Just $ fleeceNameToOpenApiKey name - } + , openApiSchema = schemaWithTitle } else pure $ schemaInfo { fleeceName = name - , openApiKey = Just . fleeceNameToOpenApiKey $ name - , openApiSchema = - (openApiSchema schemaInfo) - { OpenApi._schemaTitle = Just $ fleeceNameToOpenApiKey name - } + , openApiKey = key + , openApiSchema = schemaWithTitle } interpretValidateAnonymous _uncheck _check (FC.Schema _name (FleeceOpenApi errOrSchemaInfo)) = do