Îõ³h,#      !"1.0.0.0None01ÎÛÜx#ÈUpdate the LHS of the definitions, to match the already updated globals Resolve OpenApi name conflicts.ðThe json-spec mechanism for giving names to things is more powerful than OpenApi mechanism for naming things. $ã allows for nested scopes, where deeper names can shadow other names. OpenApi on the other hand only has a flat space to name schemas, so every name is "globally scoped", resulting in possible name conflicts when mapping $ names to OpenApi names.7This type family resolves the conflict by renaming the $ names in your %ò so that they are all unique, so they won't conflict when mapping them into the global OpenApi schema namespace.÷We do not apply this type family by default because it has the potential to add significant compilation time if your %/s are large. If you happen to know that your %Â contains no name conflicts then you can avoid paying that cost.öIt isn't perfect. I've tried to strike a balance between implementation complexity and avoiding unnecessary renames.9Essentially, if a duplicate name is detected, I append a ". n" to the name, where  n/ is an integer. So if you are using names that already1 follow this format you might get into trouble.For instance, this %Ž will fail to rename properly: > JsonLet > '[ '("foo", JsonString) > , '("foo.1", JsonString) > ] > ( JsonObject > '[ "field1" ::: JsonRef "foo" > , "field2" ::: JsonLet '[ '("foo", JsonInt)] (JsonRef "foo") > ] > )íbecause the "foo" in "field2" will be renamed to "foo.1", causing a new conflict with the existing "foo.1".None"/01ÃÄÅÆÇÎÛÜÞñûHelper for defining & instances based on ' using  deriving via.Example: ódata MyType = ... deriving ToSchema via (DecodingSchema MyType) instance HasJsonDecodingSchema MyType where ...Helper for defining & instances based on ( using  deriving via.Example: ódata MyType = ... deriving ToSchema via (EncodingSchema MyType) instance HasJsonEncodingSchema MyType where ...)?Go through and make a declaration for each item in a JsonLet. *ÔSpecifications that can be turned into OpenApi Schemas or a reference to a schema./Specifications that can be turned into OpenApi +s.ÞThis is intended to be an opaque implementation detail. The only reason it is exported is because there are some cases where you might need to be able to spell this constraint in code that builds off of this package. Convert a % into an OpenApi +. The type class ä is an internal and opaque implementation detail and not something you should have to worry about.-It should already have an instance for every % that can be turned into a +=. If it does not, then that is a bug. Please report it! :-)%The limitations of this function are:ÖIt behaves in a possibly unexpected way when given a top level schema of the form: 0JsonLet '[ '("foo", ...) ] ( JsonRef "foo" ) returns a +, not a , +'. Therefore, if the "top level" of the % is a -Ó, then we will try to dereference and inline the referenced schema. In other words, àtoOpenApiSchema (Proxy @( JsonLet '[ '("foo", JsonString) ] (JsonRef "foo") )) will behave as if you had called ÛtoOpenApiSchema (Proxy @( JsonLet '[ '("foo", JsonString) ] JsonString ))íHowever, if the reference is undefined, then you will get a custom type error explaining what the problem is.óWith the exception of the above point, we do not check to make sure that every referenced used in the returned +Æ actually contains a definition. So for instance this will "work": •let (defs, schema) = toOpenApiSchema (Proxy @( JsonObject '[ ("bar", JsonRef "not-defined") ] )) in ...ÜThis will compile, and will not throw any runtime errors directly, but depending on how you use defs and schemaš (like, for instance, generating an OpenApi specification) you will probably encounter a runtime error complaining that "not-defined" hasn't been defined..,Shorthand for demoting type-level strings.  /      !"#$%&'(&')*+,&-.&/012*34*35&'678!json-spec-openapi-1.0.0.0-inplaceData.JsonSpec.OpenApijson-spec-openapiData.JsonSpec.OpenApi.RenameRenameDecodingSchemaunDecodingSchemaEncodingSchemaunEncodingSchema SchemaabletoOpenApiSchema$fInlineabledefsJsonRaw$fInlineabledefsJsonDateTime$fInlineabledefsJsonBool$fInlineabledefsJsonObject$fInlineabledefsJsonObject0$fInlineabledefsJsonInt$fInlineabledefsJsonNum$fInlineabledefsJsonString$fInlineabledefsJsonTag$fSchemaablespec$fRefabledefsJsonRef$fRefabledefsa$fInlineabledefsJsonNullable$fInlineabledefsJsonArray$fInlineabledefsJsonObject1$fInlineabledefsJsonEither$fDerefdefs:target$fDerefdefs:target0$fInlineabledefsJsonRef$fDerefdefs[]target $fDefsdefs: $fDefsdefs[]$fToSchemaEncodingSchema$fToSchemaDecodingSchema$fRefabledefsJsonLet$fInlineabledefsJsonLet RenameDefsÒjson-spec-1.1.0.0-260e3317a2a5a98aa79cc05492c669830d2776d1139996dcac6ab39add2d4124Data.JsonSpec.SpecJsonLet SpecificationÏopenapi3-3.2.4-33e4ccc92e894ac26f83a19c9a7204729093560d44d82868eb9f5f6cadd67897Data.OpenApi.Internal.SchemaToSchemaData.JsonSpec.DecodeHasJsonDecodingSpecData.JsonSpec.EncodeHasJsonEncodingSpecDefsRefableData.OpenApi.InternalSchema ReferencedJsonRefsym