Clarification on dry-types support in dry-schema

According to the web documentation:

The DSL accepts any Dry::Types::Type object

I have a type defined simliar to this:

module Types
  include Dry::Types(default: :nominal)

  Metadata = Strict::Hash.optional
  Href = Strict::String | Hash.schema(href: Strict::String, meta: Metadata)
  Links = Map(Symbol, Href)
end

I’m defining a schema as the docs suggest:

schema = Dry::Schema.JSON do
  required(:links).value(Types::Links)
end

which results in this error:

NoMethodError: undefined method `visit_map' for #<Dry::Schema::PredicateInferrer::Compiler:0x00007ff619665500>

What am I doing wrong here?

Types::Map is not supported yet. In order to make it work we need to add support for validating keys.

Is there documentation anywhere about which types are supported and which aren’t?

I think I’m going to have to ditch dry-types here and try something else. :thinking: What if I wrote reusable dry-logic predicates in place of my types… would that work?