@itwin/ecschema-metadata 4.10.0-dev.36 → 4.10.0-dev.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/lib/cjs/Deserialization/AbstractParser.d.ts +3 -0
  2. package/lib/cjs/Deserialization/AbstractParser.d.ts.map +1 -1
  3. package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
  4. package/lib/cjs/Deserialization/Helper.d.ts +9 -0
  5. package/lib/cjs/Deserialization/Helper.d.ts.map +1 -1
  6. package/lib/cjs/Deserialization/Helper.js +24 -6
  7. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  8. package/lib/cjs/Deserialization/JsonParser.d.ts +3 -0
  9. package/lib/cjs/Deserialization/JsonParser.d.ts.map +1 -1
  10. package/lib/cjs/Deserialization/JsonParser.js +55 -9
  11. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  12. package/lib/cjs/Deserialization/JsonProps.d.ts +4 -0
  13. package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
  14. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  15. package/lib/cjs/Deserialization/XmlParser.d.ts +3 -2
  16. package/lib/cjs/Deserialization/XmlParser.d.ts.map +1 -1
  17. package/lib/cjs/Deserialization/XmlParser.js +29 -12
  18. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  19. package/lib/cjs/ECObjects.d.ts.map +1 -1
  20. package/lib/cjs/ECObjects.js +8 -5
  21. package/lib/cjs/ECObjects.js.map +1 -1
  22. package/lib/cjs/Exception.d.ts +2 -1
  23. package/lib/cjs/Exception.d.ts.map +1 -1
  24. package/lib/cjs/Exception.js +1 -0
  25. package/lib/cjs/Exception.js.map +1 -1
  26. package/lib/cjs/Metadata/Class.d.ts.map +1 -1
  27. package/lib/cjs/Metadata/Class.js +10 -3
  28. package/lib/cjs/Metadata/Class.js.map +1 -1
  29. package/lib/cjs/Metadata/Enumeration.d.ts.map +1 -1
  30. package/lib/cjs/Metadata/Enumeration.js +11 -4
  31. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  32. package/lib/cjs/Metadata/RelationshipClass.d.ts.map +1 -1
  33. package/lib/cjs/Metadata/RelationshipClass.js +8 -3
  34. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  35. package/lib/cjs/Metadata/Schema.d.ts +9 -0
  36. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  37. package/lib/cjs/Metadata/Schema.js +74 -7
  38. package/lib/cjs/Metadata/Schema.js.map +1 -1
  39. package/lib/cjs/SchemaKey.d.ts.map +1 -1
  40. package/lib/cjs/SchemaKey.js +1 -5
  41. package/lib/cjs/SchemaKey.js.map +1 -1
  42. package/lib/esm/Deserialization/AbstractParser.d.ts +3 -0
  43. package/lib/esm/Deserialization/AbstractParser.d.ts.map +1 -1
  44. package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
  45. package/lib/esm/Deserialization/Helper.d.ts +9 -0
  46. package/lib/esm/Deserialization/Helper.d.ts.map +1 -1
  47. package/lib/esm/Deserialization/Helper.js +24 -6
  48. package/lib/esm/Deserialization/Helper.js.map +1 -1
  49. package/lib/esm/Deserialization/JsonParser.d.ts +3 -0
  50. package/lib/esm/Deserialization/JsonParser.d.ts.map +1 -1
  51. package/lib/esm/Deserialization/JsonParser.js +55 -9
  52. package/lib/esm/Deserialization/JsonParser.js.map +1 -1
  53. package/lib/esm/Deserialization/JsonProps.d.ts +4 -0
  54. package/lib/esm/Deserialization/JsonProps.d.ts.map +1 -1
  55. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  56. package/lib/esm/Deserialization/XmlParser.d.ts +3 -2
  57. package/lib/esm/Deserialization/XmlParser.d.ts.map +1 -1
  58. package/lib/esm/Deserialization/XmlParser.js +29 -12
  59. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  60. package/lib/esm/ECObjects.d.ts.map +1 -1
  61. package/lib/esm/ECObjects.js +8 -5
  62. package/lib/esm/ECObjects.js.map +1 -1
  63. package/lib/esm/Exception.d.ts +2 -1
  64. package/lib/esm/Exception.d.ts.map +1 -1
  65. package/lib/esm/Exception.js +1 -0
  66. package/lib/esm/Exception.js.map +1 -1
  67. package/lib/esm/Metadata/Class.d.ts.map +1 -1
  68. package/lib/esm/Metadata/Class.js +10 -3
  69. package/lib/esm/Metadata/Class.js.map +1 -1
  70. package/lib/esm/Metadata/Enumeration.d.ts.map +1 -1
  71. package/lib/esm/Metadata/Enumeration.js +11 -4
  72. package/lib/esm/Metadata/Enumeration.js.map +1 -1
  73. package/lib/esm/Metadata/RelationshipClass.d.ts.map +1 -1
  74. package/lib/esm/Metadata/RelationshipClass.js +8 -3
  75. package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
  76. package/lib/esm/Metadata/Schema.d.ts +9 -0
  77. package/lib/esm/Metadata/Schema.d.ts.map +1 -1
  78. package/lib/esm/Metadata/Schema.js +74 -7
  79. package/lib/esm/Metadata/Schema.js.map +1 -1
  80. package/lib/esm/SchemaKey.d.ts.map +1 -1
  81. package/lib/esm/SchemaKey.js +1 -5
  82. package/lib/esm/SchemaKey.js.map +1 -1
  83. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"Enumeration.js","sourceRoot":"","sources":["../../../src/Metadata/Enumeration.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { EnumerationProps, EnumeratorProps } from \"../Deserialization/JsonProps\";\nimport { PrimitiveType, primitiveTypeToString, SchemaItemType } from \"../ECObjects\";\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\nimport { ECName } from \"../ECName\";\nimport { Schema } from \"./Schema\";\nimport { SchemaItem } from \"./SchemaItem\";\n\n/** @beta */\nexport interface Enumerator<T> {\n readonly name: string;\n readonly value: T;\n readonly label?: string;\n readonly description?: string;\n}\n\n/** @beta */\nexport type AnyEnumerator = Enumerator<string | number>;\n\n/**\n * A Typescript class representation of an ECEnumeration.\n * @beta\n */\nexport class Enumeration extends SchemaItem {\n public override readonly schemaItemType!: SchemaItemType.Enumeration;\n protected _type?: PrimitiveType.Integer | PrimitiveType.String;\n protected _isStrict: boolean;\n protected _enumerators: AnyEnumerator[];\n\n public get enumerators() { return this._enumerators; }\n public get type() { return this._type; }\n public get isStrict() { return this._isStrict; }\n\n constructor(schema: Schema, name: string, primitiveType?: PrimitiveType.Integer | PrimitiveType.String) {\n super(schema, name);\n this.schemaItemType = SchemaItemType.Enumeration;\n this._type = primitiveType;\n this._isStrict = true;\n this._enumerators = [];\n }\n\n public get isInt(): boolean { return this._type === PrimitiveType.Integer; }\n public get isString(): boolean { return this._type === PrimitiveType.String; }\n\n /**\n * Gets an enumerator that matches the name provided.\n * @param name The ECName of the Enumerator to find.\n */\n public getEnumeratorByName(name: string): AnyEnumerator | undefined {\n return this.enumerators.find((item) => item.name.toLowerCase() === name.toLowerCase());\n }\n\n /**\n * Gets an enumerator that matches the value provided.\n * @param value The value of the Enumerator to find.\n */\n public getEnumerator(value: string): Enumerator<string> | undefined;\n public getEnumerator(value: number): Enumerator<number> | undefined;\n public getEnumerator(value: string | number): AnyEnumerator | undefined {\n return this.enumerators.find((item) => item.value === value);\n }\n\n /**\n * Checks whether there already exists an enumerator with this name or this value\n * @param name The name of the enumerator we are trying to create\n * @param value The value of the enumerator we are trying to create\n * @internal\n */\n private findDuplicateEnumerators(name: string, value: string | number) {\n this._enumerators.forEach((element: AnyEnumerator) => { // Name and value must be unique within the ECEnumerations\n if (element.name.toLowerCase() === name.toLowerCase())\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has a duplicate Enumerator with name '${name}'.`);\n if (element.value === value)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has a duplicate Enumerator with value '${value}'.`);\n });\n }\n\n /**\n * Creates an Enumerator with the provided name and value as well as optional parameters label and description\n * @param name The name of the enumerator\n * @param value The value of the enumerator. The type of this value is dependent on the backing type of the this Enumeration.\n * @param label A localized display label that is used instead of the name in a GUI.\n * @param description A localized description for the enumerator.\n * @return AnyEnumerator object\n */\n public createEnumerator(name: string, value: string | number, label?: string, description?: string): AnyEnumerator {\n if (this.isInt && typeof (value) === \"string\") // throws if backing type is int and value is string\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has a backing type 'integer' and an enumerator with value of type 'string'.`);\n if (!this.isInt && typeof (value) === \"number\") // also throws if backing type is string and value is number\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has a backing type 'string' and an enumerator with value of type 'integer'.`);\n this.findDuplicateEnumerators(name, value); // check for duplicates; throw if there are any\n if (!ECName.validate(name))\n throw new ECObjectsError(ECObjectsStatus.InvalidECName, `The Enumeration ${this.name} has an enumerator with an invalid 'name' attribute. ${name} is not a valid ECName.`);\n return { name, value, label, description };\n }\n\n /**\n * Adds enumerator to list of enumerators on this Enumeration\n * @param enumerator The enumerator to add\n */\n protected addEnumerator(enumerator: AnyEnumerator) {\n this.enumerators.push(enumerator);\n }\n\n /**\n * Save this Enumeration's properties to an object for serializing to JSON.\n * @param standalone Serialization includes only this object (as opposed to the full schema).\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\n */\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): EnumerationProps {\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\n schemaJson.type = (this.isInt) ? \"int\" : \"string\";\n schemaJson.isStrict = this.isStrict;\n schemaJson.enumerators = this._enumerators.map(({ name, label, value, description }) => {\n const enumJson: any = { name, value };\n if (undefined !== label)\n enumJson.label = label;\n if (undefined !== description)\n enumJson.description = description;\n return enumJson;\n });\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n if (undefined !== this.type)\n itemElement.setAttribute(\"backingTypeName\", primitiveTypeToString(this.type));\n itemElement.setAttribute(\"isStrict\", String(this.isStrict));\n\n for (const enumerator of this.enumerators) {\n const enumElement = schemaXml.createElement(\"ECEnumerator\");\n enumElement.setAttribute(\"name\", enumerator.name);\n const enumValue = typeof enumerator.value === \"string\" ? enumerator.value : enumerator.value.toString();\n enumElement.setAttribute(\"value\", enumValue);\n if (undefined !== enumerator.label)\n enumElement.setAttribute(\"displayLabel\", enumerator.label);\n if (undefined !== enumerator.description)\n enumElement.setAttribute(\"description\", enumerator.description);\n itemElement.appendChild(enumElement);\n }\n\n return itemElement;\n }\n\n public override fromJSONSync(enumerationProps: EnumerationProps) {\n super.fromJSONSync(enumerationProps);\n if (undefined === this._type) {\n if (/int/i.test(enumerationProps.type))\n this._type = PrimitiveType.Integer;\n else if (/string/i.test(enumerationProps.type))\n this._type = PrimitiveType.String;\n else\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has an invalid 'type' attribute. It should be either \"int\" or \"string\".`);\n } else {\n const primitiveTypePattern = (this.isInt) ? /int/i : /string/i;\n if (!primitiveTypePattern.test(enumerationProps.type))\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has an incompatible type. It must be \"${(this.isInt) ? \"int\" : \"string\"}\", not \"${(this.isInt) ? \"string\" : \"int\"}\".`);\n }\n this._isStrict = enumerationProps.isStrict;\n\n if (undefined !== enumerationProps.enumerators) {\n enumerationProps.enumerators.forEach((enumerator: EnumeratorProps) => {\n // Creates a new enumerator (with the specified name, value, label and description- label and description are optional) and adds to the list of enumerators.\n // Throws ECObjectsError if there are duplicate names or values present in the enumeration\n this.addEnumerator(this.createEnumerator(enumerator.name, enumerator.value, enumerator.label, enumerator.description));\n });\n }\n }\n\n public override async fromJSON(enumerationProps: EnumerationProps) {\n this.fromJSONSync(enumerationProps);\n }\n\n /**\n * @alpha Used in schema editing.\n */\n protected setIsStrict(isStrict: boolean) {\n this._isStrict = isStrict;\n }\n\n}\n\n/** @internal\n * An abstract class used for schema editing.\n */\nexport abstract class MutableEnumeration extends Enumeration {\n public abstract override addEnumerator(enumerator: AnyEnumerator): void;\n public abstract override setIsStrict(isStrict: boolean): void;\n public abstract override setDisplayLabel(displayLabel: string): void;\n}\n"]}
