@itwin/ecschema-metadata 4.10.0-dev.31 → 4.10.0-dev.33
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/lib/cjs/DelayedPromise.d.ts.map +1 -1
- package/lib/cjs/Deserialization/XmlParser.d.ts.map +1 -1
- package/lib/cjs/Deserialization/XmlParser.js +3 -1
- package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
- package/lib/cjs/ECObjects.js +16 -16
- package/lib/cjs/ECObjects.js.map +1 -1
- package/lib/cjs/Metadata/Class.js.map +1 -1
- package/lib/cjs/Metadata/Constant.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttribute.js +1 -2
- package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/cjs/Metadata/EntityClass.js +3 -3
- package/lib/cjs/Metadata/EntityClass.js.map +1 -1
- package/lib/cjs/Metadata/Enumeration.js.map +1 -1
- package/lib/cjs/Metadata/Format.js.map +1 -1
- package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
- package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/cjs/Metadata/Mixin.js.map +1 -1
- package/lib/cjs/Metadata/OverrideFormat.js +3 -3
- package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
- package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
- package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
- package/lib/cjs/Metadata/RelationshipClass.d.ts.map +1 -1
- package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
- package/lib/cjs/Metadata/Schema.js.map +1 -1
- package/lib/cjs/Metadata/SchemaItem.d.ts.map +1 -1
- package/lib/cjs/Metadata/Unit.js.map +1 -1
- package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
- package/lib/cjs/PropertyTypes.js +2 -2
- package/lib/cjs/PropertyTypes.js.map +1 -1
- package/lib/cjs/UnitConversion/Graph.d.ts.map +1 -1
- package/lib/cjs/UnitConversion/Parser.js +1 -2
- package/lib/cjs/UnitConversion/Parser.js.map +1 -1
- package/lib/cjs/UnitProvider/SchemaUnitProvider.js +2 -2
- package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
- package/lib/esm/DelayedPromise.d.ts.map +1 -1
- package/lib/esm/Deserialization/XmlParser.d.ts.map +1 -1
- package/lib/esm/Deserialization/XmlParser.js +3 -1
- package/lib/esm/Deserialization/XmlParser.js.map +1 -1
- package/lib/esm/Metadata/Class.js.map +1 -1
- package/lib/esm/Metadata/Constant.js.map +1 -1
- package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/esm/Metadata/EntityClass.js.map +1 -1
- package/lib/esm/Metadata/Enumeration.js.map +1 -1
- package/lib/esm/Metadata/Format.js.map +1 -1
- package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
- package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/esm/Metadata/Mixin.js.map +1 -1
- package/lib/esm/Metadata/OverrideFormat.js +1 -1
- package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
- package/lib/esm/Metadata/Phenomenon.js.map +1 -1
- package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
- package/lib/esm/Metadata/RelationshipClass.d.ts.map +1 -1
- package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
- package/lib/esm/Metadata/Schema.js.map +1 -1
- package/lib/esm/Metadata/SchemaItem.d.ts.map +1 -1
- package/lib/esm/Metadata/Unit.js.map +1 -1
- package/lib/esm/Metadata/UnitSystem.js.map +1 -1
- package/lib/esm/UnitConversion/Graph.d.ts.map +1 -1
- package/lib/esm/UnitProvider/SchemaUnitProvider.js +2 -2
- package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
- package/package.json +10 -10
package/lib/cjs/ECObjects.js
CHANGED
|
@@ -7,7 +7,22 @@
|
|
|
7
7
|
* @module Metadata
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
10
|
+
exports.StrengthDirection = exports.StrengthType = exports.RelationshipEnd = exports.SchemaMatchType = exports.CustomAttributeContainerType = exports.PrimitiveType = exports.SchemaItemType = exports.ECClassModifier = exports.PropertyType = void 0;
|
|
11
|
+
exports.parseClassModifier = parseClassModifier;
|
|
12
|
+
exports.classModifierToString = classModifierToString;
|
|
13
|
+
exports.parseSchemaItemType = parseSchemaItemType;
|
|
14
|
+
exports.schemaItemTypeToString = schemaItemTypeToString;
|
|
15
|
+
exports.schemaItemTypeToXmlString = schemaItemTypeToXmlString;
|
|
16
|
+
exports.parsePrimitiveType = parsePrimitiveType;
|
|
17
|
+
exports.primitiveTypeToString = primitiveTypeToString;
|
|
18
|
+
exports.parseCustomAttributeContainerType = parseCustomAttributeContainerType;
|
|
19
|
+
exports.containerTypeToString = containerTypeToString;
|
|
20
|
+
exports.parseRelationshipEnd = parseRelationshipEnd;
|
|
21
|
+
exports.relationshipEndToString = relationshipEndToString;
|
|
22
|
+
exports.parseStrength = parseStrength;
|
|
23
|
+
exports.strengthToString = strengthToString;
|
|
24
|
+
exports.parseStrengthDirection = parseStrengthDirection;
|
|
25
|
+
exports.strengthDirectionToString = strengthDirectionToString;
|
|
11
26
|
const Constants_1 = require("./Constants");
|
|
12
27
|
const Exception_1 = require("./Exception");
|
|
13
28
|
var PropertyTypes_1 = require("./PropertyTypes");
|
|
@@ -138,7 +153,6 @@ function parseClassModifier(modifier) {
|
|
|
138
153
|
}
|
|
139
154
|
return undefined;
|
|
140
155
|
}
|
|
141
|
-
exports.parseClassModifier = parseClassModifier;
|
|
142
156
|
/**
|
|
143
157
|
* @return A string representing the provided ECClassModifier. If the modifier is not valid, an empty string is returned.
|
|
144
158
|
* @beta
|
|
@@ -151,7 +165,6 @@ function classModifierToString(modifier) {
|
|
|
151
165
|
default: throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidModifier, "An invalid ECClassModifier has been provided.");
|
|
152
166
|
}
|
|
153
167
|
}
|
|
154
|
-
exports.classModifierToString = classModifierToString;
|
|
155
168
|
/**
|
|
156
169
|
* Tries to parse the given string as one of the 8 schema item types.
|
|
157
170
|
* @param type The schema item type string to parse.
|
|
@@ -177,7 +190,6 @@ function parseSchemaItemType(type) {
|
|
|
177
190
|
}
|
|
178
191
|
return undefined;
|
|
179
192
|
}
|
|
180
|
-
exports.parseSchemaItemType = parseSchemaItemType;
|
|
181
193
|
/**
|
|
182
194
|
* Converts a valid SchemaItemType to a display string.
|
|
183
195
|
* @param value The SchemaItemType to stringify.
|
|
@@ -188,7 +200,6 @@ exports.parseSchemaItemType = parseSchemaItemType;
|
|
|
188
200
|
function schemaItemTypeToString(value) {
|
|
189
201
|
return value; // TODO: Remove
|
|
190
202
|
}
|
|
191
|
-
exports.schemaItemTypeToString = schemaItemTypeToString;
|
|
192
203
|
/** @internal */
|
|
193
204
|
function schemaItemTypeToXmlString(value) {
|
|
194
205
|
switch (value) {
|
|
@@ -209,7 +220,6 @@ function schemaItemTypeToXmlString(value) {
|
|
|
209
220
|
default: throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidSchemaItemType, "An invalid SchemaItemType has been provided.");
|
|
210
221
|
}
|
|
211
222
|
}
|
|
212
|
-
exports.schemaItemTypeToXmlString = schemaItemTypeToXmlString;
|
|
213
223
|
/**
|
|
214
224
|
* Tries to parse the given string as one of the 10 primitive types.
|
|
215
225
|
* @param type The primitive type string to parse.
|
|
@@ -232,7 +242,6 @@ function parsePrimitiveType(type) {
|
|
|
232
242
|
}
|
|
233
243
|
return undefined;
|
|
234
244
|
}
|
|
235
|
-
exports.parsePrimitiveType = parsePrimitiveType;
|
|
236
245
|
/** @beta */
|
|
237
246
|
function primitiveTypeToString(type) {
|
|
238
247
|
switch (type) {
|
|
@@ -249,7 +258,6 @@ function primitiveTypeToString(type) {
|
|
|
249
258
|
default: throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidPrimitiveType, "An invalid PrimitiveType has been provided.");
|
|
250
259
|
}
|
|
251
260
|
}
|
|
252
|
-
exports.primitiveTypeToString = primitiveTypeToString;
|
|
253
261
|
/**
|
|
254
262
|
* Parses the given string into the appropriate CustomAttributeContainerType if the string is valid.
|
|
255
263
|
* @param type The container type string to parse.
|
|
@@ -318,7 +326,6 @@ function parseCustomAttributeContainerType(type) {
|
|
|
318
326
|
});
|
|
319
327
|
return containerType;
|
|
320
328
|
}
|
|
321
|
-
exports.parseCustomAttributeContainerType = parseCustomAttributeContainerType;
|
|
322
329
|
/**
|
|
323
330
|
* Creates a string representing a valid CustomAttributeContainerType.
|
|
324
331
|
* @param value The CustomAttributeContainerType to stringify.
|
|
@@ -376,7 +383,6 @@ function containerTypeToString(type) {
|
|
|
376
383
|
}
|
|
377
384
|
return containerType;
|
|
378
385
|
}
|
|
379
|
-
exports.containerTypeToString = containerTypeToString;
|
|
380
386
|
/** @beta */
|
|
381
387
|
function parseRelationshipEnd(end) {
|
|
382
388
|
switch (end.toLowerCase()) {
|
|
@@ -385,7 +391,6 @@ function parseRelationshipEnd(end) {
|
|
|
385
391
|
}
|
|
386
392
|
return undefined;
|
|
387
393
|
}
|
|
388
|
-
exports.parseRelationshipEnd = parseRelationshipEnd;
|
|
389
394
|
/** @beta */
|
|
390
395
|
function relationshipEndToString(end) {
|
|
391
396
|
switch (end) {
|
|
@@ -394,7 +399,6 @@ function relationshipEndToString(end) {
|
|
|
394
399
|
default: throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidRelationshipEnd, `An invalid RelationshipEnd has been provided.`);
|
|
395
400
|
}
|
|
396
401
|
}
|
|
397
|
-
exports.relationshipEndToString = relationshipEndToString;
|
|
398
402
|
/**
|
|
399
403
|
* Takes a string representing a StrengthType, will parse it and return the corresponding StrengthType.
|
|
400
404
|
* @throws ECObjectsStatus.InvalidStrength if the provided string that is not valid
|
|
@@ -409,7 +413,6 @@ function parseStrength(strength) {
|
|
|
409
413
|
}
|
|
410
414
|
return undefined;
|
|
411
415
|
}
|
|
412
|
-
exports.parseStrength = parseStrength;
|
|
413
416
|
/** @beta */
|
|
414
417
|
function strengthToString(strength) {
|
|
415
418
|
switch (strength) {
|
|
@@ -419,7 +422,6 @@ function strengthToString(strength) {
|
|
|
419
422
|
default: throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidStrength, `An invalid Strength has been provided.`);
|
|
420
423
|
}
|
|
421
424
|
}
|
|
422
|
-
exports.strengthToString = strengthToString;
|
|
423
425
|
/** @beta */
|
|
424
426
|
function parseStrengthDirection(direction) {
|
|
425
427
|
switch (direction.toLowerCase()) {
|
|
@@ -428,7 +430,6 @@ function parseStrengthDirection(direction) {
|
|
|
428
430
|
}
|
|
429
431
|
return undefined;
|
|
430
432
|
}
|
|
431
|
-
exports.parseStrengthDirection = parseStrengthDirection;
|
|
432
433
|
/** @beta */
|
|
433
434
|
function strengthDirectionToString(direction) {
|
|
434
435
|
switch (direction) {
|
|
@@ -437,5 +438,4 @@ function strengthDirectionToString(direction) {
|
|
|
437
438
|
default: throw new Exception_1.ECObjectsError(Exception_1.ECObjectsStatus.InvalidStrengthDirection, `An invalid StrengthDirection has been provided.`);
|
|
438
439
|
}
|
|
439
440
|
}
|
|
440
|
-
exports.strengthDirectionToString = strengthDirectionToString;
|
|
441
441
|
//# sourceMappingURL=ECObjects.js.map
|
package/lib/cjs/ECObjects.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECObjects.js","sourceRoot":"","sources":["../../src/ECObjects.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { ECStringConstants } from \"./Constants\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"./Exception\";\r\n\r\nexport { PropertyType } from \"./PropertyTypes\";\r\n\r\n// NEEDSWORK: This shim is currently required to use async iterators. See https://github.com/Microsoft/TypeScript/issues/14151\r\nif (!(Symbol as any).asyncIterator) {\r\n (Symbol as any).asyncIterator = Symbol.for(\"Symbol.asyncIterator\");\r\n}\r\n\r\n/** @beta */\r\nexport enum ECClassModifier {\r\n None,\r\n Abstract,\r\n Sealed,\r\n}\r\n\r\n/**\r\n * An enumeration that has all the schema item type names as values\r\n * @beta */\r\nexport enum SchemaItemType {\r\n EntityClass = \"EntityClass\",\r\n Mixin = \"Mixin\",\r\n StructClass = \"StructClass\",\r\n CustomAttributeClass = \"CustomAttributeClass\",\r\n RelationshipClass = \"RelationshipClass\",\r\n Enumeration = \"Enumeration\",\r\n KindOfQuantity = \"KindOfQuantity\",\r\n PropertyCategory = \"PropertyCategory\",\r\n Unit = \"Unit\",\r\n InvertedUnit = \"InvertedUnit\",\r\n Constant = \"Constant\",\r\n Phenomenon = \"Phenomenon\",\r\n UnitSystem = \"UnitSystem\",\r\n Format = \"Format\",\r\n}\r\n\r\n/**\r\n * Primitive data types for ECProperties.\r\n * @beta\r\n */\r\nexport enum PrimitiveType {\r\n Uninitialized = 0x00,\r\n Binary = 0x101,\r\n Boolean = 0x201,\r\n DateTime = 0x301,\r\n Double = 0x401,\r\n Integer = 0x501,\r\n Long = 0x601,\r\n Point2d = 0x701,\r\n Point3d = 0x801,\r\n String = 0x901,\r\n IGeometry = 0xa01,\r\n}\r\n\r\n/**\r\n * Defines the valid CustomAttribute container types.\r\n * @beta\r\n */\r\nexport enum CustomAttributeContainerType {\r\n Schema = (0x0001 << 0),\r\n EntityClass = (0x0001 << 1),\r\n CustomAttributeClass = (0x0001 << 2),\r\n StructClass = (0x0001 << 3),\r\n RelationshipClass = (0x0001 << 4),\r\n AnyClass = EntityClass | CustomAttributeClass | StructClass | RelationshipClass,\r\n PrimitiveProperty = (0x0001 << 5),\r\n StructProperty = (0x0001 << 6),\r\n PrimitiveArrayProperty = (0x0001 << 7),\r\n StructArrayProperty = (0x0001 << 8),\r\n NavigationProperty = (0x0001 << 9),\r\n AnyProperty = PrimitiveProperty | StructProperty | PrimitiveArrayProperty | StructArrayProperty | NavigationProperty,\r\n SourceRelationshipConstraint = (0x0001 << 10),\r\n TargetRelationshipConstraint = (0x0001 << 11),\r\n AnyRelationshipConstraint = SourceRelationshipConstraint | TargetRelationshipConstraint,\r\n Any = Schema | AnyClass | AnyProperty | AnyRelationshipConstraint,\r\n}\r\n\r\n/**\r\n * Defines what sort of match should be used when locating a schema.\r\n * @beta\r\n */\r\nexport enum SchemaMatchType {\r\n // Find exact VersionRead, VersionWrite, VersionMinor match as well as Data\r\n Identical,\r\n // Find exact VersionRead, VersionWrite, VersionMinor match.\r\n Exact,\r\n // Find latest version with matching VersionRead and VersionWrite\r\n LatestWriteCompatible,\r\n // Find latest version.\r\n Latest,\r\n // Find latest version with matching VersionRead\r\n LatestReadCompatible,\r\n}\r\n\r\n/**\r\n * Identifer for an ECRelationshipConstraint. Used to determine the side of the relationship the constraint is representing.\r\n * @beta\r\n */\r\nexport enum RelationshipEnd {\r\n Source = 0,\r\n Target = 1,\r\n}\r\n\r\n/** @beta */\r\nexport enum StrengthType {\r\n Referencing,\r\n Holding,\r\n Embedding,\r\n}\r\n\r\n/** @beta */\r\nexport enum StrengthDirection {\r\n Forward = 1,\r\n Backward = 2,\r\n}\r\n\r\n// Helper methods for going to/from string for the above Enumerations.\r\n\r\n/**\r\n * Parses the provided string into an ECClassModifier if the string is a valid modifier.\r\n * @param modifier The modifier string to parse.\r\n * @beta\r\n */\r\nexport function parseClassModifier(modifier: string): ECClassModifier | undefined {\r\n const lowerModifier = modifier.toLowerCase();\r\n switch (lowerModifier) {\r\n case \"abstract\": return ECClassModifier.Abstract;\r\n case \"none\": return ECClassModifier.None;\r\n case \"sealed\": return ECClassModifier.Sealed;\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * @return A string representing the provided ECClassModifier. If the modifier is not valid, an empty string is returned.\r\n * @beta\r\n */\r\nexport function classModifierToString(modifier: ECClassModifier): string {\r\n switch (modifier) {\r\n case ECClassModifier.Abstract: return \"Abstract\";\r\n case ECClassModifier.None: return \"None\";\r\n case ECClassModifier.Sealed: return \"Sealed\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidModifier, \"An invalid ECClassModifier has been provided.\");\r\n }\r\n}\r\n\r\n/**\r\n * Tries to parse the given string as one of the 8 schema item types.\r\n * @param type The schema item type string to parse.\r\n * @returns A valid SchemaItemType if successfully parsed. Otherwise, undefined if the provided string is not a valid SchemaItemType.\r\n * @beta\r\n */\r\nexport function parseSchemaItemType(type: string): SchemaItemType | undefined {\r\n switch (type.toLowerCase()) {\r\n case \"entityclass\": return SchemaItemType.EntityClass;\r\n case \"mixin\": return SchemaItemType.Mixin;\r\n case \"structclass\": return SchemaItemType.StructClass;\r\n case \"customattributeclass\": return SchemaItemType.CustomAttributeClass;\r\n case \"relationshipclass\": return SchemaItemType.RelationshipClass;\r\n case \"enumeration\": return SchemaItemType.Enumeration;\r\n case \"kindofquantity\": return SchemaItemType.KindOfQuantity;\r\n case \"propertycategory\": return SchemaItemType.PropertyCategory;\r\n case \"unit\": return SchemaItemType.Unit;\r\n case \"invertedunit\": return SchemaItemType.InvertedUnit;\r\n case \"constant\": return SchemaItemType.Constant;\r\n case \"phenomenon\": return SchemaItemType.Phenomenon;\r\n case \"unitsystem\": return SchemaItemType.UnitSystem;\r\n case \"format\": return SchemaItemType.Format;\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Converts a valid SchemaItemType to a display string.\r\n * @param value The SchemaItemType to stringify.\r\n * @return A string representing the provided SchemaItemType. If the type is not valid, an empty string is returned.\r\n * @beta\r\n * @deprecated in 4.6.0 SchemaItemType is a string enum so just use it directly\r\n */\r\nexport function schemaItemTypeToString(value: SchemaItemType): string {\r\n return value; // TODO: Remove\r\n}\r\n\r\n/** @internal */\r\nexport function schemaItemTypeToXmlString(value: SchemaItemType): string {\r\n switch (value) {\r\n case SchemaItemType.EntityClass: return \"ECEntityClass\";\r\n case SchemaItemType.Mixin: return \"ECEntityClass\";\r\n case SchemaItemType.StructClass: return \"ECStructClass\";\r\n case SchemaItemType.CustomAttributeClass: return \"ECCustomAttributeClass\";\r\n case SchemaItemType.RelationshipClass: return \"ECRelationshipClass\";\r\n case SchemaItemType.Enumeration: return \"ECEnumeration\";\r\n case SchemaItemType.KindOfQuantity: return \"KindOfQuantity\";\r\n case SchemaItemType.PropertyCategory: return \"PropertyCategory\";\r\n case SchemaItemType.Unit: return \"Unit\";\r\n case SchemaItemType.InvertedUnit: return \"InvertedUnit\";\r\n case SchemaItemType.Constant: return \"Constant\";\r\n case SchemaItemType.Phenomenon: return \"Phenomenon\";\r\n case SchemaItemType.UnitSystem: return \"UnitSystem\";\r\n case SchemaItemType.Format: return \"Format\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidSchemaItemType, \"An invalid SchemaItemType has been provided.\");\r\n }\r\n}\r\n\r\n/**\r\n * Tries to parse the given string as one of the 10 primitive types.\r\n * @param type The primitive type string to parse.\r\n * @returns A valid PrimitiveType if successfully parsed, or undefined if the provided string is not a valid PrimitiveType.\r\n * @beta\r\n */\r\nexport function parsePrimitiveType(type: string): PrimitiveType | undefined {\r\n switch (type.toLowerCase()) {\r\n case \"binary\": return PrimitiveType.Binary;\r\n case \"boolean\": case \"bool\": return PrimitiveType.Boolean;\r\n case \"datetime\": return PrimitiveType.DateTime;\r\n case \"double\": return PrimitiveType.Double;\r\n case \"int\": return PrimitiveType.Integer;\r\n case \"long\": return PrimitiveType.Long;\r\n case \"point2d\": return PrimitiveType.Point2d;\r\n case \"point3d\": return PrimitiveType.Point3d;\r\n case \"string\": return PrimitiveType.String;\r\n case \"bentley.geometry.common.igeometry\": return PrimitiveType.IGeometry;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/** @beta */\r\nexport function primitiveTypeToString(type: PrimitiveType): string {\r\n switch (type) {\r\n case PrimitiveType.Binary: return \"binary\";\r\n case PrimitiveType.Boolean: return \"boolean\";\r\n case PrimitiveType.DateTime: return \"dateTime\";\r\n case PrimitiveType.Double: return \"double\";\r\n case PrimitiveType.Integer: return \"int\";\r\n case PrimitiveType.IGeometry: return \"Bentley.Geometry.Common.IGeometry\";\r\n case PrimitiveType.Long: return \"long\";\r\n case PrimitiveType.Point2d: return \"point2d\";\r\n case PrimitiveType.Point3d: return \"point3d\";\r\n case PrimitiveType.String: return \"string\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidPrimitiveType, \"An invalid PrimitiveType has been provided.\");\r\n }\r\n}\r\n\r\n/**\r\n * Parses the given string into the appropriate CustomAttributeContainerType if the string is valid.\r\n * @param type The container type string to parse.\r\n * @beta\r\n */\r\nexport function parseCustomAttributeContainerType(type: string): CustomAttributeContainerType | undefined {\r\n const typeTokens = type.split(/[|,;]+/);\r\n\r\n let containerType = 0;\r\n\r\n typeTokens.forEach((typeToken) => {\r\n typeToken = typeToken.trim();\r\n if (typeToken.length === 0)\r\n return;\r\n\r\n typeToken = typeToken.toLowerCase();\r\n switch (typeToken) {\r\n case \"schema\":\r\n containerType = containerType | CustomAttributeContainerType.Schema;\r\n break;\r\n case \"entityclass\":\r\n containerType = containerType | CustomAttributeContainerType.EntityClass;\r\n break;\r\n case \"customattributeclass\":\r\n containerType = containerType | CustomAttributeContainerType.CustomAttributeClass;\r\n break;\r\n case \"structclass\":\r\n containerType = containerType | CustomAttributeContainerType.StructClass;\r\n break;\r\n case \"relationshipclass\":\r\n containerType = containerType | CustomAttributeContainerType.RelationshipClass;\r\n break;\r\n case \"anyclass\":\r\n containerType = containerType | CustomAttributeContainerType.AnyClass;\r\n break;\r\n case \"primitiveproperty\":\r\n containerType = containerType | CustomAttributeContainerType.PrimitiveProperty;\r\n break;\r\n case \"structproperty\":\r\n containerType = containerType | CustomAttributeContainerType.StructProperty;\r\n break;\r\n case \"arrayproperty\":\r\n containerType = containerType | CustomAttributeContainerType.PrimitiveArrayProperty;\r\n break;\r\n case \"structarrayproperty\":\r\n containerType = containerType | CustomAttributeContainerType.StructArrayProperty;\r\n break;\r\n case \"navigationproperty\":\r\n containerType = containerType | CustomAttributeContainerType.NavigationProperty;\r\n break;\r\n case \"anyproperty\":\r\n containerType = containerType | CustomAttributeContainerType.AnyProperty;\r\n break;\r\n case \"sourcerelationshipconstraint\":\r\n containerType = containerType | CustomAttributeContainerType.SourceRelationshipConstraint;\r\n break;\r\n case \"targetrelationshipconstraint\":\r\n containerType = containerType | CustomAttributeContainerType.TargetRelationshipConstraint;\r\n break;\r\n case \"anyrelationshipconstraint\":\r\n containerType = containerType | CustomAttributeContainerType.AnyRelationshipConstraint;\r\n break;\r\n case \"any\":\r\n containerType = containerType | CustomAttributeContainerType.Any;\r\n break;\r\n default:\r\n throw new ECObjectsError(ECObjectsStatus.InvalidContainerType, `${typeToken} is not a valid CustomAttributeContainerType value.`);\r\n }\r\n });\r\n\r\n return containerType as CustomAttributeContainerType;\r\n}\r\n\r\n/**\r\n * Creates a string representing a valid CustomAttributeContainerType.\r\n * @param value The CustomAttributeContainerType to stringify.\r\n * @return A string representing the provided CustomAttributeContainerType. If the type is not valid, an empty string is returned.\r\n * @beta\r\n */\r\nexport function containerTypeToString(type: CustomAttributeContainerType): string {\r\n\r\n const testContainerTypeValue = (compareType: CustomAttributeContainerType, otherType: CustomAttributeContainerType) => {\r\n return (compareType === (compareType & otherType));\r\n };\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.Any, type))\r\n return ECStringConstants.CONTAINERTYPE_ANY;\r\n\r\n let containerType = \"\";\r\n const setOrAppend = (val: string) => {\r\n if (containerType.length === 0)\r\n containerType = val;\r\n else\r\n containerType = `${containerType}, ${val}`;\r\n };\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.Schema, type))\r\n setOrAppend(\"Schema\");\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.AnyClass, type))\r\n setOrAppend(\"AnyClass\");\r\n else {\r\n if (testContainerTypeValue(CustomAttributeContainerType.EntityClass, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_ENTITYCLASS);\r\n if (testContainerTypeValue(CustomAttributeContainerType.CustomAttributeClass, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_CUSTOMATTRIBUTECLASS);\r\n if (testContainerTypeValue(CustomAttributeContainerType.StructClass, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_STRUCTCLASS);\r\n if (testContainerTypeValue(CustomAttributeContainerType.RelationshipClass, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_RELATIONSHIPCLASS);\r\n }\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.AnyProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_ANYPROPERTY);\r\n else {\r\n if (testContainerTypeValue(CustomAttributeContainerType.PrimitiveProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_PRIMITIVEPROPERTY);\r\n if (testContainerTypeValue(CustomAttributeContainerType.StructProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_STRUCTPROPERTY);\r\n if (testContainerTypeValue(CustomAttributeContainerType.PrimitiveArrayProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_PRIMITIVEARRAYPROPERTY);\r\n if (testContainerTypeValue(CustomAttributeContainerType.StructArrayProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_STRUCTARRAYPROPERTY);\r\n if (testContainerTypeValue(CustomAttributeContainerType.NavigationProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_NAVIGATIONPROPERTY);\r\n }\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.AnyRelationshipConstraint, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_ANYRELATIONSHIPCONSTRAINT);\r\n else {\r\n if (testContainerTypeValue(CustomAttributeContainerType.SourceRelationshipConstraint, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_SOURCERELATIONSHIPCONSTRAINT);\r\n if (testContainerTypeValue(CustomAttributeContainerType.TargetRelationshipConstraint, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_TARGETRELATIONSHIPCONSTRAINT);\r\n }\r\n\r\n return containerType;\r\n}\r\n\r\n/** @beta */\r\nexport function parseRelationshipEnd(end: string): RelationshipEnd | undefined {\r\n switch (end.toLowerCase()) {\r\n case \"source\": return RelationshipEnd.Source;\r\n case \"target\": return RelationshipEnd.Target;\r\n }\r\n return undefined;\r\n}\r\n\r\n/** @beta */\r\nexport function relationshipEndToString(end: RelationshipEnd): string {\r\n switch (end) {\r\n case RelationshipEnd.Source: return ECStringConstants.RELATIONSHIP_END_SOURCE;\r\n case RelationshipEnd.Target: return ECStringConstants.RELATIONSHIP_END_TARGET;\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidRelationshipEnd, `An invalid RelationshipEnd has been provided.`);\r\n }\r\n}\r\n\r\n/**\r\n * Takes a string representing a StrengthType, will parse it and return the corresponding StrengthType.\r\n * @throws ECObjectsStatus.InvalidStrength if the provided string that is not valid\r\n * @param strength\r\n * @beta\r\n */\r\nexport function parseStrength(strength: string): StrengthType | undefined {\r\n switch (strength.toLowerCase()) {\r\n case \"referencing\": return StrengthType.Referencing;\r\n case \"holding\": return StrengthType.Holding;\r\n case \"embedding\": return StrengthType.Embedding;\r\n }\r\n return undefined;\r\n}\r\n\r\n/** @beta */\r\nexport function strengthToString(strength: StrengthType): string {\r\n switch (strength) {\r\n case StrengthType.Embedding: return \"Embedding\";\r\n case StrengthType.Holding: return \"Holding\";\r\n case StrengthType.Referencing: return \"Referencing\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidStrength, `An invalid Strength has been provided.`);\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport function parseStrengthDirection(direction: string): StrengthDirection | undefined {\r\n switch (direction.toLowerCase()) {\r\n case \"forward\": return StrengthDirection.Forward;\r\n case \"backward\": return StrengthDirection.Backward;\r\n }\r\n return undefined;\r\n}\r\n\r\n/** @beta */\r\nexport function strengthDirectionToString(direction: StrengthDirection): string {\r\n switch (direction) {\r\n case StrengthDirection.Forward: return \"Forward\";\r\n case StrengthDirection.Backward: return \"Backward\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidStrengthDirection, `An invalid StrengthDirection has been provided.`);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ECObjects.js","sourceRoot":"","sources":["../../src/ECObjects.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AA8HH,gDAQC;AAMD,sDAOC;AAQD,kDAkBC;AASD,wDAEC;AAGD,8DAkBC;AAQD,gDAeC;AAGD,sDAcC;AAOD,8EAkEC;AAQD,sDA0DC;AAGD,oDAMC;AAGD,0DAMC;AAQD,sCAOC;AAGD,4CAOC;AAGD,wDAMC;AAGD,8DAMC;AA3bD,2CAAgD;AAChD,2CAA8D;AAE9D,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,+HAA+H;AAC/H,IAAI,CAAE,MAAc,CAAC,aAAa,EAAE,CAAC;IAClC,MAAc,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACrE,CAAC;AAED,YAAY;AACZ,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,qDAAI,CAAA;IACJ,6DAAQ,CAAA;IACR,yDAAM,CAAA;AACR,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED;;WAEW;AACX,IAAY,cAeX;AAfD,WAAY,cAAc;IACxB,6CAA2B,CAAA;IAC3B,iCAAe,CAAA;IACf,6CAA2B,CAAA;IAC3B,+DAA6C,CAAA;IAC7C,yDAAuC,CAAA;IACvC,6CAA2B,CAAA;IAC3B,mDAAiC,CAAA;IACjC,uDAAqC,CAAA;IACrC,+BAAa,CAAA;IACb,+CAA6B,CAAA;IAC7B,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,2CAAyB,CAAA;IACzB,mCAAiB,CAAA;AACnB,CAAC,EAfW,cAAc,8BAAd,cAAc,QAezB;AAED;;;GAGG;AACH,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,mEAAoB,CAAA;IACpB,uDAAc,CAAA;IACd,yDAAe,CAAA;IACf,2DAAgB,CAAA;IAChB,wDAAc,CAAA;IACd,0DAAe,CAAA;IACf,oDAAY,CAAA;IACZ,0DAAe,CAAA;IACf,0DAAe,CAAA;IACf,wDAAc,CAAA;IACd,8DAAiB,CAAA;AACnB,CAAC,EAZW,aAAa,6BAAb,aAAa,QAYxB;AAED;;;GAGG;AACH,IAAY,4BAiBX;AAjBD,WAAY,4BAA4B;IACtC,mFAAsB,CAAA;IACtB,6FAA2B,CAAA;IAC3B,+GAAoC,CAAA;IACpC,6FAA2B,CAAA;IAC3B,0GAAiC,CAAA;IACjC,wFAA+E,CAAA;IAC/E,0GAAiC,CAAA;IACjC,oGAA8B,CAAA;IAC9B,qHAAsC,CAAA;IACtC,+GAAmC,CAAA;IACnC,6GAAkC,CAAA;IAClC,+FAAoH,CAAA;IACpH,kIAA6C,CAAA;IAC7C,kIAA6C,CAAA;IAC7C,4HAAuF,CAAA;IACvF,gFAAiE,CAAA;AACnE,CAAC,EAjBW,4BAA4B,4CAA5B,4BAA4B,QAiBvC;AAED;;;GAGG;AACH,IAAY,eAWX;AAXD,WAAY,eAAe;IACzB,2EAA2E;IAC3E,+DAAS,CAAA;IACT,4DAA4D;IAC5D,uDAAK,CAAA;IACL,iEAAiE;IACjE,uFAAqB,CAAA;IACrB,uBAAuB;IACvB,yDAAM,CAAA;IACN,gDAAgD;IAChD,qFAAoB,CAAA;AACtB,CAAC,EAXW,eAAe,+BAAf,eAAe,QAW1B;AAED;;;GAGG;AACH,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,yDAAU,CAAA;IACV,yDAAU,CAAA;AACZ,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAED,YAAY;AACZ,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6DAAW,CAAA;IACX,qDAAO,CAAA;IACP,yDAAS,CAAA;AACX,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB;AAED,YAAY;AACZ,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,+DAAW,CAAA;IACX,iEAAY,CAAA;AACd,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B;AAED,sEAAsE;AAEtE;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,QAAgB;IACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC7C,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,UAAU,CAAC,CAAC,OAAO,eAAe,CAAC,QAAQ,CAAC;QACjD,KAAK,MAAM,CAAC,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC;QACzC,KAAK,QAAQ,CAAC,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC;IAC/C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,QAAyB;IAC7D,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,UAAU,CAAC;QACjD,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACzC,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC7C,OAAO,CAAC,CAAC,MAAM,IAAI,0BAAc,CAAC,2BAAe,CAAC,eAAe,EAAE,+CAA+C,CAAC,CAAC;IACtH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3B,KAAK,aAAa,CAAC,CAAC,OAAO,cAAc,CAAC,WAAW,CAAC;QACtD,KAAK,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC;QAC1C,KAAK,aAAa,CAAC,CAAC,OAAO,cAAc,CAAC,WAAW,CAAC;QACtD,KAAK,sBAAsB,CAAC,CAAC,OAAO,cAAc,CAAC,oBAAoB,CAAC;QACxE,KAAK,mBAAmB,CAAC,CAAC,OAAO,cAAc,CAAC,iBAAiB,CAAC;QAClE,KAAK,aAAa,CAAC,CAAC,OAAO,cAAc,CAAC,WAAW,CAAC;QACtD,KAAK,gBAAgB,CAAC,CAAC,OAAO,cAAc,CAAC,cAAc,CAAC;QAC5D,KAAK,kBAAkB,CAAC,CAAC,OAAO,cAAc,CAAC,gBAAgB,CAAC;QAChE,KAAK,MAAM,CAAC,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC;QACxC,KAAK,cAAc,CAAC,CAAC,OAAO,cAAc,CAAC,YAAY,CAAC;QACxD,KAAK,UAAU,CAAC,CAAC,OAAO,cAAc,CAAC,QAAQ,CAAC;QAChD,KAAK,YAAY,CAAC,CAAC,OAAO,cAAc,CAAC,UAAU,CAAC;QACpD,KAAK,YAAY,CAAC,CAAC,OAAO,cAAc,CAAC,UAAU,CAAC;QACpD,KAAK,QAAQ,CAAC,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,KAAqB;IAC1D,OAAO,KAAK,CAAC,CAAC,eAAe;AAC/B,CAAC;AAED,gBAAgB;AAChB,SAAgB,yBAAyB,CAAC,KAAqB;IAC7D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,OAAO,eAAe,CAAC;QACxD,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,eAAe,CAAC;QAClD,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,OAAO,eAAe,CAAC;QACxD,KAAK,cAAc,CAAC,oBAAoB,CAAC,CAAC,OAAO,wBAAwB,CAAC;QAC1E,KAAK,cAAc,CAAC,iBAAiB,CAAC,CAAC,OAAO,qBAAqB,CAAC;QACpE,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,OAAO,eAAe,CAAC;QACxD,KAAK,cAAc,CAAC,cAAc,CAAC,CAAC,OAAO,gBAAgB,CAAC;QAC5D,KAAK,cAAc,CAAC,gBAAgB,CAAC,CAAC,OAAO,kBAAkB,CAAC;QAChE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACxC,KAAK,cAAc,CAAC,YAAY,CAAC,CAAC,OAAO,cAAc,CAAC;QACxD,KAAK,cAAc,CAAC,QAAQ,CAAC,CAAC,OAAO,UAAU,CAAC;QAChD,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC,OAAO,YAAY,CAAC;QACpD,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC,OAAO,YAAY,CAAC;QACpD,KAAK,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC5C,OAAO,CAAC,CAAC,MAAM,IAAI,0BAAc,CAAC,2BAAe,CAAC,qBAAqB,EAAE,8CAA8C,CAAC,CAAC;IAC3H,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3B,KAAK,QAAQ,CAAC,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC;QAC3C,KAAK,SAAS,CAAC;QAAC,KAAK,MAAM,CAAC,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC;QAC1D,KAAK,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,QAAQ,CAAC;QAC/C,KAAK,QAAQ,CAAC,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC;QAC3C,KAAK,KAAK,CAAC,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC;QACzC,KAAK,MAAM,CAAC,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC;QACvC,KAAK,SAAS,CAAC,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC;QAC7C,KAAK,SAAS,CAAC,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC;QAC7C,KAAK,QAAQ,CAAC,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC;QAC3C,KAAK,mCAAmC,CAAC,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC;IAC3E,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,YAAY;AACZ,SAAgB,qBAAqB,CAAC,IAAmB;IACvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3C,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC7C,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAC,OAAO,UAAU,CAAC;QAC/C,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3C,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;QACzC,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,mCAAmC,CAAC;QACzE,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACvC,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC7C,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC7C,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3C,OAAO,CAAC,CAAC,MAAM,IAAI,0BAAc,CAAC,2BAAe,CAAC,oBAAoB,EAAE,6CAA6C,CAAC,CAAC;IACzH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,iCAAiC,CAAC,IAAY;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC/B,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YACxB,OAAO;QAET,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpC,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,QAAQ;gBACX,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC;gBACpE,MAAM;YACR,KAAK,aAAa;gBAChB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,WAAW,CAAC;gBACzE,MAAM;YACR,KAAK,sBAAsB;gBACzB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,oBAAoB,CAAC;gBAClF,MAAM;YACR,KAAK,aAAa;gBAChB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,WAAW,CAAC;gBACzE,MAAM;YACR,KAAK,mBAAmB;gBACtB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,iBAAiB,CAAC;gBAC/E,MAAM;YACR,KAAK,UAAU;gBACb,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,QAAQ,CAAC;gBACtE,MAAM;YACR,KAAK,mBAAmB;gBACtB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,iBAAiB,CAAC;gBAC/E,MAAM;YACR,KAAK,gBAAgB;gBACnB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,cAAc,CAAC;gBAC5E,MAAM;YACR,KAAK,eAAe;gBAClB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,sBAAsB,CAAC;gBACpF,MAAM;YACR,KAAK,qBAAqB;gBACxB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,mBAAmB,CAAC;gBACjF,MAAM;YACR,KAAK,oBAAoB;gBACvB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,kBAAkB,CAAC;gBAChF,MAAM;YACR,KAAK,aAAa;gBAChB,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,WAAW,CAAC;gBACzE,MAAM;YACR,KAAK,8BAA8B;gBACjC,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,4BAA4B,CAAC;gBAC1F,MAAM;YACR,KAAK,8BAA8B;gBACjC,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,4BAA4B,CAAC;gBAC1F,MAAM;YACR,KAAK,2BAA2B;gBAC9B,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,yBAAyB,CAAC;gBACvF,MAAM;YACR,KAAK,KAAK;gBACR,aAAa,GAAG,aAAa,GAAG,4BAA4B,CAAC,GAAG,CAAC;gBACjE,MAAM;YACR;gBACE,MAAM,IAAI,0BAAc,CAAC,2BAAe,CAAC,oBAAoB,EAAE,GAAG,SAAS,qDAAqD,CAAC,CAAC;QACtI,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,aAA6C,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,IAAkC;IAEtE,MAAM,sBAAsB,GAAG,CAAC,WAAyC,EAAE,SAAuC,EAAE,EAAE;QACpH,OAAO,CAAC,WAAW,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,GAAG,EAAE,IAAI,CAAC;QAChE,OAAO,6BAAiB,CAAC,iBAAiB,CAAC;IAE7C,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;QAClC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAC5B,aAAa,GAAG,GAAG,CAAC;;YAEpB,aAAa,GAAG,GAAG,aAAa,KAAK,GAAG,EAAE,CAAC;IAC/C,CAAC,CAAC;IAEF,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC;QACnE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAExB,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,QAAQ,EAAE,IAAI,CAAC;QACrE,WAAW,CAAC,UAAU,CAAC,CAAC;SACrB,CAAC;QACJ,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,WAAW,EAAE,IAAI,CAAC;YACxE,WAAW,CAAC,6BAAiB,CAAC,yBAAyB,CAAC,CAAC;QAC3D,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,oBAAoB,EAAE,IAAI,CAAC;YACjF,WAAW,CAAC,6BAAiB,CAAC,kCAAkC,CAAC,CAAC;QACpE,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,WAAW,EAAE,IAAI,CAAC;YACxE,WAAW,CAAC,6BAAiB,CAAC,yBAAyB,CAAC,CAAC;QAC3D,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,iBAAiB,EAAE,IAAI,CAAC;YAC9E,WAAW,CAAC,6BAAiB,CAAC,+BAA+B,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,WAAW,EAAE,IAAI,CAAC;QACxE,WAAW,CAAC,6BAAiB,CAAC,yBAAyB,CAAC,CAAC;SACtD,CAAC;QACJ,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,iBAAiB,EAAE,IAAI,CAAC;YAC9E,WAAW,CAAC,6BAAiB,CAAC,+BAA+B,CAAC,CAAC;QACjE,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,cAAc,EAAE,IAAI,CAAC;YAC3E,WAAW,CAAC,6BAAiB,CAAC,4BAA4B,CAAC,CAAC;QAC9D,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,sBAAsB,EAAE,IAAI,CAAC;YACnF,WAAW,CAAC,6BAAiB,CAAC,oCAAoC,CAAC,CAAC;QACtE,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,mBAAmB,EAAE,IAAI,CAAC;YAChF,WAAW,CAAC,6BAAiB,CAAC,iCAAiC,CAAC,CAAC;QACnE,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,kBAAkB,EAAE,IAAI,CAAC;YAC/E,WAAW,CAAC,6BAAiB,CAAC,gCAAgC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,yBAAyB,EAAE,IAAI,CAAC;QACtF,WAAW,CAAC,6BAAiB,CAAC,uCAAuC,CAAC,CAAC;SACpE,CAAC;QACJ,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,4BAA4B,EAAE,IAAI,CAAC;YACzF,WAAW,CAAC,6BAAiB,CAAC,0CAA0C,CAAC,CAAC;QAC5E,IAAI,sBAAsB,CAAC,4BAA4B,CAAC,4BAA4B,EAAE,IAAI,CAAC;YACzF,WAAW,CAAC,6BAAiB,CAAC,0CAA0C,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,YAAY;AACZ,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,QAAQ,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1B,KAAK,QAAQ,CAAC,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC;QAC7C,KAAK,QAAQ,CAAC,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC;IAC/C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,YAAY;AACZ,SAAgB,uBAAuB,CAAC,GAAoB;IAC1D,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,6BAAiB,CAAC,uBAAuB,CAAC;QAC9E,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,6BAAiB,CAAC,uBAAuB,CAAC;QAC9E,OAAO,CAAC,CAAC,MAAM,IAAI,0BAAc,CAAC,2BAAe,CAAC,sBAAsB,EAAE,+CAA+C,CAAC,CAAC;IAC7H,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/B,KAAK,aAAa,CAAC,CAAC,OAAO,YAAY,CAAC,WAAW,CAAC;QACpD,KAAK,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC;QAC5C,KAAK,WAAW,CAAC,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC;IAClD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,YAAY;AACZ,SAAgB,gBAAgB,CAAC,QAAsB;IACrD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,WAAW,CAAC;QAChD,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5C,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC,OAAO,aAAa,CAAC;QACpD,OAAO,CAAC,CAAC,MAAM,IAAI,0BAAc,CAAC,2BAAe,CAAC,eAAe,EAAE,wCAAwC,CAAC,CAAC;IAC/G,CAAC;AACH,CAAC;AAED,YAAY;AACZ,SAAgB,sBAAsB,CAAC,SAAiB;IACtD,QAAQ,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAChC,KAAK,SAAS,CAAC,CAAC,OAAO,iBAAiB,CAAC,OAAO,CAAC;QACjD,KAAK,UAAU,CAAC,CAAC,OAAO,iBAAiB,CAAC,QAAQ,CAAC;IACrD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,YAAY;AACZ,SAAgB,yBAAyB,CAAC,SAA4B;IACpE,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QACjD,KAAK,iBAAiB,CAAC,QAAQ,CAAC,CAAC,OAAO,UAAU,CAAC;QACnD,OAAO,CAAC,CAAC,MAAM,IAAI,0BAAc,CAAC,2BAAe,CAAC,wBAAwB,EAAE,iDAAiD,CAAC,CAAC;IACjI,CAAC;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { ECStringConstants } from \"./Constants\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"./Exception\";\r\n\r\nexport { PropertyType } from \"./PropertyTypes\";\r\n\r\n// NEEDSWORK: This shim is currently required to use async iterators. See https://github.com/Microsoft/TypeScript/issues/14151\r\nif (!(Symbol as any).asyncIterator) {\r\n (Symbol as any).asyncIterator = Symbol.for(\"Symbol.asyncIterator\");\r\n}\r\n\r\n/** @beta */\r\nexport enum ECClassModifier {\r\n None,\r\n Abstract,\r\n Sealed,\r\n}\r\n\r\n/**\r\n * An enumeration that has all the schema item type names as values\r\n * @beta */\r\nexport enum SchemaItemType {\r\n EntityClass = \"EntityClass\",\r\n Mixin = \"Mixin\",\r\n StructClass = \"StructClass\",\r\n CustomAttributeClass = \"CustomAttributeClass\",\r\n RelationshipClass = \"RelationshipClass\",\r\n Enumeration = \"Enumeration\",\r\n KindOfQuantity = \"KindOfQuantity\",\r\n PropertyCategory = \"PropertyCategory\",\r\n Unit = \"Unit\",\r\n InvertedUnit = \"InvertedUnit\",\r\n Constant = \"Constant\",\r\n Phenomenon = \"Phenomenon\",\r\n UnitSystem = \"UnitSystem\",\r\n Format = \"Format\",\r\n}\r\n\r\n/**\r\n * Primitive data types for ECProperties.\r\n * @beta\r\n */\r\nexport enum PrimitiveType {\r\n Uninitialized = 0x00,\r\n Binary = 0x101,\r\n Boolean = 0x201,\r\n DateTime = 0x301,\r\n Double = 0x401,\r\n Integer = 0x501,\r\n Long = 0x601,\r\n Point2d = 0x701,\r\n Point3d = 0x801,\r\n String = 0x901,\r\n IGeometry = 0xa01,\r\n}\r\n\r\n/**\r\n * Defines the valid CustomAttribute container types.\r\n * @beta\r\n */\r\nexport enum CustomAttributeContainerType {\r\n Schema = (0x0001 << 0),\r\n EntityClass = (0x0001 << 1),\r\n CustomAttributeClass = (0x0001 << 2),\r\n StructClass = (0x0001 << 3),\r\n RelationshipClass = (0x0001 << 4),\r\n AnyClass = EntityClass | CustomAttributeClass | StructClass | RelationshipClass,\r\n PrimitiveProperty = (0x0001 << 5),\r\n StructProperty = (0x0001 << 6),\r\n PrimitiveArrayProperty = (0x0001 << 7),\r\n StructArrayProperty = (0x0001 << 8),\r\n NavigationProperty = (0x0001 << 9),\r\n AnyProperty = PrimitiveProperty | StructProperty | PrimitiveArrayProperty | StructArrayProperty | NavigationProperty,\r\n SourceRelationshipConstraint = (0x0001 << 10),\r\n TargetRelationshipConstraint = (0x0001 << 11),\r\n AnyRelationshipConstraint = SourceRelationshipConstraint | TargetRelationshipConstraint,\r\n Any = Schema | AnyClass | AnyProperty | AnyRelationshipConstraint,\r\n}\r\n\r\n/**\r\n * Defines what sort of match should be used when locating a schema.\r\n * @beta\r\n */\r\nexport enum SchemaMatchType {\r\n // Find exact VersionRead, VersionWrite, VersionMinor match as well as Data\r\n Identical,\r\n // Find exact VersionRead, VersionWrite, VersionMinor match.\r\n Exact,\r\n // Find latest version with matching VersionRead and VersionWrite\r\n LatestWriteCompatible,\r\n // Find latest version.\r\n Latest,\r\n // Find latest version with matching VersionRead\r\n LatestReadCompatible,\r\n}\r\n\r\n/**\r\n * Identifer for an ECRelationshipConstraint. Used to determine the side of the relationship the constraint is representing.\r\n * @beta\r\n */\r\nexport enum RelationshipEnd {\r\n Source = 0,\r\n Target = 1,\r\n}\r\n\r\n/** @beta */\r\nexport enum StrengthType {\r\n Referencing,\r\n Holding,\r\n Embedding,\r\n}\r\n\r\n/** @beta */\r\nexport enum StrengthDirection {\r\n Forward = 1,\r\n Backward = 2,\r\n}\r\n\r\n// Helper methods for going to/from string for the above Enumerations.\r\n\r\n/**\r\n * Parses the provided string into an ECClassModifier if the string is a valid modifier.\r\n * @param modifier The modifier string to parse.\r\n * @beta\r\n */\r\nexport function parseClassModifier(modifier: string): ECClassModifier | undefined {\r\n const lowerModifier = modifier.toLowerCase();\r\n switch (lowerModifier) {\r\n case \"abstract\": return ECClassModifier.Abstract;\r\n case \"none\": return ECClassModifier.None;\r\n case \"sealed\": return ECClassModifier.Sealed;\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * @return A string representing the provided ECClassModifier. If the modifier is not valid, an empty string is returned.\r\n * @beta\r\n */\r\nexport function classModifierToString(modifier: ECClassModifier): string {\r\n switch (modifier) {\r\n case ECClassModifier.Abstract: return \"Abstract\";\r\n case ECClassModifier.None: return \"None\";\r\n case ECClassModifier.Sealed: return \"Sealed\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidModifier, \"An invalid ECClassModifier has been provided.\");\r\n }\r\n}\r\n\r\n/**\r\n * Tries to parse the given string as one of the 8 schema item types.\r\n * @param type The schema item type string to parse.\r\n * @returns A valid SchemaItemType if successfully parsed. Otherwise, undefined if the provided string is not a valid SchemaItemType.\r\n * @beta\r\n */\r\nexport function parseSchemaItemType(type: string): SchemaItemType | undefined {\r\n switch (type.toLowerCase()) {\r\n case \"entityclass\": return SchemaItemType.EntityClass;\r\n case \"mixin\": return SchemaItemType.Mixin;\r\n case \"structclass\": return SchemaItemType.StructClass;\r\n case \"customattributeclass\": return SchemaItemType.CustomAttributeClass;\r\n case \"relationshipclass\": return SchemaItemType.RelationshipClass;\r\n case \"enumeration\": return SchemaItemType.Enumeration;\r\n case \"kindofquantity\": return SchemaItemType.KindOfQuantity;\r\n case \"propertycategory\": return SchemaItemType.PropertyCategory;\r\n case \"unit\": return SchemaItemType.Unit;\r\n case \"invertedunit\": return SchemaItemType.InvertedUnit;\r\n case \"constant\": return SchemaItemType.Constant;\r\n case \"phenomenon\": return SchemaItemType.Phenomenon;\r\n case \"unitsystem\": return SchemaItemType.UnitSystem;\r\n case \"format\": return SchemaItemType.Format;\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Converts a valid SchemaItemType to a display string.\r\n * @param value The SchemaItemType to stringify.\r\n * @return A string representing the provided SchemaItemType. If the type is not valid, an empty string is returned.\r\n * @beta\r\n * @deprecated in 4.6.0 SchemaItemType is a string enum so just use it directly\r\n */\r\nexport function schemaItemTypeToString(value: SchemaItemType): string {\r\n return value; // TODO: Remove\r\n}\r\n\r\n/** @internal */\r\nexport function schemaItemTypeToXmlString(value: SchemaItemType): string {\r\n switch (value) {\r\n case SchemaItemType.EntityClass: return \"ECEntityClass\";\r\n case SchemaItemType.Mixin: return \"ECEntityClass\";\r\n case SchemaItemType.StructClass: return \"ECStructClass\";\r\n case SchemaItemType.CustomAttributeClass: return \"ECCustomAttributeClass\";\r\n case SchemaItemType.RelationshipClass: return \"ECRelationshipClass\";\r\n case SchemaItemType.Enumeration: return \"ECEnumeration\";\r\n case SchemaItemType.KindOfQuantity: return \"KindOfQuantity\";\r\n case SchemaItemType.PropertyCategory: return \"PropertyCategory\";\r\n case SchemaItemType.Unit: return \"Unit\";\r\n case SchemaItemType.InvertedUnit: return \"InvertedUnit\";\r\n case SchemaItemType.Constant: return \"Constant\";\r\n case SchemaItemType.Phenomenon: return \"Phenomenon\";\r\n case SchemaItemType.UnitSystem: return \"UnitSystem\";\r\n case SchemaItemType.Format: return \"Format\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidSchemaItemType, \"An invalid SchemaItemType has been provided.\");\r\n }\r\n}\r\n\r\n/**\r\n * Tries to parse the given string as one of the 10 primitive types.\r\n * @param type The primitive type string to parse.\r\n * @returns A valid PrimitiveType if successfully parsed, or undefined if the provided string is not a valid PrimitiveType.\r\n * @beta\r\n */\r\nexport function parsePrimitiveType(type: string): PrimitiveType | undefined {\r\n switch (type.toLowerCase()) {\r\n case \"binary\": return PrimitiveType.Binary;\r\n case \"boolean\": case \"bool\": return PrimitiveType.Boolean;\r\n case \"datetime\": return PrimitiveType.DateTime;\r\n case \"double\": return PrimitiveType.Double;\r\n case \"int\": return PrimitiveType.Integer;\r\n case \"long\": return PrimitiveType.Long;\r\n case \"point2d\": return PrimitiveType.Point2d;\r\n case \"point3d\": return PrimitiveType.Point3d;\r\n case \"string\": return PrimitiveType.String;\r\n case \"bentley.geometry.common.igeometry\": return PrimitiveType.IGeometry;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/** @beta */\r\nexport function primitiveTypeToString(type: PrimitiveType): string {\r\n switch (type) {\r\n case PrimitiveType.Binary: return \"binary\";\r\n case PrimitiveType.Boolean: return \"boolean\";\r\n case PrimitiveType.DateTime: return \"dateTime\";\r\n case PrimitiveType.Double: return \"double\";\r\n case PrimitiveType.Integer: return \"int\";\r\n case PrimitiveType.IGeometry: return \"Bentley.Geometry.Common.IGeometry\";\r\n case PrimitiveType.Long: return \"long\";\r\n case PrimitiveType.Point2d: return \"point2d\";\r\n case PrimitiveType.Point3d: return \"point3d\";\r\n case PrimitiveType.String: return \"string\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidPrimitiveType, \"An invalid PrimitiveType has been provided.\");\r\n }\r\n}\r\n\r\n/**\r\n * Parses the given string into the appropriate CustomAttributeContainerType if the string is valid.\r\n * @param type The container type string to parse.\r\n * @beta\r\n */\r\nexport function parseCustomAttributeContainerType(type: string): CustomAttributeContainerType | undefined {\r\n const typeTokens = type.split(/[|,;]+/);\r\n\r\n let containerType = 0;\r\n\r\n typeTokens.forEach((typeToken) => {\r\n typeToken = typeToken.trim();\r\n if (typeToken.length === 0)\r\n return;\r\n\r\n typeToken = typeToken.toLowerCase();\r\n switch (typeToken) {\r\n case \"schema\":\r\n containerType = containerType | CustomAttributeContainerType.Schema;\r\n break;\r\n case \"entityclass\":\r\n containerType = containerType | CustomAttributeContainerType.EntityClass;\r\n break;\r\n case \"customattributeclass\":\r\n containerType = containerType | CustomAttributeContainerType.CustomAttributeClass;\r\n break;\r\n case \"structclass\":\r\n containerType = containerType | CustomAttributeContainerType.StructClass;\r\n break;\r\n case \"relationshipclass\":\r\n containerType = containerType | CustomAttributeContainerType.RelationshipClass;\r\n break;\r\n case \"anyclass\":\r\n containerType = containerType | CustomAttributeContainerType.AnyClass;\r\n break;\r\n case \"primitiveproperty\":\r\n containerType = containerType | CustomAttributeContainerType.PrimitiveProperty;\r\n break;\r\n case \"structproperty\":\r\n containerType = containerType | CustomAttributeContainerType.StructProperty;\r\n break;\r\n case \"arrayproperty\":\r\n containerType = containerType | CustomAttributeContainerType.PrimitiveArrayProperty;\r\n break;\r\n case \"structarrayproperty\":\r\n containerType = containerType | CustomAttributeContainerType.StructArrayProperty;\r\n break;\r\n case \"navigationproperty\":\r\n containerType = containerType | CustomAttributeContainerType.NavigationProperty;\r\n break;\r\n case \"anyproperty\":\r\n containerType = containerType | CustomAttributeContainerType.AnyProperty;\r\n break;\r\n case \"sourcerelationshipconstraint\":\r\n containerType = containerType | CustomAttributeContainerType.SourceRelationshipConstraint;\r\n break;\r\n case \"targetrelationshipconstraint\":\r\n containerType = containerType | CustomAttributeContainerType.TargetRelationshipConstraint;\r\n break;\r\n case \"anyrelationshipconstraint\":\r\n containerType = containerType | CustomAttributeContainerType.AnyRelationshipConstraint;\r\n break;\r\n case \"any\":\r\n containerType = containerType | CustomAttributeContainerType.Any;\r\n break;\r\n default:\r\n throw new ECObjectsError(ECObjectsStatus.InvalidContainerType, `${typeToken} is not a valid CustomAttributeContainerType value.`);\r\n }\r\n });\r\n\r\n return containerType as CustomAttributeContainerType;\r\n}\r\n\r\n/**\r\n * Creates a string representing a valid CustomAttributeContainerType.\r\n * @param value The CustomAttributeContainerType to stringify.\r\n * @return A string representing the provided CustomAttributeContainerType. If the type is not valid, an empty string is returned.\r\n * @beta\r\n */\r\nexport function containerTypeToString(type: CustomAttributeContainerType): string {\r\n\r\n const testContainerTypeValue = (compareType: CustomAttributeContainerType, otherType: CustomAttributeContainerType) => {\r\n return (compareType === (compareType & otherType));\r\n };\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.Any, type))\r\n return ECStringConstants.CONTAINERTYPE_ANY;\r\n\r\n let containerType = \"\";\r\n const setOrAppend = (val: string) => {\r\n if (containerType.length === 0)\r\n containerType = val;\r\n else\r\n containerType = `${containerType}, ${val}`;\r\n };\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.Schema, type))\r\n setOrAppend(\"Schema\");\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.AnyClass, type))\r\n setOrAppend(\"AnyClass\");\r\n else {\r\n if (testContainerTypeValue(CustomAttributeContainerType.EntityClass, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_ENTITYCLASS);\r\n if (testContainerTypeValue(CustomAttributeContainerType.CustomAttributeClass, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_CUSTOMATTRIBUTECLASS);\r\n if (testContainerTypeValue(CustomAttributeContainerType.StructClass, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_STRUCTCLASS);\r\n if (testContainerTypeValue(CustomAttributeContainerType.RelationshipClass, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_RELATIONSHIPCLASS);\r\n }\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.AnyProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_ANYPROPERTY);\r\n else {\r\n if (testContainerTypeValue(CustomAttributeContainerType.PrimitiveProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_PRIMITIVEPROPERTY);\r\n if (testContainerTypeValue(CustomAttributeContainerType.StructProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_STRUCTPROPERTY);\r\n if (testContainerTypeValue(CustomAttributeContainerType.PrimitiveArrayProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_PRIMITIVEARRAYPROPERTY);\r\n if (testContainerTypeValue(CustomAttributeContainerType.StructArrayProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_STRUCTARRAYPROPERTY);\r\n if (testContainerTypeValue(CustomAttributeContainerType.NavigationProperty, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_NAVIGATIONPROPERTY);\r\n }\r\n\r\n if (testContainerTypeValue(CustomAttributeContainerType.AnyRelationshipConstraint, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_ANYRELATIONSHIPCONSTRAINT);\r\n else {\r\n if (testContainerTypeValue(CustomAttributeContainerType.SourceRelationshipConstraint, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_SOURCERELATIONSHIPCONSTRAINT);\r\n if (testContainerTypeValue(CustomAttributeContainerType.TargetRelationshipConstraint, type))\r\n setOrAppend(ECStringConstants.CONTAINERTYPE_TARGETRELATIONSHIPCONSTRAINT);\r\n }\r\n\r\n return containerType;\r\n}\r\n\r\n/** @beta */\r\nexport function parseRelationshipEnd(end: string): RelationshipEnd | undefined {\r\n switch (end.toLowerCase()) {\r\n case \"source\": return RelationshipEnd.Source;\r\n case \"target\": return RelationshipEnd.Target;\r\n }\r\n return undefined;\r\n}\r\n\r\n/** @beta */\r\nexport function relationshipEndToString(end: RelationshipEnd): string {\r\n switch (end) {\r\n case RelationshipEnd.Source: return ECStringConstants.RELATIONSHIP_END_SOURCE;\r\n case RelationshipEnd.Target: return ECStringConstants.RELATIONSHIP_END_TARGET;\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidRelationshipEnd, `An invalid RelationshipEnd has been provided.`);\r\n }\r\n}\r\n\r\n/**\r\n * Takes a string representing a StrengthType, will parse it and return the corresponding StrengthType.\r\n * @throws ECObjectsStatus.InvalidStrength if the provided string that is not valid\r\n * @param strength\r\n * @beta\r\n */\r\nexport function parseStrength(strength: string): StrengthType | undefined {\r\n switch (strength.toLowerCase()) {\r\n case \"referencing\": return StrengthType.Referencing;\r\n case \"holding\": return StrengthType.Holding;\r\n case \"embedding\": return StrengthType.Embedding;\r\n }\r\n return undefined;\r\n}\r\n\r\n/** @beta */\r\nexport function strengthToString(strength: StrengthType): string {\r\n switch (strength) {\r\n case StrengthType.Embedding: return \"Embedding\";\r\n case StrengthType.Holding: return \"Holding\";\r\n case StrengthType.Referencing: return \"Referencing\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidStrength, `An invalid Strength has been provided.`);\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport function parseStrengthDirection(direction: string): StrengthDirection | undefined {\r\n switch (direction.toLowerCase()) {\r\n case \"forward\": return StrengthDirection.Forward;\r\n case \"backward\": return StrengthDirection.Backward;\r\n }\r\n return undefined;\r\n}\r\n\r\n/** @beta */\r\nexport function strengthDirectionToString(direction: StrengthDirection): string {\r\n switch (direction) {\r\n case StrengthDirection.Forward: return \"Forward\";\r\n case StrengthDirection.Backward: return \"Backward\";\r\n default: throw new ECObjectsError(ECObjectsStatus.InvalidStrengthDirection, `An invalid StrengthDirection has been provided.`);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Class.js","sourceRoot":"","sources":["../../../src/Metadata/Class.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { DelayedPromiseWithProps } from \"../DelayedPromise\";\r\nimport { ClassProps } from \"../Deserialization/JsonProps\";\r\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\r\nimport { classModifierToString, ECClassModifier, parseClassModifier, parsePrimitiveType, PrimitiveType, SchemaItemType } from \"../ECObjects\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\r\nimport { AnyClass, LazyLoadedECClass } from \"../Interfaces\";\r\nimport { SchemaItemKey, SchemaKey } from \"../SchemaKey\";\r\nimport { CustomAttribute, CustomAttributeContainerProps, CustomAttributeSet, serializeCustomAttributes } from \"./CustomAttribute\";\r\nimport { Enumeration } from \"./Enumeration\";\r\nimport {\r\n EnumerationArrayProperty, EnumerationProperty, PrimitiveArrayProperty, PrimitiveProperty, Property, StructArrayProperty, StructProperty,\r\n} from \"./Property\";\r\nimport { Schema } from \"./Schema\";\r\nimport { SchemaItem } from \"./SchemaItem\";\r\n\r\n/**\r\n * A common abstract class for all of the ECClass types.\r\n * @beta\r\n */\r\nexport abstract class ECClass extends SchemaItem implements CustomAttributeContainerProps {\r\n protected _modifier: ECClassModifier;\r\n protected _baseClass?: LazyLoadedECClass;\r\n protected _properties?: Map<string, Property>;\r\n private _customAttributes?: Map<string, CustomAttribute>;\r\n private _mergedPropertyCache?: Property[];\r\n\r\n public get modifier() { return this._modifier; }\r\n public get baseClass(): LazyLoadedECClass | undefined { return this._baseClass; }\r\n public set baseClass(baseClass: LazyLoadedECClass | undefined) { this._baseClass = baseClass; }\r\n public get properties(): IterableIterator<Property> | undefined { return this._properties?.values(); }\r\n public get customAttributes(): CustomAttributeSet | undefined { return this._customAttributes; }\r\n\r\n constructor(schema: Schema, name: string, modifier?: ECClassModifier) {\r\n super(schema, name);\r\n\r\n if (modifier)\r\n this._modifier = modifier;\r\n else\r\n this._modifier = ECClassModifier.None;\r\n }\r\n\r\n /**\r\n * Convenience method for adding an already loaded ECProperty used by create*Property methods.\r\n * @param prop The property to add.\r\n * @return The property that was added.\r\n */\r\n protected addProperty<T extends Property>(prop: T): T {\r\n if (!this._properties)\r\n this._properties = new Map<string, Property>();\r\n\r\n this._properties.set(prop.name.toUpperCase(), prop);\r\n return prop;\r\n }\r\n\r\n /**\r\n * Deletes a property from within this class.\r\n * @param name The property name to delete, lookup is case-insensitive\r\n * @alpha\r\n */\r\n protected async deleteProperty(name: string): Promise<void> {\r\n if (this._properties) {\r\n const property = await this.getProperty(name);\r\n if (property)\r\n this._properties.delete(name.toUpperCase());\r\n }\r\n }\r\n\r\n /**\r\n * Deletes a property from within this class.\r\n * @param name The property name to delete, lookup is case-insensitive\r\n * @alpha\r\n */\r\n protected deletePropertySync(name: string): void {\r\n if (this._properties) {\r\n const property = this.getPropertySync(name);\r\n if (property)\r\n this._properties.delete(name.toUpperCase());\r\n }\r\n }\r\n\r\n public getBaseClassSync(): ECClass | undefined {\r\n if (!this.baseClass) {\r\n return undefined;\r\n }\r\n\r\n return this.schema.lookupItemSync<ECClass>(this.baseClass);\r\n }\r\n\r\n /**\r\n * Searches, case-insensitive, for a local ECProperty with the name provided.\r\n * @param name\r\n */\r\n public async getProperty(name: string, includeInherited: boolean = false): Promise<Property | undefined> {\r\n if (this._properties) {\r\n const upperKey = name.toUpperCase();\r\n const property = this._properties.get(upperKey);\r\n if (property)\r\n return property;\r\n }\r\n\r\n if (!includeInherited) {\r\n return undefined;\r\n }\r\n\r\n return this.getInheritedProperty(name);\r\n }\r\n\r\n /**\r\n * Searches, case-insensitive, for a local ECProperty with the name provided.\r\n * @param name\r\n */\r\n public getPropertySync(name: string, includeInherited: boolean = false): Property | undefined {\r\n if (this._properties) {\r\n const upperKey = name.toUpperCase();\r\n const property = this._properties.get(upperKey);\r\n if (property)\r\n return property;\r\n }\r\n\r\n if (!includeInherited) {\r\n return undefined;\r\n }\r\n\r\n return this.getInheritedPropertySync(name);\r\n }\r\n\r\n /**\r\n * Searches the base class, if one exists, for the property with the name provided.\r\n * @param name The name of the inherited property to find.\r\n */\r\n public async getInheritedProperty(name: string): Promise<Property | undefined> {\r\n if (this.baseClass) {\r\n const baseClassObj = await this.baseClass;\r\n return baseClassObj.getProperty(name, true);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Searches the base class, if one exists, for the property with the name provided.\r\n * @param name The name of the inherited property to find.\r\n */\r\n public getInheritedPropertySync(name: string): Property | undefined {\r\n const baseClassObj = this.getBaseClassSync();\r\n if (baseClassObj)\r\n return baseClassObj.getPropertySync(name, true);\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Creates a PrimitiveECProperty.\r\n * @param name The name of property to create.\r\n * @param primitiveType The primitive type of property to create. If not provided the default is PrimitiveType.Integer\r\n * @throws ECObjectsStatus DuplicateProperty: thrown if a property with the same name already exists in the class.\r\n */\r\n protected async createPrimitiveProperty(name: string, primitiveType: PrimitiveType): Promise<PrimitiveProperty>;\r\n protected async createPrimitiveProperty(name: string, primitiveType: Enumeration): Promise<EnumerationProperty>;\r\n protected async createPrimitiveProperty(name: string, primitiveType?: string | PrimitiveType | Enumeration): Promise<Property> {\r\n if (await this.getProperty(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n const propType = await this.loadPrimitiveType(primitiveType, this.schema);\r\n if (typeof (propType) === \"number\")\r\n return this.addProperty(new PrimitiveProperty(this, name, propType));\r\n\r\n return this.addProperty(new EnumerationProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));\r\n }\r\n\r\n /**\r\n * Creates a PrimitiveECProperty.\r\n * @param name The name of property to create.\r\n * @param primitiveType The primitive type of property to create. If not provided the default is PrimitiveType.Integer\r\n * @throws ECObjectsStatus DuplicateProperty: thrown if a property with the same name already exists in the class.\r\n */\r\n protected createPrimitivePropertySync(name: string, primitiveType: PrimitiveType): PrimitiveProperty;\r\n protected createPrimitivePropertySync(name: string, primitiveType: Enumeration): EnumerationProperty;\r\n protected createPrimitivePropertySync(name: string, primitiveType?: string | PrimitiveType | Enumeration): Property {\r\n if (this.getPropertySync(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n const propType = this.loadPrimitiveTypeSync(primitiveType, this.schema);\r\n if (typeof (propType) === \"number\")\r\n return this.addProperty(new PrimitiveProperty(this, name, propType));\r\n\r\n return this.addProperty(new EnumerationProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));\r\n }\r\n\r\n /**\r\n * Creates a PrimitiveArrayECProperty.\r\n * @param name The name of property to create.\r\n * @param primitiveType The primitive type of property to create. If not provided the default is PrimitiveType.Integer\r\n */\r\n protected async createPrimitiveArrayProperty(name: string, primitiveType: PrimitiveType): Promise<PrimitiveArrayProperty>;\r\n protected async createPrimitiveArrayProperty(name: string, primitiveType: Enumeration): Promise<EnumerationArrayProperty>;\r\n protected async createPrimitiveArrayProperty(name: string, primitiveType?: string | PrimitiveType | Enumeration): Promise<Property> {\r\n if (await this.getProperty(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n const propType = await this.loadPrimitiveType(primitiveType, this.schema);\r\n if (typeof (propType) === \"number\")\r\n return this.addProperty(new PrimitiveArrayProperty(this, name, propType));\r\n\r\n return this.addProperty(new EnumerationArrayProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));\r\n }\r\n\r\n /**\r\n * Creates a PrimitiveArrayECProperty.\r\n * @param name The name of property to create.\r\n * @param primitiveType The primitive type of property to create. If not provided the default is PrimitiveType.Integer\r\n */\r\n protected createPrimitiveArrayPropertySync(name: string, primitiveType: PrimitiveType): PrimitiveArrayProperty;\r\n protected createPrimitiveArrayPropertySync(name: string, primitiveType: Enumeration): EnumerationArrayProperty;\r\n protected createPrimitiveArrayPropertySync(name: string, primitiveType?: string | PrimitiveType | Enumeration): Property {\r\n if (this.getPropertySync(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n const propType = this.loadPrimitiveTypeSync(primitiveType, this.schema);\r\n if (typeof (propType) === \"number\")\r\n return this.addProperty(new PrimitiveArrayProperty(this, name, propType));\r\n\r\n return this.addProperty(new EnumerationArrayProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));\r\n }\r\n\r\n /**\r\n *\r\n * @param name The name of property to create.\r\n * @param structType The struct type of property to create.\r\n */\r\n protected async createStructProperty(name: string, structType: string | StructClass): Promise<StructProperty> {\r\n if (await this.getProperty(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n return this.addProperty(new StructProperty(this, name, await this.loadStructType(structType, this.schema)));\r\n }\r\n\r\n /**\r\n *\r\n * @param name The name of property to create.\r\n * @param structType The struct type of property to create.\r\n */\r\n protected createStructPropertySync(name: string, structType: string | StructClass): StructProperty {\r\n if (this.getPropertySync(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n return this.addProperty(new StructProperty(this, name, this.loadStructTypeSync(structType, this.schema)));\r\n }\r\n\r\n /**\r\n *\r\n * @param name\r\n * @param type\r\n */\r\n protected async createStructArrayProperty(name: string, structType: string | StructClass): Promise<StructArrayProperty> {\r\n if (await this.getProperty(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n return this.addProperty(new StructArrayProperty(this, name, await this.loadStructType(structType, this.schema)));\r\n }\r\n\r\n /**\r\n *\r\n * @param name\r\n * @param type\r\n */\r\n protected createStructArrayPropertySync(name: string, structType: string | StructClass): StructArrayProperty {\r\n if (this.getPropertySync(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n return this.addProperty(new StructArrayProperty(this, name, this.loadStructTypeSync(structType, this.schema)));\r\n }\r\n\r\n protected async loadStructType(structType: string | StructClass | undefined, schema: Schema): Promise<StructClass> {\r\n let correctType: StructClass | undefined;\r\n if (typeof (structType) === \"string\") {\r\n correctType = await schema.lookupItem<StructClass>(structType);\r\n } else\r\n correctType = structType;\r\n\r\n if (!correctType)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);\r\n\r\n return correctType;\r\n }\r\n\r\n protected loadStructTypeSync(structType: string | StructClass | undefined, schema: Schema): StructClass {\r\n let correctType: StructClass | undefined;\r\n if (typeof (structType) === \"string\") {\r\n correctType = schema.lookupItemSync<StructClass>(structType);\r\n } else\r\n correctType = structType;\r\n\r\n if (!correctType)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);\r\n\r\n return correctType;\r\n }\r\n\r\n protected async loadPrimitiveType(primitiveType: string | PrimitiveType | Enumeration | undefined, schema: Schema): Promise<PrimitiveType | Enumeration> {\r\n if (primitiveType === undefined)\r\n return PrimitiveType.Integer;\r\n\r\n if (typeof (primitiveType) === \"string\") {\r\n let resolvedType: (PrimitiveType | Enumeration | undefined) = parsePrimitiveType(primitiveType);\r\n if (!resolvedType) {\r\n resolvedType = await schema.lookupItem<Enumeration>(primitiveType);\r\n }\r\n\r\n if (resolvedType === undefined)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);\r\n\r\n // If resolvedType is a SchemaItem, make sure it is an Enumeration- if not, throw an error\r\n if (typeof (resolvedType) !== \"number\" && resolvedType.schemaItemType !== SchemaItemType.Enumeration)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);\r\n\r\n return resolvedType;\r\n }\r\n\r\n return primitiveType;\r\n }\r\n\r\n protected loadPrimitiveTypeSync(primitiveType: string | PrimitiveType | Enumeration | undefined, schema: Schema): PrimitiveType | Enumeration {\r\n if (primitiveType === undefined)\r\n return PrimitiveType.Integer;\r\n\r\n if (typeof (primitiveType) === \"string\") {\r\n let resolvedType: (PrimitiveType | Enumeration | undefined) = parsePrimitiveType(primitiveType);\r\n if (!resolvedType) {\r\n resolvedType = schema.lookupItemSync<Enumeration>(primitiveType);\r\n }\r\n\r\n if (resolvedType === undefined)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);\r\n\r\n return resolvedType;\r\n }\r\n\r\n return primitiveType;\r\n }\r\n\r\n /**\r\n * Save this Classes properties to an object for serializing to JSON.\r\n * @param standalone Serialization includes only this object (as opposed to the full schema).\r\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\r\n */\r\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): ClassProps {\r\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\r\n const isMixin = SchemaItemType.Mixin === this.schemaItemType;\r\n const isRelationship = SchemaItemType.RelationshipClass === this.schemaItemType;\r\n if (!isMixin && (ECClassModifier.None !== this.modifier || isRelationship))\r\n schemaJson.modifier = classModifierToString(this.modifier);\r\n if (this.baseClass !== undefined)\r\n schemaJson.baseClass = this.baseClass.fullName;\r\n if (this._properties !== undefined && this._properties.size > 0)\r\n schemaJson.properties = [...this.properties!].map((prop) => prop.toJSON());\r\n\r\n const customAttributes = serializeCustomAttributes(this.customAttributes);\r\n if (customAttributes !== undefined)\r\n schemaJson.customAttributes = customAttributes;\r\n return schemaJson as ClassProps;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n\r\n if (undefined !== this.modifier)\r\n itemElement.setAttribute(\"modifier\", classModifierToString(this.modifier));\r\n\r\n if (undefined !== this.baseClass) {\r\n const baseClass = await this.baseClass;\r\n const baseClassElement = schemaXml.createElement(\"BaseClass\");\r\n const baseClassName = XmlSerializationUtils.createXmlTypedName(this.schema, baseClass.schema, baseClass.name);\r\n baseClassElement.textContent = baseClassName;\r\n itemElement.appendChild(baseClassElement);\r\n }\r\n\r\n if (undefined !== this.properties) {\r\n for (const prop of this.properties) {\r\n const propXml = await prop.toXml(schemaXml);\r\n itemElement.appendChild(propXml);\r\n }\r\n }\r\n\r\n if (this._customAttributes) {\r\n const caContainerElement = schemaXml.createElement(\"ECCustomAttributes\");\r\n for (const [name, attribute] of this._customAttributes) {\r\n const caElement = await XmlSerializationUtils.writeCustomAttribute(name, attribute, schemaXml, this.schema);\r\n caContainerElement.appendChild(caElement);\r\n }\r\n itemElement.appendChild(caContainerElement);\r\n }\r\n\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(classProps: ClassProps) {\r\n super.fromJSONSync(classProps);\r\n\r\n if (undefined !== classProps.modifier) {\r\n const modifier = parseClassModifier(classProps.modifier);\r\n if (undefined === modifier)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidModifier, `The string '${classProps.modifier}' is not a valid ECClassModifier.`);\r\n this._modifier = modifier;\r\n }\r\n\r\n if (undefined !== classProps.baseClass) {\r\n const ecClassSchemaItemKey = this.schema.getSchemaItemKey(classProps.baseClass);\r\n if (!ecClassSchemaItemKey)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);\r\n this._baseClass = new DelayedPromiseWithProps<SchemaItemKey, ECClass>(ecClassSchemaItemKey,\r\n async () => {\r\n const baseClass = await this.schema.lookupItem<ECClass>(ecClassSchemaItemKey);\r\n if (undefined === baseClass)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);\r\n return baseClass;\r\n });\r\n }\r\n }\r\n\r\n public override async fromJSON(classProps: ClassProps): Promise<void> {\r\n this.fromJSONSync(classProps);\r\n }\r\n\r\n protected addCustomAttribute(customAttribute: CustomAttribute) {\r\n if (!this._customAttributes)\r\n this._customAttributes = new Map<string, CustomAttribute>();\r\n\r\n this._customAttributes.set(customAttribute.className, customAttribute);\r\n }\r\n\r\n /**\r\n * Iterates (recursively) over all base classes and mixins, in \"property override\" order.\r\n * This is essentially a depth-first traversal through the inheritance tree.\r\n */\r\n public async *getAllBaseClasses(): AsyncIterableIterator<ECClass> {\r\n const baseClasses: ECClass[] = [this];\r\n const addBaseClasses = async (ecClass: AnyClass) => {\r\n if (SchemaItemType.EntityClass === ecClass.schemaItemType) {\r\n for (let i = (ecClass).mixins.length - 1; i >= 0; i--) {\r\n baseClasses.push(await (ecClass).mixins[i]);\r\n }\r\n }\r\n\r\n if (ecClass.baseClass)\r\n baseClasses.push(await ecClass.baseClass);\r\n };\r\n\r\n while (baseClasses.length > 0) {\r\n const baseClass = baseClasses.pop() as AnyClass;\r\n await addBaseClasses(baseClass);\r\n if (baseClass !== this)\r\n yield baseClass as ECClass;\r\n }\r\n }\r\n\r\n public *getAllBaseClassesSync(): Iterable<AnyClass> {\r\n const baseClasses: ECClass[] = [this];\r\n const addBaseClasses = (ecClass: AnyClass) => {\r\n if (SchemaItemType.EntityClass === ecClass.schemaItemType) {\r\n for (const m of Array.from(ecClass.getMixinsSync()).reverse()) {\r\n baseClasses.push(m);\r\n }\r\n }\r\n\r\n const baseClass = ecClass.getBaseClassSync();\r\n if (baseClass)\r\n baseClasses.push(baseClass);\r\n };\r\n\r\n while (baseClasses.length > 0) {\r\n const baseClass = baseClasses.pop() as AnyClass;\r\n addBaseClasses(baseClass);\r\n if (baseClass !== this)\r\n yield baseClass;\r\n }\r\n }\r\n\r\n protected static mergeProperties(target: Property[], existingValues: Map<string, number>, propertiesToMerge: Property[], overwriteExisting: boolean) {\r\n for (const property of propertiesToMerge) {\r\n const upperCaseName = property.name.toUpperCase();\r\n const existing = existingValues.get(upperCaseName);\r\n if (existing !== undefined) {\r\n if (overwriteExisting) {\r\n target[existing] = property;\r\n }\r\n } else {\r\n existingValues.set(upperCaseName, target.length);\r\n target.push(property);\r\n }\r\n }\r\n }\r\n\r\n protected async buildPropertyCache(result: Property[], existingValues?: Map<string, number>, resetBaseCaches: boolean = false): Promise<void> {\r\n if (!existingValues) {\r\n existingValues = new Map<string, number>();\r\n }\r\n\r\n if (this.baseClass) {\r\n ECClass.mergeProperties(result, existingValues, await (await this.baseClass).getProperties(resetBaseCaches), false);\r\n }\r\n\r\n if (!this.properties)\r\n return;\r\n\r\n ECClass.mergeProperties(result, existingValues, [...this.properties], true);\r\n }\r\n\r\n protected buildPropertyCacheSync(result: Property[], existingValues?: Map<string, number>, resetBaseCaches: boolean = false): void {\r\n if (!existingValues) {\r\n existingValues = new Map<string, number>();\r\n }\r\n\r\n const baseClass = this.getBaseClassSync();\r\n if (baseClass) {\r\n ECClass.mergeProperties(result, existingValues, baseClass.getPropertiesSync(resetBaseCaches), false);\r\n }\r\n\r\n if (!this.properties)\r\n return;\r\n\r\n ECClass.mergeProperties(result, existingValues, [...this.properties], true);\r\n }\r\n\r\n /**\r\n * Iterates all properties, including the ones merged from base classes and mixins. To obtain only local properties, use the 'properties' field.\r\n * Since this is an expensive operation, results will be cached after first call.\r\n * @param resetCache if true, any previously cached results will be dropped and cache will be rebuilt\r\n */\r\n public getPropertiesSync(resetCache: boolean = false): Property[] {\r\n if (!this._mergedPropertyCache || resetCache) {\r\n this._mergedPropertyCache = [];\r\n this.buildPropertyCacheSync(this._mergedPropertyCache, undefined, resetCache);\r\n }\r\n\r\n return this._mergedPropertyCache;\r\n }\r\n\r\n /**\r\n * Iterates all properties, including the ones merged from base classes and mixins. To obtain only local properties, use the 'properties' field.\r\n * Since this is an expensive operation, results will be cached after first call.\r\n * @param resetCache if true, any previously cached results will be dropped and cache will be rebuilt\r\n */\r\n public async getProperties(resetCache: boolean = false): Promise<Property[]> {\r\n if (!this._mergedPropertyCache || resetCache) {\r\n this._mergedPropertyCache = [];\r\n await this.buildPropertyCache(this._mergedPropertyCache, undefined, resetCache);\r\n }\r\n\r\n return this._mergedPropertyCache;\r\n }\r\n\r\n /**\r\n * Retrieve all custom attributes in the current class and its bases\r\n * This is the async version of getCustomAttributesSync()\r\n */\r\n public async getCustomAttributes(): Promise<CustomAttributeSet> {\r\n return this.getCustomAttributesSync();\r\n }\r\n\r\n /**\r\n * Retrieve all custom attributes in the current class and its bases.\r\n */\r\n public getCustomAttributesSync(): CustomAttributeSet {\r\n let customAttributes: Map<string, CustomAttribute> | undefined = this._customAttributes;\r\n if (undefined === customAttributes) {\r\n customAttributes = new Map<string, CustomAttribute>();\r\n }\r\n\r\n this.traverseBaseClassesSync((ecClass: ECClass) => {\r\n if (undefined === ecClass.customAttributes)\r\n return false;\r\n\r\n for (const [className, customAttribute] of ecClass.customAttributes) {\r\n if (customAttributes!.has(className))\r\n continue;\r\n customAttributes!.set(className, customAttribute);\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return customAttributes;\r\n }\r\n\r\n /**\r\n * Asynchronously traverses through the inheritance tree, using depth-first traversal, calling the given callback\r\n * function for each base class encountered.\r\n * @param callback The function to call for each base class in the hierarchy.\r\n * @param arg An argument that will be passed as the second parameter to the callback function.\r\n */\r\n public async traverseBaseClasses(callback: (ecClass: ECClass, arg?: any) => boolean, arg?: any): Promise<boolean> {\r\n for await (const baseClass of this.getAllBaseClasses()) {\r\n if (callback(baseClass, arg))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Synchronously traverses through the inheritance tree, using depth-first traversal, calling the given callback\r\n * function for each base class encountered.\r\n * @param callback The function to call for each base class in the hierarchy.\r\n * @param arg An argument that will be passed as the second parameter to the callback function.\r\n */\r\n public traverseBaseClassesSync(callback: (ecClass: ECClass, arg?: any) => boolean, arg?: any): boolean {\r\n const baseClasses = this.getAllBaseClassesSync();\r\n if (!baseClasses)\r\n return false;\r\n\r\n for (const baseClass of baseClasses) {\r\n if (callback(baseClass, arg))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Indicates if the targetClass is of this type.\r\n * @param targetClass The ECClass or ECClass name to check.\r\n * @param schemaName The schema name. Required if targetClass is the ECClass name.\r\n */\r\n public async is(targetClass: string, schemaName: string): Promise<boolean>;\r\n public async is(targetClass: ECClass): Promise<boolean>;\r\n public async is(targetClass: ECClass | string, schemaName?: string): Promise<boolean> {\r\n if (schemaName !== undefined) {\r\n assert(typeof (targetClass) === \"string\", \"Expected targetClass of type string because schemaName was specified\");\r\n\r\n const key = new SchemaItemKey(targetClass, new SchemaKey(schemaName));\r\n if (SchemaItem.equalByKey(this, key))\r\n return true;\r\n\r\n return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), key);\r\n } else {\r\n assert(ECClass.isECClass(targetClass), \"Expected targetClass to be of type ECClass\");\r\n\r\n if (SchemaItem.equalByKey(this, targetClass))\r\n return true;\r\n\r\n return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);\r\n }\r\n }\r\n\r\n /**\r\n * A synchronous version of the [[ECClass.is]], indicating if the targetClass is of this type.\r\n * @param targetClass The class to check.\r\n */\r\n public isSync(targetClass: ECClass): boolean {\r\n if (SchemaItem.equalByKey(this, targetClass))\r\n return true;\r\n\r\n return this.traverseBaseClassesSync((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static isECClass(object: any): object is ECClass {\r\n if (!SchemaItem.isSchemaItem(object))\r\n return false;\r\n\r\n return object.schemaItemType === SchemaItemType.EntityClass || object.schemaItemType === SchemaItemType.Mixin || object.schemaItemType === SchemaItemType.RelationshipClass ||\r\n object.schemaItemType === SchemaItemType.StructClass || object.schemaItemType === SchemaItemType.CustomAttributeClass;\r\n }\r\n\r\n /**\r\n * @alpha\r\n * A setter method for the ECClass modifier, used specifically for schema editing.\r\n * @param modifier\r\n */\r\n protected setModifier(modifier: ECClassModifier) {\r\n this._modifier = modifier;\r\n }\r\n}\r\n\r\n/**\r\n * A Typescript class representation of an ECStructClass.\r\n * @beta\r\n */\r\nexport class StructClass extends ECClass {\r\n public override readonly schemaItemType!: SchemaItemType.StructClass; // eslint-disable-line\r\n\r\n constructor(schema: Schema, name: string, modifier?: ECClassModifier) {\r\n super(schema, name, modifier);\r\n this.schemaItemType = SchemaItemType.StructClass;\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * An abstract class used for schema editing.\r\n */\r\nexport abstract class MutableStructClass extends StructClass {\r\n public abstract override setDisplayLabel(displayLabel: string): void;\r\n}\r\n\r\n/**\r\n * Hackish approach that works like a \"friend class\" so we can access protected members without making them public.\r\n * @internal\r\n */\r\nexport abstract class MutableClass extends ECClass {\r\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\r\n public abstract override setModifier(modifier: ECClassModifier): void;\r\n public abstract override setName(name: string): void;\r\n public abstract override createPrimitiveProperty(name: string, primitiveType: PrimitiveType): Promise<PrimitiveProperty>;\r\n public abstract override createPrimitiveProperty(name: string, primitiveType: Enumeration): Promise<EnumerationProperty>;\r\n public abstract override createPrimitiveProperty(name: string, primitiveType?: string | PrimitiveType | Enumeration): Promise<Property>;\r\n\r\n public abstract override createPrimitivePropertySync(name: string, primitiveType: PrimitiveType): PrimitiveProperty;\r\n public abstract override createPrimitivePropertySync(name: string, primitiveType: Enumeration): EnumerationProperty;\r\n public abstract override createPrimitivePropertySync(name: string, primitiveType?: string | PrimitiveType | Enumeration): Property;\r\n\r\n public abstract override createPrimitiveArrayProperty(name: string, primitiveType: PrimitiveType): Promise<PrimitiveArrayProperty>;\r\n public abstract override createPrimitiveArrayProperty(name: string, primitiveType: Enumeration): Promise<EnumerationArrayProperty>;\r\n public abstract override createPrimitiveArrayProperty(name: string, primitiveType?: string | PrimitiveType | Enumeration): Promise<Property>;\r\n\r\n public abstract override createPrimitiveArrayPropertySync(name: string, primitiveType: PrimitiveType): PrimitiveArrayProperty;\r\n public abstract override createPrimitiveArrayPropertySync(name: string, primitiveType: Enumeration): EnumerationArrayProperty;\r\n public abstract override createPrimitiveArrayPropertySync(name: string, primitiveType?: string | PrimitiveType | Enumeration): Property;\r\n\r\n public abstract override createStructProperty(name: string, structType: string | StructClass): Promise<StructProperty>;\r\n public abstract override createStructPropertySync(name: string, structType: string | StructClass): StructProperty;\r\n\r\n public abstract override createStructArrayProperty(name: string, structType: string | StructClass): Promise<StructArrayProperty>;\r\n public abstract override createStructArrayPropertySync(name: string, structType: string | StructClass): StructArrayProperty;\r\n\r\n public abstract override deleteProperty(name: string): Promise<void>;\r\n public abstract override deletePropertySync(name: string): void;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Class.js","sourceRoot":"","sources":["../../../src/Metadata/Class.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { DelayedPromiseWithProps } from \"../DelayedPromise\";\r\nimport { ClassProps } from \"../Deserialization/JsonProps\";\r\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\r\nimport { classModifierToString, ECClassModifier, parseClassModifier, parsePrimitiveType, PrimitiveType, SchemaItemType } from \"../ECObjects\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\r\nimport { AnyClass, LazyLoadedECClass } from \"../Interfaces\";\r\nimport { SchemaItemKey, SchemaKey } from \"../SchemaKey\";\r\nimport { CustomAttribute, CustomAttributeContainerProps, CustomAttributeSet, serializeCustomAttributes } from \"./CustomAttribute\";\r\nimport { Enumeration } from \"./Enumeration\";\r\nimport {\r\n EnumerationArrayProperty, EnumerationProperty, PrimitiveArrayProperty, PrimitiveProperty, Property, StructArrayProperty, StructProperty,\r\n} from \"./Property\";\r\nimport { Schema } from \"./Schema\";\r\nimport { SchemaItem } from \"./SchemaItem\";\r\n\r\n/**\r\n * A common abstract class for all of the ECClass types.\r\n * @beta\r\n */\r\nexport abstract class ECClass extends SchemaItem implements CustomAttributeContainerProps {\r\n protected _modifier: ECClassModifier;\r\n protected _baseClass?: LazyLoadedECClass;\r\n protected _properties?: Map<string, Property>;\r\n private _customAttributes?: Map<string, CustomAttribute>;\r\n private _mergedPropertyCache?: Property[];\r\n\r\n public get modifier() { return this._modifier; }\r\n public get baseClass(): LazyLoadedECClass | undefined { return this._baseClass; }\r\n public set baseClass(baseClass: LazyLoadedECClass | undefined) { this._baseClass = baseClass; }\r\n public get properties(): IterableIterator<Property> | undefined { return this._properties?.values(); }\r\n public get customAttributes(): CustomAttributeSet | undefined { return this._customAttributes; }\r\n\r\n constructor(schema: Schema, name: string, modifier?: ECClassModifier) {\r\n super(schema, name);\r\n\r\n if (modifier)\r\n this._modifier = modifier;\r\n else\r\n this._modifier = ECClassModifier.None;\r\n }\r\n\r\n /**\r\n * Convenience method for adding an already loaded ECProperty used by create*Property methods.\r\n * @param prop The property to add.\r\n * @return The property that was added.\r\n */\r\n protected addProperty<T extends Property>(prop: T): T {\r\n if (!this._properties)\r\n this._properties = new Map<string, Property>();\r\n\r\n this._properties.set(prop.name.toUpperCase(), prop);\r\n return prop;\r\n }\r\n\r\n /**\r\n * Deletes a property from within this class.\r\n * @param name The property name to delete, lookup is case-insensitive\r\n * @alpha\r\n */\r\n protected async deleteProperty(name: string): Promise<void> {\r\n if (this._properties) {\r\n const property = await this.getProperty(name);\r\n if (property)\r\n this._properties.delete(name.toUpperCase());\r\n }\r\n }\r\n\r\n /**\r\n * Deletes a property from within this class.\r\n * @param name The property name to delete, lookup is case-insensitive\r\n * @alpha\r\n */\r\n protected deletePropertySync(name: string): void {\r\n if (this._properties) {\r\n const property = this.getPropertySync(name);\r\n if (property)\r\n this._properties.delete(name.toUpperCase());\r\n }\r\n }\r\n\r\n public getBaseClassSync(): ECClass | undefined {\r\n if (!this.baseClass) {\r\n return undefined;\r\n }\r\n\r\n return this.schema.lookupItemSync<ECClass>(this.baseClass);\r\n }\r\n\r\n /**\r\n * Searches, case-insensitive, for a local ECProperty with the name provided.\r\n * @param name\r\n */\r\n public async getProperty(name: string, includeInherited: boolean = false): Promise<Property | undefined> {\r\n if (this._properties) {\r\n const upperKey = name.toUpperCase();\r\n const property = this._properties.get(upperKey);\r\n if (property)\r\n return property;\r\n }\r\n\r\n if (!includeInherited) {\r\n return undefined;\r\n }\r\n\r\n return this.getInheritedProperty(name);\r\n }\r\n\r\n /**\r\n * Searches, case-insensitive, for a local ECProperty with the name provided.\r\n * @param name\r\n */\r\n public getPropertySync(name: string, includeInherited: boolean = false): Property | undefined {\r\n if (this._properties) {\r\n const upperKey = name.toUpperCase();\r\n const property = this._properties.get(upperKey);\r\n if (property)\r\n return property;\r\n }\r\n\r\n if (!includeInherited) {\r\n return undefined;\r\n }\r\n\r\n return this.getInheritedPropertySync(name);\r\n }\r\n\r\n /**\r\n * Searches the base class, if one exists, for the property with the name provided.\r\n * @param name The name of the inherited property to find.\r\n */\r\n public async getInheritedProperty(name: string): Promise<Property | undefined> {\r\n if (this.baseClass) {\r\n const baseClassObj = await this.baseClass;\r\n return baseClassObj.getProperty(name, true);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Searches the base class, if one exists, for the property with the name provided.\r\n * @param name The name of the inherited property to find.\r\n */\r\n public getInheritedPropertySync(name: string): Property | undefined {\r\n const baseClassObj = this.getBaseClassSync();\r\n if (baseClassObj)\r\n return baseClassObj.getPropertySync(name, true);\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Creates a PrimitiveECProperty.\r\n * @param name The name of property to create.\r\n * @param primitiveType The primitive type of property to create. If not provided the default is PrimitiveType.Integer\r\n * @throws ECObjectsStatus DuplicateProperty: thrown if a property with the same name already exists in the class.\r\n */\r\n protected async createPrimitiveProperty(name: string, primitiveType: PrimitiveType): Promise<PrimitiveProperty>;\r\n protected async createPrimitiveProperty(name: string, primitiveType: Enumeration): Promise<EnumerationProperty>;\r\n protected async createPrimitiveProperty(name: string, primitiveType?: string | PrimitiveType | Enumeration): Promise<Property> {\r\n if (await this.getProperty(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n const propType = await this.loadPrimitiveType(primitiveType, this.schema);\r\n if (typeof (propType) === \"number\")\r\n return this.addProperty(new PrimitiveProperty(this, name, propType));\r\n\r\n return this.addProperty(new EnumerationProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));\r\n }\r\n\r\n /**\r\n * Creates a PrimitiveECProperty.\r\n * @param name The name of property to create.\r\n * @param primitiveType The primitive type of property to create. If not provided the default is PrimitiveType.Integer\r\n * @throws ECObjectsStatus DuplicateProperty: thrown if a property with the same name already exists in the class.\r\n */\r\n protected createPrimitivePropertySync(name: string, primitiveType: PrimitiveType): PrimitiveProperty;\r\n protected createPrimitivePropertySync(name: string, primitiveType: Enumeration): EnumerationProperty;\r\n protected createPrimitivePropertySync(name: string, primitiveType?: string | PrimitiveType | Enumeration): Property {\r\n if (this.getPropertySync(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n const propType = this.loadPrimitiveTypeSync(primitiveType, this.schema);\r\n if (typeof (propType) === \"number\")\r\n return this.addProperty(new PrimitiveProperty(this, name, propType));\r\n\r\n return this.addProperty(new EnumerationProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));\r\n }\r\n\r\n /**\r\n * Creates a PrimitiveArrayECProperty.\r\n * @param name The name of property to create.\r\n * @param primitiveType The primitive type of property to create. If not provided the default is PrimitiveType.Integer\r\n */\r\n protected async createPrimitiveArrayProperty(name: string, primitiveType: PrimitiveType): Promise<PrimitiveArrayProperty>;\r\n protected async createPrimitiveArrayProperty(name: string, primitiveType: Enumeration): Promise<EnumerationArrayProperty>;\r\n protected async createPrimitiveArrayProperty(name: string, primitiveType?: string | PrimitiveType | Enumeration): Promise<Property> {\r\n if (await this.getProperty(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n const propType = await this.loadPrimitiveType(primitiveType, this.schema);\r\n if (typeof (propType) === \"number\")\r\n return this.addProperty(new PrimitiveArrayProperty(this, name, propType));\r\n\r\n return this.addProperty(new EnumerationArrayProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));\r\n }\r\n\r\n /**\r\n * Creates a PrimitiveArrayECProperty.\r\n * @param name The name of property to create.\r\n * @param primitiveType The primitive type of property to create. If not provided the default is PrimitiveType.Integer\r\n */\r\n protected createPrimitiveArrayPropertySync(name: string, primitiveType: PrimitiveType): PrimitiveArrayProperty;\r\n protected createPrimitiveArrayPropertySync(name: string, primitiveType: Enumeration): EnumerationArrayProperty;\r\n protected createPrimitiveArrayPropertySync(name: string, primitiveType?: string | PrimitiveType | Enumeration): Property {\r\n if (this.getPropertySync(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n const propType = this.loadPrimitiveTypeSync(primitiveType, this.schema);\r\n if (typeof (propType) === \"number\")\r\n return this.addProperty(new PrimitiveArrayProperty(this, name, propType));\r\n\r\n return this.addProperty(new EnumerationArrayProperty(this, name, new DelayedPromiseWithProps(propType.key, async () => propType)));\r\n }\r\n\r\n /**\r\n *\r\n * @param name The name of property to create.\r\n * @param structType The struct type of property to create.\r\n */\r\n protected async createStructProperty(name: string, structType: string | StructClass): Promise<StructProperty> {\r\n if (await this.getProperty(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n return this.addProperty(new StructProperty(this, name, await this.loadStructType(structType, this.schema)));\r\n }\r\n\r\n /**\r\n *\r\n * @param name The name of property to create.\r\n * @param structType The struct type of property to create.\r\n */\r\n protected createStructPropertySync(name: string, structType: string | StructClass): StructProperty {\r\n if (this.getPropertySync(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n return this.addProperty(new StructProperty(this, name, this.loadStructTypeSync(structType, this.schema)));\r\n }\r\n\r\n /**\r\n *\r\n * @param name\r\n * @param type\r\n */\r\n protected async createStructArrayProperty(name: string, structType: string | StructClass): Promise<StructArrayProperty> {\r\n if (await this.getProperty(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n return this.addProperty(new StructArrayProperty(this, name, await this.loadStructType(structType, this.schema)));\r\n }\r\n\r\n /**\r\n *\r\n * @param name\r\n * @param type\r\n */\r\n protected createStructArrayPropertySync(name: string, structType: string | StructClass): StructArrayProperty {\r\n if (this.getPropertySync(name))\r\n throw new ECObjectsError(ECObjectsStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${this.name}.`);\r\n\r\n return this.addProperty(new StructArrayProperty(this, name, this.loadStructTypeSync(structType, this.schema)));\r\n }\r\n\r\n protected async loadStructType(structType: string | StructClass | undefined, schema: Schema): Promise<StructClass> {\r\n let correctType: StructClass | undefined;\r\n if (typeof (structType) === \"string\") {\r\n correctType = await schema.lookupItem<StructClass>(structType);\r\n } else\r\n correctType = structType;\r\n\r\n if (!correctType)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);\r\n\r\n return correctType;\r\n }\r\n\r\n protected loadStructTypeSync(structType: string | StructClass | undefined, schema: Schema): StructClass {\r\n let correctType: StructClass | undefined;\r\n if (typeof (structType) === \"string\") {\r\n correctType = schema.lookupItemSync<StructClass>(structType);\r\n } else\r\n correctType = structType;\r\n\r\n if (!correctType)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided Struct type, ${structType}, is not a valid StructClass.`);\r\n\r\n return correctType;\r\n }\r\n\r\n protected async loadPrimitiveType(primitiveType: string | PrimitiveType | Enumeration | undefined, schema: Schema): Promise<PrimitiveType | Enumeration> {\r\n if (primitiveType === undefined)\r\n return PrimitiveType.Integer;\r\n\r\n if (typeof (primitiveType) === \"string\") {\r\n let resolvedType: (PrimitiveType | Enumeration | undefined) = parsePrimitiveType(primitiveType);\r\n if (!resolvedType) {\r\n resolvedType = await schema.lookupItem<Enumeration>(primitiveType);\r\n }\r\n\r\n if (resolvedType === undefined)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);\r\n\r\n // If resolvedType is a SchemaItem, make sure it is an Enumeration- if not, throw an error\r\n if (typeof (resolvedType) !== \"number\" && resolvedType.schemaItemType !== SchemaItemType.Enumeration)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);\r\n\r\n return resolvedType;\r\n }\r\n\r\n return primitiveType;\r\n }\r\n\r\n protected loadPrimitiveTypeSync(primitiveType: string | PrimitiveType | Enumeration | undefined, schema: Schema): PrimitiveType | Enumeration {\r\n if (primitiveType === undefined)\r\n return PrimitiveType.Integer;\r\n\r\n if (typeof (primitiveType) === \"string\") {\r\n let resolvedType: (PrimitiveType | Enumeration | undefined) = parsePrimitiveType(primitiveType);\r\n if (!resolvedType) {\r\n resolvedType = schema.lookupItemSync<Enumeration>(primitiveType);\r\n }\r\n\r\n if (resolvedType === undefined)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidType, `The provided primitive type, ${primitiveType}, is not a valid PrimitiveType or Enumeration.`);\r\n\r\n return resolvedType;\r\n }\r\n\r\n return primitiveType;\r\n }\r\n\r\n /**\r\n * Save this Classes properties to an object for serializing to JSON.\r\n * @param standalone Serialization includes only this object (as opposed to the full schema).\r\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\r\n */\r\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): ClassProps {\r\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\r\n const isMixin = SchemaItemType.Mixin === this.schemaItemType;\r\n const isRelationship = SchemaItemType.RelationshipClass === this.schemaItemType;\r\n if (!isMixin && (ECClassModifier.None !== this.modifier || isRelationship))\r\n schemaJson.modifier = classModifierToString(this.modifier);\r\n if (this.baseClass !== undefined)\r\n schemaJson.baseClass = this.baseClass.fullName;\r\n if (this._properties !== undefined && this._properties.size > 0)\r\n schemaJson.properties = [...this.properties!].map((prop) => prop.toJSON());\r\n\r\n const customAttributes = serializeCustomAttributes(this.customAttributes);\r\n if (customAttributes !== undefined)\r\n schemaJson.customAttributes = customAttributes;\r\n return schemaJson as ClassProps;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n\r\n if (undefined !== this.modifier)\r\n itemElement.setAttribute(\"modifier\", classModifierToString(this.modifier));\r\n\r\n if (undefined !== this.baseClass) {\r\n const baseClass = await this.baseClass;\r\n const baseClassElement = schemaXml.createElement(\"BaseClass\");\r\n const baseClassName = XmlSerializationUtils.createXmlTypedName(this.schema, baseClass.schema, baseClass.name);\r\n baseClassElement.textContent = baseClassName;\r\n itemElement.appendChild(baseClassElement);\r\n }\r\n\r\n if (undefined !== this.properties) {\r\n for (const prop of this.properties) {\r\n const propXml = await prop.toXml(schemaXml);\r\n itemElement.appendChild(propXml);\r\n }\r\n }\r\n\r\n if (this._customAttributes) {\r\n const caContainerElement = schemaXml.createElement(\"ECCustomAttributes\");\r\n for (const [name, attribute] of this._customAttributes) {\r\n const caElement = await XmlSerializationUtils.writeCustomAttribute(name, attribute, schemaXml, this.schema);\r\n caContainerElement.appendChild(caElement);\r\n }\r\n itemElement.appendChild(caContainerElement);\r\n }\r\n\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(classProps: ClassProps) {\r\n super.fromJSONSync(classProps);\r\n\r\n if (undefined !== classProps.modifier) {\r\n const modifier = parseClassModifier(classProps.modifier);\r\n if (undefined === modifier)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidModifier, `The string '${classProps.modifier}' is not a valid ECClassModifier.`);\r\n this._modifier = modifier;\r\n }\r\n\r\n if (undefined !== classProps.baseClass) {\r\n const ecClassSchemaItemKey = this.schema.getSchemaItemKey(classProps.baseClass);\r\n if (!ecClassSchemaItemKey)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);\r\n this._baseClass = new DelayedPromiseWithProps<SchemaItemKey, ECClass>(ecClassSchemaItemKey,\r\n async () => {\r\n const baseClass = await this.schema.lookupItem<ECClass>(ecClassSchemaItemKey);\r\n if (undefined === baseClass)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the baseClass ${classProps.baseClass}.`);\r\n return baseClass;\r\n });\r\n }\r\n }\r\n\r\n public override async fromJSON(classProps: ClassProps): Promise<void> {\r\n this.fromJSONSync(classProps);\r\n }\r\n\r\n protected addCustomAttribute(customAttribute: CustomAttribute) {\r\n if (!this._customAttributes)\r\n this._customAttributes = new Map<string, CustomAttribute>();\r\n\r\n this._customAttributes.set(customAttribute.className, customAttribute);\r\n }\r\n\r\n /**\r\n * Iterates (recursively) over all base classes and mixins, in \"property override\" order.\r\n * This is essentially a depth-first traversal through the inheritance tree.\r\n */\r\n public async *getAllBaseClasses(): AsyncIterableIterator<ECClass> {\r\n const baseClasses: ECClass[] = [this];\r\n const addBaseClasses = async (ecClass: AnyClass) => {\r\n if (SchemaItemType.EntityClass === ecClass.schemaItemType) {\r\n for (let i = (ecClass).mixins.length - 1; i >= 0; i--) {\r\n baseClasses.push(await (ecClass).mixins[i]);\r\n }\r\n }\r\n\r\n if (ecClass.baseClass)\r\n baseClasses.push(await ecClass.baseClass);\r\n };\r\n\r\n while (baseClasses.length > 0) {\r\n const baseClass = baseClasses.pop() as AnyClass;\r\n await addBaseClasses(baseClass);\r\n if (baseClass !== this)\r\n yield baseClass as ECClass;\r\n }\r\n }\r\n\r\n public *getAllBaseClassesSync(): Iterable<AnyClass> {\r\n const baseClasses: ECClass[] = [this];\r\n const addBaseClasses = (ecClass: AnyClass) => {\r\n if (SchemaItemType.EntityClass === ecClass.schemaItemType) {\r\n for (const m of Array.from(ecClass.getMixinsSync()).reverse()) {\r\n baseClasses.push(m);\r\n }\r\n }\r\n\r\n const baseClass = ecClass.getBaseClassSync();\r\n if (baseClass)\r\n baseClasses.push(baseClass);\r\n };\r\n\r\n while (baseClasses.length > 0) {\r\n const baseClass = baseClasses.pop() as AnyClass;\r\n addBaseClasses(baseClass);\r\n if (baseClass !== this)\r\n yield baseClass;\r\n }\r\n }\r\n\r\n protected static mergeProperties(target: Property[], existingValues: Map<string, number>, propertiesToMerge: Property[], overwriteExisting: boolean) {\r\n for (const property of propertiesToMerge) {\r\n const upperCaseName = property.name.toUpperCase();\r\n const existing = existingValues.get(upperCaseName);\r\n if (existing !== undefined) {\r\n if (overwriteExisting) {\r\n target[existing] = property;\r\n }\r\n } else {\r\n existingValues.set(upperCaseName, target.length);\r\n target.push(property);\r\n }\r\n }\r\n }\r\n\r\n protected async buildPropertyCache(result: Property[], existingValues?: Map<string, number>, resetBaseCaches: boolean = false): Promise<void> {\r\n if (!existingValues) {\r\n existingValues = new Map<string, number>();\r\n }\r\n\r\n if (this.baseClass) {\r\n ECClass.mergeProperties(result, existingValues, await (await this.baseClass).getProperties(resetBaseCaches), false);\r\n }\r\n\r\n if (!this.properties)\r\n return;\r\n\r\n ECClass.mergeProperties(result, existingValues, [...this.properties], true);\r\n }\r\n\r\n protected buildPropertyCacheSync(result: Property[], existingValues?: Map<string, number>, resetBaseCaches: boolean = false): void {\r\n if (!existingValues) {\r\n existingValues = new Map<string, number>();\r\n }\r\n\r\n const baseClass = this.getBaseClassSync();\r\n if (baseClass) {\r\n ECClass.mergeProperties(result, existingValues, baseClass.getPropertiesSync(resetBaseCaches), false);\r\n }\r\n\r\n if (!this.properties)\r\n return;\r\n\r\n ECClass.mergeProperties(result, existingValues, [...this.properties], true);\r\n }\r\n\r\n /**\r\n * Iterates all properties, including the ones merged from base classes and mixins. To obtain only local properties, use the 'properties' field.\r\n * Since this is an expensive operation, results will be cached after first call.\r\n * @param resetCache if true, any previously cached results will be dropped and cache will be rebuilt\r\n */\r\n public getPropertiesSync(resetCache: boolean = false): Property[] {\r\n if (!this._mergedPropertyCache || resetCache) {\r\n this._mergedPropertyCache = [];\r\n this.buildPropertyCacheSync(this._mergedPropertyCache, undefined, resetCache);\r\n }\r\n\r\n return this._mergedPropertyCache;\r\n }\r\n\r\n /**\r\n * Iterates all properties, including the ones merged from base classes and mixins. To obtain only local properties, use the 'properties' field.\r\n * Since this is an expensive operation, results will be cached after first call.\r\n * @param resetCache if true, any previously cached results will be dropped and cache will be rebuilt\r\n */\r\n public async getProperties(resetCache: boolean = false): Promise<Property[]> {\r\n if (!this._mergedPropertyCache || resetCache) {\r\n this._mergedPropertyCache = [];\r\n await this.buildPropertyCache(this._mergedPropertyCache, undefined, resetCache);\r\n }\r\n\r\n return this._mergedPropertyCache;\r\n }\r\n\r\n /**\r\n * Retrieve all custom attributes in the current class and its bases\r\n * This is the async version of getCustomAttributesSync()\r\n */\r\n public async getCustomAttributes(): Promise<CustomAttributeSet> {\r\n return this.getCustomAttributesSync();\r\n }\r\n\r\n /**\r\n * Retrieve all custom attributes in the current class and its bases.\r\n */\r\n public getCustomAttributesSync(): CustomAttributeSet {\r\n let customAttributes: Map<string, CustomAttribute> | undefined = this._customAttributes;\r\n if (undefined === customAttributes) {\r\n customAttributes = new Map<string, CustomAttribute>();\r\n }\r\n\r\n this.traverseBaseClassesSync((ecClass: ECClass) => {\r\n if (undefined === ecClass.customAttributes)\r\n return false;\r\n\r\n for (const [className, customAttribute] of ecClass.customAttributes) {\r\n if (customAttributes.has(className))\r\n continue;\r\n customAttributes.set(className, customAttribute);\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return customAttributes;\r\n }\r\n\r\n /**\r\n * Asynchronously traverses through the inheritance tree, using depth-first traversal, calling the given callback\r\n * function for each base class encountered.\r\n * @param callback The function to call for each base class in the hierarchy.\r\n * @param arg An argument that will be passed as the second parameter to the callback function.\r\n */\r\n public async traverseBaseClasses(callback: (ecClass: ECClass, arg?: any) => boolean, arg?: any): Promise<boolean> {\r\n for await (const baseClass of this.getAllBaseClasses()) {\r\n if (callback(baseClass, arg))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Synchronously traverses through the inheritance tree, using depth-first traversal, calling the given callback\r\n * function for each base class encountered.\r\n * @param callback The function to call for each base class in the hierarchy.\r\n * @param arg An argument that will be passed as the second parameter to the callback function.\r\n */\r\n public traverseBaseClassesSync(callback: (ecClass: ECClass, arg?: any) => boolean, arg?: any): boolean {\r\n const baseClasses = this.getAllBaseClassesSync();\r\n if (!baseClasses)\r\n return false;\r\n\r\n for (const baseClass of baseClasses) {\r\n if (callback(baseClass, arg))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Indicates if the targetClass is of this type.\r\n * @param targetClass The ECClass or ECClass name to check.\r\n * @param schemaName The schema name. Required if targetClass is the ECClass name.\r\n */\r\n public async is(targetClass: string, schemaName: string): Promise<boolean>;\r\n public async is(targetClass: ECClass): Promise<boolean>;\r\n public async is(targetClass: ECClass | string, schemaName?: string): Promise<boolean> {\r\n if (schemaName !== undefined) {\r\n assert(typeof (targetClass) === \"string\", \"Expected targetClass of type string because schemaName was specified\");\r\n\r\n const key = new SchemaItemKey(targetClass, new SchemaKey(schemaName));\r\n if (SchemaItem.equalByKey(this, key))\r\n return true;\r\n\r\n return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), key);\r\n } else {\r\n assert(ECClass.isECClass(targetClass), \"Expected targetClass to be of type ECClass\");\r\n\r\n if (SchemaItem.equalByKey(this, targetClass))\r\n return true;\r\n\r\n return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);\r\n }\r\n }\r\n\r\n /**\r\n * A synchronous version of the [[ECClass.is]], indicating if the targetClass is of this type.\r\n * @param targetClass The class to check.\r\n */\r\n public isSync(targetClass: ECClass): boolean {\r\n if (SchemaItem.equalByKey(this, targetClass))\r\n return true;\r\n\r\n return this.traverseBaseClassesSync((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static isECClass(object: any): object is ECClass {\r\n if (!SchemaItem.isSchemaItem(object))\r\n return false;\r\n\r\n return object.schemaItemType === SchemaItemType.EntityClass || object.schemaItemType === SchemaItemType.Mixin || object.schemaItemType === SchemaItemType.RelationshipClass ||\r\n object.schemaItemType === SchemaItemType.StructClass || object.schemaItemType === SchemaItemType.CustomAttributeClass;\r\n }\r\n\r\n /**\r\n * @alpha\r\n * A setter method for the ECClass modifier, used specifically for schema editing.\r\n * @param modifier\r\n */\r\n protected setModifier(modifier: ECClassModifier) {\r\n this._modifier = modifier;\r\n }\r\n}\r\n\r\n/**\r\n * A Typescript class representation of an ECStructClass.\r\n * @beta\r\n */\r\nexport class StructClass extends ECClass {\r\n public override readonly schemaItemType!: SchemaItemType.StructClass;\r\n\r\n constructor(schema: Schema, name: string, modifier?: ECClassModifier) {\r\n super(schema, name, modifier);\r\n this.schemaItemType = SchemaItemType.StructClass;\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * An abstract class used for schema editing.\r\n */\r\nexport abstract class MutableStructClass extends StructClass {\r\n public abstract override setDisplayLabel(displayLabel: string): void;\r\n}\r\n\r\n/**\r\n * Hackish approach that works like a \"friend class\" so we can access protected members without making them public.\r\n * @internal\r\n */\r\nexport abstract class MutableClass extends ECClass {\r\n public abstract override addCustomAttribute(customAttribute: CustomAttribute): void;\r\n public abstract override setModifier(modifier: ECClassModifier): void;\r\n public abstract override setName(name: string): void;\r\n public abstract override createPrimitiveProperty(name: string, primitiveType: PrimitiveType): Promise<PrimitiveProperty>;\r\n public abstract override createPrimitiveProperty(name: string, primitiveType: Enumeration): Promise<EnumerationProperty>;\r\n public abstract override createPrimitiveProperty(name: string, primitiveType?: string | PrimitiveType | Enumeration): Promise<Property>;\r\n\r\n public abstract override createPrimitivePropertySync(name: string, primitiveType: PrimitiveType): PrimitiveProperty;\r\n public abstract override createPrimitivePropertySync(name: string, primitiveType: Enumeration): EnumerationProperty;\r\n public abstract override createPrimitivePropertySync(name: string, primitiveType?: string | PrimitiveType | Enumeration): Property;\r\n\r\n public abstract override createPrimitiveArrayProperty(name: string, primitiveType: PrimitiveType): Promise<PrimitiveArrayProperty>;\r\n public abstract override createPrimitiveArrayProperty(name: string, primitiveType: Enumeration): Promise<EnumerationArrayProperty>;\r\n public abstract override createPrimitiveArrayProperty(name: string, primitiveType?: string | PrimitiveType | Enumeration): Promise<Property>;\r\n\r\n public abstract override createPrimitiveArrayPropertySync(name: string, primitiveType: PrimitiveType): PrimitiveArrayProperty;\r\n public abstract override createPrimitiveArrayPropertySync(name: string, primitiveType: Enumeration): EnumerationArrayProperty;\r\n public abstract override createPrimitiveArrayPropertySync(name: string, primitiveType?: string | PrimitiveType | Enumeration): Property;\r\n\r\n public abstract override createStructProperty(name: string, structType: string | StructClass): Promise<StructProperty>;\r\n public abstract override createStructPropertySync(name: string, structType: string | StructClass): StructProperty;\r\n\r\n public abstract override createStructArrayProperty(name: string, structType: string | StructClass): Promise<StructArrayProperty>;\r\n public abstract override createStructArrayPropertySync(name: string, structType: string | StructClass): StructArrayProperty;\r\n\r\n public abstract override deleteProperty(name: string): Promise<void>;\r\n public abstract override deletePropertySync(name: string): void;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Constant.js","sourceRoot":"","sources":["../../../src/Metadata/Constant.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { DelayedPromiseWithProps } from \"../DelayedPromise\";\r\nimport { ConstantProps } from \"../Deserialization/JsonProps\";\r\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\r\nimport { SchemaItemType } from \"../ECObjects\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\r\nimport { LazyLoadedPhenomenon } from \"../Interfaces\";\r\nimport { SchemaItemKey } from \"../SchemaKey\";\r\nimport { Phenomenon } from \"./Phenomenon\";\r\nimport { Schema } from \"./Schema\";\r\nimport { SchemaItem } from \"./SchemaItem\";\r\n\r\n/**\r\n * A Constant is a specific type of Unit that represents a number.\r\n * @beta\r\n */\r\nexport class Constant extends SchemaItem {\r\n public override readonly schemaItemType!: SchemaItemType.Constant; // eslint-disable-line\r\n protected _phenomenon?: LazyLoadedPhenomenon;\r\n protected _definition: string;\r\n protected _numerator?: number;\r\n protected _denominator?: number;\r\n\r\n constructor(schema: Schema, name: string) {\r\n super(schema, name);\r\n this.schemaItemType = SchemaItemType.Constant;\r\n this._definition = \"\";\r\n }\r\n\r\n public get phenomenon(): LazyLoadedPhenomenon | undefined { return this._phenomenon; }\r\n public get definition(): string { return this._definition; }\r\n public get numerator(): number { return this._numerator ?? 1.0; }\r\n public get denominator(): number { return this._denominator ?? 1.0; }\r\n public get hasNumerator(): boolean { return (this._numerator !== undefined); }\r\n public get hasDenominator(): boolean { return (this._denominator !== undefined); }\r\n\r\n /**\r\n * Save this Constants properties to an object for serializing to JSON.\r\n * @param standalone Serialization includes only this object (as opposed to the full schema).\r\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\r\n */\r\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): ConstantProps {\r\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\r\n if (this.phenomenon !== undefined)\r\n schemaJson.phenomenon = this.phenomenon.fullName;\r\n schemaJson.definition = this.definition;\r\n if (this.hasNumerator)\r\n schemaJson.numerator = this.numerator;\r\n if (this.hasDenominator)\r\n schemaJson.denominator = this.denominator;\r\n return schemaJson as ConstantProps;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n itemElement.setAttribute(\"definition\", this.definition);\r\n if (this.hasNumerator)\r\n itemElement.setAttribute(\"numerator\", this.numerator.toString());\r\n if (this.hasDenominator)\r\n itemElement.setAttribute(\"denominator\", this.denominator.toString());\r\n\r\n const phenomenon = await this.phenomenon;\r\n if (undefined !== phenomenon) {\r\n const phenomenonName = XmlSerializationUtils.createXmlTypedName(this.schema, phenomenon.schema, phenomenon.name);\r\n itemElement.setAttribute(\"phenomenon\", phenomenonName);\r\n }\r\n\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(constantProps: ConstantProps) {\r\n super.fromJSONSync(constantProps);\r\n\r\n const schemaItemKey = this.schema.getSchemaItemKey(constantProps.phenomenon);\r\n if (!schemaItemKey)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the phenomenon ${constantProps.phenomenon}.`);\r\n this._phenomenon = new DelayedPromiseWithProps<SchemaItemKey, Phenomenon>(schemaItemKey,\r\n async () => {\r\n const phenom = await this.schema.lookupItem<Phenomenon>(schemaItemKey);\r\n if (undefined === phenom)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the phenomenon ${constantProps.phenomenon}.`);\r\n return phenom;\r\n });\r\n\r\n if (this._definition !== \"\" && constantProps.definition.toLowerCase() !== this._definition.toLowerCase())\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Constant ${this.name} has an invalid 'definition' attribute.`);\r\n else if (this._definition === \"\")\r\n this._definition = constantProps.definition;\r\n\r\n if (undefined !== constantProps.numerator) {\r\n if (constantProps.numerator !== this._numerator)\r\n this._numerator = constantProps.numerator;\r\n }\r\n\r\n if (undefined !== constantProps.denominator) {\r\n if (constantProps.denominator !== this._denominator)\r\n this._denominator = constantProps.denominator;\r\n }\r\n }\r\n\r\n public override async fromJSON(constantProps: ConstantProps) {\r\n this.fromJSONSync(constantProps);\r\n }\r\n\r\n /**\r\n * @alpha Used in schema editing.\r\n * @param phenomenon A LazyLoadedPhenomenon.\r\n */\r\n protected setPhenomenon(phenomenon: LazyLoadedPhenomenon) {\r\n this._phenomenon = phenomenon;\r\n }\r\n\r\n /**\r\n * @alpha Used in schema editing.\r\n */\r\n protected setDefinition(definition: string) {\r\n this._definition = definition;\r\n }\r\n\r\n /**\r\n * @alpha Used in schema editing.\r\n */\r\n protected setNumerator(numerator: number) {\r\n this._numerator = numerator;\r\n }\r\n\r\n /**\r\n * @alpha Used in schema editing.\r\n */\r\n protected setDenominator(denominator: number) {\r\n this._denominator = denominator;\r\n }\r\n}\r\n/**\r\n * @internal\r\n * An abstract class used for schema editing.\r\n */\r\nexport abstract class MutableConstant extends Constant {\r\n public abstract override setPhenomenon(phenomenon: LazyLoadedPhenomenon): void;\r\n public abstract override setDefinition(definition: string): void;\r\n public abstract override setNumerator(numerator: number): void;\r\n public abstract override setDenominator(denominator: number): void;\r\n public abstract override setDisplayLabel(displayLabel: string): void;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Constant.js","sourceRoot":"","sources":["../../../src/Metadata/Constant.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { DelayedPromiseWithProps } from \"../DelayedPromise\";\r\nimport { ConstantProps } from \"../Deserialization/JsonProps\";\r\nimport { XmlSerializationUtils } from \"../Deserialization/XmlSerializationUtils\";\r\nimport { SchemaItemType } from \"../ECObjects\";\r\nimport { ECObjectsError, ECObjectsStatus } from \"../Exception\";\r\nimport { LazyLoadedPhenomenon } from \"../Interfaces\";\r\nimport { SchemaItemKey } from \"../SchemaKey\";\r\nimport { Phenomenon } from \"./Phenomenon\";\r\nimport { Schema } from \"./Schema\";\r\nimport { SchemaItem } from \"./SchemaItem\";\r\n\r\n/**\r\n * A Constant is a specific type of Unit that represents a number.\r\n * @beta\r\n */\r\nexport class Constant extends SchemaItem {\r\n public override readonly schemaItemType!: SchemaItemType.Constant;\r\n protected _phenomenon?: LazyLoadedPhenomenon;\r\n protected _definition: string;\r\n protected _numerator?: number;\r\n protected _denominator?: number;\r\n\r\n constructor(schema: Schema, name: string) {\r\n super(schema, name);\r\n this.schemaItemType = SchemaItemType.Constant;\r\n this._definition = \"\";\r\n }\r\n\r\n public get phenomenon(): LazyLoadedPhenomenon | undefined { return this._phenomenon; }\r\n public get definition(): string { return this._definition; }\r\n public get numerator(): number { return this._numerator ?? 1.0; }\r\n public get denominator(): number { return this._denominator ?? 1.0; }\r\n public get hasNumerator(): boolean { return (this._numerator !== undefined); }\r\n public get hasDenominator(): boolean { return (this._denominator !== undefined); }\r\n\r\n /**\r\n * Save this Constants properties to an object for serializing to JSON.\r\n * @param standalone Serialization includes only this object (as opposed to the full schema).\r\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\r\n */\r\n public override toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false): ConstantProps {\r\n const schemaJson = super.toJSON(standalone, includeSchemaVersion) as any;\r\n if (this.phenomenon !== undefined)\r\n schemaJson.phenomenon = this.phenomenon.fullName;\r\n schemaJson.definition = this.definition;\r\n if (this.hasNumerator)\r\n schemaJson.numerator = this.numerator;\r\n if (this.hasDenominator)\r\n schemaJson.denominator = this.denominator;\r\n return schemaJson as ConstantProps;\r\n }\r\n\r\n /** @internal */\r\n public override async toXml(schemaXml: Document): Promise<Element> {\r\n const itemElement = await super.toXml(schemaXml);\r\n itemElement.setAttribute(\"definition\", this.definition);\r\n if (this.hasNumerator)\r\n itemElement.setAttribute(\"numerator\", this.numerator.toString());\r\n if (this.hasDenominator)\r\n itemElement.setAttribute(\"denominator\", this.denominator.toString());\r\n\r\n const phenomenon = await this.phenomenon;\r\n if (undefined !== phenomenon) {\r\n const phenomenonName = XmlSerializationUtils.createXmlTypedName(this.schema, phenomenon.schema, phenomenon.name);\r\n itemElement.setAttribute(\"phenomenon\", phenomenonName);\r\n }\r\n\r\n return itemElement;\r\n }\r\n\r\n public override fromJSONSync(constantProps: ConstantProps) {\r\n super.fromJSONSync(constantProps);\r\n\r\n const schemaItemKey = this.schema.getSchemaItemKey(constantProps.phenomenon);\r\n if (!schemaItemKey)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the phenomenon ${constantProps.phenomenon}.`);\r\n this._phenomenon = new DelayedPromiseWithProps<SchemaItemKey, Phenomenon>(schemaItemKey,\r\n async () => {\r\n const phenom = await this.schema.lookupItem<Phenomenon>(schemaItemKey);\r\n if (undefined === phenom)\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `Unable to locate the phenomenon ${constantProps.phenomenon}.`);\r\n return phenom;\r\n });\r\n\r\n if (this._definition !== \"\" && constantProps.definition.toLowerCase() !== this._definition.toLowerCase())\r\n throw new ECObjectsError(ECObjectsStatus.InvalidECJson, `The Constant ${this.name} has an invalid 'definition' attribute.`);\r\n else if (this._definition === \"\")\r\n this._definition = constantProps.definition;\r\n\r\n if (undefined !== constantProps.numerator) {\r\n if (constantProps.numerator !== this._numerator)\r\n this._numerator = constantProps.numerator;\r\n }\r\n\r\n if (undefined !== constantProps.denominator) {\r\n if (constantProps.denominator !== this._denominator)\r\n this._denominator = constantProps.denominator;\r\n }\r\n }\r\n\r\n public override async fromJSON(constantProps: ConstantProps) {\r\n this.fromJSONSync(constantProps);\r\n }\r\n\r\n /**\r\n * @alpha Used in schema editing.\r\n * @param phenomenon A LazyLoadedPhenomenon.\r\n */\r\n protected setPhenomenon(phenomenon: LazyLoadedPhenomenon) {\r\n this._phenomenon = phenomenon;\r\n }\r\n\r\n /**\r\n * @alpha Used in schema editing.\r\n */\r\n protected setDefinition(definition: string) {\r\n this._definition = definition;\r\n }\r\n\r\n /**\r\n * @alpha Used in schema editing.\r\n */\r\n protected setNumerator(numerator: number) {\r\n this._numerator = numerator;\r\n }\r\n\r\n /**\r\n * @alpha Used in schema editing.\r\n */\r\n protected setDenominator(denominator: number) {\r\n this._denominator = denominator;\r\n }\r\n}\r\n/**\r\n * @internal\r\n * An abstract class used for schema editing.\r\n */\r\nexport abstract class MutableConstant extends Constant {\r\n public abstract override setPhenomenon(phenomenon: LazyLoadedPhenomenon): void;\r\n public abstract override setDefinition(definition: string): void;\r\n public abstract override setNumerator(numerator: number): void;\r\n public abstract override setDenominator(denominator: number): void;\r\n public abstract override setDisplayLabel(displayLabel: string): void;\r\n}\r\n"]}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @module Metadata
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.serializeCustomAttributes =
|
|
10
|
+
exports.serializeCustomAttributes = serializeCustomAttributes;
|
|
11
11
|
/** @internal */
|
|
12
12
|
function serializeCustomAttributes(customAttributes) {
|
|
13
13
|
if (undefined !== customAttributes) { // custom attributes is optional
|
|
@@ -24,5 +24,4 @@ function serializeCustomAttributes(customAttributes) {
|
|
|
24
24
|
}
|
|
25
25
|
return undefined;
|
|
26
26
|
}
|
|
27
|
-
exports.serializeCustomAttributes = serializeCustomAttributes;
|
|
28
27
|
//# sourceMappingURL=CustomAttribute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomAttribute.js","sourceRoot":"","sources":["../../../src/Metadata/CustomAttribute.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG
|
|
1
|
+
{"version":3,"file":"CustomAttribute.js","sourceRoot":"","sources":["../../../src/Metadata/CustomAttribute.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AAyBH,8DAcC;AAfD,gBAAgB;AAChB,SAAgB,yBAAyB,CAAC,gBAAgD;IACxF,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC,CAAC,gCAAgC;QACpE,MAAM,UAAU,GAAU,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,EAAE,eAAe,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACnD,MAAM,SAAS,GAA6B,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE;gBACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACzC,SAAS,CAAC,YAAY,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Metadata\r\n */\r\n\r\nimport { Schema } from \"./Schema\";\r\n\r\n/** @beta */\r\nexport interface CustomAttribute {\r\n className: string;\r\n [propName: string]: any;\r\n}\r\n\r\n/** @internal */\r\nexport interface CustomAttributeSet {\r\n [Symbol.iterator]: () => IterableIterator<[string, CustomAttribute]>;\r\n has(className: string): boolean;\r\n get(className: string): CustomAttribute | undefined;\r\n}\r\n\r\n/** @beta */\r\nexport interface CustomAttributeContainerProps {\r\n customAttributes?: CustomAttributeSet;\r\n fullName: string;\r\n schema: Schema;\r\n}\r\n\r\n/** @internal */\r\nexport function serializeCustomAttributes(customAttributes: CustomAttributeSet | undefined): any[] | undefined {\r\n if (undefined !== customAttributes) { // custom attributes is optional\r\n const attributes: any[] = [];\r\n for (const [, customAttribute] of customAttributes) {\r\n const attribute: { [value: string]: any } = {};\r\n Object.keys(customAttribute).map((property: any) => {\r\n const propertyName = property.toString();\r\n attribute[propertyName] = customAttribute[property];\r\n });\r\n attributes.push(attribute);\r\n }\r\n return (attributes.length > 0) ? attributes : undefined;\r\n }\r\n return undefined;\r\n}\r\n"]}
|