let Prelude = ../lib/prelude.dhall

let Types = ../types/package.dhall

let JSON = Prelude.JSON

let catOptionals
    : ∀(T : Type) → List (Optional T) → List T
    =   λ(T : Type)
      → λ(ts : List (Optional T))
      → List/fold
          (Optional T)
          ts
          (List T)
          (   λ(t : Optional T)
            → λ(acc : List T)
            → Prelude.List.concat T [ Prelude.Optional.toList T t, acc ]
          )
          ([] : List T)

let catOptionalJSONs =
      λ(js : List (Optional JSON.Type)) → JSON.array (catOptionals JSON.Type js)

let render
    : List Types.ResourceType → JSON.Type
    =   λ(rs : List Types.ResourceType)
      → catOptionalJSONs
          ( Prelude.List.map
              Types.ResourceType
              (Optional JSON.Type)
              ./resourceType.dhall
              rs
          )

in  render