1
+ {"version":3,"file":"Enumeration.js","sourceRoot":"","sources":["../../../src/Metadata/Enumeration.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { ECSpecVersion, SchemaReadHelper } from \"../Deserialization/Helper\";\nimport { EnumerationProps, EnumeratorProps } from \"../Deserialization/JsonProps\";\nimport { PrimitiveType, primitiveTypeToString, SchemaItemType } from \"../ECObjects\";\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\nimport { ECName } from \"../ECName\";\nimport { Schema } from \"./Schema\";\nimport { SchemaItem } from \"./SchemaItem\";\n\n/** @beta */\nexport interface Enumerator<T> {\n readonly name: string;\n readonly value: T;\n readonly label?: string;\n readonly description?: string;\n}\n\n/** @beta */\nexport type AnyEnumerator = Enumerator<string | number>;\n\n/**\n * A Typescript class representation of an ECEnumeration.\n * @beta\n */\nexport class Enumeration extends SchemaItem {\n public override readonly schemaItemType!: SchemaItemType.Enumeration;\n protected _type?: PrimitiveType.Integer | PrimitiveType.String;\n protected _isStrict: boolean;\n protected _enumerators: AnyEnumerator[];\n\n public get enumerators() { return this._enumerators; }\n public get type() { return this._type; }\n public get isStrict() { return this._isStrict; }\n\n constructor(schema: Schema, name: string, primitiveType?: PrimitiveType.Integer | PrimitiveType.String) {\n super(schema, name);\n this.schemaItemType = SchemaItemType.Enumeration;\n this._type = primitiveType;\n this._isStrict = true;\n this._enumerators = [];\n }\n\n public get isInt(): boolean { return this._type === PrimitiveType.Integer; }\n public get isString(): boolean { return this._type === PrimitiveType.String; }\n\n /**\n * Gets an enumerator that matches the name provided.\n * @param name The ECName of the Enumerator to find.\n */\n public getEnumeratorByName(name: string): AnyEnumerator | undefined {\n return this.enumerators.find((item) => item.name.toLowerCase() === name.toLowerCase());\n }\n\n /**\n * Gets an enumerator that matches the value provided.\n * @param value The value of the Enumerator to find.\n */\n public getEnumerator(value: string): Enumerator<string> | undefined;\n public getEnumerator(value: number): Enumerator<number> | undefined;\n public getEnumerator(value: string | number): AnyEnumerator | undefined {\n return this.enumerators.find((item) => item.value === value);\n }\n\n /**\n * Checks whether there already exists an enumerator with this name or this value\n * @param name The name of the enumerator we are trying to create\n * @param value The value of the enumerator we are trying to create\n * @internal\n */\n private findDuplicateEnumerators(name: string, value: string | number) {\n this._enumerators.forEach((element: AnyEnumerator) => { // Name and value must be unique within the ECEnumerations\n if (element.name.toLowerCase() === name.toLowerCase())\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has a duplicate Enumerator with name '${name}'.`);\n if (element.value === value)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has a duplicate Enumerator with value '${value}'.`);\n });\n }\n\n /**\n * Creates an Enumerator with the provided name and value as well as optional parameters label and description\n * @param name The name of the enumerator\n * @param value The value of the enumerator. The type of this value is dependent on the backing type of the this Enumeration.\n * @param label A localized display label that is used instead of the name in a GUI.\n * @param description A localized description for the enumerator.\n * @return AnyEnumerator object\n */\n public createEnumerator(name: string, value: string | number, label?: string, description?: string): AnyEnumerator {\n if (this.isInt && typeof (value) === \"string\") // throws if backing type is int and value is string\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has a backing type 'integer' and an enumerator with value of type 'string'.`);\n if (!this.isInt && typeof (value) === \"number\") // also throws if backing type is string and value is number\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has a backing type 'string' and an enumerator with value of type 'integer'.`);\n this.findDuplicateEnumerators(name, value); // check for duplicates; throw if there are any\n if (!ECName.validate(name))\n throw new ECObjectsError(ECObjectsStatus.InvalidECName, `The Enumeration ${this.name} has an enumerator with an invalid 'name' attribute. ${name} is not a valid ECName.`);\n return { name, value, label, description };\n }\n\n /**\n * Adds enumerator to list of enumerators on this Enumeration\n * @param enumerator The enumerator to add\n */\n protected addEnumerator(enumerator: AnyEnumerator) {\n this.enumerators.push(enumerator);\n }\n\n /**\n * Save this Enumeration's properties to an object for serializing to JSON.\n * @param standalone Serialization includes only this object (as opposed to the full schema).\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\n */\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): EnumerationProps {\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\n schemaJson.type = (this.isInt) ? \"int\" : \"string\";\n schemaJson.isStrict = this.isStrict;\n schemaJson.enumerators = this._enumerators.map(({ name, label, value, description }) => {\n const enumJson: any = { name, value };\n if (undefined !== label)\n enumJson.label = label;\n if (undefined !== description)\n enumJson.description = description;\n return enumJson;\n });\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n if (undefined !== this.type)\n itemElement.setAttribute(\"backingTypeName\", primitiveTypeToString(this.type));\n itemElement.setAttribute(\"isStrict\", String(this.isStrict));\n\n for (const enumerator of this.enumerators) {\n const enumElement = schemaXml.createElement(\"ECEnumerator\");\n enumElement.setAttribute(\"name\", enumerator.name);\n const enumValue = typeof enumerator.value === \"string\" ? enumerator.value : enumerator.value.toString();\n enumElement.setAttribute(\"value\", enumValue);\n if (undefined !== enumerator.label)\n enumElement.setAttribute(\"displayLabel\", enumerator.label);\n if (undefined !== enumerator.description)\n enumElement.setAttribute(\"description\", enumerator.description);\n itemElement.appendChild(enumElement);\n }\n\n return itemElement;\n }\n\n public override fromJSONSync(enumerationProps: EnumerationProps) {\n super.fromJSONSync(enumerationProps);\n if (undefined === this._type) {\n if (/int/i.test(enumerationProps.type)) {\n this._type = PrimitiveType.Integer;\n } else if (/string/i.test(enumerationProps.type)) {\n this._type = PrimitiveType.String;\n } else {\n if (SchemaReadHelper.isECSpecVersionNewer({readVersion: enumerationProps.originalECSpecMajorVersion, writeVersion: enumerationProps.originalECSpecMinorVersion} as ECSpecVersion))\n this._type = PrimitiveType.String;\n else\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has an invalid 'type' attribute. It should be either \"int\" or \"string\".`);\n }\n } else {\n const primitiveTypePattern = (this.isInt) ? /int/i : /string/i;\n if (!primitiveTypePattern.test(enumerationProps.type))\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Enumeration ${this.name} has an incompatible type. It must be \"${(this.isInt) ? \"int\" : \"string\"}\", not \"${(this.isInt) ? \"string\" : \"int\"}\".`);\n }\n this._isStrict = enumerationProps.isStrict;\n\n if (undefined !== enumerationProps.enumerators) {\n enumerationProps.enumerators.forEach((enumerator: EnumeratorProps) => {\n // Creates a new enumerator (with the specified name, value, label and description- label and description are optional) and adds to the list of enumerators.\n // Throws ECObjectsError if there are duplicate names or values present in the enumeration\n this.addEnumerator(this.createEnumerator(enumerator.name, enumerator.value, enumerator.label, enumerator.description));\n });\n }\n }\n\n public override async fromJSON(enumerationProps: EnumerationProps) {\n this.fromJSONSync(enumerationProps);\n }\n\n /**\n * @alpha Used in schema editing.\n */\n protected setIsStrict(isStrict: boolean) {\n this._isStrict = isStrict;\n }\n\n}\n\n/** @internal\n * An abstract class used for schema editing.\n */\nexport abstract class MutableEnumeration extends Enumeration {\n public abstract override addEnumerator(enumerator: AnyEnumerator): void;\n public abstract override setIsStrict(isStrict: boolean): void;\n public abstract override setDisplayLabel(displayLabel: string): void;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipClass.d.ts","sourceRoot":"","sources":["../../../src/Metadata/RelationshipClass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RelationshipClass.d.ts","sourceRoot":"","sources":["../../../src/Metadata/RelationshipClass.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.MutableRelationshipClass = exports.RelationshipMultiplicity = exports.MutableRelationshipConstraint = exports.RelationshipConstraint = exports.RelationshipClass = void 0;
11
11
  const DelayedPromise_1 = require("../DelayedPromise");
12
+ const Helper_1 = require("../Deserialization/Helper");
12
13
  const XmlSerializationUtils_1 = require("../Deserialization/XmlSerializationUtils");
13
14
  const ECObjects_1 = require("../ECObjects");
14
15
  const Exception_1 = require("../Exception");
@@ -93,9 +94,13 @@ class RelationshipClass extends Class_1.ECClass {
93
94
  }
94
95
  fromJSONSync(relationshipClassProps) {
95
96
  super.fromJSONSync(relationshipClassProps);
96
- const strength = (0, ECObjects_1.parseStrength)(relationshipClassProps.strength);
97
- if (undefined === strength)
98
- throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strength' attribute. '${relationshipClassProps.strength}' is not a valid StrengthType.`);
97
+ let strength = (0, ECObjects_1.parseStrength)(relationshipClassProps.strength);
98
+ if (undefined === strength) {
99
+ if (Helper_1.SchemaReadHelper.isECSpecVersionNewer({ readVersion: relationshipClassProps.originalECSpecMajorVersion, writeVersion: relationshipClassProps.originalECSpecMinorVersion }))
100
+ strength = ECObjects_1.StrengthType.Referencing;
101
+ else
102
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strength' attribute. '${relationshipClassProps.strength}' is not a valid StrengthType.`);
103
+ }
99
104
  const strengthDirection = (0, ECObjects_1.parseStrengthDirection)(relationshipClassProps.strengthDirection);
100
105
  if (undefined === strengthDirection)
101
106
  throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strengthDirection' attribute. '${relationshipClassProps.strengthDirection}' is not a valid StrengthDirection.`);
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipClass.js","sourceRoot":"","sources":["../../../src/Metadata/RelationshipClass.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { DelayedPromiseWithProps } from \"../DelayedPromise\";\nimport { RelationshipClassProps, RelationshipConstraintProps } from \"../Deserialization/JsonProps\";\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\nimport {\n ECClassModifier, parseStrength, parseStrengthDirection, RelationshipEnd, SchemaItemType, StrengthDirection, strengthDirectionToString,\n strengthToString, StrengthType,\n} from \"../ECObjects\";\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\nimport { LazyLoadedRelationshipConstraintClass } from \"../Interfaces\";\nimport { SchemaItemKey } from \"../SchemaKey\";\nimport { ECClass } from \"./Class\";\nimport { CustomAttribute, CustomAttributeContainerProps, CustomAttributeSet, serializeCustomAttributes } from \"./CustomAttribute\";\nimport { createNavigationProperty, createNavigationPropertySync, EntityClass } from \"./EntityClass\";\nimport { Mixin } from \"./Mixin\";\nimport { NavigationProperty } from \"./Property\";\nimport { Schema } from \"./Schema\";\nimport { SchemaItem } from \"./SchemaItem\";\n\ntype AnyConstraintClass = EntityClass | Mixin | RelationshipClass;\n\n/**\n * A Typescript class representation of a ECRelationshipClass.\n * @beta\n */\nexport class RelationshipClass extends ECClass {\n public override readonly schema!: Schema;\n public override readonly schemaItemType!: SchemaItemType.RelationshipClass;\n protected _strength: StrengthType;\n protected _strengthDirection: StrengthDirection;\n protected _source: RelationshipConstraint;\n protected _target: RelationshipConstraint;\n\n constructor(schema: Schema, name: string, modifier?: ECClassModifier) {\n super(schema, name, modifier);\n this.schemaItemType = SchemaItemType.RelationshipClass;\n this._strengthDirection = StrengthDirection.Forward;\n this._strength = StrengthType.Referencing;\n this._source = new RelationshipConstraint(this, RelationshipEnd.Source);\n this._target = new RelationshipConstraint(this, RelationshipEnd.Target);\n }\n\n public get strength() { return this._strength; }\n public get strengthDirection() { return this._strengthDirection; }\n public get source() { return this._source; }\n public get target() { return this._target; }\n\n /**\n *\n * @param name\n * @param relationship\n * @param direction\n */\n protected async createNavigationProperty(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): Promise<NavigationProperty> {\n return this.addProperty(await createNavigationProperty(this, name, relationship, direction));\n }\n\n protected createNavigationPropertySync(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): NavigationProperty {\n return this.addProperty(createNavigationPropertySync(this, name, relationship, direction));\n }\n\n /**\n * @alpha Used for schema editing.\n */\n protected setStrength(strength: StrengthType) {\n this._strength = strength;\n }\n\n /**\n * @alpha Used for schema editing.\n */\n protected setStrengthDirection(direction: StrengthDirection) {\n this._strengthDirection = direction;\n }\n\n /**\n * @alpha Used for schema editing.\n */\n protected setSourceConstraint(source: RelationshipConstraint) {\n this._source = source;\n }\n\n /**\n * @alpha Used for schema editing.\n */\n protected setTargetConstraint(target: RelationshipConstraint) {\n this._target = target;\n }\n /**\n * Save this RelationshipClass's properties to an object for serializing to JSON.\n * @param standalone Serialization includes only this object (as opposed to the full schema).\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\n */\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): RelationshipClassProps {\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\n schemaJson.strength = strengthToString(this.strength);\n schemaJson.strengthDirection = strengthDirectionToString(this.strengthDirection);\n schemaJson.source = this.source.toJSON();\n schemaJson.target = this.target.toJSON();\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n itemElement.setAttribute(\"strength\", strengthToString(this.strength));\n itemElement.setAttribute(\"strengthDirection\", strengthDirectionToString(this.strengthDirection));\n itemElement.appendChild(await this.source.toXml(schemaXml));\n itemElement.appendChild(await this.target.toXml(schemaXml));\n return itemElement;\n }\n\n public override fromJSONSync(relationshipClassProps: RelationshipClassProps) {\n super.fromJSONSync(relationshipClassProps);\n\n const strength = parseStrength(relationshipClassProps.strength);\n if (undefined === strength)\n throw new ECObjectsError(ECObjectsStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strength' attribute. '${relationshipClassProps.strength}' is not a valid StrengthType.`);\n\n const strengthDirection = parseStrengthDirection(relationshipClassProps.strengthDirection);\n if (undefined === strengthDirection)\n throw new ECObjectsError(ECObjectsStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strengthDirection' attribute. '${relationshipClassProps.strengthDirection}' is not a valid StrengthDirection.`);\n\n this._strength = strength;\n this._strengthDirection = strengthDirection;\n }\n\n public override async fromJSON(relationshipClassProps: RelationshipClassProps) {\n this.fromJSONSync(relationshipClassProps);\n }\n}\n\n/**\n * A Typescript class representation of a ECRelationshipConstraint.\n * @beta\n */\nexport class RelationshipConstraint implements CustomAttributeContainerProps {\n protected _abstractConstraint?: LazyLoadedRelationshipConstraintClass;\n protected _relationshipClass: RelationshipClass;\n protected _relationshipEnd: RelationshipEnd;\n protected _multiplicity?: RelationshipMultiplicity;\n protected _polymorphic?: boolean;\n protected _roleLabel?: string;\n protected _constraintClasses?: LazyLoadedRelationshipConstraintClass[];\n private _customAttributes?: Map<string, CustomAttribute>;\n\n constructor(relClass: RelationshipClass, relEnd: RelationshipEnd, roleLabel?: string, polymorphic?: boolean) {\n this._relationshipEnd = relEnd;\n if (polymorphic)\n this._polymorphic = polymorphic;\n else\n this._polymorphic = false;\n\n this._multiplicity = RelationshipMultiplicity.zeroOne;\n this._relationshipClass = relClass;\n this._roleLabel = roleLabel;\n }\n\n public get multiplicity() { return this._multiplicity ?? RelationshipMultiplicity.zeroOne; }\n protected set multiplicity(multiplicity: RelationshipMultiplicity) {\n this._multiplicity = multiplicity;\n }\n\n public get polymorphic() { return this._polymorphic ?? false; }\n protected set polymorphic(polymorphic: boolean) {\n this._polymorphic = polymorphic;\n }\n\n public get roleLabel() { return this._roleLabel; }\n protected set roleLabel(roleLabel: string | undefined) {\n this._roleLabel = roleLabel;\n }\n\n public get constraintClasses(): LazyLoadedRelationshipConstraintClass[] | undefined { return this._constraintClasses; }\n\n public get relationshipClass() { return this._relationshipClass; }\n\n public get relationshipEnd() { return this._relationshipEnd; }\n protected set relationshipEnd(relationshipEnd: RelationshipEnd) {\n this._relationshipEnd = relationshipEnd;\n }\n\n public get customAttributes(): CustomAttributeSet | undefined { return this._customAttributes; }\n\n /** Returns the constraint name, ie. 'RelationshipName.Source/Target' */\n public get fullName() { return `${this._relationshipClass.name}:${this.isSource ? \"Source\" : \"Target\"}`; }\n\n /** Returns the schema of the RelationshipClass. */\n public get schema(): Schema { return this._relationshipClass.schema; }\n\n public get abstractConstraint(): LazyLoadedRelationshipConstraintClass | undefined {\n if (this._abstractConstraint)\n return this._abstractConstraint;\n\n if (this.constraintClasses && this.constraintClasses.length === 1)\n return this.constraintClasses[0];\n\n return this._abstractConstraint;\n }\n\n public set abstractConstraint(abstractConstraint: LazyLoadedRelationshipConstraintClass | undefined) {\n this._abstractConstraint = abstractConstraint;\n }\n\n /**\n * True if this RelationshipConstraint is the Source relationship end.\n */\n public get isSource(): boolean { return this.relationshipEnd === RelationshipEnd.Source; }\n\n /**\n * Adds the provided class as a constraint class to this constraint.\n * @param constraint The class to add as a constraint class.\n */\n public addClass(constraint: EntityClass | Mixin | RelationshipClass): void {\n // TODO: Ensure we don't start mixing constraint class types\n // TODO: Check that this class is or subclasses abstract constraint?\n\n if (!this._constraintClasses)\n this._constraintClasses = [];\n\n // TODO: Handle relationship constraints\n this._constraintClasses.push(new DelayedPromiseWithProps(constraint.key, async () => constraint));\n }\n\n /**\n * Removes the provided class as a constraint class from this constraint.\n * @param constraint The class to add as a constraint class.\n */\n protected removeClass(constraint: EntityClass | Mixin | RelationshipClass): void {\n if (undefined === this._constraintClasses)\n return;\n\n this._constraintClasses.forEach( (item, index) => {\n const constraintName = item.fullName;\n if(constraintName === constraint.fullName)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._constraintClasses?.splice(index,1);\n });\n }\n\n /**\n * Save this RelationshipConstraint's properties to an object for serializing to JSON.\n */\n public toJSON(): RelationshipConstraintProps {\n const schemaJson: { [value: string]: any } = {};\n schemaJson.multiplicity = this.multiplicity.toString();\n schemaJson.roleLabel = this.roleLabel;\n schemaJson.polymorphic = this.polymorphic;\n if (undefined !== this._abstractConstraint)\n schemaJson.abstractConstraint = this._abstractConstraint.fullName;\n if (undefined !== this.constraintClasses && this.constraintClasses.length > 0)\n schemaJson.constraintClasses = this.constraintClasses.map((constraintClass) => constraintClass.fullName);\n\n const customAttributes = serializeCustomAttributes(this.customAttributes);\n if (undefined !== customAttributes)\n schemaJson.customAttributes = customAttributes;\n return schemaJson as RelationshipConstraintProps;\n }\n\n /** @internal */\n public async toXml(schemaXml: Document): Promise<Element> {\n const elementName = this.isSource ? \"Source\" : \"Target\";\n const itemElement = schemaXml.createElement(elementName);\n if (undefined !== this.polymorphic)\n itemElement.setAttribute(\"polymorphic\", this.polymorphic.toString());\n if (undefined !== this.roleLabel)\n itemElement.setAttribute(\"roleLabel\", this.roleLabel);\n if (undefined !== this.multiplicity)\n itemElement.setAttribute(\"multiplicity\", this.multiplicity.toString());\n\n const abstractConstraint = await this.abstractConstraint;\n if (undefined !== abstractConstraint) {\n const abstractConstraintName = XmlSerializationUtils.createXmlTypedName(this.schema, abstractConstraint.schema, abstractConstraint.name);\n itemElement.setAttribute(\"abstractConstraint\", abstractConstraintName);\n }\n\n if (undefined !== this.constraintClasses) {\n for (const item of this.constraintClasses) {\n const constraintClass = await item;\n const classElement = schemaXml.createElement(\"Class\");\n const constraintClassName = XmlSerializationUtils.createXmlTypedName(this.schema, constraintClass.schema, constraintClass.name);\n classElement.setAttribute(\"class\", constraintClassName);\n itemElement.appendChild(classElement);\n }\n }\n\n if (this._customAttributes) {\n const caContainerElement = schemaXml.createElement(\"ECCustomAttributes\");\n for (const [name, attribute] of this._customAttributes) {\n const caElement = await XmlSerializationUtils.writeCustomAttribute(name, attribute, schemaXml, this.schema);\n caContainerElement.appendChild(caElement);\n }\n itemElement.appendChild(caContainerElement);\n }\n\n return itemElement;\n }\n\n public fromJSONSync(relationshipConstraintProps: RelationshipConstraintProps) {\n\n this._roleLabel = relationshipConstraintProps.roleLabel;\n this._polymorphic = relationshipConstraintProps.polymorphic;\n\n const parsedMultiplicity = RelationshipMultiplicity.fromString(relationshipConstraintProps.multiplicity);\n if (!parsedMultiplicity)\n throw new ECObjectsError(ECObjectsStatus.InvalidMultiplicity, ``);\n this._multiplicity = parsedMultiplicity;\n\n const relClassSchema = this.relationshipClass.schema;\n\n if (undefined !== relationshipConstraintProps.abstractConstraint) {\n const abstractConstraintSchemaItemKey = relClassSchema.getSchemaItemKey(relationshipConstraintProps.abstractConstraint);\n if (!abstractConstraintSchemaItemKey)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the abstractConstraint ${relationshipConstraintProps.abstractConstraint}.`);\n this.abstractConstraint = new DelayedPromiseWithProps<SchemaItemKey, AnyConstraintClass>(abstractConstraintSchemaItemKey,\n async () => {\n const tempAbstractConstraint = await relClassSchema.lookupItem<AnyConstraintClass>(relationshipConstraintProps.abstractConstraint!);\n if (undefined === tempAbstractConstraint)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the abstractConstraint ${relationshipConstraintProps.abstractConstraint}.`);\n\n return tempAbstractConstraint;\n });\n }\n\n const loadEachConstraint = (constraintClassName: any) => {\n const tempConstraintClass = relClassSchema.lookupItemSync<AnyConstraintClass>(constraintClassName);\n if (!tempConstraintClass)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\n return tempConstraintClass;\n };\n\n for (const constraintClassName of relationshipConstraintProps.constraintClasses) {\n const constraintClass = loadEachConstraint(constraintClassName);\n this.addClass(constraintClass);\n }\n }\n\n public async fromJSON(relationshipConstraintProps: RelationshipConstraintProps) {\n this.fromJSONSync(relationshipConstraintProps);\n }\n\n /**\n * Indicates if the provided [[ECClass]] is supported by this [[RelationshipConstraint]].\n * @param ecClass The class to check.\n */\n public async supportsClass(ecClass: ECClass): Promise<boolean> {\n if (!this.constraintClasses) {\n if (this.relationshipClass.baseClass) {\n const baseRelationship = await this.relationshipClass.baseClass as RelationshipClass;\n const baseConstraint = this.isSource ? baseRelationship.source : baseRelationship.target;\n return baseConstraint.supportsClass(ecClass);\n }\n return false;\n }\n\n if (ecClass.schemaItemType !== SchemaItemType.EntityClass && ecClass.schemaItemType !== SchemaItemType.RelationshipClass &&\n ecClass.schemaItemType !== SchemaItemType.Mixin) {\n return false;\n }\n\n const abstractConstraint = await this.abstractConstraint;\n\n if (abstractConstraint && await RelationshipConstraint.classCompatibleWithConstraint(abstractConstraint, ecClass, this.polymorphic || false))\n return true;\n\n for (const constraint of this.constraintClasses) {\n if (await RelationshipConstraint.classCompatibleWithConstraint(await constraint, ecClass, this.polymorphic || false))\n return true;\n }\n\n return false;\n }\n\n /**\n * Indicates if an ECClass is of the type or applies to the type (if a mixin) of the ECClass specified by the constraintClass parameter.\n * @param constraintClass The ECClass that is a constraint class of a relationship.\n * @param testClass The ECClass to check against the constraint class.\n * @param isPolymorphic Indicates if the testClass should be checked polymorphically.\n */\n public static async classCompatibleWithConstraint(constraintClass: ECClass, testClass: ECClass, isPolymorphic: boolean): Promise<boolean> {\n if (SchemaItem.equalByKey(constraintClass, testClass))\n return true;\n\n if (isPolymorphic) {\n if (testClass.schemaItemType === SchemaItemType.EntityClass || testClass.schemaItemType === SchemaItemType.RelationshipClass) {\n return testClass.is(constraintClass);\n }\n\n if (testClass.schemaItemType === SchemaItemType.Mixin) {\n if (constraintClass.schemaItemType === SchemaItemType.EntityClass)\n return (testClass as Mixin).applicableTo(constraintClass as EntityClass);\n else\n return testClass.is(constraintClass);\n }\n }\n return false;\n }\n\n /**\n * @internal\n */\n public static isRelationshipConstraint(object: any): object is RelationshipConstraint {\n const relationshipConstrait = object as RelationshipConstraint;\n\n return relationshipConstrait !== undefined && relationshipConstrait.polymorphic !== undefined && relationshipConstrait.multiplicity !== undefined\n && relationshipConstrait.relationshipEnd !== undefined && relationshipConstrait._relationshipClass !== undefined;\n }\n\n protected addCustomAttribute(customAttribute: CustomAttribute) {\n if (!this._customAttributes)\n this._customAttributes = new Map<string, CustomAttribute>();\n\n this._customAttributes.set(customAttribute.className, customAttribute);\n }\n\n}\n\n/**\n * Hackish approach that works like a \"friend class\" so we can access protected members without making them public.\n * @internal\n */\nexport abstract class MutableRelationshipConstraint extends RelationshipConstraint {\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\n\n}\n\nconst INT32_MAX = 2147483647;\n\n/**\n * @beta\n */\nexport class RelationshipMultiplicity {\n public static readonly zeroOne = new RelationshipMultiplicity(0, 1);\n public static readonly zeroMany = new RelationshipMultiplicity(0, INT32_MAX);\n public static readonly oneOne = new RelationshipMultiplicity(1, 1);\n public static readonly oneMany = new RelationshipMultiplicity(1, INT32_MAX);\n\n public readonly lowerLimit: number;\n public readonly upperLimit: number;\n\n constructor(lowerLimit: number, upperLimit: number) {\n this.lowerLimit = lowerLimit;\n this.upperLimit = upperLimit;\n }\n\n public static fromString(str: string): RelationshipMultiplicity | undefined {\n const matches = /^\\(([0-9]*)\\.\\.([0-9]*|\\*)\\)$/.exec(str);\n if (matches === null || matches.length !== 3)\n return undefined;\n\n const lowerLimit = parseInt(matches[1], 10);\n const upperLimit = matches[2] === \"*\" ? INT32_MAX : parseInt(matches[2], 10);\n if (0 === lowerLimit && 1 === upperLimit)\n return RelationshipMultiplicity.zeroOne;\n else if (0 === lowerLimit && INT32_MAX === upperLimit)\n return RelationshipMultiplicity.zeroMany;\n else if (1 === lowerLimit && 1 === upperLimit)\n return RelationshipMultiplicity.oneOne;\n else if (1 === lowerLimit && INT32_MAX === upperLimit)\n return RelationshipMultiplicity.oneMany;\n\n return new RelationshipMultiplicity(lowerLimit, upperLimit);\n }\n\n public equals(rhs: RelationshipMultiplicity): boolean {\n return this.lowerLimit === rhs.lowerLimit && this.upperLimit === rhs.upperLimit;\n }\n\n public toString(): string {\n return `(${this.lowerLimit}..${this.upperLimit === INT32_MAX ? \"*\" : this.upperLimit})`;\n }\n}\n\n/**\n * @internal\n * An abstract class used for schema editing.\n */\nexport abstract class MutableRelationshipClass extends RelationshipClass {\n public override get source() { return this._source as MutableRelationshipConstraint; }\n public override get target() { return this._target as MutableRelationshipConstraint; }\n public abstract override setStrength(strength: StrengthType): void;\n public abstract override setStrengthDirection(direction: StrengthDirection): void;\n public abstract override createNavigationProperty(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): Promise<NavigationProperty>;\n public abstract override createNavigationPropertySync(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): NavigationProperty;\n public abstract override setDisplayLabel(displayLabel: string): void;\n}\n"]}
1
+ {"version":3,"file":"RelationshipClass.js","sourceRoot":"","sources":["../../../src/Metadata/RelationshipClass.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { DelayedPromiseWithProps } from \"../DelayedPromise\";\nimport { ECSpecVersion, SchemaReadHelper } from \"../Deserialization/Helper\";\nimport { RelationshipClassProps, RelationshipConstraintProps } from \"../Deserialization/JsonProps\";\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\nimport {\n ECClassModifier, parseStrength, parseStrengthDirection, RelationshipEnd, SchemaItemType, StrengthDirection, strengthDirectionToString,\n strengthToString, StrengthType,\n} from \"../ECObjects\";\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\nimport { LazyLoadedRelationshipConstraintClass } from \"../Interfaces\";\nimport { SchemaItemKey } from \"../SchemaKey\";\nimport { ECClass } from \"./Class\";\nimport { CustomAttribute, CustomAttributeContainerProps, CustomAttributeSet, serializeCustomAttributes } from \"./CustomAttribute\";\nimport { createNavigationProperty, createNavigationPropertySync, EntityClass } from \"./EntityClass\";\nimport { Mixin } from \"./Mixin\";\nimport { NavigationProperty } from \"./Property\";\nimport { Schema } from \"./Schema\";\nimport { SchemaItem } from \"./SchemaItem\";\n\ntype AnyConstraintClass = EntityClass | Mixin | RelationshipClass;\n\n/**\n * A Typescript class representation of a ECRelationshipClass.\n * @beta\n */\nexport class RelationshipClass extends ECClass {\n public override readonly schema!: Schema;\n public override readonly schemaItemType!: SchemaItemType.RelationshipClass;\n protected _strength: StrengthType;\n protected _strengthDirection: StrengthDirection;\n protected _source: RelationshipConstraint;\n protected _target: RelationshipConstraint;\n\n constructor(schema: Schema, name: string, modifier?: ECClassModifier) {\n super(schema, name, modifier);\n this.schemaItemType = SchemaItemType.RelationshipClass;\n this._strengthDirection = StrengthDirection.Forward;\n this._strength = StrengthType.Referencing;\n this._source = new RelationshipConstraint(this, RelationshipEnd.Source);\n this._target = new RelationshipConstraint(this, RelationshipEnd.Target);\n }\n\n public get strength() { return this._strength; }\n public get strengthDirection() { return this._strengthDirection; }\n public get source() { return this._source; }\n public get target() { return this._target; }\n\n /**\n *\n * @param name\n * @param relationship\n * @param direction\n */\n protected async createNavigationProperty(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): Promise<NavigationProperty> {\n return this.addProperty(await createNavigationProperty(this, name, relationship, direction));\n }\n\n protected createNavigationPropertySync(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): NavigationProperty {\n return this.addProperty(createNavigationPropertySync(this, name, relationship, direction));\n }\n\n /**\n * @alpha Used for schema editing.\n */\n protected setStrength(strength: StrengthType) {\n this._strength = strength;\n }\n\n /**\n * @alpha Used for schema editing.\n */\n protected setStrengthDirection(direction: StrengthDirection) {\n this._strengthDirection = direction;\n }\n\n /**\n * @alpha Used for schema editing.\n */\n protected setSourceConstraint(source: RelationshipConstraint) {\n this._source = source;\n }\n\n /**\n * @alpha Used for schema editing.\n */\n protected setTargetConstraint(target: RelationshipConstraint) {\n this._target = target;\n }\n /**\n * Save this RelationshipClass's properties to an object for serializing to JSON.\n * @param standalone Serialization includes only this object (as opposed to the full schema).\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\n */\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): RelationshipClassProps {\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\n schemaJson.strength = strengthToString(this.strength);\n schemaJson.strengthDirection = strengthDirectionToString(this.strengthDirection);\n schemaJson.source = this.source.toJSON();\n schemaJson.target = this.target.toJSON();\n return schemaJson;\n }\n\n /** @internal */\n public override async toXml(schemaXml: Document): Promise<Element> {\n const itemElement = await super.toXml(schemaXml);\n itemElement.setAttribute(\"strength\", strengthToString(this.strength));\n itemElement.setAttribute(\"strengthDirection\", strengthDirectionToString(this.strengthDirection));\n itemElement.appendChild(await this.source.toXml(schemaXml));\n itemElement.appendChild(await this.target.toXml(schemaXml));\n return itemElement;\n }\n\n public override fromJSONSync(relationshipClassProps: RelationshipClassProps) {\n super.fromJSONSync(relationshipClassProps);\n\n let strength = parseStrength(relationshipClassProps.strength);\n if (undefined === strength) {\n if (SchemaReadHelper.isECSpecVersionNewer({readVersion: relationshipClassProps.originalECSpecMajorVersion, writeVersion: relationshipClassProps.originalECSpecMinorVersion} as ECSpecVersion))\n strength = StrengthType.Referencing;\n else\n throw new ECObjectsError(ECObjectsStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strength' attribute. '${relationshipClassProps.strength}' is not a valid StrengthType.`);\n }\n\n const strengthDirection = parseStrengthDirection(relationshipClassProps.strengthDirection);\n if (undefined === strengthDirection)\n throw new ECObjectsError(ECObjectsStatus.InvalidStrength, `The RelationshipClass ${this.fullName} has an invalid 'strengthDirection' attribute. '${relationshipClassProps.strengthDirection}' is not a valid StrengthDirection.`);\n\n this._strength = strength;\n this._strengthDirection = strengthDirection;\n }\n\n public override async fromJSON(relationshipClassProps: RelationshipClassProps) {\n this.fromJSONSync(relationshipClassProps);\n }\n}\n\n/**\n * A Typescript class representation of a ECRelationshipConstraint.\n * @beta\n */\nexport class RelationshipConstraint implements CustomAttributeContainerProps {\n protected _abstractConstraint?: LazyLoadedRelationshipConstraintClass;\n protected _relationshipClass: RelationshipClass;\n protected _relationshipEnd: RelationshipEnd;\n protected _multiplicity?: RelationshipMultiplicity;\n protected _polymorphic?: boolean;\n protected _roleLabel?: string;\n protected _constraintClasses?: LazyLoadedRelationshipConstraintClass[];\n private _customAttributes?: Map<string, CustomAttribute>;\n\n constructor(relClass: RelationshipClass, relEnd: RelationshipEnd, roleLabel?: string, polymorphic?: boolean) {\n this._relationshipEnd = relEnd;\n if (polymorphic)\n this._polymorphic = polymorphic;\n else\n this._polymorphic = false;\n\n this._multiplicity = RelationshipMultiplicity.zeroOne;\n this._relationshipClass = relClass;\n this._roleLabel = roleLabel;\n }\n\n public get multiplicity() { return this._multiplicity ?? RelationshipMultiplicity.zeroOne; }\n protected set multiplicity(multiplicity: RelationshipMultiplicity) {\n this._multiplicity = multiplicity;\n }\n\n public get polymorphic() { return this._polymorphic ?? false; }\n protected set polymorphic(polymorphic: boolean) {\n this._polymorphic = polymorphic;\n }\n\n public get roleLabel() { return this._roleLabel; }\n protected set roleLabel(roleLabel: string | undefined) {\n this._roleLabel = roleLabel;\n }\n\n public get constraintClasses(): LazyLoadedRelationshipConstraintClass[] | undefined { return this._constraintClasses; }\n\n public get relationshipClass() { return this._relationshipClass; }\n\n public get relationshipEnd() { return this._relationshipEnd; }\n protected set relationshipEnd(relationshipEnd: RelationshipEnd) {\n this._relationshipEnd = relationshipEnd;\n }\n\n public get customAttributes(): CustomAttributeSet | undefined { return this._customAttributes; }\n\n /** Returns the constraint name, ie. 'RelationshipName.Source/Target' */\n public get fullName() { return `${this._relationshipClass.name}:${this.isSource ? \"Source\" : \"Target\"}`; }\n\n /** Returns the schema of the RelationshipClass. */\n public get schema(): Schema { return this._relationshipClass.schema; }\n\n public get abstractConstraint(): LazyLoadedRelationshipConstraintClass | undefined {\n if (this._abstractConstraint)\n return this._abstractConstraint;\n\n if (this.constraintClasses && this.constraintClasses.length === 1)\n return this.constraintClasses[0];\n\n return this._abstractConstraint;\n }\n\n public set abstractConstraint(abstractConstraint: LazyLoadedRelationshipConstraintClass | undefined) {\n this._abstractConstraint = abstractConstraint;\n }\n\n /**\n * True if this RelationshipConstraint is the Source relationship end.\n */\n public get isSource(): boolean { return this.relationshipEnd === RelationshipEnd.Source; }\n\n /**\n * Adds the provided class as a constraint class to this constraint.\n * @param constraint The class to add as a constraint class.\n */\n public addClass(constraint: EntityClass | Mixin | RelationshipClass): void {\n // TODO: Ensure we don't start mixing constraint class types\n // TODO: Check that this class is or subclasses abstract constraint?\n\n if (!this._constraintClasses)\n this._constraintClasses = [];\n\n // TODO: Handle relationship constraints\n this._constraintClasses.push(new DelayedPromiseWithProps(constraint.key, async () => constraint));\n }\n\n /**\n * Removes the provided class as a constraint class from this constraint.\n * @param constraint The class to add as a constraint class.\n */\n protected removeClass(constraint: EntityClass | Mixin | RelationshipClass): void {\n if (undefined === this._constraintClasses)\n return;\n\n this._constraintClasses.forEach( (item, index) => {\n const constraintName = item.fullName;\n if(constraintName === constraint.fullName)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._constraintClasses?.splice(index,1);\n });\n }\n\n /**\n * Save this RelationshipConstraint's properties to an object for serializing to JSON.\n */\n public toJSON(): RelationshipConstraintProps {\n const schemaJson: { [value: string]: any } = {};\n schemaJson.multiplicity = this.multiplicity.toString();\n schemaJson.roleLabel = this.roleLabel;\n schemaJson.polymorphic = this.polymorphic;\n if (undefined !== this._abstractConstraint)\n schemaJson.abstractConstraint = this._abstractConstraint.fullName;\n if (undefined !== this.constraintClasses && this.constraintClasses.length > 0)\n schemaJson.constraintClasses = this.constraintClasses.map((constraintClass) => constraintClass.fullName);\n\n const customAttributes = serializeCustomAttributes(this.customAttributes);\n if (undefined !== customAttributes)\n schemaJson.customAttributes = customAttributes;\n return schemaJson as RelationshipConstraintProps;\n }\n\n /** @internal */\n public async toXml(schemaXml: Document): Promise<Element> {\n const elementName = this.isSource ? \"Source\" : \"Target\";\n const itemElement = schemaXml.createElement(elementName);\n if (undefined !== this.polymorphic)\n itemElement.setAttribute(\"polymorphic\", this.polymorphic.toString());\n if (undefined !== this.roleLabel)\n itemElement.setAttribute(\"roleLabel\", this.roleLabel);\n if (undefined !== this.multiplicity)\n itemElement.setAttribute(\"multiplicity\", this.multiplicity.toString());\n\n const abstractConstraint = await this.abstractConstraint;\n if (undefined !== abstractConstraint) {\n const abstractConstraintName = XmlSerializationUtils.createXmlTypedName(this.schema, abstractConstraint.schema, abstractConstraint.name);\n itemElement.setAttribute(\"abstractConstraint\", abstractConstraintName);\n }\n\n if (undefined !== this.constraintClasses) {\n for (const item of this.constraintClasses) {\n const constraintClass = await item;\n const classElement = schemaXml.createElement(\"Class\");\n const constraintClassName = XmlSerializationUtils.createXmlTypedName(this.schema, constraintClass.schema, constraintClass.name);\n classElement.setAttribute(\"class\", constraintClassName);\n itemElement.appendChild(classElement);\n }\n }\n\n if (this._customAttributes) {\n const caContainerElement = schemaXml.createElement(\"ECCustomAttributes\");\n for (const [name, attribute] of this._customAttributes) {\n const caElement = await XmlSerializationUtils.writeCustomAttribute(name, attribute, schemaXml, this.schema);\n caContainerElement.appendChild(caElement);\n }\n itemElement.appendChild(caContainerElement);\n }\n\n return itemElement;\n }\n\n public fromJSONSync(relationshipConstraintProps: RelationshipConstraintProps) {\n\n this._roleLabel = relationshipConstraintProps.roleLabel;\n this._polymorphic = relationshipConstraintProps.polymorphic;\n\n const parsedMultiplicity = RelationshipMultiplicity.fromString(relationshipConstraintProps.multiplicity);\n if (!parsedMultiplicity)\n throw new ECObjectsError(ECObjectsStatus.InvalidMultiplicity, ``);\n this._multiplicity = parsedMultiplicity;\n\n const relClassSchema = this.relationshipClass.schema;\n\n if (undefined !== relationshipConstraintProps.abstractConstraint) {\n const abstractConstraintSchemaItemKey = relClassSchema.getSchemaItemKey(relationshipConstraintProps.abstractConstraint);\n if (!abstractConstraintSchemaItemKey)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the abstractConstraint ${relationshipConstraintProps.abstractConstraint}.`);\n this.abstractConstraint = new DelayedPromiseWithProps<SchemaItemKey, AnyConstraintClass>(abstractConstraintSchemaItemKey,\n async () => {\n const tempAbstractConstraint = await relClassSchema.lookupItem<AnyConstraintClass>(relationshipConstraintProps.abstractConstraint!);\n if (undefined === tempAbstractConstraint)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the abstractConstraint ${relationshipConstraintProps.abstractConstraint}.`);\n\n return tempAbstractConstraint;\n });\n }\n\n const loadEachConstraint = (constraintClassName: any) => {\n const tempConstraintClass = relClassSchema.lookupItemSync<AnyConstraintClass>(constraintClassName);\n if (!tempConstraintClass)\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, ``);\n return tempConstraintClass;\n };\n\n for (const constraintClassName of relationshipConstraintProps.constraintClasses) {\n const constraintClass = loadEachConstraint(constraintClassName);\n this.addClass(constraintClass);\n }\n }\n\n public async fromJSON(relationshipConstraintProps: RelationshipConstraintProps) {\n this.fromJSONSync(relationshipConstraintProps);\n }\n\n /**\n * Indicates if the provided [[ECClass]] is supported by this [[RelationshipConstraint]].\n * @param ecClass The class to check.\n */\n public async supportsClass(ecClass: ECClass): Promise<boolean> {\n if (!this.constraintClasses) {\n if (this.relationshipClass.baseClass) {\n const baseRelationship = await this.relationshipClass.baseClass as RelationshipClass;\n const baseConstraint = this.isSource ? baseRelationship.source : baseRelationship.target;\n return baseConstraint.supportsClass(ecClass);\n }\n return false;\n }\n\n if (ecClass.schemaItemType !== SchemaItemType.EntityClass && ecClass.schemaItemType !== SchemaItemType.RelationshipClass &&\n ecClass.schemaItemType !== SchemaItemType.Mixin) {\n return false;\n }\n\n const abstractConstraint = await this.abstractConstraint;\n\n if (abstractConstraint && await RelationshipConstraint.classCompatibleWithConstraint(abstractConstraint, ecClass, this.polymorphic || false))\n return true;\n\n for (const constraint of this.constraintClasses) {\n if (await RelationshipConstraint.classCompatibleWithConstraint(await constraint, ecClass, this.polymorphic || false))\n return true;\n }\n\n return false;\n }\n\n /**\n * Indicates if an ECClass is of the type or applies to the type (if a mixin) of the ECClass specified by the constraintClass parameter.\n * @param constraintClass The ECClass that is a constraint class of a relationship.\n * @param testClass The ECClass to check against the constraint class.\n * @param isPolymorphic Indicates if the testClass should be checked polymorphically.\n */\n public static async classCompatibleWithConstraint(constraintClass: ECClass, testClass: ECClass, isPolymorphic: boolean): Promise<boolean> {\n if (SchemaItem.equalByKey(constraintClass, testClass))\n return true;\n\n if (isPolymorphic) {\n if (testClass.schemaItemType === SchemaItemType.EntityClass || testClass.schemaItemType === SchemaItemType.RelationshipClass) {\n return testClass.is(constraintClass);\n }\n\n if (testClass.schemaItemType === SchemaItemType.Mixin) {\n if (constraintClass.schemaItemType === SchemaItemType.EntityClass)\n return (testClass as Mixin).applicableTo(constraintClass as EntityClass);\n else\n return testClass.is(constraintClass);\n }\n }\n return false;\n }\n\n /**\n * @internal\n */\n public static isRelationshipConstraint(object: any): object is RelationshipConstraint {\n const relationshipConstrait = object as RelationshipConstraint;\n\n return relationshipConstrait !== undefined && relationshipConstrait.polymorphic !== undefined && relationshipConstrait.multiplicity !== undefined\n && relationshipConstrait.relationshipEnd !== undefined && relationshipConstrait._relationshipClass !== undefined;\n }\n\n protected addCustomAttribute(customAttribute: CustomAttribute) {\n if (!this._customAttributes)\n this._customAttributes = new Map<string, CustomAttribute>();\n\n this._customAttributes.set(customAttribute.className, customAttribute);\n }\n\n}\n\n/**\n * Hackish approach that works like a \"friend class\" so we can access protected members without making them public.\n * @internal\n */\nexport abstract class MutableRelationshipConstraint extends RelationshipConstraint {\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\n\n}\n\nconst INT32_MAX = 2147483647;\n\n/**\n * @beta\n */\nexport class RelationshipMultiplicity {\n public static readonly zeroOne = new RelationshipMultiplicity(0, 1);\n public static readonly zeroMany = new RelationshipMultiplicity(0, INT32_MAX);\n public static readonly oneOne = new RelationshipMultiplicity(1, 1);\n public static readonly oneMany = new RelationshipMultiplicity(1, INT32_MAX);\n\n public readonly lowerLimit: number;\n public readonly upperLimit: number;\n\n constructor(lowerLimit: number, upperLimit: number) {\n this.lowerLimit = lowerLimit;\n this.upperLimit = upperLimit;\n }\n\n public static fromString(str: string): RelationshipMultiplicity | undefined {\n const matches = /^\\(([0-9]*)\\.\\.([0-9]*|\\*)\\)$/.exec(str);\n if (matches === null || matches.length !== 3)\n return undefined;\n\n const lowerLimit = parseInt(matches[1], 10);\n const upperLimit = matches[2] === \"*\" ? INT32_MAX : parseInt(matches[2], 10);\n if (0 === lowerLimit && 1 === upperLimit)\n return RelationshipMultiplicity.zeroOne;\n else if (0 === lowerLimit && INT32_MAX === upperLimit)\n return RelationshipMultiplicity.zeroMany;\n else if (1 === lowerLimit && 1 === upperLimit)\n return RelationshipMultiplicity.oneOne;\n else if (1 === lowerLimit && INT32_MAX === upperLimit)\n return RelationshipMultiplicity.oneMany;\n\n return new RelationshipMultiplicity(lowerLimit, upperLimit);\n }\n\n public equals(rhs: RelationshipMultiplicity): boolean {\n return this.lowerLimit === rhs.lowerLimit && this.upperLimit === rhs.upperLimit;\n }\n\n public toString(): string {\n return `(${this.lowerLimit}..${this.upperLimit === INT32_MAX ? \"*\" : this.upperLimit})`;\n }\n}\n\n/**\n * @internal\n * An abstract class used for schema editing.\n */\nexport abstract class MutableRelationshipClass extends RelationshipClass {\n public override get source() { return this._source as MutableRelationshipConstraint; }\n public override get target() { return this._target as MutableRelationshipConstraint; }\n public abstract override setStrength(strength: StrengthType): void;\n public abstract override setStrengthDirection(direction: StrengthDirection): void;\n public abstract override createNavigationProperty(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): Promise<NavigationProperty>;\n public abstract override createNavigationPropertySync(name: string, relationship: string | RelationshipClass, direction: string | StrengthDirection): NavigationProperty;\n public abstract override setDisplayLabel(displayLabel: string): void;\n}\n"]}
@@ -26,6 +26,7 @@ import { UnitSystem } from "./UnitSystem";
26
26
  * @beta
27
27
  */
28
28
  export declare class Schema implements CustomAttributeContainerProps {
29
+ private static _currentECSpecVersion;
29
30
  private _context;
30
31
  protected _schemaKey?: SchemaKey;
31
32
  protected _alias?: string;
@@ -34,6 +35,8 @@ export declare class Schema implements CustomAttributeContainerProps {
34
35
  readonly references: Schema[];
35
36
  private readonly _items;
36
37
  private _customAttributes?;
38
+ private _originalECSpecMajorVersion?;
39
+ private _originalECSpecMinorVersion?;
37
40
  /**
38
41
  * Constructs an empty Schema with the given name and version in the provided context.
39
42
  * @param context The SchemaContext that will control the lifetime of the schema
@@ -61,6 +64,10 @@ export declare class Schema implements CustomAttributeContainerProps {
61
64
  get readVersion(): number;
62
65
  get writeVersion(): number;
63
66
  get minorVersion(): number;
67
+ get originalECSpecMajorVersion(): number | undefined;
68
+ get originalECSpecMinorVersion(): number | undefined;
69
+ static get currentECSpecMajorVersion(): number;
70
+ static get currentECSpecMinorVersion(): number;
64
71
  get alias(): string;
65
72
  get label(): string | undefined;
66
73
  get description(): string | undefined;
@@ -249,6 +256,8 @@ export declare class Schema implements CustomAttributeContainerProps {
249
256
  * @param schemaXml An empty DOM document to which the schema will be written
250
257
  */
251
258
  toXml(schemaXml: Document): Promise<Document>;
259
+ private isECSpecMajorVersionSupported;
260
+ private isECSpecVersionSupported;
252
261
  /**
253
262
  * Loads the schema header (name, version alias, label and description) from the input SchemaProps
254
263
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/Metadata/Schema.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAa,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,6BAA6B,EAAE,kBAAkB,EAA6B,MAAM,mBAAmB,CAAC;AAClI,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C;;GAEG;AACH,qBAAa,MAAO,YAAW,6BAA6B;IAC1D,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAgB;IAChC,SAAS,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,iBAAiB,CAAC,CAA+B;IACzD,OAAO,CAAC,2BAA2B,CAAC,CAAS;IAC7C,OAAO,CAAC,2BAA2B,CAAC,CAAS;IAC7C;;;;;;;OAOG;gBACS,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAChI;;;;OAIG;gBACS,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IACjE;;;;;OAKG;gBACS,OAAO,EAAE,aAAa;IAkBlC,IAAW,SAAS,cAInB;IAED,IAAW,IAAI,WAId;IAED,IAAW,WAAW,WAIrB;IAED,IAAW,YAAY,WAItB;IAED,IAAW,YAAY,WAItB;IAED,IAAW,0BAA0B,uBAA+C;IACpF,IAAW,0BAA0B,uBAA+C;IACpF,WAAkB,yBAAyB,IAAI,MAAM,CAAqE;IAC1H,WAAkB,yBAAyB,IAAI,MAAM,CAAqE;IAE1H,IAAW,KAAK,WAIf;IAED,IAAW,KAAK,uBAA0B;IAE1C,IAAW,WAAW,uBAAgC;IAEtD,IAAW,gBAAgB,IAAI,kBAAkB,GAAG,SAAS,CAAmC;IAEhG,+BAA+B;IAC/B,IAAW,QAAQ,WAAkC;IAErD,0BAA0B;IAC1B,IAAW,MAAM,IAAI,MAAM,CAAiB;IAE5C,wDAAwD;IACxD,IAAW,OAAO,IAAI,aAAa,CAA0B;IAE7D;;;OAGG;IACI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;IAYxD,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAOtD;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,eAAe,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,CAAC;IAMtK;;;;OAIG;cACa,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM7C;;;;OAIG;cACa,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7D;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMlD;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAMjH,SAAS,CAAC,kBAAkB,CAAC,eAAe,EAAE,eAAe;IAO7D;;;;OAIG;cACa,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAIjG,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,WAAW;IAItF;;;OAGG;cACa,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAC9D,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAEnD;;;;OAIG;cACa,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAIjG,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,WAAW;IAItF;;;;OAIG;cACa,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAInH,SAAS,CAAC,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,oBAAoB;IAIxG;;;;OAIG;cACa,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7G,SAAS,CAAC,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,iBAAiB;IAIlG;;;OAGG;cACa,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAInI,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,GAAG,WAAW;IAMxH;;;OAGG;cACa,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAI3E,SAAS,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAIhE;;;OAGG;cACa,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI/D,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAIpD;;;OAGG;cACa,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIvE,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAI5D;;;OAGG;cACa,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhD;;;OAGG;cACa,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAInE,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAIxD;;;OAGG;cACa,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAInE,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAIxD;;;OAGG;cACa,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5C;;;OAGG;cACa,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI/E,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAGpE;;;OAGG;cACa,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAInD;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIlD;;;;;OAKG;IACI,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ3F;;;OAGG;IACU,OAAO,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAKhF;;;OAGG;IACI,WAAW,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKrE;;;OAGG;IACU,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAoB5G;;;OAGG;IACI,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS;IAoB1F,QAAQ,CAAC,CAAC,SAAS,aAAa,KAAK,gBAAgB,CAAC,CAAC,CAAC;IAOvD,UAAU,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAOlC,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOnF,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQ1D,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAO/E;;OAEG;IACI,MAAM,IAAI,WAAW;IA4B5B;;;OAGG;IACU,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+C1D,OAAO,CAAC,6BAA6B;IAcrC,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACI,YAAY,CAAC,WAAW,EAAE,WAAW;IA0C5C;;OAEG;IACU,QAAQ,CAAC,WAAW,EAAE,WAAW;IAI9C;;;OAGG;WACiB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;WAQ3F,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/F;;OAEG;WACW,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM;IAUpF;;OAEG;WACW,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,MAAM;IAMrD;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM;IAI9C;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM;IAI5C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;CAMjC;AAED;;;;;GAKG;AACH,8BAAsB,aAAc,SAAQ,MAAM;aACvB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;aAC1D,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;aACjF,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,WAAW;aAC5E,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;aAC9C,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;aACzC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;aACjF,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,WAAW;aAC5E,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC;aACnG,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,oBAAoB;aAC9F,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;aAC7F,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,iBAAiB;aACxF,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;aACnH,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,GAAG,WAAW;aAC9G,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;aAC3D,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;aACtD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aACvC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;aAClC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;aAC/C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;aAC1C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;aACvD,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;aAClD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;aACnD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;aAC9C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAC3C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;aACtC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;aACnD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;aAC9C,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;aAC/D,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;aAC1D,OAAO,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;aAC5C,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aAC9C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;aACzC,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;aAC9C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aACxC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;aACnC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aAC7C,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;aACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CACvD"}
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.MutableSchema = exports.Schema = void 0;
11
11
  const Helper_1 = require("../Deserialization/Helper");
12
12
  const JsonParser_1 = require("../Deserialization/JsonParser");
13
+ const XmlParser_1 = require("../Deserialization/XmlParser");
13
14
  const XmlSerializationUtils_1 = require("../Deserialization/XmlSerializationUtils");
14
15
  const Exception_1 = require("../Exception");
15
16
  const SchemaKey_1 = require("../SchemaKey");
@@ -48,16 +49,38 @@ class Schema {
48
49
  else if (nameOrKey !== undefined) {
49
50
  throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidECJson, `The Schema ${this.name} does not have the required 'alias' attribute.`);
50
51
  }
52
+ this._originalECSpecMajorVersion = Schema.currentECSpecMajorVersion;
53
+ this._originalECSpecMinorVersion = Schema.currentECSpecMinorVersion;
51
54
  }
52
55
  get schemaKey() {
53
56
  if (undefined === this._schemaKey)
54
- throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidECJson, `The schema '${this.name}' has an invalid SchemaKey.`);
57
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidECJson, `The schema has an invalid or missing SchemaKey.`);
55
58
  return this._schemaKey;
56
59
  }
57
- get name() { return this.schemaKey.name; }
58
- get readVersion() { return this.schemaKey.readVersion; }
59
- get writeVersion() { return this.schemaKey.writeVersion; }
60
- get minorVersion() { return this.schemaKey.minorVersion; }
60
+ get name() {
61
+ if (this._schemaKey === undefined)
62
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidECJson, `The schema has an invalid or missing SchemaKey.`);
63
+ return this.schemaKey.name;
64
+ }
65
+ get readVersion() {
66
+ if (this._schemaKey === undefined)
67
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidECJson, `The schema has an invalid or missing SchemaKey.`);
68
+ return this.schemaKey.readVersion;
69
+ }
70
+ get writeVersion() {
71
+ if (this._schemaKey === undefined)
72
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidECJson, `The schema has an invalid or missing SchemaKey.`);
73
+ return this.schemaKey.writeVersion;
74
+ }
75
+ get minorVersion() {
76
+ if (this._schemaKey === undefined)
77
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidECJson, `The schema has an invalid or missing SchemaKey.`);
78
+ return this.schemaKey.minorVersion;
79
+ }
80
+ get originalECSpecMajorVersion() { return this._originalECSpecMajorVersion; }
81
+ get originalECSpecMinorVersion() { return this._originalECSpecMinorVersion; }
82
+ static get currentECSpecMajorVersion() { return parseInt(Schema._currentECSpecVersion.split(".")[0], 10); }
83
+ static get currentECSpecMinorVersion() { return parseInt(Schema._currentECSpecVersion.split(".")[1], 10); }
61
84
  get alias() {
62
85
  if (this._alias === undefined || this._alias === null) {
63
86
  throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidECJson, `The Schema ${this.name} does not have the required 'alias' attribute.`);
@@ -418,6 +441,8 @@ class Schema {
418
441
  * Save this Schema's properties to an object for serializing to JSON.
419
442
  */
420
443
  toJSON() {
444
+ if (!this.isECSpecVersionSupported())
445
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.NewerECSpecVersion, `The Schema '${this.name}' has an unsupported ECSpecVersion and cannot be serialized.`);
421
446
  const schemaJson = {};
422
447
  schemaJson.$schema = SCHEMAURL3_2_JSON; // $schema is required
423
448
  schemaJson.name = this.name; // name is required
@@ -445,6 +470,8 @@ class Schema {
445
470
  * @param schemaXml An empty DOM document to which the schema will be written
446
471
  */
447
472
  async toXml(schemaXml) {
473
+ if (!this.isECSpecVersionSupported())
474
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.NewerECSpecVersion, `The Schema '${this.name}' has an unsupported ECSpecVersion and cannot be serialized.`);
448
475
  const schemaMetadata = schemaXml.createElement("ECSchema");
449
476
  schemaMetadata.setAttribute("xmlns", SCHEMAURL3_2_XML);
450
477
  schemaMetadata.setAttribute("version", this.schemaKey.version.toString());
@@ -479,6 +506,33 @@ class Schema {
479
506
  schemaXml.appendChild(schemaMetadata);
480
507
  return schemaXml;
481
508
  }
509
+ // Check if the ECSpecVersion read-version is greater than the current ECSpecVersion supported.
510
+ // If a specific ECSpecVersion is given, check against that version.
511
+ // If no argument is given, check against the original ECSpecVersion of the schema.
512
+ isECSpecMajorVersionSupported(ecSpecMajorVersionToCheck) {
513
+ // If argument is supplied, check the argument against the current ECSpecVersion supported
514
+ if (ecSpecMajorVersionToCheck !== undefined)
515
+ return (Schema.currentECSpecMajorVersion >= ecSpecMajorVersionToCheck);
516
+ // If argument is not supplied, check against the original ECSpecVersion of the schema
517
+ if (this.originalECSpecMajorVersion === undefined)
518
+ return false;
519
+ return (Schema.currentECSpecMajorVersion >= this.originalECSpecMajorVersion);
520
+ }
521
+ // Check if the full ECSpecVersion is greater than the current ECSpecVersion supported.
522
+ // If a specific ECSpecVersion is given, check against that version.
523
+ // If no argument is given, check against the original ECSpecVersion of the schema.
524
+ isECSpecVersionSupported(ecSpecMajorVersionToCheck, ecSpecMinorVersionToCheck) {
525
+ // If arguments are supplied, check the arguments against the current ECSpecVersion supported
526
+ if (ecSpecMajorVersionToCheck !== undefined && ecSpecMinorVersionToCheck !== undefined) {
527
+ if (!this.isECSpecMajorVersionSupported(ecSpecMajorVersionToCheck))
528
+ return false;
529
+ return (Schema.currentECSpecMinorVersion >= ecSpecMinorVersionToCheck);
530
+ }
531
+ // If arguments are not supplied, check against the original ECSpecVersion of the schema
532
+ if (!this.isECSpecMajorVersionSupported() || this.originalECSpecMinorVersion === undefined)
533
+ return false;
534
+ return (Schema.currentECSpecMinorVersion >= this.originalECSpecMinorVersion);
535
+ }
482
536
  /**
483
537
  * Loads the schema header (name, version alias, label and description) from the input SchemaProps
484
538
  */
@@ -494,8 +548,20 @@ class Schema {
494
548
  if (this.schemaKey.version.compare(SchemaKey_1.ECVersion.fromString(schemaProps.version)))
495
549
  throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidECJson, `The Schema ${this.name} has the version '${this.schemaKey.version}' that does not match the provided version '${schemaProps.version}'.`);
496
550
  }
497
- if (SCHEMAURL3_2_JSON !== schemaProps.$schema && SCHEMAURL3_2_XML !== schemaProps.$schema) // TODO: Allow for 3.x URI versions to allow the API to read newer specs. (Start at 3.2 though)
498
- throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.MissingSchemaUrl, `The Schema ${this.name} has an unsupported namespace '${schemaProps.$schema}'.`);
551
+ if (schemaProps.$schema.match(`https://dev\\.bentley\\.com/json_schemas/ec/([0-9]+)/ecschema`) == null && schemaProps.$schema.match(`http://www\\.bentley\\.com/schemas/Bentley\\.ECXML\\.([0-9]+)`) == null)
552
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.MissingSchemaUrl, `The Schema '${this.name}' has an unsupported namespace '${schemaProps.$schema}'.`);
553
+ // The schema props have not been parsed. Parse the ECXml version from the $schema attribute
554
+ let ecVersion;
555
+ if (schemaProps.ecSpecMajorVersion === undefined || schemaProps.ecSpecMinorVersion === undefined) {
556
+ ecVersion = ((schemaProps.$schema.search("ECXML") !== -1) ? XmlParser_1.XmlParser.parseXmlNamespace(schemaProps.$schema) : JsonParser_1.JsonParser.parseJSUri(schemaProps.$schema));
557
+ }
558
+ else {
559
+ ecVersion = { readVersion: schemaProps.ecSpecMajorVersion, writeVersion: schemaProps.ecSpecMinorVersion };
560
+ }
561
+ this._originalECSpecMajorVersion = ecVersion?.readVersion;
562
+ this._originalECSpecMinorVersion = ecVersion?.writeVersion;
563
+ if (!this.isECSpecMajorVersionSupported(ecVersion?.readVersion))
564
+ throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.NewerECSpecVersion, `The Schema '${this.name}' has an unsupported ECVersion and cannot be loaded.`);
499
565
  if (ECName_1.ECName.validate(schemaProps.alias)) {
500
566
  this._alias = schemaProps.alias;
501
567
  }
@@ -573,6 +639,7 @@ class Schema {
573
639
  }
574
640
  }
575
641
  exports.Schema = Schema;
642
+ Schema._currentECSpecVersion = "3.2";
576
643
  /**
577
644
  * Hackish approach that works like a "friend class" so we can access protected members without making them public.
578
645
  * We cannot put this into Helper.ts and make it non-export, because we are importing Helper.ts from this file, and the circular import