packages feed

okf-core-0.11.0.0: test/fixtures/profiles/pre-nested-closure.dhall

--| FROZEN: complete descriptor at cfecb72e543c28f5a77ff852445fdd0f256b8810.
-- Every reachable record and union is inline; no live schema imports.
let Cardinality = < Any | Scalar | List >

let FieldFormat =
      < Rfc3339Utc
      | Date
      | Uri
      | UriWithScheme : Text
      | DocumentHandle : Text
      | Actor
      | HumanActor
      | Integer
      | NonNegativeInteger
      | FiniteDecimal
      | Boolean
      >

let FieldCondition = { field : Text, hasValue : List Text }

let HandleReferenceRule =
      { localPrefix : Text
      , externalUriSchemes : List Text
      , allowSelf : Bool
      , allowLocal : Bool
      , externalUriPattern : Optional Text
      }

let PathReferenceRule = { externalUriSchemes : List Text, allowSelf : Bool }

let NestedFieldRule =
      { field : Text
      , description : Optional Text
      , allowedValues : List Text
      , cardinality : Cardinality
      , format : Optional FieldFormat
      , path : Optional PathReferenceRule
      , when : Optional FieldCondition
      , reference : Optional HandleReferenceRule
      }

let ValueSelector = { field : Text, member : Optional Text }

let PresenceConstraint =
      { when : Optional FieldCondition
      , whenAnyPresent : List ValueSelector
      , requireAll : List ValueSelector
      , requireAny : List ValueSelector
      }

let TimestampOrderConstraint = { before : Text, after : Text }

let MembershipConstraint = { source : ValueSelector, target : ValueSelector }

let UniqueValuesConstraint = { selectors : List ValueSelector }

let NestedRules =
      { required : List NestedFieldRule
      , recommended : List NestedFieldRule
      , optional : List NestedFieldRule
      , presenceConstraints : List PresenceConstraint
      , timestampOrderConstraints : List TimestampOrderConstraint
      }

let FieldRule =
      { field : Text
      , description : Optional Text
      , allowedValues : List Text
      , cardinality : Cardinality
      , format : Optional FieldFormat
      , elementFields : Optional NestedRules
      , objectFields : Optional NestedRules
      , reference : Optional HandleReferenceRule
      , path : Optional PathReferenceRule
      , when : Optional FieldCondition
      , uniqueBy : Optional Text
      }

let FrontmatterRules =
      { required : List FieldRule
      , recommended : List FieldRule
      , optional : List FieldRule
      , presenceConstraints : List PresenceConstraint
      , timestampOrderConstraints : List TimestampOrderConstraint
      , membershipConstraints : List MembershipConstraint
      , uniqueValuesConstraints : List UniqueValuesConstraint
      }

let plain =
      \(field : Text) ->
        { field
        , description = None Text
        , allowedValues = [] : List Text
        , cardinality = Cardinality.Any
        , format = None FieldFormat
        , elementFields = None NestedRules
        , objectFields = None NestedRules
        , reference = None HandleReferenceRule
        , path = None PathReferenceRule
        , when = None FieldCondition
        , uniqueBy = None Text
        }

let nestedPlain =
      \(field : Text) ->
        { field
        , description = None Text
        , allowedValues = [] : List Text
        , cardinality = Cardinality.Any
        , format = None FieldFormat
        , path = None PathReferenceRule
        , when = None FieldCondition
        , reference = None HandleReferenceRule
        }

let select = \(field : Text) -> { field, member = None Text }

let scalar = \(field : Text) -> nestedPlain field // { cardinality = Cardinality.Scalar }

let members : NestedRules =
      { required = [ scalar "name" ]
      , recommended = [] : List NestedFieldRule
      , optional =
        [ scalar "start" // { format = Some FieldFormat.Rfc3339Utc }
        , scalar "end" // { format = Some FieldFormat.Rfc3339Utc }
        , scalar "score" // { format = Some FieldFormat.FiniteDecimal }
        ]
      , presenceConstraints =
        [ { when = None FieldCondition
          , whenAnyPresent = [ select "start" ]
          , requireAll = [ select "end" ]
          , requireAny = [] : List ValueSelector
          }
        ]
      , timestampOrderConstraints = [ { before = "start", after = "end" } ]
      }

let fields : FrontmatterRules =
      { required = [] : List FieldRule
      , recommended = [] : List FieldRule
      , optional =
        [ plain "rows" // { elementFields = Some members }
        , plain "settings" // { objectFields = Some members }
        , plain "names" // { cardinality = Cardinality.List }
        , plain "start" // { cardinality = Cardinality.Scalar, format = Some FieldFormat.Rfc3339Utc }
        , plain "end" // { cardinality = Cardinality.Scalar, format = Some FieldFormat.Rfc3339Utc }
        ]
      , presenceConstraints =
        [ { when = None FieldCondition
          , whenAnyPresent = [ select "start" ]
          , requireAll = [ select "end" ]
          , requireAny = [] : List ValueSelector
          }
        ]
      , timestampOrderConstraints = [ { before = "start", after = "end" } ]
      , membershipConstraints =
        [ { source = { field = "rows", member = Some "name" }, target = select "names" } ]
      , uniqueValuesConstraints = [ { selectors = [ select "names", { field = "settings", member = Some "name" } ] } ]
      }

in  { name = "pre-nested-closure"
    , description = Some "The complete descriptor immediately before nested closure."
    , okfVersion = "0.2"
    , guidance = Some "Frozen guidance"
    , frontmatter = fields
    , allowUnknownTypes = False
    , allowUnknownFields = False
    , idField = None Text
    , requireBundleVersion = Some "0.2"
    , types =
      [ { type = "Note"
        , description = None Text
        , guidance = Some "Frozen type guidance"
        , frontmatter = fields
        , pathPattern = None Text
        , resourceScheme = None Text
        , requireSchemaSection = False
        , schemaColumns = [] : List Text
        , idPrefix = None Text
        }
      ]
    }