Skip to content

v4.0.0

Latest
Compare
Choose a tag to compare
@creisle creisle released this 13 May 17:46
722fd55

Breaking Changes

  • No longer using classes for ClassDefinition and PropertyDefinition, see migration guide in the README (and below)

Migration Guide: v3 to v4

To facilitate more reuseable typing schemes ClassModel and Property classes have been removed and now are simply objects. All interactions with these models should go through the schema class instead of interacting directly with the model and property objects. Return types are given only when they differ.

v3 v4 equivalent
ClassModel._properties ClassDefinition.properties
ClassModel.properties SchemaDefinition.getProperties(modelName: string)
ClassModel.required SchemaDefinition.requiredProperties(modelName: string)
ClassModel.optional SchemaDefinition.optionalProperties(modelName: string)
ClassModel.getActiveProperties() SchemaDefinition.activeProperties(modelName: string)
ClassModel.inherits SchemaDefinition.ancestors(modelName: string)
ClassModel.subclasses: ClassModel[] SchemaDefinition.children(modelName: string): string[]
ClassModel.descendantTree(excludeAbstract: boolean): ClassModel[] SchemaDefinition.descendants(modelName: string, opt: { excludeAbstract?: boolean, includeSelf?: boolean }): string[] 1
ClassModel.queryProperties: Record<string,Property[]> SchemaDefinition.queryableProperties(modelName: string): Record<string,PropertyDefinition[]>
ClassModel.inheritsProperty(propName: string) SchemaDefinition.inheritsProperty(modelName: string, propName: string)
ClassModel.toJSON N/A 2
ClassModel.formatRecord(record: GraphRecord, opt = {}) SchemaDefinition.formatRecord(modelName: string, record: GraphRecord, opt = {})
Property.validate(inputValue: unknown): unknown validateProperty = (prop: PropertyDefinition, inputValue: unknown): unknown
  1. must be called with includeSelf=true to match v3 edition

  2. There is no need for this function now since the ClassDefinition object is effectively already a JSON object