A "model" is a class that implements runtime functionality associated with the corresponding element type.

Type Parameters

Hierarchy (view full)

Constructors

Properties

asOf?: `${number}.${number}`
description?: string
details?: string
errors?: DefinitionError[]
id?: number
isSeed?: boolean
isType?: boolean

Indicates that an element defines a datatype.

isTypeScope?: boolean

Indicates that an element may have type definitions as children.

name: string
operationalBase?: Model<BaseElement>

Normally base performs lookup based on type. If instead a model is installed it is used as the base.

The operational base also enables resolution from the operational base's tree. This enables resolution on operational models that are not installed in a parent hierarchy.

type?: string
until?: `${number}.${number}`
types: {
    [type: string]: (new (definition: any) => Model);
}

Factory support. Populated by derivatives upon definition.

Accessors

  • get allowedBaseTags(): ElementTag[]
  • The set of tags from which this model may derive.

    Returns ElementTag[]

  • get base(): undefined | Model<BaseElement>
  • Get a model for my base type as defined by type, if any.

    Returns undefined | Model<BaseElement>

  • get children(): Children<Model<BaseElement>>
  • Children of models are always models.

    Returns Children<Model<BaseElement>>

  • set children(children): void
  • Set the children of the model.

    Parameters

    Returns void

  • get discriminator(): undefined | string
  • Obtain a discriminator that differentiates different models with the same name

    Returns undefined | string

  • get effectiveId(): undefined | number
  • Allows subclasses to pull a working ID from an alternate source.

    Returns undefined | number

  • get effectiveType(): undefined | string
  • In some circumstances the base type can be inferred. This inference happens here.

    Does not recurse so only returns the direct base type.

    Returns undefined | string

  • get effectiveXref(): undefined | CrossReference
  • A local or parent xref.

    Returns undefined | CrossReference

  • get globalBase(): undefined | Model<BaseElement>
  • Get the first global base type. This may have semantic meaning more specific than the base primitive type.

    Returns undefined | Model<BaseElement>

  • get isGlobal(): boolean
  • Determine if this model resides in the global namespace.

    Returns boolean

  • get key(): undefined | string
  • Get a string that uniquely identifies this model. This is normally the effective ID but some models require a generated identifier.

    Returns undefined | string

  • get parent(): undefined | Model<BaseElement>
  • The structural parent. This is the model for the element that contains this element's definition.

    Returns undefined | Model<BaseElement>

  • set parent(parent): void
  • Parameters

    Returns void

  • get path(): string
  • The path ("." delimited) in the Matter tree.

    This is informational and generally tries to adhere to JS API conventions.

    Returns string

  • get shadow(): undefined | Model<BaseElement>
  • Get shadow model, if any. A "shadow" is an element in my parent's inheritance hierarchy that I override.

    Returns undefined | Model<BaseElement>

  • get valid(): boolean
  • Did validation find errors?

    Returns boolean

Methods

  • Retrieve all models of a specific element type from local scope.

    Type Parameters

    Parameters

    • type: Type<T>

      model class or a predicate object

    • Optionalkey: string | number

      filters to models matching a specific type

    Returns T[]

  • Determine whether this element applies to a specific revision.

    Parameters

    • revision: `${number}.${number}`

    Returns boolean

  • Clone the model. This deep copies all descendant child models but not other properties.

    Type Parameters

    Parameters

    Returns This

  • Record a validation error for this model.

    Parameters

    • code: string
    • message: string

    Returns void

  • Create an operational extension of the model. This creates a new model that inherits from this model for operational purposes.

    Type Parameters

    Parameters

    Returns This

  • Freeze the model hierarchy rooted at this model.

    When using a model as operational schema we implement various optimizations that assume the schema is immutable. This function enforces that assumption.

    To make changes to a frozen model use clone.

    Returns void

  • Retrieve a specific child by ID or name.

    Type Parameters

    Parameters

    • type: Type<T>
    • key: string | number

    Returns undefined | T

  • Does this model derive from another?

    Parameters

    Returns boolean

  • Search the inheritance chain for a child property.

    Parameters

    Returns undefined | Model<BaseElement>

  • Retrieve a model of a specific type from the ownership hierarchy.

    Type Parameters

    Parameters

    Returns undefined | T

  • Convert model to JSON.

    Returns T

  • Returns string

  • Convert to non-class structure.

    Returns T

  • Apply a function to all tree elements.

    Parameters

    Returns undefined | boolean