A custom SchemaField for defining a related Package. It may be required to be a specific type of package, by passing the packageType option to the constructor.

Hierarchy (view full)

Properties

fields: DataSchema

The contained field definitions.

unknownKeys: string[]

Any unknown keys encountered during the last cleaning.

name: string

The field name of this DataField instance. This is assigned by SchemaField#initialize.

parent: DataField

A reference to the parent schema to which this DataField belongs. This is assigned by SchemaField#initialize.

The initially provided options which configure the data field

recursive: boolean = true
hierarchical: boolean = false

Whether this field defines part of a Document/Embedded Document hierarchy.

Accessors

  • get fieldPath(): string
  • A dot-separated string representation of the field path within the parent schema.

    Returns string

  • get _defaults(): any
  • Default parameters for this field type

    Returns any

  • get hasFormSupport(): boolean
  • Does this form field class have defined form support?

    Returns boolean

Methods

  • An array of field names which are present in the schema.

    Returns string[]

  • Test whether a certain field name belongs to this schema definition.

    Parameters

    • fieldName: string

      The field name

    Returns boolean

    Does the named field exist in this schema?

  • Get a DataField instance from the schema by name

    Parameters

    • fieldName: string

      The field name

    Returns DataField

    The DataField instance or undefined

  • Traverse the schema, obtaining the DataField definition for a particular field.

    Parameters

    • fieldName: string | string[]

      A field path like ["abilities", "strength"] or "abilities.strength"

    Returns SchemaField | DataField

    The corresponding DataField definition for that field, or undefined

  • Parameters

    • value: any

    Returns any

  • Apply any cleaning logic specific to this DataField type.

    Parameters

    • data: any

      The appropriately coerced value.

    • options: {} = {}

      Additional options for how the field is cleaned.

      Returns any

      The cleaned value.

    • Parameters

      • value: any
      • model: any
      • options: {} = {}

        Returns any

      • Parameters

        • changes: any
        • options: {} = {}

          Returns void

        • Parameters

          • fn: any
          • data: {} = {}
            • options: {} = {}

              Returns {}

              • Migrate this field's candidate source data.

                Parameters

                • sourceData: any

                  Candidate source data of the root model

                • fieldData: any

                  The value of this field within the source data

                Returns void

              • Iterate over a SchemaField by iterating over its fields.

                Returns Generator<any, void, unknown>

              • Coerce source data to ensure that it conforms to the correct data type for the field. Data coercion operations should be simple and synchronous as these are applied whenever a DataModel is constructed. For one-off cleaning of user-provided input the sanitize method should be used.

                Parameters

                • value: any

                  The initial value

                • Optional options: {
                      partial: boolean;
                      source: any;
                  } = {}

                  Additional options for how the field is cleaned

                  • partial: boolean

                    Whether to perform partial cleaning?

                  • source: any

                    The root data model being cleaned

                Returns any

                The cast value

              • Attempt to retrieve a valid initial value for the DataField.

                Parameters

                • data: any

                  The source data object for which an initial value is required

                Returns any

                A valid initial value

                Throws

                An error if there is no valid initial value defined

              • Validate a candidate input for this field, ensuring it meets the field requirements. A validation failure can be provided as a raised Error (with a string message), by returning false, or by returning a DataModelValidationFailure instance. A validator which returns true denotes that the result is certainly valid and further validations are unnecessary.

                Parameters

                Returns DataModelValidationFailure

                Returns a DataModelValidationFailure if a validation failure occurred.

              • Render this DataField as an HTML element.

                Parameters

                • config: FormInputConfig = {}

                  Form element configuration parameters

                Returns HTMLElement | HTMLCollection

                A rendered HTMLElement for the field

                Throws

                An Error if this DataField subclass does not support input rendering

              • Render this DataField as a standardized form-group element.

                Parameters

                • groupConfig: FormGroupConfig = {}

                  Configuration options passed to the wrapping form-group

                • inputConfig: FormInputConfig = {}

                  Input element configuration options passed to DataField#toInput

                Returns HTMLDivElement

                The rendered form group element

              • Apply an ActiveEffectChange to this field.

                Parameters

                • value: any

                  The field's current value.

                • model: DataModel

                  The model instance.

                • change: EffectChangeData

                  The change to apply.

                Returns any

                The updated value.

              • Internal

                Cast a change delta into an appropriate type to be applied to this field.

                Parameters

                • delta: any

                  The change delta.

                Returns any

              • Protected

                Initialize and validate the structure of the provided field definitions.

                Parameters

                • fields: DataSchema

                  The provided field definitions

                Returns DataSchema

                The validated schema

              • Protected

                Special validation rules which supersede regular field validation. This validator screens for certain values which are otherwise incompatible with this field like null or undefined.

                Parameters

                • value: any

                  The candidate value

                Returns boolean | void

                A boolean to indicate with certainty whether the value is valid. Otherwise, return void.

                Throws

                May throw a specific error if the value is not valid

              • Protected

                Render this DataField as an HTML element. Subclasses should implement this method rather than the public toInput method which wraps it.

                Parameters

                • config: FormInputConfig

                  Form element configuration parameters

                Returns HTMLElement | HTMLCollection

                A rendered HTMLElement for the field

                Throws

                An Error if this DataField subclass does not support input rendering

              • Protected

                Apply an ADD change to this field.

                Parameters

                • value: any

                  The field's current value.

                • delta: any

                  The change delta.

                • model: DataModel

                  The model instance.

                • change: EffectChangeData

                  The original change data.

                Returns any

                The updated value.

              • Protected

                Apply a MULTIPLY change to this field.

                Parameters

                • value: any

                  The field's current value.

                • delta: any

                  The change delta.

                • model: DataModel

                  The model instance.

                • change: EffectChangeData

                  The original change data.

                Returns any

                The updated value.

              • Protected

                Apply an OVERRIDE change to this field.

                Parameters

                • value: any

                  The field's current value.

                • delta: any

                  The change delta.

                • model: DataModel

                  The model instance.

                • change: EffectChangeData

                  The original change data.

                Returns any

                The updated value.

              • Protected

                Apply an UPGRADE change to this field.

                Parameters

                • value: any

                  The field's current value.

                • delta: any

                  The change delta.

                • model: DataModel

                  The model instance.

                • change: EffectChangeData

                  The original change data.

                Returns any

                The updated value.

              • Protected

                Apply a DOWNGRADE change to this field.

                Parameters

                • value: any

                  The field's current value.

                • delta: any

                  The change delta.

                • model: DataModel

                  The model instance.

                • change: EffectChangeData

                  The original change data.

                Returns any

                The updated value.

              • Protected

                Apply a CUSTOM change to this field.

                Parameters

                • value: any

                  The field's current value.

                • delta: any

                  The change delta.

                • model: DataModel

                  The model instance.

                • change: EffectChangeData

                  The original change data.

                Returns any

                The updated value.