@itwin/ecschema-metadata 5.0.0-dev.98 → 5.1.0-dev.0
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.
- package/CHANGELOG.md +6 -1
- package/lib/cjs/Constants.js.map +1 -1
- package/lib/cjs/Context.d.ts +3 -3
- package/lib/cjs/Context.d.ts.map +1 -1
- package/lib/cjs/Context.js +6 -6
- package/lib/cjs/Context.js.map +1 -1
- package/lib/cjs/DelayedPromise.d.ts +9 -8
- package/lib/cjs/DelayedPromise.d.ts.map +1 -1
- package/lib/cjs/DelayedPromise.js +2 -2
- package/lib/cjs/DelayedPromise.js.map +1 -1
- package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
- package/lib/cjs/Deserialization/Helper.d.ts.map +1 -1
- package/lib/cjs/Deserialization/Helper.js +27 -26
- package/lib/cjs/Deserialization/Helper.js.map +1 -1
- package/lib/cjs/Deserialization/JsonParser.js +150 -150
- package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
- package/lib/cjs/Deserialization/JsonProps.d.ts +34 -34
- package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
- package/lib/cjs/Deserialization/JsonProps.js +3 -3
- package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
- package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
- package/lib/cjs/Deserialization/XmlParser.js +49 -49
- package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
- package/lib/cjs/Deserialization/XmlSerializationUtils.d.ts +0 -5
- package/lib/cjs/Deserialization/XmlSerializationUtils.d.ts.map +1 -1
- package/lib/cjs/Deserialization/XmlSerializationUtils.js +6 -11
- package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
- package/lib/cjs/ECName.d.ts +2 -2
- package/lib/cjs/ECName.js +4 -4
- package/lib/cjs/ECName.js.map +1 -1
- package/lib/cjs/ECObjects.d.ts +23 -11
- package/lib/cjs/ECObjects.d.ts.map +1 -1
- package/lib/cjs/ECObjects.js +47 -24
- package/lib/cjs/ECObjects.js.map +1 -1
- package/lib/cjs/Exception.d.ts +4 -4
- package/lib/cjs/Exception.d.ts.map +1 -1
- package/lib/cjs/Exception.js +60 -60
- package/lib/cjs/Exception.js.map +1 -1
- package/lib/cjs/Interfaces.d.ts +30 -34
- package/lib/cjs/Interfaces.d.ts.map +1 -1
- package/lib/cjs/Interfaces.js.map +1 -1
- package/lib/cjs/Metadata/Class.d.ts +107 -19
- package/lib/cjs/Metadata/Class.d.ts.map +1 -1
- package/lib/cjs/Metadata/Class.js +127 -47
- package/lib/cjs/Metadata/Class.js.map +1 -1
- package/lib/cjs/Metadata/Constant.d.ts +12 -9
- package/lib/cjs/Metadata/Constant.d.ts.map +1 -1
- package/lib/cjs/Metadata/Constant.js +12 -9
- package/lib/cjs/Metadata/Constant.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttribute.d.ts +2 -2
- package/lib/cjs/Metadata/CustomAttribute.d.ts.map +1 -1
- package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttributeClass.d.ts +5 -3
- package/lib/cjs/Metadata/CustomAttributeClass.d.ts.map +1 -1
- package/lib/cjs/Metadata/CustomAttributeClass.js +7 -5
- package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/cjs/Metadata/EntityClass.d.ts +20 -3
- package/lib/cjs/Metadata/EntityClass.d.ts.map +1 -1
- package/lib/cjs/Metadata/EntityClass.js +32 -14
- package/lib/cjs/Metadata/EntityClass.js.map +1 -1
- package/lib/cjs/Metadata/Enumeration.d.ts +16 -9
- package/lib/cjs/Metadata/Enumeration.d.ts.map +1 -1
- package/lib/cjs/Metadata/Enumeration.js +20 -13
- package/lib/cjs/Metadata/Enumeration.js.map +1 -1
- package/lib/cjs/Metadata/Format.d.ts +32 -24
- package/lib/cjs/Metadata/Format.d.ts.map +1 -1
- package/lib/cjs/Metadata/Format.js +47 -27
- package/lib/cjs/Metadata/Format.js.map +1 -1
- package/lib/cjs/Metadata/InvertedUnit.d.ts +11 -7
- package/lib/cjs/Metadata/InvertedUnit.d.ts.map +1 -1
- package/lib/cjs/Metadata/InvertedUnit.js +16 -10
- package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
- package/lib/cjs/Metadata/KindOfQuantity.d.ts +24 -15
- package/lib/cjs/Metadata/KindOfQuantity.d.ts.map +1 -1
- package/lib/cjs/Metadata/KindOfQuantity.js +54 -29
- package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/cjs/Metadata/Mixin.d.ts +16 -3
- package/lib/cjs/Metadata/Mixin.d.ts.map +1 -1
- package/lib/cjs/Metadata/Mixin.js +20 -7
- package/lib/cjs/Metadata/Mixin.js.map +1 -1
- package/lib/cjs/Metadata/OverrideFormat.d.ts +12 -12
- package/lib/cjs/Metadata/OverrideFormat.d.ts.map +1 -1
- package/lib/cjs/Metadata/OverrideFormat.js +27 -19
- package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
- package/lib/cjs/Metadata/Phenomenon.d.ts +10 -2
- package/lib/cjs/Metadata/Phenomenon.d.ts.map +1 -1
- package/lib/cjs/Metadata/Phenomenon.js +11 -3
- package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
- package/lib/cjs/Metadata/Property.d.ts +46 -28
- package/lib/cjs/Metadata/Property.d.ts.map +1 -1
- package/lib/cjs/Metadata/Property.js +46 -22
- package/lib/cjs/Metadata/Property.js.map +1 -1
- package/lib/cjs/Metadata/PropertyCategory.d.ts +6 -3
- package/lib/cjs/Metadata/PropertyCategory.d.ts.map +1 -1
- package/lib/cjs/Metadata/PropertyCategory.js +12 -5
- package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
- package/lib/cjs/Metadata/RelationshipClass.d.ts +48 -25
- package/lib/cjs/Metadata/RelationshipClass.d.ts.map +1 -1
- package/lib/cjs/Metadata/RelationshipClass.js +54 -34
- package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
- package/lib/cjs/Metadata/Schema.d.ts +50 -28
- package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
- package/lib/cjs/Metadata/Schema.js +64 -42
- package/lib/cjs/Metadata/Schema.js.map +1 -1
- package/lib/cjs/Metadata/SchemaItem.d.ts +10 -19
- package/lib/cjs/Metadata/SchemaItem.d.ts.map +1 -1
- package/lib/cjs/Metadata/SchemaItem.js +12 -20
- package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
- package/lib/cjs/Metadata/Unit.d.ts +17 -21
- package/lib/cjs/Metadata/Unit.d.ts.map +1 -1
- package/lib/cjs/Metadata/Unit.js +20 -22
- package/lib/cjs/Metadata/Unit.js.map +1 -1
- package/lib/cjs/Metadata/UnitSystem.d.ts +3 -1
- package/lib/cjs/Metadata/UnitSystem.d.ts.map +1 -1
- package/lib/cjs/Metadata/UnitSystem.js +4 -2
- package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
- package/lib/cjs/PropertyTypes.d.ts +11 -11
- package/lib/cjs/PropertyTypes.d.ts.map +1 -1
- package/lib/cjs/PropertyTypes.js +28 -20
- package/lib/cjs/PropertyTypes.js.map +1 -1
- package/lib/cjs/SchemaFormatsProvider.d.ts +39 -0
- package/lib/cjs/SchemaFormatsProvider.d.ts.map +1 -0
- package/lib/cjs/SchemaFormatsProvider.js +146 -0
- package/lib/cjs/SchemaFormatsProvider.js.map +1 -0
- package/lib/cjs/SchemaJsonLocater.d.ts +5 -5
- package/lib/cjs/SchemaJsonLocater.js +4 -4
- package/lib/cjs/SchemaJsonLocater.js.map +1 -1
- package/lib/cjs/SchemaKey.d.ts +6 -6
- package/lib/cjs/SchemaKey.d.ts.map +1 -1
- package/lib/cjs/SchemaKey.js +9 -9
- package/lib/cjs/SchemaKey.js.map +1 -1
- package/lib/cjs/SchemaLoader.d.ts +3 -3
- package/lib/cjs/SchemaLoader.js +4 -4
- package/lib/cjs/SchemaLoader.js.map +1 -1
- package/lib/cjs/SchemaPartVisitorDelegate.d.ts +2 -2
- package/lib/cjs/SchemaPartVisitorDelegate.js +1 -1
- package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
- package/lib/cjs/UnitConversion/Graph.js.map +1 -1
- package/lib/cjs/UnitConversion/Parser.js.map +1 -1
- package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
- package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
- package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
- package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
- package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
- package/lib/cjs/ecschema-metadata.d.ts +2 -1
- package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
- package/lib/cjs/ecschema-metadata.js +1 -0
- package/lib/cjs/ecschema-metadata.js.map +1 -1
- package/lib/cjs/utils/SchemaGraph.js +3 -3
- package/lib/cjs/utils/SchemaGraph.js.map +1 -1
- package/lib/esm/Constants.js.map +1 -1
- package/lib/esm/Context.d.ts +3 -3
- package/lib/esm/Context.d.ts.map +1 -1
- package/lib/esm/Context.js +7 -7
- package/lib/esm/Context.js.map +1 -1
- package/lib/esm/DelayedPromise.d.ts +9 -8
- package/lib/esm/DelayedPromise.d.ts.map +1 -1
- package/lib/esm/DelayedPromise.js +2 -2
- package/lib/esm/DelayedPromise.js.map +1 -1
- package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
- package/lib/esm/Deserialization/Helper.d.ts.map +1 -1
- package/lib/esm/Deserialization/Helper.js +28 -27
- package/lib/esm/Deserialization/Helper.js.map +1 -1
- package/lib/esm/Deserialization/JsonParser.js +151 -151
- package/lib/esm/Deserialization/JsonParser.js.map +1 -1
- package/lib/esm/Deserialization/JsonProps.d.ts +34 -34
- package/lib/esm/Deserialization/JsonProps.d.ts.map +1 -1
- package/lib/esm/Deserialization/JsonProps.js +3 -3
- package/lib/esm/Deserialization/JsonProps.js.map +1 -1
- package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
- package/lib/esm/Deserialization/XmlParser.js +50 -50
- package/lib/esm/Deserialization/XmlParser.js.map +1 -1
- package/lib/esm/Deserialization/XmlSerializationUtils.d.ts +0 -5
- package/lib/esm/Deserialization/XmlSerializationUtils.d.ts.map +1 -1
- package/lib/esm/Deserialization/XmlSerializationUtils.js +7 -12
- package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
- package/lib/esm/ECName.d.ts +2 -2
- package/lib/esm/ECName.js +5 -5
- package/lib/esm/ECName.js.map +1 -1
- package/lib/esm/ECObjects.d.ts +23 -11
- package/lib/esm/ECObjects.d.ts.map +1 -1
- package/lib/esm/ECObjects.js +48 -25
- package/lib/esm/ECObjects.js.map +1 -1
- package/lib/esm/Exception.d.ts +4 -4
- package/lib/esm/Exception.d.ts.map +1 -1
- package/lib/esm/Exception.js +58 -58
- package/lib/esm/Exception.js.map +1 -1
- package/lib/esm/Interfaces.d.ts +30 -34
- package/lib/esm/Interfaces.d.ts.map +1 -1
- package/lib/esm/Interfaces.js.map +1 -1
- package/lib/esm/Metadata/Class.d.ts +107 -19
- package/lib/esm/Metadata/Class.d.ts.map +1 -1
- package/lib/esm/Metadata/Class.js +128 -48
- package/lib/esm/Metadata/Class.js.map +1 -1
- package/lib/esm/Metadata/Constant.d.ts +12 -9
- package/lib/esm/Metadata/Constant.d.ts.map +1 -1
- package/lib/esm/Metadata/Constant.js +13 -10
- package/lib/esm/Metadata/Constant.js.map +1 -1
- package/lib/esm/Metadata/CustomAttribute.d.ts +2 -2
- package/lib/esm/Metadata/CustomAttribute.d.ts.map +1 -1
- package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
- package/lib/esm/Metadata/CustomAttributeClass.d.ts +5 -3
- package/lib/esm/Metadata/CustomAttributeClass.d.ts.map +1 -1
- package/lib/esm/Metadata/CustomAttributeClass.js +8 -6
- package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/esm/Metadata/EntityClass.d.ts +20 -3
- package/lib/esm/Metadata/EntityClass.d.ts.map +1 -1
- package/lib/esm/Metadata/EntityClass.js +33 -15
- package/lib/esm/Metadata/EntityClass.js.map +1 -1
- package/lib/esm/Metadata/Enumeration.d.ts +16 -9
- package/lib/esm/Metadata/Enumeration.d.ts.map +1 -1
- package/lib/esm/Metadata/Enumeration.js +21 -14
- package/lib/esm/Metadata/Enumeration.js.map +1 -1
- package/lib/esm/Metadata/Format.d.ts +32 -24
- package/lib/esm/Metadata/Format.d.ts.map +1 -1
- package/lib/esm/Metadata/Format.js +48 -28
- package/lib/esm/Metadata/Format.js.map +1 -1
- package/lib/esm/Metadata/InvertedUnit.d.ts +11 -7
- package/lib/esm/Metadata/InvertedUnit.d.ts.map +1 -1
- package/lib/esm/Metadata/InvertedUnit.js +17 -11
- package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
- package/lib/esm/Metadata/KindOfQuantity.d.ts +24 -15
- package/lib/esm/Metadata/KindOfQuantity.d.ts.map +1 -1
- package/lib/esm/Metadata/KindOfQuantity.js +55 -30
- package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/esm/Metadata/Mixin.d.ts +16 -3
- package/lib/esm/Metadata/Mixin.d.ts.map +1 -1
- package/lib/esm/Metadata/Mixin.js +21 -8
- package/lib/esm/Metadata/Mixin.js.map +1 -1
- package/lib/esm/Metadata/OverrideFormat.d.ts +12 -12
- package/lib/esm/Metadata/OverrideFormat.d.ts.map +1 -1
- package/lib/esm/Metadata/OverrideFormat.js +28 -20
- package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
- package/lib/esm/Metadata/Phenomenon.d.ts +10 -2
- package/lib/esm/Metadata/Phenomenon.d.ts.map +1 -1
- package/lib/esm/Metadata/Phenomenon.js +12 -4
- package/lib/esm/Metadata/Phenomenon.js.map +1 -1
- package/lib/esm/Metadata/Property.d.ts +46 -28
- package/lib/esm/Metadata/Property.d.ts.map +1 -1
- package/lib/esm/Metadata/Property.js +47 -23
- package/lib/esm/Metadata/Property.js.map +1 -1
- package/lib/esm/Metadata/PropertyCategory.d.ts +6 -3
- package/lib/esm/Metadata/PropertyCategory.d.ts.map +1 -1
- package/lib/esm/Metadata/PropertyCategory.js +13 -6
- package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
- package/lib/esm/Metadata/RelationshipClass.d.ts +48 -25
- package/lib/esm/Metadata/RelationshipClass.d.ts.map +1 -1
- package/lib/esm/Metadata/RelationshipClass.js +55 -35
- package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
- package/lib/esm/Metadata/Schema.d.ts +50 -28
- package/lib/esm/Metadata/Schema.d.ts.map +1 -1
- package/lib/esm/Metadata/Schema.js +65 -43
- package/lib/esm/Metadata/Schema.js.map +1 -1
- package/lib/esm/Metadata/SchemaItem.d.ts +10 -19
- package/lib/esm/Metadata/SchemaItem.d.ts.map +1 -1
- package/lib/esm/Metadata/SchemaItem.js +13 -21
- package/lib/esm/Metadata/SchemaItem.js.map +1 -1
- package/lib/esm/Metadata/Unit.d.ts +17 -21
- package/lib/esm/Metadata/Unit.d.ts.map +1 -1
- package/lib/esm/Metadata/Unit.js +21 -23
- package/lib/esm/Metadata/Unit.js.map +1 -1
- package/lib/esm/Metadata/UnitSystem.d.ts +3 -1
- package/lib/esm/Metadata/UnitSystem.d.ts.map +1 -1
- package/lib/esm/Metadata/UnitSystem.js +5 -3
- package/lib/esm/Metadata/UnitSystem.js.map +1 -1
- package/lib/esm/PropertyTypes.d.ts +11 -11
- package/lib/esm/PropertyTypes.d.ts.map +1 -1
- package/lib/esm/PropertyTypes.js +29 -21
- package/lib/esm/PropertyTypes.js.map +1 -1
- package/lib/esm/SchemaFormatsProvider.d.ts +39 -0
- package/lib/esm/SchemaFormatsProvider.d.ts.map +1 -0
- package/lib/esm/SchemaFormatsProvider.js +142 -0
- package/lib/esm/SchemaFormatsProvider.js.map +1 -0
- package/lib/esm/SchemaJsonLocater.d.ts +5 -5
- package/lib/esm/SchemaJsonLocater.js +4 -4
- package/lib/esm/SchemaJsonLocater.js.map +1 -1
- package/lib/esm/SchemaKey.d.ts +6 -6
- package/lib/esm/SchemaKey.d.ts.map +1 -1
- package/lib/esm/SchemaKey.js +10 -10
- package/lib/esm/SchemaKey.js.map +1 -1
- package/lib/esm/SchemaLoader.d.ts +3 -3
- package/lib/esm/SchemaLoader.js +5 -5
- package/lib/esm/SchemaLoader.js.map +1 -1
- package/lib/esm/SchemaPartVisitorDelegate.d.ts +2 -2
- package/lib/esm/SchemaPartVisitorDelegate.js +1 -1
- package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
- package/lib/esm/UnitConversion/Graph.js.map +1 -1
- package/lib/esm/UnitConversion/Parser.js.map +1 -1
- package/lib/esm/UnitConversion/UnitConversion.js.map +1 -1
- package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
- package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
- package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
- package/lib/esm/Validation/SchemaWalker.js.map +1 -1
- package/lib/esm/ecschema-metadata.d.ts +2 -1
- package/lib/esm/ecschema-metadata.d.ts.map +1 -1
- package/lib/esm/ecschema-metadata.js +1 -0
- package/lib/esm/ecschema-metadata.js.map +1 -1
- package/lib/esm/utils/SchemaGraph.js +4 -4
- package/lib/esm/utils/SchemaGraph.js.map +1 -1
- package/package.json +8 -6
|
@@ -9,7 +9,7 @@ import { assert } from "@itwin/core-bentley";
|
|
|
9
9
|
import { DelayedPromiseWithProps } from "../DelayedPromise";
|
|
10
10
|
import { XmlSerializationUtils } from "../Deserialization/XmlSerializationUtils";
|
|
11
11
|
import { AbstractSchemaItemType, classModifierToString, ECClassModifier, parseClassModifier, parsePrimitiveType, PrimitiveType, SchemaItemType } from "../ECObjects";
|
|
12
|
-
import {
|
|
12
|
+
import { ECSchemaError, ECSchemaStatus } from "../Exception";
|
|
13
13
|
import { SchemaItemKey, SchemaKey } from "../SchemaKey";
|
|
14
14
|
import { serializeCustomAttributes } from "./CustomAttribute";
|
|
15
15
|
import { Enumeration } from "./Enumeration";
|
|
@@ -18,9 +18,10 @@ import { SchemaItem } from "./SchemaItem";
|
|
|
18
18
|
import { SchemaReadHelper } from "../Deserialization/Helper";
|
|
19
19
|
/**
|
|
20
20
|
* A common abstract class for all of the ECClass types.
|
|
21
|
-
* @
|
|
21
|
+
* @public @preview
|
|
22
22
|
*/
|
|
23
23
|
export class ECClass extends SchemaItem {
|
|
24
|
+
/** @internal */
|
|
24
25
|
static get schemaItemType() { return AbstractSchemaItemType.Class; } // need this so getItem("name", ECClass) in schema works
|
|
25
26
|
_modifier;
|
|
26
27
|
_baseClass;
|
|
@@ -30,6 +31,7 @@ export class ECClass extends SchemaItem {
|
|
|
30
31
|
_mergedPropertyCache;
|
|
31
32
|
get modifier() { return this._modifier; }
|
|
32
33
|
get customAttributes() { return this._customAttributes; }
|
|
34
|
+
/** @internal */
|
|
33
35
|
constructor(schema, name, modifier) {
|
|
34
36
|
super(schema, name);
|
|
35
37
|
if (modifier)
|
|
@@ -43,8 +45,16 @@ export class ECClass extends SchemaItem {
|
|
|
43
45
|
get baseClass() {
|
|
44
46
|
return this._baseClass;
|
|
45
47
|
}
|
|
48
|
+
getBaseClassSync() {
|
|
49
|
+
if (!this.baseClass) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
return this.schema.lookupItemSync(this.baseClass, ECClass);
|
|
53
|
+
}
|
|
46
54
|
/**
|
|
47
55
|
* Sets the base class of the ECClass. Pass undefined to 'remove' the base class.
|
|
56
|
+
*
|
|
57
|
+
* @internal
|
|
48
58
|
*/
|
|
49
59
|
async setBaseClass(baseClass) {
|
|
50
60
|
const oldBaseClass = this._baseClass;
|
|
@@ -67,6 +77,8 @@ export class ECClass extends SchemaItem {
|
|
|
67
77
|
* Convenience method for adding an already loaded ECProperty used by create*Property methods.
|
|
68
78
|
* @param prop The property to add.
|
|
69
79
|
* @return The property that was added.
|
|
80
|
+
*
|
|
81
|
+
* @internal
|
|
70
82
|
*/
|
|
71
83
|
addProperty(prop) {
|
|
72
84
|
if (!this._properties)
|
|
@@ -78,7 +90,7 @@ export class ECClass extends SchemaItem {
|
|
|
78
90
|
/**
|
|
79
91
|
* Deletes a property from within this class.
|
|
80
92
|
* @param name The property name to delete, lookup is case-insensitive
|
|
81
|
-
* @
|
|
93
|
+
* @internal
|
|
82
94
|
*/
|
|
83
95
|
async deleteProperty(name) {
|
|
84
96
|
if (this._properties) {
|
|
@@ -92,7 +104,7 @@ export class ECClass extends SchemaItem {
|
|
|
92
104
|
/**
|
|
93
105
|
* Deletes a property from within this class.
|
|
94
106
|
* @param name The property name to delete, lookup is case-insensitive
|
|
95
|
-
* @
|
|
107
|
+
* @internal
|
|
96
108
|
*/
|
|
97
109
|
deletePropertySync(name) {
|
|
98
110
|
if (this._properties) {
|
|
@@ -103,40 +115,37 @@ export class ECClass extends SchemaItem {
|
|
|
103
115
|
}
|
|
104
116
|
}
|
|
105
117
|
}
|
|
106
|
-
getBaseClassSync() {
|
|
107
|
-
if (!this.baseClass) {
|
|
108
|
-
return undefined;
|
|
109
|
-
}
|
|
110
|
-
return this.schema.lookupItemSync(this.baseClass, ECClass);
|
|
111
|
-
}
|
|
112
118
|
/**
|
|
113
|
-
* Searches, case-insensitive, for
|
|
114
|
-
*
|
|
119
|
+
* Searches, case-insensitive, for an ECProperty with given the name on this class and, by default, on
|
|
120
|
+
* all base classes. Set excludeInherited to 'true' to only search the local class.
|
|
121
|
+
* @param name The name of the property to retrieve.
|
|
122
|
+
* @param excludeInherited If true, excludes inherited properties from the results. Defaults to false.
|
|
115
123
|
*/
|
|
116
|
-
async getProperty(name,
|
|
124
|
+
async getProperty(name, excludeInherited = false) {
|
|
117
125
|
if (this._properties) {
|
|
118
126
|
const upperKey = name.toUpperCase();
|
|
119
127
|
const property = this._properties.get(upperKey);
|
|
120
128
|
if (property)
|
|
121
129
|
return property;
|
|
122
130
|
}
|
|
123
|
-
if (
|
|
131
|
+
if (excludeInherited) {
|
|
124
132
|
return undefined;
|
|
125
133
|
}
|
|
126
134
|
return this.getInheritedProperty(name);
|
|
127
135
|
}
|
|
128
136
|
/**
|
|
129
137
|
* Searches, case-insensitive, for a local ECProperty with the name provided.
|
|
130
|
-
* @param name
|
|
138
|
+
* @param name The name of the property to retrieve.
|
|
139
|
+
* @param excludeInherited If true, excludes inherited properties from the results. Defaults to false.
|
|
131
140
|
*/
|
|
132
|
-
getPropertySync(name,
|
|
141
|
+
getPropertySync(name, excludeInherited = false) {
|
|
133
142
|
if (this._properties) {
|
|
134
143
|
const upperKey = name.toUpperCase();
|
|
135
144
|
const property = this._properties.get(upperKey);
|
|
136
145
|
if (property)
|
|
137
146
|
return property;
|
|
138
147
|
}
|
|
139
|
-
if (
|
|
148
|
+
if (excludeInherited) {
|
|
140
149
|
return undefined;
|
|
141
150
|
}
|
|
142
151
|
return this.getInheritedPropertySync(name);
|
|
@@ -148,7 +157,7 @@ export class ECClass extends SchemaItem {
|
|
|
148
157
|
async getInheritedProperty(name) {
|
|
149
158
|
if (this.baseClass) {
|
|
150
159
|
const baseClassObj = await this.baseClass;
|
|
151
|
-
return baseClassObj.getProperty(name
|
|
160
|
+
return baseClassObj.getProperty(name);
|
|
152
161
|
}
|
|
153
162
|
return undefined;
|
|
154
163
|
}
|
|
@@ -159,36 +168,36 @@ export class ECClass extends SchemaItem {
|
|
|
159
168
|
getInheritedPropertySync(name) {
|
|
160
169
|
const baseClassObj = this.getBaseClassSync();
|
|
161
170
|
if (baseClassObj)
|
|
162
|
-
return baseClassObj.getPropertySync(name
|
|
171
|
+
return baseClassObj.getPropertySync(name);
|
|
163
172
|
return undefined;
|
|
164
173
|
}
|
|
165
174
|
async createPrimitiveProperty(name, primitiveType) {
|
|
166
|
-
if (await this.getProperty(name))
|
|
167
|
-
throw new
|
|
175
|
+
if (await this.getProperty(name, true))
|
|
176
|
+
throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
|
|
168
177
|
const propType = await this.loadPrimitiveType(primitiveType, this.schema);
|
|
169
178
|
if (typeof (propType) === "number")
|
|
170
179
|
return this.addProperty(new PrimitiveProperty(this, name, propType));
|
|
171
180
|
return this.addProperty(new EnumerationProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));
|
|
172
181
|
}
|
|
173
182
|
createPrimitivePropertySync(name, primitiveType) {
|
|
174
|
-
if (this.getPropertySync(name))
|
|
175
|
-
throw new
|
|
183
|
+
if (this.getPropertySync(name, true))
|
|
184
|
+
throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
|
|
176
185
|
const propType = this.loadPrimitiveTypeSync(primitiveType, this.schema);
|
|
177
186
|
if (typeof (propType) === "number")
|
|
178
187
|
return this.addProperty(new PrimitiveProperty(this, name, propType));
|
|
179
188
|
return this.addProperty(new EnumerationProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));
|
|
180
189
|
}
|
|
181
190
|
async createPrimitiveArrayProperty(name, primitiveType) {
|
|
182
|
-
if (await this.getProperty(name))
|
|
183
|
-
throw new
|
|
191
|
+
if (await this.getProperty(name, true))
|
|
192
|
+
throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
|
|
184
193
|
const propType = await this.loadPrimitiveType(primitiveType, this.schema);
|
|
185
194
|
if (typeof (propType) === "number")
|
|
186
195
|
return this.addProperty(new PrimitiveArrayProperty(this, name, propType));
|
|
187
196
|
return this.addProperty(new EnumerationArrayProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));
|
|
188
197
|
}
|
|
189
198
|
createPrimitiveArrayPropertySync(name, primitiveType) {
|
|
190
|
-
if (this.getPropertySync(name))
|
|
191
|
-
throw new
|
|
199
|
+
if (this.getPropertySync(name, true))
|
|
200
|
+
throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
|
|
192
201
|
const propType = this.loadPrimitiveTypeSync(primitiveType, this.schema);
|
|
193
202
|
if (typeof (propType) === "number")
|
|
194
203
|
return this.addProperty(new PrimitiveArrayProperty(this, name, propType));
|
|
@@ -198,42 +207,58 @@ export class ECClass extends SchemaItem {
|
|
|
198
207
|
*
|
|
199
208
|
* @param name The name of property to create.
|
|
200
209
|
* @param structType The struct type of property to create.
|
|
210
|
+
*
|
|
211
|
+
* @internal
|
|
201
212
|
*/
|
|
202
213
|
async createStructProperty(name, structType) {
|
|
203
|
-
if (await this.getProperty(name))
|
|
204
|
-
throw new
|
|
214
|
+
if (await this.getProperty(name, true))
|
|
215
|
+
throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
|
|
205
216
|
return this.addProperty(new StructProperty(this, name, await this.loadStructType(structType, this.schema)));
|
|
206
217
|
}
|
|
207
218
|
/**
|
|
208
219
|
*
|
|
209
220
|
* @param name The name of property to create.
|
|
210
221
|
* @param structType The struct type of property to create.
|
|
222
|
+
*
|
|
223
|
+
* @internal
|
|
211
224
|
*/
|
|
212
225
|
createStructPropertySync(name, structType) {
|
|
213
|
-
if (this.getPropertySync(name))
|
|
214
|
-
throw new
|
|
226
|
+
if (this.getPropertySync(name, true))
|
|
227
|
+
throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
|
|
215
228
|
return this.addProperty(new StructProperty(this, name, this.loadStructTypeSync(structType, this.schema)));
|
|
216
229
|
}
|
|
217
230
|
/**
|
|
218
231
|
*
|
|
219
232
|
* @param name
|
|
220
233
|
* @param type
|
|
234
|
+
*
|
|
235
|
+
* @internal
|
|
221
236
|
*/
|
|
222
237
|
async createStructArrayProperty(name, structType) {
|
|
223
|
-
if (await this.getProperty(name))
|
|
224
|
-
throw new
|
|
238
|
+
if (await this.getProperty(name, true))
|
|
239
|
+
throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
|
|
225
240
|
return this.addProperty(new StructArrayProperty(this, name, await this.loadStructType(structType, this.schema)));
|
|
226
241
|
}
|
|
227
242
|
/**
|
|
228
243
|
*
|
|
229
244
|
* @param name
|
|
230
245
|
* @param type
|
|
246
|
+
*
|
|
247
|
+
* @internal
|
|
231
248
|
*/
|
|
232
249
|
createStructArrayPropertySync(name, structType) {
|
|
233
|
-
if (this.getPropertySync(name))
|
|
234
|
-
throw new
|
|
250
|
+
if (this.getPropertySync(name, true))
|
|
251
|
+
throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);
|
|
235
252
|
return this.addProperty(new StructArrayProperty(this, name, this.loadStructTypeSync(structType, this.schema)));
|
|
236
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
*
|
|
256
|
+
* @param structType
|
|
257
|
+
* @param schema
|
|
258
|
+
* @returns
|
|
259
|
+
*
|
|
260
|
+
* @internal
|
|
261
|
+
*/
|
|
237
262
|
async loadStructType(structType, schema) {
|
|
238
263
|
let correctType;
|
|
239
264
|
if (typeof (structType) === "string") {
|
|
@@ -242,9 +267,17 @@ export class ECClass extends SchemaItem {
|
|
|
242
267
|
else
|
|
243
268
|
correctType = structType;
|
|
244
269
|
if (!correctType)
|
|
245
|
-
throw new
|
|
270
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);
|
|
246
271
|
return correctType;
|
|
247
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
*
|
|
275
|
+
* @param structType
|
|
276
|
+
* @param schema
|
|
277
|
+
* @returns
|
|
278
|
+
*
|
|
279
|
+
* @internal
|
|
280
|
+
*/
|
|
248
281
|
loadStructTypeSync(structType, schema) {
|
|
249
282
|
let correctType;
|
|
250
283
|
if (typeof (structType) === "string") {
|
|
@@ -253,9 +286,17 @@ export class ECClass extends SchemaItem {
|
|
|
253
286
|
else
|
|
254
287
|
correctType = structType;
|
|
255
288
|
if (!correctType)
|
|
256
|
-
throw new
|
|
289
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);
|
|
257
290
|
return correctType;
|
|
258
291
|
}
|
|
292
|
+
/**
|
|
293
|
+
*
|
|
294
|
+
* @param primitiveType
|
|
295
|
+
* @param schema
|
|
296
|
+
* @returns
|
|
297
|
+
*
|
|
298
|
+
* @internal
|
|
299
|
+
*/
|
|
259
300
|
async loadPrimitiveType(primitiveType, schema) {
|
|
260
301
|
if (primitiveType === undefined)
|
|
261
302
|
return PrimitiveType.Integer;
|
|
@@ -265,14 +306,22 @@ export class ECClass extends SchemaItem {
|
|
|
265
306
|
resolvedType = await schema.lookupItem(primitiveType, Enumeration);
|
|
266
307
|
}
|
|
267
308
|
if (resolvedType === undefined)
|
|
268
|
-
throw new
|
|
309
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);
|
|
269
310
|
// If resolvedType is a SchemaItem, make sure it is an Enumeration- if not, throw an error
|
|
270
311
|
if (typeof (resolvedType) !== "number" && resolvedType.schemaItemType !== SchemaItemType.Enumeration)
|
|
271
|
-
throw new
|
|
312
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);
|
|
272
313
|
return resolvedType;
|
|
273
314
|
}
|
|
274
315
|
return primitiveType;
|
|
275
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
*
|
|
319
|
+
* @param primitiveType
|
|
320
|
+
* @param schema
|
|
321
|
+
* @returns
|
|
322
|
+
*
|
|
323
|
+
* @internal
|
|
324
|
+
*/
|
|
276
325
|
loadPrimitiveTypeSync(primitiveType, schema) {
|
|
277
326
|
if (primitiveType === undefined)
|
|
278
327
|
return PrimitiveType.Integer;
|
|
@@ -282,7 +331,7 @@ export class ECClass extends SchemaItem {
|
|
|
282
331
|
resolvedType = schema.lookupItemSync(primitiveType, Enumeration);
|
|
283
332
|
}
|
|
284
333
|
if (resolvedType === undefined)
|
|
285
|
-
throw new
|
|
334
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);
|
|
286
335
|
return resolvedType;
|
|
287
336
|
}
|
|
288
337
|
return primitiveType;
|
|
@@ -343,7 +392,7 @@ export class ECClass extends SchemaItem {
|
|
|
343
392
|
if (SchemaReadHelper.isECSpecVersionNewer({ readVersion: classProps.originalECSpecMajorVersion, writeVersion: classProps.originalECSpecMinorVersion }))
|
|
344
393
|
this._modifier = ECClassModifier.None;
|
|
345
394
|
else
|
|
346
|
-
throw new
|
|
395
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidModifier, `The string '${classProps.modifier}' is not a valid ECClassModifier.`);
|
|
347
396
|
}
|
|
348
397
|
else {
|
|
349
398
|
this._modifier = modifier;
|
|
@@ -352,14 +401,14 @@ export class ECClass extends SchemaItem {
|
|
|
352
401
|
if (undefined !== classProps.baseClass) {
|
|
353
402
|
const ecClassSchemaItemKey = this.schema.getSchemaItemKey(classProps.baseClass);
|
|
354
403
|
if (!ecClassSchemaItemKey)
|
|
355
|
-
throw new
|
|
404
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);
|
|
356
405
|
const baseClass = this.schema.lookupItemSync(ecClassSchemaItemKey);
|
|
357
406
|
let lazyBase;
|
|
358
407
|
if (!baseClass) {
|
|
359
408
|
lazyBase = new DelayedPromiseWithProps(ecClassSchemaItemKey, async () => {
|
|
360
409
|
const baseItem = await this.schema.lookupItem(ecClassSchemaItemKey);
|
|
361
410
|
if (undefined === baseItem || !ECClass.isECClass(baseItem))
|
|
362
|
-
throw new
|
|
411
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);
|
|
363
412
|
return baseItem;
|
|
364
413
|
});
|
|
365
414
|
}
|
|
@@ -377,6 +426,12 @@ export class ECClass extends SchemaItem {
|
|
|
377
426
|
async fromJSON(classProps) {
|
|
378
427
|
this.fromJSONSync(classProps);
|
|
379
428
|
}
|
|
429
|
+
/**
|
|
430
|
+
*
|
|
431
|
+
* @param customAttribute
|
|
432
|
+
*
|
|
433
|
+
* @internal
|
|
434
|
+
*/
|
|
380
435
|
addCustomAttribute(customAttribute) {
|
|
381
436
|
if (!this._customAttributes)
|
|
382
437
|
this._customAttributes = new Map();
|
|
@@ -423,6 +478,15 @@ export class ECClass extends SchemaItem {
|
|
|
423
478
|
yield baseClass;
|
|
424
479
|
}
|
|
425
480
|
}
|
|
481
|
+
/**
|
|
482
|
+
*
|
|
483
|
+
* @param target
|
|
484
|
+
* @param existingValues
|
|
485
|
+
* @param propertiesToMerge
|
|
486
|
+
* @param overwriteExisting
|
|
487
|
+
*
|
|
488
|
+
* @internal
|
|
489
|
+
*/
|
|
426
490
|
static mergeProperties(target, existingValues, propertiesToMerge, overwriteExisting) {
|
|
427
491
|
for (const property of propertiesToMerge) {
|
|
428
492
|
const upperCaseName = property.name.toUpperCase();
|
|
@@ -438,6 +502,14 @@ export class ECClass extends SchemaItem {
|
|
|
438
502
|
}
|
|
439
503
|
}
|
|
440
504
|
}
|
|
505
|
+
/**
|
|
506
|
+
*
|
|
507
|
+
* @param result
|
|
508
|
+
* @param existingValues
|
|
509
|
+
* @returns
|
|
510
|
+
*
|
|
511
|
+
* @internal
|
|
512
|
+
*/
|
|
441
513
|
async buildPropertyCache(result, existingValues) {
|
|
442
514
|
if (!existingValues) {
|
|
443
515
|
existingValues = new Map();
|
|
@@ -452,6 +524,14 @@ export class ECClass extends SchemaItem {
|
|
|
452
524
|
return;
|
|
453
525
|
ECClass.mergeProperties(result, existingValues, [...this._properties.values()], true);
|
|
454
526
|
}
|
|
527
|
+
/**
|
|
528
|
+
*
|
|
529
|
+
* @param result
|
|
530
|
+
* @param existingValues
|
|
531
|
+
* @returns
|
|
532
|
+
*
|
|
533
|
+
* @internal
|
|
534
|
+
*/
|
|
455
535
|
buildPropertyCacheSync(result, existingValues) {
|
|
456
536
|
if (!existingValues) {
|
|
457
537
|
existingValues = new Map();
|
|
@@ -594,9 +674,9 @@ export class ECClass extends SchemaItem {
|
|
|
594
674
|
object.schemaItemType === SchemaItemType.StructClass || object.schemaItemType === SchemaItemType.CustomAttributeClass;
|
|
595
675
|
}
|
|
596
676
|
/**
|
|
597
|
-
* @alpha
|
|
598
677
|
* A setter method for the ECClass modifier, used specifically for schema editing.
|
|
599
678
|
* @param modifier
|
|
679
|
+
* @internal
|
|
600
680
|
*/
|
|
601
681
|
setModifier(modifier) {
|
|
602
682
|
this._modifier = modifier;
|
|
@@ -633,17 +713,16 @@ export class ECClass extends SchemaItem {
|
|
|
633
713
|
}
|
|
634
714
|
/**
|
|
635
715
|
* A Typescript class representation of an ECStructClass.
|
|
636
|
-
* @
|
|
716
|
+
* @public @preview
|
|
637
717
|
*/
|
|
638
718
|
export class StructClass extends ECClass {
|
|
639
719
|
/**
|
|
640
720
|
* Get the type of item represented by this instance
|
|
641
|
-
* @beta
|
|
642
721
|
*/
|
|
643
722
|
schemaItemType = StructClass.schemaItemType;
|
|
644
723
|
/**
|
|
645
724
|
* Get the type of item represented by this class
|
|
646
|
-
* @
|
|
725
|
+
* @internal
|
|
647
726
|
*/
|
|
648
727
|
static get schemaItemType() { return SchemaItemType.StructClass; }
|
|
649
728
|
/**
|
|
@@ -660,10 +739,11 @@ export class StructClass extends ECClass {
|
|
|
660
739
|
* Type assertion to check if the SchemaItem is of type StructClass.
|
|
661
740
|
* @param item The SchemaItem to check.
|
|
662
741
|
* @returns The item cast to StructClass if it is a StructClass, undefined otherwise.
|
|
742
|
+
* @internal
|
|
663
743
|
*/
|
|
664
744
|
static assertIsStructClass(item) {
|
|
665
745
|
if (!this.isStructClass(item))
|
|
666
|
-
throw new
|
|
746
|
+
throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.StructClass}' (StructClass)`);
|
|
667
747
|
}
|
|
668
748
|
}
|
|
669
749
|
/**
|