@itwin/ecschema-metadata 5.2.0-dev.7 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/lib/cjs/Constants.js.map +1 -1
  3. package/lib/cjs/DelayedPromise.js.map +1 -1
  4. package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
  5. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  6. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  7. package/lib/cjs/Deserialization/JsonProps.d.ts +9 -2
  8. package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
  9. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  10. package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
  11. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  12. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  13. package/lib/cjs/ECName.js.map +1 -1
  14. package/lib/cjs/ECObjects.js.map +1 -1
  15. package/lib/cjs/Exception.js.map +1 -1
  16. package/lib/cjs/Formatting/FormatSetFormatsProvider.d.ts +37 -0
  17. package/lib/cjs/Formatting/FormatSetFormatsProvider.d.ts.map +1 -0
  18. package/lib/cjs/Formatting/FormatSetFormatsProvider.js +58 -0
  19. package/lib/cjs/Formatting/FormatSetFormatsProvider.js.map +1 -0
  20. package/lib/cjs/{SchemaFormatsProvider.d.ts → Formatting/SchemaFormatsProvider.d.ts} +1 -1
  21. package/lib/cjs/Formatting/SchemaFormatsProvider.d.ts.map +1 -0
  22. package/lib/cjs/{SchemaFormatsProvider.js → Formatting/SchemaFormatsProvider.js} +6 -6
  23. package/lib/cjs/Formatting/SchemaFormatsProvider.js.map +1 -0
  24. package/lib/cjs/IncrementalLoading/ClassParsers.js.map +1 -1
  25. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  26. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  27. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js +62 -34
  28. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  29. package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -1
  30. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +466 -465
  31. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  32. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts +20 -3
  33. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  34. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js +7 -4
  35. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  36. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  37. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js +2 -7
  38. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  39. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts +4 -4
  40. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -1
  41. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js +17 -17
  42. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  43. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +235 -235
  44. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  45. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts +10 -4
  46. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  47. package/lib/cjs/IncrementalLoading/SchemaParser.js +19 -19
  48. package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -1
  49. package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -1
  50. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +309 -326
  51. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  52. package/lib/cjs/Interfaces.js.map +1 -1
  53. package/lib/cjs/Metadata/Class.js.map +1 -1
  54. package/lib/cjs/Metadata/Constant.js.map +1 -1
  55. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  56. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  57. package/lib/cjs/Metadata/EntityClass.js +1 -1
  58. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  59. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  60. package/lib/cjs/Metadata/Format.js.map +1 -1
  61. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  62. package/lib/cjs/Metadata/KindOfQuantity.d.ts.map +1 -1
  63. package/lib/cjs/Metadata/KindOfQuantity.js +9 -22
  64. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  65. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  66. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  67. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  68. package/lib/cjs/Metadata/Property.js.map +1 -1
  69. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  70. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  71. package/lib/cjs/Metadata/Schema.d.ts +2 -0
  72. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  73. package/lib/cjs/Metadata/Schema.js +4 -0
  74. package/lib/cjs/Metadata/Schema.js.map +1 -1
  75. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  76. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  77. package/lib/cjs/PropertyTypes.js.map +1 -1
  78. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  79. package/lib/cjs/SchemaKey.js.map +1 -1
  80. package/lib/cjs/SchemaLoader.js.map +1 -1
  81. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  82. package/lib/cjs/UnitConversion/Graph.js.map +1 -1
  83. package/lib/cjs/UnitConversion/Parser.js.map +1 -1
  84. package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
  85. package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
  86. package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
  87. package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
  88. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  89. package/lib/cjs/ecschema-metadata.d.ts +2 -1
  90. package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
  91. package/lib/cjs/ecschema-metadata.js +2 -1
  92. package/lib/cjs/ecschema-metadata.js.map +1 -1
  93. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  94. package/lib/cjs/utils/SchemaLoadingController.js.map +1 -1
  95. package/lib/esm/Constants.js.map +1 -1
  96. package/lib/esm/DelayedPromise.js.map +1 -1
  97. package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
  98. package/lib/esm/Deserialization/Helper.js.map +1 -1
  99. package/lib/esm/Deserialization/JsonParser.js.map +1 -1
  100. package/lib/esm/Deserialization/JsonProps.d.ts +9 -2
  101. package/lib/esm/Deserialization/JsonProps.d.ts.map +1 -1
  102. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  103. package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
  104. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  105. package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
  106. package/lib/esm/ECName.js.map +1 -1
  107. package/lib/esm/ECObjects.js.map +1 -1
  108. package/lib/esm/Exception.js.map +1 -1
  109. package/lib/esm/Formatting/FormatSetFormatsProvider.d.ts +37 -0
  110. package/lib/esm/Formatting/FormatSetFormatsProvider.d.ts.map +1 -0
  111. package/lib/esm/Formatting/FormatSetFormatsProvider.js +54 -0
  112. package/lib/esm/Formatting/FormatSetFormatsProvider.js.map +1 -0
  113. package/lib/esm/{SchemaFormatsProvider.d.ts → Formatting/SchemaFormatsProvider.d.ts} +1 -1
  114. package/lib/esm/Formatting/SchemaFormatsProvider.d.ts.map +1 -0
  115. package/lib/esm/{SchemaFormatsProvider.js → Formatting/SchemaFormatsProvider.js} +6 -6
  116. package/lib/esm/Formatting/SchemaFormatsProvider.js.map +1 -0
  117. package/lib/esm/IncrementalLoading/ClassParsers.js.map +1 -1
  118. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  119. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  120. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js +61 -33
  121. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  122. package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -1
  123. package/lib/esm/IncrementalLoading/FullSchemaQueries.js +466 -465
  124. package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  125. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts +20 -3
  126. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  127. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js +7 -4
  128. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  129. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  130. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js +2 -7
  131. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  132. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts +4 -4
  133. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -1
  134. package/lib/esm/IncrementalLoading/SchemaItemParsers.js +17 -17
  135. package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  136. package/lib/esm/IncrementalLoading/SchemaItemQueries.js +235 -235
  137. package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  138. package/lib/esm/IncrementalLoading/SchemaParser.d.ts +10 -4
  139. package/lib/esm/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  140. package/lib/esm/IncrementalLoading/SchemaParser.js +19 -19
  141. package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -1
  142. package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -1
  143. package/lib/esm/IncrementalLoading/SchemaStubQueries.js +309 -326
  144. package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  145. package/lib/esm/Interfaces.js.map +1 -1
  146. package/lib/esm/Metadata/Class.js.map +1 -1
  147. package/lib/esm/Metadata/Constant.js.map +1 -1
  148. package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
  149. package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
  150. package/lib/esm/Metadata/EntityClass.js +1 -1
  151. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  152. package/lib/esm/Metadata/Enumeration.js.map +1 -1
  153. package/lib/esm/Metadata/Format.js.map +1 -1
  154. package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
  155. package/lib/esm/Metadata/KindOfQuantity.d.ts.map +1 -1
  156. package/lib/esm/Metadata/KindOfQuantity.js +9 -22
  157. package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
  158. package/lib/esm/Metadata/Mixin.js.map +1 -1
  159. package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
  160. package/lib/esm/Metadata/Phenomenon.js.map +1 -1
  161. package/lib/esm/Metadata/Property.js.map +1 -1
  162. package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
  163. package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
  164. package/lib/esm/Metadata/Schema.d.ts +2 -0
  165. package/lib/esm/Metadata/Schema.d.ts.map +1 -1
  166. package/lib/esm/Metadata/Schema.js +4 -0
  167. package/lib/esm/Metadata/Schema.js.map +1 -1
  168. package/lib/esm/Metadata/SchemaItem.js.map +1 -1
  169. package/lib/esm/Metadata/UnitSystem.js.map +1 -1
  170. package/lib/esm/PropertyTypes.js.map +1 -1
  171. package/lib/esm/SchemaJsonLocater.js.map +1 -1
  172. package/lib/esm/SchemaKey.js.map +1 -1
  173. package/lib/esm/SchemaLoader.js.map +1 -1
  174. package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
  175. package/lib/esm/UnitConversion/Graph.js.map +1 -1
  176. package/lib/esm/UnitConversion/Parser.js.map +1 -1
  177. package/lib/esm/UnitConversion/UnitConversion.js.map +1 -1
  178. package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
  179. package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
  180. package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
  181. package/lib/esm/Validation/SchemaWalker.js.map +1 -1
  182. package/lib/esm/ecschema-metadata.d.ts +2 -1
  183. package/lib/esm/ecschema-metadata.d.ts.map +1 -1
  184. package/lib/esm/ecschema-metadata.js +2 -1
  185. package/lib/esm/ecschema-metadata.js.map +1 -1
  186. package/lib/esm/utils/SchemaGraph.js.map +1 -1
  187. package/lib/esm/utils/SchemaLoadingController.js.map +1 -1
  188. package/package.json +6 -6
  189. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  190. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  191. package/lib/cjs/IncrementalLoading/PerformanceLogger.js +0 -82
  192. package/lib/cjs/IncrementalLoading/PerformanceLogger.js.map +0 -1
  193. package/lib/cjs/SchemaFormatsProvider.d.ts.map +0 -1
  194. package/lib/cjs/SchemaFormatsProvider.js.map +0 -1
  195. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  196. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  197. package/lib/esm/IncrementalLoading/PerformanceLogger.js +0 -78
  198. package/lib/esm/IncrementalLoading/PerformanceLogger.js.map +0 -1
  199. package/lib/esm/SchemaFormatsProvider.d.ts.map +0 -1
  200. package/lib/esm/SchemaFormatsProvider.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaItem.js","sourceRoot":"","sources":["../../../src/Metadata/SchemaItem.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { ECSchemaNamespaceUris } from \"../Constants\";\nimport { SchemaItemProps } from \"../Deserialization/JsonProps\";\nimport { SchemaLoadingController } from \"../utils/SchemaLoadingController\";\nimport { AbstractSchemaItemType, SchemaItemType, schemaItemTypeToXmlString, SupportedSchemaItemType } from \"../ECObjects\";\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\nimport { ECVersion, SchemaItemKey } from \"../SchemaKey\";\nimport { Schema } from \"./Schema\";\n\n/**\n * An abstract class that supplies all of the common parts of a SchemaItem.\n * @public @preview\n */\nexport abstract class SchemaItem {\n /**\n * Get the type of item represented by this class\n * @internal\n */\n public static get schemaItemType(): SupportedSchemaItemType { return AbstractSchemaItemType.SchemaItem }\n\n /**\n * Get the type of item represented by this instance\n */\n public abstract get schemaItemType(): SchemaItemType;\n public readonly schema: Schema;\n private _key: SchemaItemKey;\n private _description?: string;\n private _label?: string;\n private _loadingController?: SchemaLoadingController;\n\n /** @internal */\n constructor(schema: Schema, name: string) {\n this._key = new SchemaItemKey(name, schema.schemaKey);\n this.schema = schema;\n }\n\n public get name() { return this.key.name; }\n public get fullName() { return this.key.schemaKey ? `${this.key.schemaName}.${this.name}` : this.name; }\n public get key() { return this._key; }\n public get label() { return this._label; }\n public get description() { return this._description; }\n\n /**\n * Returns the SchemaLoadingController for this Schema. This would only be set if the schema is\n * loaded incrementally.\n * @internal\n */\n public get loadingController(): SchemaLoadingController | undefined{\n return this._loadingController;\n }\n\n // Proposal: Create protected setter methods for description and label? For UnitSystems as an example, where using createFromProps isn't that necessary and can just use basic create().\n /**\n * Save this SchemaItem's properties to an object for serializing to JSON.\n * @param standalone Serialization includes only this object (as opposed to the full schema).\n * @param includeSchemaVersion Include the Schema's version information in the serialized object.\n */\n public toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false) {\n const itemJson: { [value: string]: any } = {};\n if (standalone) {\n itemJson.$schema = ECSchemaNamespaceUris.SCHEMAITEMURL3_2; // $schema is required\n itemJson.schema = this.schema.name;\n itemJson.name = this.name; // name is required\n if (includeSchemaVersion) // check flag to see if we should output version\n itemJson.schemaVersion = this.key.schemaKey.version.toString();\n }\n itemJson.schemaItemType = this.schemaItemType;\n if (undefined !== this.label)\n itemJson.label = this.label;\n if (undefined !== this.description)\n itemJson.description = this.description;\n\n return itemJson as SchemaItemProps;\n }\n\n /** @internal */\n public async toXml(schemaXml: Document): Promise<Element> {\n const itemType = schemaItemTypeToXmlString(this.schemaItemType);\n const itemElement = schemaXml.createElement(itemType);\n itemElement.setAttribute(\"typeName\", this.name);\n if (undefined !== this.label)\n itemElement.setAttribute(\"displayLabel\", this.label);\n if (undefined !== this.description)\n itemElement.setAttribute(\"description\", this.description);\n\n // When all schema items support custom attributes they should be added here rather than in ECClass\n\n return itemElement;\n }\n\n public fromJSONSync(schemaItemProps: SchemaItemProps) {\n if (undefined !== schemaItemProps.label)\n this._label = schemaItemProps.label;\n\n this._description = schemaItemProps.description;\n\n if (undefined !== schemaItemProps.schema) {\n if (schemaItemProps.schema.toLowerCase() !== this.schema.name.toLowerCase())\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to deserialize the SchemaItem '${this.fullName}' with a different schema name, ${schemaItemProps.schema}, than the current Schema of this SchemaItem, ${this.schema.fullName}.`);\n }\n\n if (undefined !== schemaItemProps.schemaVersion) {\n if (this.key.schemaKey.version.compare(ECVersion.fromString(schemaItemProps.schemaVersion)))\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to deserialize the SchemaItem '${this.fullName}' with a different schema version, ${schemaItemProps.schemaVersion}, than the current Schema version of this SchemaItem, ${this.key.schemaKey.version}.`);\n }\n }\n\n public async fromJSON(schemaItemProps: SchemaItemProps) {\n if (undefined !== schemaItemProps.label)\n this._label = schemaItemProps.label;\n\n this._description = schemaItemProps.description;\n\n if (undefined !== schemaItemProps.schema) {\n if (schemaItemProps.schema.toLowerCase() !== this.schema.name.toLowerCase())\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to deserialize the SchemaItem ${this.fullName}' with a different schema name, ${schemaItemProps.schema}, than the current Schema of this SchemaItem, ${this.schema.fullName}`);\n }\n\n if (undefined !== schemaItemProps.schemaVersion) {\n if (this.key.schemaKey.version.compare(ECVersion.fromString(schemaItemProps.schemaVersion)))\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to deserialize the SchemaItem '${this.fullName}' with a different schema version, ${schemaItemProps.schemaVersion}, than the current Schema version of this SchemaItem, ${this.key.schemaKey.version}.`);\n }\n }\n\n /**\n * Parses the given full name, {schemaName}.{schemaItemName} or {schemaName}:{schemaItemName}, into two separate strings.\n * @note The schema name can be a schema alias.\n * @param fullName The full name to be parsed.\n * @returns A tuple of the parsed Schema name and Schema Item name. If the full name does not contain a '.' or ':', the second string in the tuple will returned the exact string pass in.\n */\n public static parseFullName(fullName: string): [string, string] {\n const matches = /^([a-zA-Z_]+[a-zA-Z0-9_]*(\\.\\d+\\.\\d+\\.\\d+)?)[.:]([a-zA-Z_]+[a-zA-Z0-9_]*)$/.exec(fullName);\n\n // The first match will be the full string match, the second three will be the three groups\n if (matches === null || matches.length !== 4)\n return [\"\", fullName];\n\n return [matches[1], matches[3]];\n }\n\n /**\n * Indicates if the two SchemaItem objects are equal by comparing their respective [[key]] properties.\n * @param thisSchemaItem The first SchemaItem.\n * @param thatSchemaItemOrKey The second SchemaItem or SchemaItemKey.\n */\n public static equalByKey(thisSchemaItem: SchemaItem, thatSchemaItemOrKey?: SchemaItem | SchemaItemKey): boolean {\n if (!thatSchemaItemOrKey)\n return true;\n SchemaItemType.EntityClass\n const key = SchemaItem.isSchemaItem(thatSchemaItemOrKey) ? thatSchemaItemOrKey.key : thatSchemaItemOrKey;\n return thisSchemaItem.key.matches(key);\n }\n\n /**\n * @internal\n */\n public static isSchemaItem(item: unknown): item is SchemaItem {\n const schemaItem = item as Partial<SchemaItem>;\n\n return schemaItem !== undefined && schemaItem.key !== undefined && schemaItem.schema !== undefined\n && schemaItem.schemaItemType !== undefined;\n }\n\n /** @internal */\n protected setName(name: string) {\n this._key = new SchemaItemKey(name, this.schema.schemaKey);\n }\n\n /** @internal */\n protected setDisplayLabel(displayLabel: string) {\n this._label = displayLabel;\n }\n\n /** @internal */\n protected setDescription(description: string) {\n this._description = description;\n }\n\n /** @internal */\n public setLoadingController(controller: SchemaLoadingController) {\n this._loadingController = controller;\n }\n}\n\n"]}
1
+ {"version":3,"file":"SchemaItem.js","sourceRoot":"","sources":["../../../src/Metadata/SchemaItem.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 { ECSchemaNamespaceUris } from \"../Constants\";\r\nimport { SchemaItemProps } from \"../Deserialization/JsonProps\";\r\nimport { SchemaLoadingController } from \"../utils/SchemaLoadingController\";\r\nimport { AbstractSchemaItemType, SchemaItemType, schemaItemTypeToXmlString, SupportedSchemaItemType } from \"../ECObjects\";\r\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\r\nimport { ECVersion, SchemaItemKey } from \"../SchemaKey\";\r\nimport { Schema } from \"./Schema\";\r\n\r\n/**\r\n * An abstract class that supplies all of the common parts of a SchemaItem.\r\n * @public @preview\r\n */\r\nexport abstract class SchemaItem {\r\n /**\r\n * Get the type of item represented by this class\r\n * @internal\r\n */\r\n public static get schemaItemType(): SupportedSchemaItemType { return AbstractSchemaItemType.SchemaItem }\r\n\r\n /**\r\n * Get the type of item represented by this instance\r\n */\r\n public abstract get schemaItemType(): SchemaItemType;\r\n public readonly schema: Schema;\r\n private _key: SchemaItemKey;\r\n private _description?: string;\r\n private _label?: string;\r\n private _loadingController?: SchemaLoadingController;\r\n\r\n /** @internal */\r\n constructor(schema: Schema, name: string) {\r\n this._key = new SchemaItemKey(name, schema.schemaKey);\r\n this.schema = schema;\r\n }\r\n\r\n public get name() { return this.key.name; }\r\n public get fullName() { return this.key.schemaKey ? `${this.key.schemaName}.${this.name}` : this.name; }\r\n public get key() { return this._key; }\r\n public get label() { return this._label; }\r\n public get description() { return this._description; }\r\n\r\n /**\r\n * Returns the SchemaLoadingController for this Schema. This would only be set if the schema is\r\n * loaded incrementally.\r\n * @internal\r\n */\r\n public get loadingController(): SchemaLoadingController | undefined{\r\n return this._loadingController;\r\n }\r\n\r\n // Proposal: Create protected setter methods for description and label? For UnitSystems as an example, where using createFromProps isn't that necessary and can just use basic create().\r\n /**\r\n * Save this SchemaItem's 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 toJSON(standalone: boolean = false, includeSchemaVersion: boolean = false) {\r\n const itemJson: { [value: string]: any } = {};\r\n if (standalone) {\r\n itemJson.$schema = ECSchemaNamespaceUris.SCHEMAITEMURL3_2; // $schema is required\r\n itemJson.schema = this.schema.name;\r\n itemJson.name = this.name; // name is required\r\n if (includeSchemaVersion) // check flag to see if we should output version\r\n itemJson.schemaVersion = this.key.schemaKey.version.toString();\r\n }\r\n itemJson.schemaItemType = this.schemaItemType;\r\n if (undefined !== this.label)\r\n itemJson.label = this.label;\r\n if (undefined !== this.description)\r\n itemJson.description = this.description;\r\n\r\n return itemJson as SchemaItemProps;\r\n }\r\n\r\n /** @internal */\r\n public async toXml(schemaXml: Document): Promise<Element> {\r\n const itemType = schemaItemTypeToXmlString(this.schemaItemType);\r\n const itemElement = schemaXml.createElement(itemType);\r\n itemElement.setAttribute(\"typeName\", this.name);\r\n if (undefined !== this.label)\r\n itemElement.setAttribute(\"displayLabel\", this.label);\r\n if (undefined !== this.description)\r\n itemElement.setAttribute(\"description\", this.description);\r\n\r\n // When all schema items support custom attributes they should be added here rather than in ECClass\r\n\r\n return itemElement;\r\n }\r\n\r\n public fromJSONSync(schemaItemProps: SchemaItemProps) {\r\n if (undefined !== schemaItemProps.label)\r\n this._label = schemaItemProps.label;\r\n\r\n this._description = schemaItemProps.description;\r\n\r\n if (undefined !== schemaItemProps.schema) {\r\n if (schemaItemProps.schema.toLowerCase() !== this.schema.name.toLowerCase())\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to deserialize the SchemaItem '${this.fullName}' with a different schema name, ${schemaItemProps.schema}, than the current Schema of this SchemaItem, ${this.schema.fullName}.`);\r\n }\r\n\r\n if (undefined !== schemaItemProps.schemaVersion) {\r\n if (this.key.schemaKey.version.compare(ECVersion.fromString(schemaItemProps.schemaVersion)))\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to deserialize the SchemaItem '${this.fullName}' with a different schema version, ${schemaItemProps.schemaVersion}, than the current Schema version of this SchemaItem, ${this.key.schemaKey.version}.`);\r\n }\r\n }\r\n\r\n public async fromJSON(schemaItemProps: SchemaItemProps) {\r\n if (undefined !== schemaItemProps.label)\r\n this._label = schemaItemProps.label;\r\n\r\n this._description = schemaItemProps.description;\r\n\r\n if (undefined !== schemaItemProps.schema) {\r\n if (schemaItemProps.schema.toLowerCase() !== this.schema.name.toLowerCase())\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to deserialize the SchemaItem ${this.fullName}' with a different schema name, ${schemaItemProps.schema}, than the current Schema of this SchemaItem, ${this.schema.fullName}`);\r\n }\r\n\r\n if (undefined !== schemaItemProps.schemaVersion) {\r\n if (this.key.schemaKey.version.compare(ECVersion.fromString(schemaItemProps.schemaVersion)))\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECJson, `Unable to deserialize the SchemaItem '${this.fullName}' with a different schema version, ${schemaItemProps.schemaVersion}, than the current Schema version of this SchemaItem, ${this.key.schemaKey.version}.`);\r\n }\r\n }\r\n\r\n /**\r\n * Parses the given full name, {schemaName}.{schemaItemName} or {schemaName}:{schemaItemName}, into two separate strings.\r\n * @note The schema name can be a schema alias.\r\n * @param fullName The full name to be parsed.\r\n * @returns A tuple of the parsed Schema name and Schema Item name. If the full name does not contain a '.' or ':', the second string in the tuple will returned the exact string pass in.\r\n */\r\n public static parseFullName(fullName: string): [string, string] {\r\n const matches = /^([a-zA-Z_]+[a-zA-Z0-9_]*(\\.\\d+\\.\\d+\\.\\d+)?)[.:]([a-zA-Z_]+[a-zA-Z0-9_]*)$/.exec(fullName);\r\n\r\n // The first match will be the full string match, the second three will be the three groups\r\n if (matches === null || matches.length !== 4)\r\n return [\"\", fullName];\r\n\r\n return [matches[1], matches[3]];\r\n }\r\n\r\n /**\r\n * Indicates if the two SchemaItem objects are equal by comparing their respective [[key]] properties.\r\n * @param thisSchemaItem The first SchemaItem.\r\n * @param thatSchemaItemOrKey The second SchemaItem or SchemaItemKey.\r\n */\r\n public static equalByKey(thisSchemaItem: SchemaItem, thatSchemaItemOrKey?: SchemaItem | SchemaItemKey): boolean {\r\n if (!thatSchemaItemOrKey)\r\n return true;\r\n SchemaItemType.EntityClass\r\n const key = SchemaItem.isSchemaItem(thatSchemaItemOrKey) ? thatSchemaItemOrKey.key : thatSchemaItemOrKey;\r\n return thisSchemaItem.key.matches(key);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static isSchemaItem(item: unknown): item is SchemaItem {\r\n const schemaItem = item as Partial<SchemaItem>;\r\n\r\n return schemaItem !== undefined && schemaItem.key !== undefined && schemaItem.schema !== undefined\r\n && schemaItem.schemaItemType !== undefined;\r\n }\r\n\r\n /** @internal */\r\n protected setName(name: string) {\r\n this._key = new SchemaItemKey(name, this.schema.schemaKey);\r\n }\r\n\r\n /** @internal */\r\n protected setDisplayLabel(displayLabel: string) {\r\n this._label = displayLabel;\r\n }\r\n\r\n /** @internal */\r\n protected setDescription(description: string) {\r\n this._description = description;\r\n }\r\n\r\n /** @internal */\r\n public setLoadingController(controller: SchemaLoadingController) {\r\n this._loadingController = controller;\r\n }\r\n}\r\n\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UnitSystem.js","sourceRoot":"","sources":["../../../src/Metadata/UnitSystem.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,4CAA8C;AAC9C,4CAA6D;AAC7D,6CAA0C;AAE1C;;GAEG;AACH,MAAa,UAAW,SAAQ,uBAAU;IACf,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IACpE,gBAAgB;IACT,MAAM,KAAc,cAAc,KAAK,OAAO,0BAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjF;;;;OAIG;IACI,MAAM,CAAC,YAAY,CAAC,IAAiB;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,0BAAc,CAAC,UAAU;YAC3D,OAAO,IAAI,CAAC;QAEd,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,CAAC,IAAiB;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAC1B,MAAM,IAAI,yBAAa,CAAC,0BAAc,CAAC,qBAAqB,EAAE,aAAa,0BAAc,CAAC,UAAU,gBAAgB,CAAC,CAAC;IAC1H,CAAC;CACF;AA3BD,gCA2BC;AAED;;;GAGG;AACH,MAAsB,iBAAkB,SAAQ,UAAU;CAEzD;AAFD,8CAEC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { SchemaItemType } from \"../ECObjects\";\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\nimport { SchemaItem } from \"./SchemaItem\";\n\n/**\n * @public @preview\n */\nexport class UnitSystem extends SchemaItem {\n public override readonly schemaItemType = UnitSystem.schemaItemType;\n /** @internal */\n public static override get schemaItemType() { return SchemaItemType.UnitSystem; }\n\n /**\n * Type guard to check if the SchemaItem is of type UnitSystem.\n * @param item The SchemaItem to check.\n * @returns True if the item is a UnitSystem, false otherwise.\n */\n public static isUnitSystem(item?: SchemaItem): item is UnitSystem {\n if (item && item.schemaItemType === SchemaItemType.UnitSystem)\n return true;\n\n return false;\n }\n\n /**\n * Type assertion to check if the SchemaItem is of type UnitSystem.\n * @param item The SchemaItem to check.\n * @returns The item cast to UnitSystem if it is a UnitSystem, undefined otherwise.\n * @internal\n */\n public static assertIsUnitSystem(item?: SchemaItem): asserts item is UnitSystem {\n if (!this.isUnitSystem(item))\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.UnitSystem}' (UnitSystem)`);\n }\n}\n\n/**\n * @internal\n * Used for schema editing.\n */\nexport abstract class MutableUnitSystem extends UnitSystem {\n public abstract override setDisplayLabel(displayLabel: string): void;\n}\n"]}
1
+ {"version":3,"file":"UnitSystem.js","sourceRoot":"","sources":["../../../src/Metadata/UnitSystem.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,4CAA8C;AAC9C,4CAA6D;AAC7D,6CAA0C;AAE1C;;GAEG;AACH,MAAa,UAAW,SAAQ,uBAAU;IACf,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IACpE,gBAAgB;IACT,MAAM,KAAc,cAAc,KAAK,OAAO,0BAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjF;;;;OAIG;IACI,MAAM,CAAC,YAAY,CAAC,IAAiB;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,0BAAc,CAAC,UAAU;YAC3D,OAAO,IAAI,CAAC;QAEd,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,CAAC,IAAiB;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAC1B,MAAM,IAAI,yBAAa,CAAC,0BAAc,CAAC,qBAAqB,EAAE,aAAa,0BAAc,CAAC,UAAU,gBAAgB,CAAC,CAAC;IAC1H,CAAC;CACF;AA3BD,gCA2BC;AAED;;;GAGG;AACH,MAAsB,iBAAkB,SAAQ,UAAU;CAEzD;AAFD,8CAEC","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 { SchemaItemType } from \"../ECObjects\";\r\nimport { ECSchemaError, ECSchemaStatus } from \"../Exception\";\r\nimport { SchemaItem } from \"./SchemaItem\";\r\n\r\n/**\r\n * @public @preview\r\n */\r\nexport class UnitSystem extends SchemaItem {\r\n public override readonly schemaItemType = UnitSystem.schemaItemType;\r\n /** @internal */\r\n public static override get schemaItemType() { return SchemaItemType.UnitSystem; }\r\n\r\n /**\r\n * Type guard to check if the SchemaItem is of type UnitSystem.\r\n * @param item The SchemaItem to check.\r\n * @returns True if the item is a UnitSystem, false otherwise.\r\n */\r\n public static isUnitSystem(item?: SchemaItem): item is UnitSystem {\r\n if (item && item.schemaItemType === SchemaItemType.UnitSystem)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Type assertion to check if the SchemaItem is of type UnitSystem.\r\n * @param item The SchemaItem to check.\r\n * @returns The item cast to UnitSystem if it is a UnitSystem, undefined otherwise.\r\n * @internal\r\n */\r\n public static assertIsUnitSystem(item?: SchemaItem): asserts item is UnitSystem {\r\n if (!this.isUnitSystem(item))\r\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaItemType, `Expected '${SchemaItemType.UnitSystem}' (UnitSystem)`);\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * Used for schema editing.\r\n */\r\nexport abstract class MutableUnitSystem extends UnitSystem {\r\n public abstract override setDisplayLabel(displayLabel: string): void;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyTypes.js","sourceRoot":"","sources":["../../src/PropertyTypes.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { PrimitiveType } from \"./ECObjects\";\nimport { ECSchemaError, ECSchemaStatus } from \"./Exception\";\n\nenum PropertyFlags {\n Primitive = 0x01,\n Struct = 0x02,\n Array = 0x04,\n Navigation = 0x08,\n Enumeration = 0x10,\n}\n\n/**\n * @public @preview\n */\nexport enum PropertyType {\n Struct = 0x02, // PropertyFlags.Struct\n Struct_Array = 0x06, // PropertyFlags.Struct | PropertyFlags.Array\n Navigation = 0x08, // PropertyFlags.Navigation\n Binary = 0x101, // PrimitiveType.Binary\n Binary_Array = 0x105, // PrimitiveType.Binary | PropertyFlags.Array\n Boolean = 0x201, // PrimitiveType.Boolean\n Boolean_Array = 0x205, // PrimitiveType.Boolean | PropertyFlags.Array\n DateTime = 0x301, // PrimitiveType.DateTime\n DateTime_Array = 0x305, // PrimitiveType.DateTime | PropertyFlags.Array\n Double = 0x401, // PrimitiveType.Double\n Double_Array = 0x405, // PrimitiveType.Double | PropertyFlags.Array\n Integer = 0x501, // PrimitiveType.Integer\n Integer_Array = 0x505, // PrimitiveType.Integer | PropertyFlags.Array\n Integer_Enumeration = 0x511, // PrimitiveType.Integer | PropertyFlags.Enumeration\n Integer_Enumeration_Array = 0x515, // PrimitiveType.Integer | PropertyFlags.Enumeration | PropertyFlags.Array\n Long = 0x601, // PrimitiveType.Long\n Long_Array = 0x605, // PrimitiveType.Long | PropertyFlags.Array\n Point2d = 0x701, // PrimitiveType.Point2d\n Point2d_Array = 0x705, // PrimitiveType.Point2d | PropertyFlags.Array\n Point3d = 0x801, // PrimitiveType.Point3d\n Point3d_Array = 0x805, // PrimitiveType.Point3d | PropertyFlags.Array\n String = 0x901, // PrimitiveType.String\n String_Array = 0x905, // PrimitiveType.String | PropertyFlags.Array\n String_Enumeration = 0x911, // PrimitiveType.String | PropertyFlags.Enumeration\n String_Enumeration_Array = 0x915, // PrimitiveType.String | PropertyFlags.Enumeration | PropertyFlags.Array\n IGeometry = 0xA01, // PrimitiveType.IGeometry\n IGeometry_Array = 0xA05, // PrimitiveType.IGeometry | PropertyFlags.Array\n}\n\n/** @internal */\nexport namespace PropertyTypeUtils {\n export function isArray(type: PropertyType) {\n return (type === (PropertyFlags.Array | type));\n }\n export function isPrimitive(type: PropertyType) {\n return (type === (PropertyFlags.Primitive | type));\n }\n export function isStruct(type: PropertyType) {\n return (type === (PropertyFlags.Struct | type));\n }\n export function isNavigation(type: PropertyType) {\n return (type === (PropertyFlags.Navigation | type));\n }\n export function isEnumeration(type: PropertyType) {\n return (type === (PropertyFlags.Enumeration | type));\n }\n export function asArray(type: PropertyType): PropertyType {\n return type | PropertyFlags.Array;\n }\n export function getPrimitiveType(type: PropertyType): PrimitiveType {\n return (0xFF01 & type);\n }\n export function fromPrimitiveType(type: PrimitiveType): PropertyType {\n return type| 0;\n }\n}\n\n/** @internal */\nexport function propertyTypeToString(type: PropertyType) {\n if (PropertyTypeUtils.isPrimitive(type))\n return (PropertyTypeUtils.isArray(type)) ? \"PrimitiveArrayProperty\" : \"PrimitiveProperty\";\n if (PropertyTypeUtils.isStruct(type))\n return (PropertyTypeUtils.isArray(type)) ? \"StructArrayProperty\" : \"StructProperty\";\n if (PropertyTypeUtils.isNavigation(type))\n return \"NavigationProperty\";\n throw new ECSchemaError(ECSchemaStatus.InvalidType, \"Invalid propertyType\");\n}\n"]}
1
+ {"version":3,"file":"PropertyTypes.js","sourceRoot":"","sources":["../../src/PropertyTypes.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 { PrimitiveType } from \"./ECObjects\";\r\nimport { ECSchemaError, ECSchemaStatus } from \"./Exception\";\r\n\r\nenum PropertyFlags {\r\n Primitive = 0x01,\r\n Struct = 0x02,\r\n Array = 0x04,\r\n Navigation = 0x08,\r\n Enumeration = 0x10,\r\n}\r\n\r\n/**\r\n * @public @preview\r\n */\r\nexport enum PropertyType {\r\n Struct = 0x02, // PropertyFlags.Struct\r\n Struct_Array = 0x06, // PropertyFlags.Struct | PropertyFlags.Array\r\n Navigation = 0x08, // PropertyFlags.Navigation\r\n Binary = 0x101, // PrimitiveType.Binary\r\n Binary_Array = 0x105, // PrimitiveType.Binary | PropertyFlags.Array\r\n Boolean = 0x201, // PrimitiveType.Boolean\r\n Boolean_Array = 0x205, // PrimitiveType.Boolean | PropertyFlags.Array\r\n DateTime = 0x301, // PrimitiveType.DateTime\r\n DateTime_Array = 0x305, // PrimitiveType.DateTime | PropertyFlags.Array\r\n Double = 0x401, // PrimitiveType.Double\r\n Double_Array = 0x405, // PrimitiveType.Double | PropertyFlags.Array\r\n Integer = 0x501, // PrimitiveType.Integer\r\n Integer_Array = 0x505, // PrimitiveType.Integer | PropertyFlags.Array\r\n Integer_Enumeration = 0x511, // PrimitiveType.Integer | PropertyFlags.Enumeration\r\n Integer_Enumeration_Array = 0x515, // PrimitiveType.Integer | PropertyFlags.Enumeration | PropertyFlags.Array\r\n Long = 0x601, // PrimitiveType.Long\r\n Long_Array = 0x605, // PrimitiveType.Long | PropertyFlags.Array\r\n Point2d = 0x701, // PrimitiveType.Point2d\r\n Point2d_Array = 0x705, // PrimitiveType.Point2d | PropertyFlags.Array\r\n Point3d = 0x801, // PrimitiveType.Point3d\r\n Point3d_Array = 0x805, // PrimitiveType.Point3d | PropertyFlags.Array\r\n String = 0x901, // PrimitiveType.String\r\n String_Array = 0x905, // PrimitiveType.String | PropertyFlags.Array\r\n String_Enumeration = 0x911, // PrimitiveType.String | PropertyFlags.Enumeration\r\n String_Enumeration_Array = 0x915, // PrimitiveType.String | PropertyFlags.Enumeration | PropertyFlags.Array\r\n IGeometry = 0xA01, // PrimitiveType.IGeometry\r\n IGeometry_Array = 0xA05, // PrimitiveType.IGeometry | PropertyFlags.Array\r\n}\r\n\r\n/** @internal */\r\nexport namespace PropertyTypeUtils {\r\n export function isArray(type: PropertyType) {\r\n return (type === (PropertyFlags.Array | type));\r\n }\r\n export function isPrimitive(type: PropertyType) {\r\n return (type === (PropertyFlags.Primitive | type));\r\n }\r\n export function isStruct(type: PropertyType) {\r\n return (type === (PropertyFlags.Struct | type));\r\n }\r\n export function isNavigation(type: PropertyType) {\r\n return (type === (PropertyFlags.Navigation | type));\r\n }\r\n export function isEnumeration(type: PropertyType) {\r\n return (type === (PropertyFlags.Enumeration | type));\r\n }\r\n export function asArray(type: PropertyType): PropertyType {\r\n return type | PropertyFlags.Array;\r\n }\r\n export function getPrimitiveType(type: PropertyType): PrimitiveType {\r\n return (0xFF01 & type);\r\n }\r\n export function fromPrimitiveType(type: PrimitiveType): PropertyType {\r\n return type| 0;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function propertyTypeToString(type: PropertyType) {\r\n if (PropertyTypeUtils.isPrimitive(type))\r\n return (PropertyTypeUtils.isArray(type)) ? \"PrimitiveArrayProperty\" : \"PrimitiveProperty\";\r\n if (PropertyTypeUtils.isStruct(type))\r\n return (PropertyTypeUtils.isArray(type)) ? \"StructArrayProperty\" : \"StructProperty\";\r\n if (PropertyTypeUtils.isNavigation(type))\r\n return \"NavigationProperty\";\r\n throw new ECSchemaError(ECSchemaStatus.InvalidType, \"Invalid propertyType\");\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaJsonLocater.js","sourceRoot":"","sources":["../../src/SchemaJsonLocater.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,uCAA0D;AAI1D,8CAA2C;AAU3C;;;;GAIG;AACH,MAAa,iBAAiB;IACD;IAA3B,YAA2B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAI,CAAC;IAE7D;;;;;OAKG;IACI,KAAK,CAAC,SAAS,CAAC,SAAoB,EAAE,SAA0B,EAAE,OAAsB;QAC7F,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,SAAoB,EAAE,SAA0B,EAAE,OAAsB;QACjG,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW;YACd,OAAO,SAAS,CAAC;QAEnB,MAAM,UAAU,GAAG,MAAM,eAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;YAChF,OAAO,UAAU,CAAC;QAEpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,SAAoB,EAAE,UAA2B,EAAE,OAAsB;QAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW;YACd,OAAO,SAAS,CAAC;QAEnB,OAAO,eAAM,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,IAAI,IAAI,uBAAa,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF;AA5CD,8CA4CC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { ISchemaLocater, SchemaContext } from \"./Context\";\nimport { SchemaProps } from \"./Deserialization/JsonProps\";\nimport { SchemaMatchType } from \"./ECObjects\";\nimport { SchemaInfo } from \"./Interfaces\";\nimport { Schema } from \"./Metadata/Schema\";\nimport { SchemaKey } from \"./SchemaKey\";\n\n/**\n * Gets the full schema Json for the input schema name or undefined if not found\n * @throws [Error] if the schema is found but json cannot be returned\n * @public @preview\n */\nexport type SchemaPropsGetter = (schemaName: string) => SchemaProps | undefined;\n\n/**\n * An ISchemaLocater implementation for locating and retrieving EC Schema objects using a function\n * that returns the Schema Json for a given schema name\n * @public @preview\n */\nexport class SchemaJsonLocater implements ISchemaLocater {\n public constructor(private _getSchema: SchemaPropsGetter) { }\n\n /** Get a schema by [SchemaKey]\n * @param schemaKey The [SchemaKey] that identifies the schema.\n * @param matchType The [SchemaMatchType] to used for comparing schema versions.\n * @param context The [SchemaContext] used to facilitate schema location.\n * @throws [ECSchemaError]($ecschema-metadata) if the schema exists, but cannot be loaded.\n */\n public async getSchema(schemaKey: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<Schema | undefined> {\n await this.getSchemaInfo(schemaKey, matchType, context);\n return context.getCachedSchema(schemaKey, matchType);\n }\n\n /**\n * Gets the schema info which matches the provided SchemaKey. The schema info may be returned before the schema is fully loaded.\n * @param schemaKey The SchemaKey describing the schema to get from the cache.\n * @param matchType The match type to use when locating the schema\n */\n public async getSchemaInfo(schemaKey: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<SchemaInfo | undefined> {\n const schemaProps = this._getSchema(schemaKey.name);\n if (!schemaProps)\n return undefined;\n\n const schemaInfo = await Schema.startLoadingFromJson(schemaProps, context);\n if (schemaInfo !== undefined && schemaInfo.schemaKey.matches(schemaKey, matchType))\n return schemaInfo;\n\n return undefined;\n }\n\n /** Get a schema by [SchemaKey] synchronously.\n * @param schemaKey The [SchemaKey] that identifies the schema.\n * @param matchType The [SchemaMatchType] to used for comparing schema versions.\n * @param context The [SchemaContext] used to facilitate schema location.\n * @throws [Error]($ecschema-metadata) if the schema exists, but cannot be loaded.\n */\n public getSchemaSync(schemaKey: SchemaKey, _matchType: SchemaMatchType, context: SchemaContext): Schema | undefined {\n const schemaProps = this._getSchema(schemaKey.name);\n if (!schemaProps)\n return undefined;\n\n return Schema.fromJsonSync(schemaProps, context || new SchemaContext());\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaJsonLocater.js","sourceRoot":"","sources":["../../src/SchemaJsonLocater.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,uCAA0D;AAI1D,8CAA2C;AAU3C;;;;GAIG;AACH,MAAa,iBAAiB;IACD;IAA3B,YAA2B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAI,CAAC;IAE7D;;;;;OAKG;IACI,KAAK,CAAC,SAAS,CAAC,SAAoB,EAAE,SAA0B,EAAE,OAAsB;QAC7F,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,SAAoB,EAAE,SAA0B,EAAE,OAAsB;QACjG,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW;YACd,OAAO,SAAS,CAAC;QAEnB,MAAM,UAAU,GAAG,MAAM,eAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;YAChF,OAAO,UAAU,CAAC;QAEpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,SAAoB,EAAE,UAA2B,EAAE,OAAsB;QAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW;YACd,OAAO,SAAS,CAAC;QAEnB,OAAO,eAAM,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,IAAI,IAAI,uBAAa,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF;AA5CD,8CA4CC","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\r\nimport { ISchemaLocater, SchemaContext } from \"./Context\";\r\nimport { SchemaProps } from \"./Deserialization/JsonProps\";\r\nimport { SchemaMatchType } from \"./ECObjects\";\r\nimport { SchemaInfo } from \"./Interfaces\";\r\nimport { Schema } from \"./Metadata/Schema\";\r\nimport { SchemaKey } from \"./SchemaKey\";\r\n\r\n/**\r\n * Gets the full schema Json for the input schema name or undefined if not found\r\n * @throws [Error] if the schema is found but json cannot be returned\r\n * @public @preview\r\n */\r\nexport type SchemaPropsGetter = (schemaName: string) => SchemaProps | undefined;\r\n\r\n/**\r\n * An ISchemaLocater implementation for locating and retrieving EC Schema objects using a function\r\n * that returns the Schema Json for a given schema name\r\n * @public @preview\r\n */\r\nexport class SchemaJsonLocater implements ISchemaLocater {\r\n public constructor(private _getSchema: SchemaPropsGetter) { }\r\n\r\n /** Get a schema by [SchemaKey]\r\n * @param schemaKey The [SchemaKey] that identifies the schema.\r\n * @param matchType The [SchemaMatchType] to used for comparing schema versions.\r\n * @param context The [SchemaContext] used to facilitate schema location.\r\n * @throws [ECSchemaError]($ecschema-metadata) if the schema exists, but cannot be loaded.\r\n */\r\n public async getSchema(schemaKey: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<Schema | undefined> {\r\n await this.getSchemaInfo(schemaKey, matchType, context);\r\n return context.getCachedSchema(schemaKey, matchType);\r\n }\r\n\r\n /**\r\n * Gets the schema info which matches the provided SchemaKey. The schema info may be returned before the schema is fully loaded.\r\n * @param schemaKey The SchemaKey describing the schema to get from the cache.\r\n * @param matchType The match type to use when locating the schema\r\n */\r\n public async getSchemaInfo(schemaKey: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<SchemaInfo | undefined> {\r\n const schemaProps = this._getSchema(schemaKey.name);\r\n if (!schemaProps)\r\n return undefined;\r\n\r\n const schemaInfo = await Schema.startLoadingFromJson(schemaProps, context);\r\n if (schemaInfo !== undefined && schemaInfo.schemaKey.matches(schemaKey, matchType))\r\n return schemaInfo;\r\n\r\n return undefined;\r\n }\r\n\r\n /** Get a schema by [SchemaKey] synchronously.\r\n * @param schemaKey The [SchemaKey] that identifies the schema.\r\n * @param matchType The [SchemaMatchType] to used for comparing schema versions.\r\n * @param context The [SchemaContext] used to facilitate schema location.\r\n * @throws [Error]($ecschema-metadata) if the schema exists, but cannot be loaded.\r\n */\r\n public getSchemaSync(schemaKey: SchemaKey, _matchType: SchemaMatchType, context: SchemaContext): Schema | undefined {\r\n const schemaProps = this._getSchema(schemaKey.name);\r\n if (!schemaProps)\r\n return undefined;\r\n\r\n return Schema.fromJsonSync(schemaProps, context || new SchemaContext());\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaKey.js","sourceRoot":"","sources":["../../src/SchemaKey.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Metadata\n */\n\nimport { SchemaKeyProps } from \"./Deserialization/JsonProps\";\nimport { SchemaMatchType } from \"./ECObjects\";\nimport { ECSchemaError, ECSchemaStatus } from \"./Exception\";\nimport { ECName } from \"./ECName\";\n\n/**\n * @public @preview\n */\nexport class ECVersion {\n private _read: number = 0;\n private _write: number = 0;\n private _minor: number = 0;\n\n /**\n * Using a version with all zero is invalid\n * for a schema, but it can be used to indicate\n * \"no version has been specified\" when locating things\n */\n public static readonly NO_VERSION = new ECVersion(0, 0, 0);\n\n /**\n * The constructor will throw an ECSchemaError if any of the parameters below are above the threshold.\n * @param read Can support up to 999.\n * @param write Can support up to 999.\n * @param minor Can support up to 9999999.\n *\n */\n constructor(read?: number, write?: number, minor?: number) {\n if (undefined !== read)\n this._read = read;\n if (undefined !== write)\n this._write = write;\n if (undefined !== minor)\n this._minor = minor;\n\n if (this._read > 999 || this._read < 0 || this._write > 999 || this._write < 0 || this._minor > 9999999 || this._minor < 0)\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion);\n }\n\n public get read() { return this._read; }\n public get write() { return this._write; }\n public get minor() { return this._minor; }\n\n /**\n * Creates a string, in the format 'RR.ww.mm', representing this ECVersion.\n * @note The default is to pad with zeroes.\n * @param padZeroes If true, the returned string will strictly follow `RR.ww.mm` and add leading zeroes if necessary.\n */\n public toString(padZeroes: boolean = true): string {\n if (!padZeroes)\n return `${this.read}.${this.write}.${this.minor}`;\n\n const padWithZeroes = (num: number) => {\n return (num < 10 ? \"0\" : \"\") + num;\n };\n\n return `${padWithZeroes(this.read)}.${padWithZeroes(this.write)}.${padWithZeroes(this.minor)}`;\n }\n\n /**\n * Given a valid version string the\n * @param versionString A valid version string of the format, 'RR.ww.mm'.\n */\n public static fromString(versionString: string): ECVersion {\n const [read, write, minor] = versionString.split(\".\");\n if (!read)\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion, `The read version is missing from version string, ${versionString}`);\n\n if (!write)\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion, `The write version is missing from version string, ${versionString}`);\n\n if (!minor)\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion, `The minor version is missing from version string, ${versionString}`);\n\n return new ECVersion(+read, +write, +minor);\n }\n\n /**\n * Compares two schema versions.\n * @param rhs The schema to compare.\n * @return A negative number if this schema version is less than the given version, a positive number if greater, and 0 if are equivalent.\n */\n public compare(rhv: ECVersion): number {\n if (this.read !== rhv.read)\n return this.read - rhv.read;\n\n if (this.write !== rhv.write)\n return this.write - rhv.write;\n\n return this.minor - rhv.minor;\n }\n}\n\n/**\n * The SchemaKey contains a Schemas name and version.\n * @public @preview\n */\nexport class SchemaKey {\n private _name: ECName;\n private _version: ECVersion;\n // public checksum: number;\n // TODO: need to add a checksum\n\n constructor(name: string, version: ECVersion);\n constructor(name: string, readVersion?: number, writeVersion?: number, minorVersion?: number);\n constructor(name: string, readOrVersion?: number | ECVersion, writeVersion?: number, minorVersion?: number) {\n this._name = new ECName(name);\n if (readOrVersion !== undefined && typeof (readOrVersion) !== \"number\")\n this._version = readOrVersion;\n else\n this._version = new ECVersion(readOrVersion, writeVersion, minorVersion);\n }\n\n public get version() { return this._version; }\n public get name() { return this._name.name; }\n public get readVersion() { return this.version.read; }\n public get writeVersion() { return this.version.write; }\n public get minorVersion() { return this.version.minor; }\n\n /**\n * Creates a string, in the format 'RR.ww.mm', representing this SchemaKey.\n * @note The default is to pad the full name with zeroes.\n * @param padZeroes If true, the returned string will strictly follow `Name.RR.ww.mm` and add leading zeroes if necessary.\n */\n public toString(padZeroes: boolean = true) { return `${this.name}.${this.version.toString(padZeroes)}`; }\n\n public static parseString(fullName: string) {\n const keyPieces = fullName.split(\".\");\n if (keyPieces.length !== 4)\n throw new ECSchemaError(ECSchemaStatus.InvalidECName);\n\n const schemaName = keyPieces[0];\n const readVer = Number(keyPieces[1]);\n const writeVer = Number(keyPieces[2]);\n const minorVer = Number(keyPieces[3]);\n return new SchemaKey(schemaName, new ECVersion(readVer, writeVer, minorVer));\n }\n\n /**\n * Compares two schema names, case-insensitive.\n * @return True if they match; otherwise, false.\n */\n public compareByName(rhs: SchemaKey | string | undefined): boolean {\n if (undefined === rhs)\n return false;\n\n if (typeof (rhs) === \"string\")\n return rhs.toLowerCase() === this.name.toLowerCase();\n\n return rhs.name.toLowerCase() === this.name.toLowerCase();\n }\n\n /**\n * Compares two schema versions.\n * @param rhs The schema to compare.\n * @return A negative number if this schema version is less than the given version, a positive number if greater, and 0 if are equivalent.\n */\n public compareByVersion(rhs: SchemaKey): number {\n return this.version.compare(rhs.version);\n }\n\n /**\n *\n * @param rhs The SchemaKey to compare with\n * @param matchType The match type to use for comparison.\n */\n public matches(rhs: SchemaKey, matchType: SchemaMatchType = SchemaMatchType.Exact): boolean {\n switch (matchType) {\n case SchemaMatchType.Identical:\n case SchemaMatchType.Exact:\n return this.compareByName(rhs.name) && this.readVersion === rhs.readVersion &&\n this.writeVersion === rhs.writeVersion && this.minorVersion === rhs.minorVersion;\n case SchemaMatchType.LatestReadCompatible:\n if (!this.compareByName(rhs.name))\n return false;\n\n if (rhs.readVersion !== this.readVersion)\n return false;\n\n if (this.writeVersion === rhs.writeVersion)\n return this.minorVersion >= rhs.minorVersion;\n\n return this.writeVersion > rhs.writeVersion;\n case SchemaMatchType.LatestWriteCompatible:\n return this.compareByName(rhs.name) && this.readVersion === rhs.readVersion &&\n this.writeVersion === rhs.writeVersion && this.minorVersion >= rhs.minorVersion;\n case SchemaMatchType.Latest:\n return this.compareByName(rhs.name);\n default:\n return false;\n }\n }\n\n /**\n * Deserializes a SchemaKeyProps JSON object into a SchemaKey object.\n * @param props SchemaKeyProps\n * @returns A SchemaKey object.\n */\n public static fromJSON(props: SchemaKeyProps): SchemaKey {\n return new SchemaKey(props.name, props.read, props.write, props.minor);\n }\n\n /**\n * Save this SchemaKey's properties to an object for serializing to JSON.\n */\n public toJSON(): SchemaKeyProps {\n return {\n name: this.name,\n read: this.readVersion,\n write: this.writeVersion,\n minor: this.minorVersion,\n };\n }\n}\n\n/**\n * The SchemaItemKey contains a SchemaItem's name and SchemaKey.\n * @public @preview\n */\nexport class SchemaItemKey {\n private _name: ECName;\n private _schemaKey: SchemaKey;\n\n constructor(name: string, schema: SchemaKey) {\n this._name = new ECName(name);\n this._schemaKey = schema;\n }\n\n public get schemaKey() { return this._schemaKey; }\n public get name() { return this._name.name; }\n\n public get schemaName() { return this.schemaKey.name; }\n\n /** Returns the name in the format, {schemaName}.{name}. */\n public get fullName() { return `${this.schemaName}.${this.name}`; }\n\n /**\n * Checks whether this SchemaItemKey matches the one provided.\n * @param rhs The SchemaItemKey to compare to this.\n */\n // TODO: Need to add a match type\n public matches(rhs: SchemaItemKey): boolean {\n if (rhs.name !== this.name)\n return false;\n\n if (!rhs.schemaKey.matches(this.schemaKey, SchemaMatchType.Latest))\n return false;\n\n return true;\n }\n\n public matchesFullName(name: string): boolean {\n const schemaVersion = this.schemaKey.version.toString().replace(/\\./g, \"\\\\.\");\n const fullNameRegex = new RegExp(`^${this.schemaName}(\\\\.${schemaVersion})?[.:]${this.name}$`, \"i\");\n return fullNameRegex.test(name);\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaKey.js","sourceRoot":"","sources":["../../src/SchemaKey.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 { SchemaKeyProps } from \"./Deserialization/JsonProps\";\r\nimport { SchemaMatchType } from \"./ECObjects\";\r\nimport { ECSchemaError, ECSchemaStatus } from \"./Exception\";\r\nimport { ECName } from \"./ECName\";\r\n\r\n/**\r\n * @public @preview\r\n */\r\nexport class ECVersion {\r\n private _read: number = 0;\r\n private _write: number = 0;\r\n private _minor: number = 0;\r\n\r\n /**\r\n * Using a version with all zero is invalid\r\n * for a schema, but it can be used to indicate\r\n * \"no version has been specified\" when locating things\r\n */\r\n public static readonly NO_VERSION = new ECVersion(0, 0, 0);\r\n\r\n /**\r\n * The constructor will throw an ECSchemaError if any of the parameters below are above the threshold.\r\n * @param read Can support up to 999.\r\n * @param write Can support up to 999.\r\n * @param minor Can support up to 9999999.\r\n *\r\n */\r\n constructor(read?: number, write?: number, minor?: number) {\r\n if (undefined !== read)\r\n this._read = read;\r\n if (undefined !== write)\r\n this._write = write;\r\n if (undefined !== minor)\r\n this._minor = minor;\r\n\r\n if (this._read > 999 || this._read < 0 || this._write > 999 || this._write < 0 || this._minor > 9999999 || this._minor < 0)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion);\r\n }\r\n\r\n public get read() { return this._read; }\r\n public get write() { return this._write; }\r\n public get minor() { return this._minor; }\r\n\r\n /**\r\n * Creates a string, in the format 'RR.ww.mm', representing this ECVersion.\r\n * @note The default is to pad with zeroes.\r\n * @param padZeroes If true, the returned string will strictly follow `RR.ww.mm` and add leading zeroes if necessary.\r\n */\r\n public toString(padZeroes: boolean = true): string {\r\n if (!padZeroes)\r\n return `${this.read}.${this.write}.${this.minor}`;\r\n\r\n const padWithZeroes = (num: number) => {\r\n return (num < 10 ? \"0\" : \"\") + num;\r\n };\r\n\r\n return `${padWithZeroes(this.read)}.${padWithZeroes(this.write)}.${padWithZeroes(this.minor)}`;\r\n }\r\n\r\n /**\r\n * Given a valid version string the\r\n * @param versionString A valid version string of the format, 'RR.ww.mm'.\r\n */\r\n public static fromString(versionString: string): ECVersion {\r\n const [read, write, minor] = versionString.split(\".\");\r\n if (!read)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion, `The read version is missing from version string, ${versionString}`);\r\n\r\n if (!write)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion, `The write version is missing from version string, ${versionString}`);\r\n\r\n if (!minor)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion, `The minor version is missing from version string, ${versionString}`);\r\n\r\n return new ECVersion(+read, +write, +minor);\r\n }\r\n\r\n /**\r\n * Compares two schema versions.\r\n * @param rhs The schema to compare.\r\n * @return A negative number if this schema version is less than the given version, a positive number if greater, and 0 if are equivalent.\r\n */\r\n public compare(rhv: ECVersion): number {\r\n if (this.read !== rhv.read)\r\n return this.read - rhv.read;\r\n\r\n if (this.write !== rhv.write)\r\n return this.write - rhv.write;\r\n\r\n return this.minor - rhv.minor;\r\n }\r\n}\r\n\r\n/**\r\n * The SchemaKey contains a Schemas name and version.\r\n * @public @preview\r\n */\r\nexport class SchemaKey {\r\n private _name: ECName;\r\n private _version: ECVersion;\r\n // public checksum: number;\r\n // TODO: need to add a checksum\r\n\r\n constructor(name: string, version: ECVersion);\r\n constructor(name: string, readVersion?: number, writeVersion?: number, minorVersion?: number);\r\n constructor(name: string, readOrVersion?: number | ECVersion, writeVersion?: number, minorVersion?: number) {\r\n this._name = new ECName(name);\r\n if (readOrVersion !== undefined && typeof (readOrVersion) !== \"number\")\r\n this._version = readOrVersion;\r\n else\r\n this._version = new ECVersion(readOrVersion, writeVersion, minorVersion);\r\n }\r\n\r\n public get version() { return this._version; }\r\n public get name() { return this._name.name; }\r\n public get readVersion() { return this.version.read; }\r\n public get writeVersion() { return this.version.write; }\r\n public get minorVersion() { return this.version.minor; }\r\n\r\n /**\r\n * Creates a string, in the format 'RR.ww.mm', representing this SchemaKey.\r\n * @note The default is to pad the full name with zeroes.\r\n * @param padZeroes If true, the returned string will strictly follow `Name.RR.ww.mm` and add leading zeroes if necessary.\r\n */\r\n public toString(padZeroes: boolean = true) { return `${this.name}.${this.version.toString(padZeroes)}`; }\r\n\r\n public static parseString(fullName: string) {\r\n const keyPieces = fullName.split(\".\");\r\n if (keyPieces.length !== 4)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECName);\r\n\r\n const schemaName = keyPieces[0];\r\n const readVer = Number(keyPieces[1]);\r\n const writeVer = Number(keyPieces[2]);\r\n const minorVer = Number(keyPieces[3]);\r\n return new SchemaKey(schemaName, new ECVersion(readVer, writeVer, minorVer));\r\n }\r\n\r\n /**\r\n * Compares two schema names, case-insensitive.\r\n * @return True if they match; otherwise, false.\r\n */\r\n public compareByName(rhs: SchemaKey | string | undefined): boolean {\r\n if (undefined === rhs)\r\n return false;\r\n\r\n if (typeof (rhs) === \"string\")\r\n return rhs.toLowerCase() === this.name.toLowerCase();\r\n\r\n return rhs.name.toLowerCase() === this.name.toLowerCase();\r\n }\r\n\r\n /**\r\n * Compares two schema versions.\r\n * @param rhs The schema to compare.\r\n * @return A negative number if this schema version is less than the given version, a positive number if greater, and 0 if are equivalent.\r\n */\r\n public compareByVersion(rhs: SchemaKey): number {\r\n return this.version.compare(rhs.version);\r\n }\r\n\r\n /**\r\n *\r\n * @param rhs The SchemaKey to compare with\r\n * @param matchType The match type to use for comparison.\r\n */\r\n public matches(rhs: SchemaKey, matchType: SchemaMatchType = SchemaMatchType.Exact): boolean {\r\n switch (matchType) {\r\n case SchemaMatchType.Identical:\r\n case SchemaMatchType.Exact:\r\n return this.compareByName(rhs.name) && this.readVersion === rhs.readVersion &&\r\n this.writeVersion === rhs.writeVersion && this.minorVersion === rhs.minorVersion;\r\n case SchemaMatchType.LatestReadCompatible:\r\n if (!this.compareByName(rhs.name))\r\n return false;\r\n\r\n if (rhs.readVersion !== this.readVersion)\r\n return false;\r\n\r\n if (this.writeVersion === rhs.writeVersion)\r\n return this.minorVersion >= rhs.minorVersion;\r\n\r\n return this.writeVersion > rhs.writeVersion;\r\n case SchemaMatchType.LatestWriteCompatible:\r\n return this.compareByName(rhs.name) && this.readVersion === rhs.readVersion &&\r\n this.writeVersion === rhs.writeVersion && this.minorVersion >= rhs.minorVersion;\r\n case SchemaMatchType.Latest:\r\n return this.compareByName(rhs.name);\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Deserializes a SchemaKeyProps JSON object into a SchemaKey object.\r\n * @param props SchemaKeyProps\r\n * @returns A SchemaKey object.\r\n */\r\n public static fromJSON(props: SchemaKeyProps): SchemaKey {\r\n return new SchemaKey(props.name, props.read, props.write, props.minor);\r\n }\r\n\r\n /**\r\n * Save this SchemaKey's properties to an object for serializing to JSON.\r\n */\r\n public toJSON(): SchemaKeyProps {\r\n return {\r\n name: this.name,\r\n read: this.readVersion,\r\n write: this.writeVersion,\r\n minor: this.minorVersion,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * The SchemaItemKey contains a SchemaItem's name and SchemaKey.\r\n * @public @preview\r\n */\r\nexport class SchemaItemKey {\r\n private _name: ECName;\r\n private _schemaKey: SchemaKey;\r\n\r\n constructor(name: string, schema: SchemaKey) {\r\n this._name = new ECName(name);\r\n this._schemaKey = schema;\r\n }\r\n\r\n public get schemaKey() { return this._schemaKey; }\r\n public get name() { return this._name.name; }\r\n\r\n public get schemaName() { return this.schemaKey.name; }\r\n\r\n /** Returns the name in the format, {schemaName}.{name}. */\r\n public get fullName() { return `${this.schemaName}.${this.name}`; }\r\n\r\n /**\r\n * Checks whether this SchemaItemKey matches the one provided.\r\n * @param rhs The SchemaItemKey to compare to this.\r\n */\r\n // TODO: Need to add a match type\r\n public matches(rhs: SchemaItemKey): boolean {\r\n if (rhs.name !== this.name)\r\n return false;\r\n\r\n if (!rhs.schemaKey.matches(this.schemaKey, SchemaMatchType.Latest))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n public matchesFullName(name: string): boolean {\r\n const schemaVersion = this.schemaKey.version.toString().replace(/\\./g, \"\\\\.\");\r\n const fullNameRegex = new RegExp(`^${this.schemaName}(\\\\.${schemaVersion})?[.:]${this.name}$`, \"i\");\r\n return fullNameRegex.test(name);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaLoader.js","sourceRoot":"","sources":["../../src/SchemaLoader.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,uCAA0C;AAC1C,2CAA8C;AAC9C,2CAA4D;AAE5D,2DAA2E;AAC3E,2CAAmD;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAa,YAAY;IACf,QAAQ,CAAgB;IAEhC,YAAmB,SAA4B;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAa,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,qCAAiB,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,UAAkB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM;YACT,MAAM,IAAI,yBAAa,CAAC,0BAAc,CAAC,oBAAoB,EAAE,kBAAkB,UAAU,EAAE,CAAC,CAAC;QAE/F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,UAAkB;QACpC,gGAAgG;QAChG,MAAM,GAAG,GAAG,IAAI,qBAAS,CAAC,UAAU,EAAE,IAAI,qBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,2BAAe,CAAC,MAAM,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iDAAiD;IACjD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AApCD,oCAoCC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { SchemaContext } from \"./Context\";\nimport { SchemaMatchType } from \"./ECObjects\";\nimport { ECSchemaError, ECSchemaStatus } from \"./Exception\";\nimport { Schema } from \"./Metadata/Schema\";\nimport { SchemaJsonLocater, SchemaPropsGetter } from \"./SchemaJsonLocater\";\nimport { ECVersion, SchemaKey } from \"./SchemaKey\";\n\n/**\n * A utility class for loading EC Schema objects using a function that returns schema json for a given schema name.\n * Loaded schemas are held in memory within a schema context managed by SchemaLoader.\n * The SchemaLoader object should be held in memory if multiple calls to [[getSchema]] or [[tryGetSchema]]\n * is a possibility, thereby avoiding unnecessary schema retrievals from the function.\n *\n * Since the development of this class, the IModelDb class has been enhanced to include a schema context.\n * In most cases, that is sufficient so a SchemaLoader is not needed. This class is likely to be removed in the future.\n *\n * ** Example **\n * ```ts\n * [[include:IModelSchemas.loadFromDb]]\n * ```\n * @beta This will no longer be needed as of 5.0.0 since IModelDb now has a schema context.\n */\nexport class SchemaLoader {\n private _context: SchemaContext;\n\n public constructor(getSchema: SchemaPropsGetter) {\n this._context = new SchemaContext();\n const locater = new SchemaJsonLocater(getSchema);\n this._context.addLocater(locater);\n }\n\n /** Get a schema by name\n * @param schemaName a string with the name of the schema to load.\n * @throws [ECSchemaError]($ecschema-metadata) if the schema is not found or cannot be loaded.\n */\n public getSchema(schemaName: string): Schema {\n const schema = this.tryGetSchema(schemaName);\n if (!schema)\n throw new ECSchemaError(ECSchemaStatus.UnableToLocateSchema, `reading schema=${schemaName}`);\n\n return schema;\n }\n\n /** Attempts to get a schema by name\n * @param schemaName a string with the name of the schema to load.\n * @throws [ECSchemaError]($ecschema-metadata) if the schema exists, but cannot be loaded.\n */\n public tryGetSchema(schemaName: string): Schema | undefined {\n // SchemaKey version is not used when locating schema in an iModel, so the version is arbitrary.\n const key = new SchemaKey(schemaName, new ECVersion(1, 0, 0));\n const schema = this._context.getSchemaSync(key, SchemaMatchType.Latest);\n return schema;\n }\n\n /** Gets the SchemaContext used by the loader. */\n public get context(): SchemaContext {\n return this._context;\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaLoader.js","sourceRoot":"","sources":["../../src/SchemaLoader.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,uCAA0C;AAC1C,2CAA8C;AAC9C,2CAA4D;AAE5D,2DAA2E;AAC3E,2CAAmD;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAa,YAAY;IACf,QAAQ,CAAgB;IAEhC,YAAmB,SAA4B;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAa,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,qCAAiB,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,UAAkB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM;YACT,MAAM,IAAI,yBAAa,CAAC,0BAAc,CAAC,oBAAoB,EAAE,kBAAkB,UAAU,EAAE,CAAC,CAAC;QAE/F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,UAAkB;QACpC,gGAAgG;QAChG,MAAM,GAAG,GAAG,IAAI,qBAAS,CAAC,UAAU,EAAE,IAAI,qBAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,2BAAe,CAAC,MAAM,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iDAAiD;IACjD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AApCD,oCAoCC","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\r\nimport { SchemaContext } from \"./Context\";\r\nimport { SchemaMatchType } from \"./ECObjects\";\r\nimport { ECSchemaError, ECSchemaStatus } from \"./Exception\";\r\nimport { Schema } from \"./Metadata/Schema\";\r\nimport { SchemaJsonLocater, SchemaPropsGetter } from \"./SchemaJsonLocater\";\r\nimport { ECVersion, SchemaKey } from \"./SchemaKey\";\r\n\r\n/**\r\n * A utility class for loading EC Schema objects using a function that returns schema json for a given schema name.\r\n * Loaded schemas are held in memory within a schema context managed by SchemaLoader.\r\n * The SchemaLoader object should be held in memory if multiple calls to [[getSchema]] or [[tryGetSchema]]\r\n * is a possibility, thereby avoiding unnecessary schema retrievals from the function.\r\n *\r\n * Since the development of this class, the IModelDb class has been enhanced to include a schema context.\r\n * In most cases, that is sufficient so a SchemaLoader is not needed. This class is likely to be removed in the future.\r\n *\r\n * ** Example **\r\n * ```ts\r\n * [[include:IModelSchemas.loadFromDb]]\r\n * ```\r\n * @beta This will no longer be needed as of 5.0.0 since IModelDb now has a schema context.\r\n */\r\nexport class SchemaLoader {\r\n private _context: SchemaContext;\r\n\r\n public constructor(getSchema: SchemaPropsGetter) {\r\n this._context = new SchemaContext();\r\n const locater = new SchemaJsonLocater(getSchema);\r\n this._context.addLocater(locater);\r\n }\r\n\r\n /** Get a schema by name\r\n * @param schemaName a string with the name of the schema to load.\r\n * @throws [ECSchemaError]($ecschema-metadata) if the schema is not found or cannot be loaded.\r\n */\r\n public getSchema(schemaName: string): Schema {\r\n const schema = this.tryGetSchema(schemaName);\r\n if (!schema)\r\n throw new ECSchemaError(ECSchemaStatus.UnableToLocateSchema, `reading schema=${schemaName}`);\r\n\r\n return schema;\r\n }\r\n\r\n /** Attempts to get a schema by name\r\n * @param schemaName a string with the name of the schema to load.\r\n * @throws [ECSchemaError]($ecschema-metadata) if the schema exists, but cannot be loaded.\r\n */\r\n public tryGetSchema(schemaName: string): Schema | undefined {\r\n // SchemaKey version is not used when locating schema in an iModel, so the version is arbitrary.\r\n const key = new SchemaKey(schemaName, new ECVersion(1, 0, 0));\r\n const schema = this._context.getSchemaSync(key, SchemaMatchType.Latest);\r\n return schema;\r\n }\r\n\r\n /** Gets the SchemaContext used by the loader. */\r\n public get context(): SchemaContext {\r\n return this._context;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaPartVisitorDelegate.js","sourceRoot":"","sources":["../../src/SchemaPartVisitorDelegate.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { SchemaItemType } from \"./ECObjects\";\nimport { AnyClass, AnyECType } from \"./Interfaces\";\nimport { ECClass, StructClass } from \"./Metadata/Class\";\nimport { Constant } from \"./Metadata/Constant\";\nimport { CustomAttributeContainerProps } from \"./Metadata/CustomAttribute\";\nimport { CustomAttributeClass } from \"./Metadata/CustomAttributeClass\";\nimport { EntityClass } from \"./Metadata/EntityClass\";\nimport { Enumeration } from \"./Metadata/Enumeration\";\nimport { Format } from \"./Metadata/Format\";\nimport { InvertedUnit } from \"./Metadata/InvertedUnit\";\nimport { KindOfQuantity } from \"./Metadata/KindOfQuantity\";\nimport { Mixin } from \"./Metadata/Mixin\";\nimport { Phenomenon } from \"./Metadata/Phenomenon\";\nimport { AnyProperty, Property } from \"./Metadata/Property\";\nimport { PropertyCategory } from \"./Metadata/PropertyCategory\";\nimport { RelationshipClass, RelationshipConstraint } from \"./Metadata/RelationshipClass\";\nimport { Schema } from \"./Metadata/Schema\";\nimport { SchemaItem } from \"./Metadata/SchemaItem\";\nimport { Unit } from \"./Metadata/Unit\";\nimport { UnitSystem } from \"./Metadata/UnitSystem\";\n\n/**\n * Interface to allow schema traversal/deserialization workflows to visit\n * each part, item, class, etc. that exists in a given schema.\n * @public @preview\n */\nexport interface ISchemaPartVisitor {\n /**\n * Called for a partially loaded schema. During deserialization, this would\n * be after a schema and all its references are deserialized, but _before_\n * any of its items or custom attributes have been deserialized.\n * @param schema A partially-loaded Schema.\n */\n /* async */ visitEmptySchema?: (schema: Schema) => Promise<void>;\n\n /**\n * Called for a partially loaded schema. During deserialization, this would\n * be after a schema and all its references are deserialized, but _before_\n * any of its items or custom attributes have been deserialized.\n * @param schema A partially-loaded Schema.\n */\n visitEmptySchemaSync?: (schema: Schema) => void;\n\n /**\n * Called for a fully loaded schema.\n * @param schema A fully-loaded Schema.\n */\n /* async */ visitFullSchema?: (schema: Schema) => Promise<void>;\n\n /**\n * Called for a fully loaded schema.\n * @param schema A fully-loaded Schema.\n */\n visitFullSchemaSync?: (schema: Schema) => void;\n\n /**\n * Called for each [[SchemaItem]] instance.\n * @param schemaItem a SchemaItem object.\n */\n /* async */ visitSchemaItem?: (schemaItem: SchemaItem) => Promise<void>;\n\n /**\n * Called for each [[SchemaItem]] instance.\n * @param schemaItem a SchemaItem object.\n */\n visitSchemaItemSync?: (schemaItem: SchemaItem) => void;\n\n /**\n * Called for each [[AnyClass]] instance.\n * @param ecClass an ECClass object.\n */\n /* async */ visitClass?: (ecClass: AnyClass) => Promise<void>;\n\n /**\n * Called for each [[AnyClass]] instance.\n * @param ecClass an ECClass object.\n */\n visitClassSync?: (ecClass: AnyClass) => void;\n\n /**\n * Called for each [[AnyProperty]] instance of an ECClass.\n * @param property an AnyProperty object.\n */\n /* async */ visitProperty?: (property: AnyProperty) => Promise<void>;\n\n /**\n * Called for each [[AnyProperty]] instance of an ECClass.\n * @param property an AnyProperty object.\n */\n visitPropertySync?: (property: AnyProperty) => void;\n\n /**\n * Called for each [[EntityClass]] instance.\n * @param entityClass an EntityClass object.\n */\n /* async */ visitEntityClass?: (entityClass: EntityClass) => Promise<void>;\n\n /**\n * Called for each [[EntityClass]] instance.\n * @param entityClass an EntityClass object.\n */\n visitEntityClassSync?: (entityClass: EntityClass) => void;\n\n /**\n * Called for each [[StructClass]] instance.\n * @param structClass a StructClass object.\n */\n /* async */ visitStructClass?: (structClass: StructClass) => Promise<void>;\n\n /**\n * Called for each [[StructClass]] instance.\n * @param structClass a StructClass object.\n */\n visitStructClassSync?: (structClass: StructClass) => void;\n\n /**\n * Called for each [[Mixin]] instance.\n * @param mixin a Mixin object.\n */\n /* async */ visitMixin?: (mixin: Mixin) => Promise<void>;\n\n /**\n * Called for each [[Mixin]] instance.\n * @param mixin a Mixin object.\n */\n visitMixinSync?: (mixin: Mixin) => void;\n\n /**\n * Called for each [[RelationshipClass]] instance.\n * @param relationshipClass a RelationshipClass object.\n */\n /* async */ visitRelationshipClass?: (relationshipClass: RelationshipClass) => Promise<void>;\n\n /**\n * Called for each [[RelationshipClass]] instance.\n * @param relationshipClass a RelationshipClass object.\n */\n visitRelationshipClassSync?: (relationshipClass: RelationshipClass) => void;\n\n /**\n * Called for each [[RelationshipConstraint]] of each RelationshipClass.\n * @param relationshipConstraint a RelationshipConstraint object.\n */\n /* async */ visitRelationshipConstraint?: (relationshipConstraint: RelationshipConstraint) => Promise<void>;\n\n /**\n * Called for each [[RelationshipConstraint]] of each RelationshipClass.\n * @param relationshipConstraint a RelationshipConstraint object.\n */\n visitRelationshipConstraintSync?: (relationshipConstraint: RelationshipConstraint) => void;\n\n /**\n * Called for each [[CustomAttributeClass]] instance.\n * @param customAttributeClass a CustomAttributeClass object.\n */\n /* async */ visitCustomAttributeClass?: (customAttributeClass: CustomAttributeClass) => Promise<void>;\n\n /**\n * Called for each [[CustomAttributeClass]] instance.\n * @param customAttributeClass a CustomAttributeClass object.\n */\n visitCustomAttributeClassSync?: (customAttributeClass: CustomAttributeClass) => void;\n\n /**\n * Called for each CustomAttribute container in the schema.\n * @param customAttributeContainer a CustomAttributeContainerProps object.\n */\n /* async */ visitCustomAttributeContainer?: (customAttributeContainer: CustomAttributeContainerProps) => Promise<void>;\n\n /**\n * Called for each CustomAttribute container in the schema.\n * @param customAttributeContainer a CustomAttributeContainerProps object.\n */\n visitCustomAttributeContainerSync?: (customAttributeContainer: CustomAttributeContainerProps) => void;\n\n /**\n * Called for each [[Enumeration]] instance.\n * @param enumeration an Enumeration object.\n */\n /* async */ visitEnumeration?: (enumeration: Enumeration) => Promise<void>;\n\n /**\n * Called for each [[Enumeration]] instance.\n * @param enumeration an Enumeration object.\n */\n visitEnumerationSync?: (enumeration: Enumeration) => void;\n\n /**\n * Called for each [[KindOfQuantity]] instance.\n * @param koq a KindOfQuantity object.\n */\n /* async */ visitKindOfQuantity?: (koq: KindOfQuantity) => Promise<void>;\n\n /**\n * Called for each [[KindOfQuantity]] instance.\n * @param koq a KindOfQuantity object.\n */\n visitKindOfQuantitySync?: (koq: KindOfQuantity) => void;\n\n /**\n * Called for each [[PropertyCategory]] instance.\n * @param category a PropertyCategory object.\n */\n /* async */ visitPropertyCategory?: (category: PropertyCategory) => Promise<void>;\n\n /**\n * Called for each [[PropertyCategory]] instance.\n * @param category a PropertyCategory object.\n */\n visitPropertyCategorySync?: (category: PropertyCategory) => void;\n\n /**\n * Called for each [[Format]] instance.\n * @param format a Format object.\n */\n /* async */ visitFormat?: (format: Format) => Promise<void>;\n\n /**\n * Called for each [[Format]] instance.\n * @param format a Format object.\n */\n visitFormatSync?: (format: Format) => void;\n\n /**\n * Called for each [[Unit]] instance.\n * @param unit a Unit object.\n */\n /* async */ visitUnit?: (unit: Unit) => Promise<void>;\n\n /**\n * Called for each [[Unit]] instance.\n * @param unit a Unit object.\n */\n visitUnitSync?: (unit: Unit) => void;\n\n /**\n * Called for each [[InvertedUnit]] instance.\n * @param invertedUnit an InvertedUnit object.\n */\n /* async */ visitInvertedUnit?: (invertedUnit: InvertedUnit) => Promise<void>;\n\n /**\n * Called for each [[InvertedUnit]] instance.\n * @param invertedUnit an InvertedUnit object.\n */\n visitInvertedUnitSync?: (invertedUnit: InvertedUnit) => void;\n\n /**\n * Called for each [[UnitSystem]] instance.\n * @param unitSystem a UnitSystem object.\n */\n /* async */ visitUnitSystem?: (unitSystem: UnitSystem) => Promise<void>;\n\n /**\n * Called for each [[UnitSystem]] instance.\n * @param unitSystem a UnitSystem object.\n */\n visitUnitSystemSync?: (unitSystem: UnitSystem) => void;\n\n /**\n * Called for each [[Phenomenon]] instance.\n * @param phenomena a Phenomenon object.\n */\n /* async */ visitPhenomenon?: (phenomena: Phenomenon) => Promise<void>;\n\n /**\n * Called for each [[Phenomenon]] instance.\n * @param phenomena a Phenomenon object.\n */\n visitPhenomenonSync?: (phenomena: Phenomenon) => void;\n\n /**\n * Called for each [[Constant]] instance.\n * @param constant a Constant object.\n */\n /* async */ visitConstant?: (constant: Constant) => Promise<void>;\n\n /**\n * Called for each [[Constant]] instance.\n * @param constant a Constant object.\n */\n visitConstantSync?: (constant: Constant) => void;\n}\n\nfunction isCustomAttributeContainer(object: any): object is CustomAttributeContainerProps {\n return \"customAttributes\" in object;\n}\n\n/**\n * A helper class to call methods on the provided [[ISchemaPartVisitor]].\n * @public @preview\n */\nexport class SchemaPartVisitorDelegate {\n private _visitor: ISchemaPartVisitor;\n\n constructor(visitor: ISchemaPartVisitor) {\n this._visitor = visitor;\n }\n\n /**\n * Calls (async) visitEmptySchema or visitFullSchema on the configured [[ISchemaPartVisitor]].\n * @param schema The schema to pass to the visitor.\n * @param fullSchema Indicates if the schema is partially or fully-loaded.\n */\n public async visitSchema(schema: Schema, fullSchema: boolean = true): Promise<void> {\n if (!fullSchema && this._visitor.visitEmptySchema)\n await this._visitor.visitEmptySchema(schema);\n\n if (fullSchema && this._visitor.visitFullSchema)\n await this._visitor.visitFullSchema(schema);\n }\n\n /**\n * Calls (synchronously) visitEmptySchema or visitFullSchema on the configured [[ISchemaPartVisitor]].\n * @param schema The schema to pass to the visitor.\n * @param fullSchema Indicates if the schema is partially or fully-loaded.\n */\n public visitSchemaSync(schema: Schema, fullSchema: boolean = true): void {\n if (!fullSchema && this._visitor.visitEmptySchemaSync)\n this._visitor.visitEmptySchemaSync(schema);\n\n if (fullSchema && this._visitor.visitFullSchemaSync)\n this._visitor.visitFullSchemaSync(schema);\n }\n\n /**\n * Calls (async) the appropriate visit methods on the configured [[ISchemaPartVisitor]]\n * based on the type of the part specified.\n * @param schemaPart The schema part to pass to the visitor methods.\n */\n public async visitSchemaPart(schemaPart: AnyECType): Promise<void> {\n if (SchemaItem.isSchemaItem(schemaPart)) {\n await this.visitSchemaItem(schemaPart);\n } else if (Property.isProperty(schemaPart) && this._visitor.visitProperty) {\n await this._visitor.visitProperty(schemaPart);\n } else if (RelationshipConstraint.isRelationshipConstraint(schemaPart) && this._visitor.visitRelationshipConstraint) {\n await this._visitor.visitRelationshipConstraint(schemaPart);\n }\n\n if (isCustomAttributeContainer(schemaPart) && this._visitor.visitCustomAttributeContainer) {\n await this._visitor.visitCustomAttributeContainer(schemaPart);\n }\n }\n\n /**\n * Calls (synchronously) the appropriate visit methods on the configured [[ISchemaPartVisitor]]\n * based on the type of the part specified.\n * @param schemaPart The schema part to pass to the visitor methods.\n */\n public visitSchemaPartSync(schemaPart: AnyECType): void {\n if (SchemaItem.isSchemaItem(schemaPart)) {\n this.visitSchemaItemSync(schemaPart);\n } else if (Property.isProperty(schemaPart) && this._visitor.visitPropertySync) {\n this._visitor.visitPropertySync(schemaPart);\n } else if (RelationshipConstraint.isRelationshipConstraint(schemaPart) && this._visitor.visitRelationshipConstraintSync) {\n this._visitor.visitRelationshipConstraintSync(schemaPart);\n }\n\n if (isCustomAttributeContainer(schemaPart) && this._visitor.visitCustomAttributeContainerSync)\n this._visitor.visitCustomAttributeContainerSync(schemaPart);\n }\n\n private async visitSchemaItem(schemaItem: SchemaItem) {\n if (this._visitor.visitSchemaItem)\n await this._visitor.visitSchemaItem(schemaItem);\n\n if (ECClass.isECClass(schemaItem) && this._visitor.visitClass)\n await this._visitor.visitClass(schemaItem as AnyClass);\n\n switch (schemaItem.schemaItemType) {\n case SchemaItemType.Constant:\n if (this._visitor.visitConstant)\n await this._visitor.visitConstant(schemaItem as Constant);\n break;\n case SchemaItemType.CustomAttributeClass:\n if (this._visitor.visitCustomAttributeClass)\n await this._visitor.visitCustomAttributeClass(schemaItem as CustomAttributeClass);\n break;\n case SchemaItemType.EntityClass:\n if (this._visitor.visitEntityClass)\n await this._visitor.visitEntityClass(schemaItem as EntityClass);\n break;\n case SchemaItemType.Enumeration:\n if (this._visitor.visitEnumeration)\n await this._visitor.visitEnumeration(schemaItem as Enumeration);\n break;\n case SchemaItemType.Format:\n if (this._visitor.visitFormat)\n await this._visitor.visitFormat(schemaItem as Format);\n break;\n case SchemaItemType.InvertedUnit:\n if (this._visitor.visitInvertedUnit)\n await this._visitor.visitInvertedUnit(schemaItem as InvertedUnit);\n break;\n case SchemaItemType.KindOfQuantity:\n if (this._visitor.visitKindOfQuantity)\n await this._visitor.visitKindOfQuantity(schemaItem as KindOfQuantity);\n break;\n case SchemaItemType.Mixin:\n if (this._visitor.visitMixin)\n await this._visitor.visitMixin(schemaItem as Mixin);\n break;\n case SchemaItemType.Phenomenon:\n if (this._visitor.visitPhenomenon)\n await this._visitor.visitPhenomenon(schemaItem as Phenomenon);\n break;\n case SchemaItemType.PropertyCategory:\n if (this._visitor.visitPropertyCategory)\n await this._visitor.visitPropertyCategory(schemaItem as PropertyCategory);\n break;\n case SchemaItemType.RelationshipClass:\n if (this._visitor.visitRelationshipClass)\n await this._visitor.visitRelationshipClass(schemaItem as RelationshipClass);\n break;\n case SchemaItemType.StructClass:\n if (this._visitor.visitStructClass)\n await this._visitor.visitStructClass(schemaItem as StructClass);\n break;\n case SchemaItemType.Unit:\n if (this._visitor.visitUnit)\n await this._visitor.visitUnit(schemaItem as Unit);\n break;\n case SchemaItemType.UnitSystem:\n if (this._visitor.visitUnitSystem)\n await this._visitor.visitUnitSystem(schemaItem as UnitSystem);\n break;\n }\n }\n\n private visitSchemaItemSync(schemaItem: SchemaItem) {\n if (this._visitor.visitSchemaItemSync)\n this._visitor.visitSchemaItemSync(schemaItem);\n\n if (ECClass.isECClass(schemaItem) && this._visitor.visitClassSync)\n this._visitor.visitClassSync(schemaItem as AnyClass);\n\n switch (schemaItem.schemaItemType) {\n case SchemaItemType.Constant:\n if (this._visitor.visitConstantSync)\n this._visitor.visitConstantSync(schemaItem as Constant);\n break;\n case SchemaItemType.CustomAttributeClass:\n if (this._visitor.visitCustomAttributeClassSync)\n this._visitor.visitCustomAttributeClassSync(schemaItem as CustomAttributeClass);\n break;\n case SchemaItemType.EntityClass:\n if (this._visitor.visitEntityClassSync)\n this._visitor.visitEntityClassSync(schemaItem as EntityClass);\n break;\n case SchemaItemType.Enumeration:\n if (this._visitor.visitEnumerationSync)\n this._visitor.visitEnumerationSync(schemaItem as Enumeration);\n break;\n case SchemaItemType.Format:\n if (this._visitor.visitFormatSync)\n this._visitor.visitFormatSync(schemaItem as Format);\n break;\n case SchemaItemType.InvertedUnit:\n if (this._visitor.visitInvertedUnitSync)\n this._visitor.visitInvertedUnitSync(schemaItem as InvertedUnit);\n break;\n case SchemaItemType.KindOfQuantity:\n if (this._visitor.visitKindOfQuantitySync)\n this._visitor.visitKindOfQuantitySync(schemaItem as KindOfQuantity);\n break;\n case SchemaItemType.Mixin:\n if (this._visitor.visitMixinSync)\n this._visitor.visitMixinSync(schemaItem as Mixin);\n break;\n case SchemaItemType.Phenomenon:\n if (this._visitor.visitPhenomenonSync)\n this._visitor.visitPhenomenonSync(schemaItem as Phenomenon);\n break;\n case SchemaItemType.PropertyCategory:\n if (this._visitor.visitPropertyCategorySync)\n this._visitor.visitPropertyCategorySync(schemaItem as PropertyCategory);\n break;\n case SchemaItemType.RelationshipClass:\n if (this._visitor.visitRelationshipClassSync)\n this._visitor.visitRelationshipClassSync(schemaItem as RelationshipClass);\n break;\n case SchemaItemType.StructClass:\n if (this._visitor.visitStructClassSync)\n this._visitor.visitStructClassSync(schemaItem as StructClass);\n break;\n case SchemaItemType.Unit:\n if (this._visitor.visitUnitSync)\n this._visitor.visitUnitSync(schemaItem as Unit);\n break;\n case SchemaItemType.UnitSystem:\n if (this._visitor.visitUnitSystemSync)\n this._visitor.visitUnitSystemSync(schemaItem as UnitSystem);\n break;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaPartVisitorDelegate.js","sourceRoot":"","sources":["../../src/SchemaPartVisitorDelegate.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\r\nimport { SchemaItemType } from \"./ECObjects\";\r\nimport { AnyClass, AnyECType } from \"./Interfaces\";\r\nimport { ECClass, StructClass } from \"./Metadata/Class\";\r\nimport { Constant } from \"./Metadata/Constant\";\r\nimport { CustomAttributeContainerProps } from \"./Metadata/CustomAttribute\";\r\nimport { CustomAttributeClass } from \"./Metadata/CustomAttributeClass\";\r\nimport { EntityClass } from \"./Metadata/EntityClass\";\r\nimport { Enumeration } from \"./Metadata/Enumeration\";\r\nimport { Format } from \"./Metadata/Format\";\r\nimport { InvertedUnit } from \"./Metadata/InvertedUnit\";\r\nimport { KindOfQuantity } from \"./Metadata/KindOfQuantity\";\r\nimport { Mixin } from \"./Metadata/Mixin\";\r\nimport { Phenomenon } from \"./Metadata/Phenomenon\";\r\nimport { AnyProperty, Property } from \"./Metadata/Property\";\r\nimport { PropertyCategory } from \"./Metadata/PropertyCategory\";\r\nimport { RelationshipClass, RelationshipConstraint } from \"./Metadata/RelationshipClass\";\r\nimport { Schema } from \"./Metadata/Schema\";\r\nimport { SchemaItem } from \"./Metadata/SchemaItem\";\r\nimport { Unit } from \"./Metadata/Unit\";\r\nimport { UnitSystem } from \"./Metadata/UnitSystem\";\r\n\r\n/**\r\n * Interface to allow schema traversal/deserialization workflows to visit\r\n * each part, item, class, etc. that exists in a given schema.\r\n * @public @preview\r\n */\r\nexport interface ISchemaPartVisitor {\r\n /**\r\n * Called for a partially loaded schema. During deserialization, this would\r\n * be after a schema and all its references are deserialized, but _before_\r\n * any of its items or custom attributes have been deserialized.\r\n * @param schema A partially-loaded Schema.\r\n */\r\n /* async */ visitEmptySchema?: (schema: Schema) => Promise<void>;\r\n\r\n /**\r\n * Called for a partially loaded schema. During deserialization, this would\r\n * be after a schema and all its references are deserialized, but _before_\r\n * any of its items or custom attributes have been deserialized.\r\n * @param schema A partially-loaded Schema.\r\n */\r\n visitEmptySchemaSync?: (schema: Schema) => void;\r\n\r\n /**\r\n * Called for a fully loaded schema.\r\n * @param schema A fully-loaded Schema.\r\n */\r\n /* async */ visitFullSchema?: (schema: Schema) => Promise<void>;\r\n\r\n /**\r\n * Called for a fully loaded schema.\r\n * @param schema A fully-loaded Schema.\r\n */\r\n visitFullSchemaSync?: (schema: Schema) => void;\r\n\r\n /**\r\n * Called for each [[SchemaItem]] instance.\r\n * @param schemaItem a SchemaItem object.\r\n */\r\n /* async */ visitSchemaItem?: (schemaItem: SchemaItem) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[SchemaItem]] instance.\r\n * @param schemaItem a SchemaItem object.\r\n */\r\n visitSchemaItemSync?: (schemaItem: SchemaItem) => void;\r\n\r\n /**\r\n * Called for each [[AnyClass]] instance.\r\n * @param ecClass an ECClass object.\r\n */\r\n /* async */ visitClass?: (ecClass: AnyClass) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[AnyClass]] instance.\r\n * @param ecClass an ECClass object.\r\n */\r\n visitClassSync?: (ecClass: AnyClass) => void;\r\n\r\n /**\r\n * Called for each [[AnyProperty]] instance of an ECClass.\r\n * @param property an AnyProperty object.\r\n */\r\n /* async */ visitProperty?: (property: AnyProperty) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[AnyProperty]] instance of an ECClass.\r\n * @param property an AnyProperty object.\r\n */\r\n visitPropertySync?: (property: AnyProperty) => void;\r\n\r\n /**\r\n * Called for each [[EntityClass]] instance.\r\n * @param entityClass an EntityClass object.\r\n */\r\n /* async */ visitEntityClass?: (entityClass: EntityClass) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[EntityClass]] instance.\r\n * @param entityClass an EntityClass object.\r\n */\r\n visitEntityClassSync?: (entityClass: EntityClass) => void;\r\n\r\n /**\r\n * Called for each [[StructClass]] instance.\r\n * @param structClass a StructClass object.\r\n */\r\n /* async */ visitStructClass?: (structClass: StructClass) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[StructClass]] instance.\r\n * @param structClass a StructClass object.\r\n */\r\n visitStructClassSync?: (structClass: StructClass) => void;\r\n\r\n /**\r\n * Called for each [[Mixin]] instance.\r\n * @param mixin a Mixin object.\r\n */\r\n /* async */ visitMixin?: (mixin: Mixin) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[Mixin]] instance.\r\n * @param mixin a Mixin object.\r\n */\r\n visitMixinSync?: (mixin: Mixin) => void;\r\n\r\n /**\r\n * Called for each [[RelationshipClass]] instance.\r\n * @param relationshipClass a RelationshipClass object.\r\n */\r\n /* async */ visitRelationshipClass?: (relationshipClass: RelationshipClass) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[RelationshipClass]] instance.\r\n * @param relationshipClass a RelationshipClass object.\r\n */\r\n visitRelationshipClassSync?: (relationshipClass: RelationshipClass) => void;\r\n\r\n /**\r\n * Called for each [[RelationshipConstraint]] of each RelationshipClass.\r\n * @param relationshipConstraint a RelationshipConstraint object.\r\n */\r\n /* async */ visitRelationshipConstraint?: (relationshipConstraint: RelationshipConstraint) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[RelationshipConstraint]] of each RelationshipClass.\r\n * @param relationshipConstraint a RelationshipConstraint object.\r\n */\r\n visitRelationshipConstraintSync?: (relationshipConstraint: RelationshipConstraint) => void;\r\n\r\n /**\r\n * Called for each [[CustomAttributeClass]] instance.\r\n * @param customAttributeClass a CustomAttributeClass object.\r\n */\r\n /* async */ visitCustomAttributeClass?: (customAttributeClass: CustomAttributeClass) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[CustomAttributeClass]] instance.\r\n * @param customAttributeClass a CustomAttributeClass object.\r\n */\r\n visitCustomAttributeClassSync?: (customAttributeClass: CustomAttributeClass) => void;\r\n\r\n /**\r\n * Called for each CustomAttribute container in the schema.\r\n * @param customAttributeContainer a CustomAttributeContainerProps object.\r\n */\r\n /* async */ visitCustomAttributeContainer?: (customAttributeContainer: CustomAttributeContainerProps) => Promise<void>;\r\n\r\n /**\r\n * Called for each CustomAttribute container in the schema.\r\n * @param customAttributeContainer a CustomAttributeContainerProps object.\r\n */\r\n visitCustomAttributeContainerSync?: (customAttributeContainer: CustomAttributeContainerProps) => void;\r\n\r\n /**\r\n * Called for each [[Enumeration]] instance.\r\n * @param enumeration an Enumeration object.\r\n */\r\n /* async */ visitEnumeration?: (enumeration: Enumeration) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[Enumeration]] instance.\r\n * @param enumeration an Enumeration object.\r\n */\r\n visitEnumerationSync?: (enumeration: Enumeration) => void;\r\n\r\n /**\r\n * Called for each [[KindOfQuantity]] instance.\r\n * @param koq a KindOfQuantity object.\r\n */\r\n /* async */ visitKindOfQuantity?: (koq: KindOfQuantity) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[KindOfQuantity]] instance.\r\n * @param koq a KindOfQuantity object.\r\n */\r\n visitKindOfQuantitySync?: (koq: KindOfQuantity) => void;\r\n\r\n /**\r\n * Called for each [[PropertyCategory]] instance.\r\n * @param category a PropertyCategory object.\r\n */\r\n /* async */ visitPropertyCategory?: (category: PropertyCategory) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[PropertyCategory]] instance.\r\n * @param category a PropertyCategory object.\r\n */\r\n visitPropertyCategorySync?: (category: PropertyCategory) => void;\r\n\r\n /**\r\n * Called for each [[Format]] instance.\r\n * @param format a Format object.\r\n */\r\n /* async */ visitFormat?: (format: Format) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[Format]] instance.\r\n * @param format a Format object.\r\n */\r\n visitFormatSync?: (format: Format) => void;\r\n\r\n /**\r\n * Called for each [[Unit]] instance.\r\n * @param unit a Unit object.\r\n */\r\n /* async */ visitUnit?: (unit: Unit) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[Unit]] instance.\r\n * @param unit a Unit object.\r\n */\r\n visitUnitSync?: (unit: Unit) => void;\r\n\r\n /**\r\n * Called for each [[InvertedUnit]] instance.\r\n * @param invertedUnit an InvertedUnit object.\r\n */\r\n /* async */ visitInvertedUnit?: (invertedUnit: InvertedUnit) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[InvertedUnit]] instance.\r\n * @param invertedUnit an InvertedUnit object.\r\n */\r\n visitInvertedUnitSync?: (invertedUnit: InvertedUnit) => void;\r\n\r\n /**\r\n * Called for each [[UnitSystem]] instance.\r\n * @param unitSystem a UnitSystem object.\r\n */\r\n /* async */ visitUnitSystem?: (unitSystem: UnitSystem) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[UnitSystem]] instance.\r\n * @param unitSystem a UnitSystem object.\r\n */\r\n visitUnitSystemSync?: (unitSystem: UnitSystem) => void;\r\n\r\n /**\r\n * Called for each [[Phenomenon]] instance.\r\n * @param phenomena a Phenomenon object.\r\n */\r\n /* async */ visitPhenomenon?: (phenomena: Phenomenon) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[Phenomenon]] instance.\r\n * @param phenomena a Phenomenon object.\r\n */\r\n visitPhenomenonSync?: (phenomena: Phenomenon) => void;\r\n\r\n /**\r\n * Called for each [[Constant]] instance.\r\n * @param constant a Constant object.\r\n */\r\n /* async */ visitConstant?: (constant: Constant) => Promise<void>;\r\n\r\n /**\r\n * Called for each [[Constant]] instance.\r\n * @param constant a Constant object.\r\n */\r\n visitConstantSync?: (constant: Constant) => void;\r\n}\r\n\r\nfunction isCustomAttributeContainer(object: any): object is CustomAttributeContainerProps {\r\n return \"customAttributes\" in object;\r\n}\r\n\r\n/**\r\n * A helper class to call methods on the provided [[ISchemaPartVisitor]].\r\n * @public @preview\r\n */\r\nexport class SchemaPartVisitorDelegate {\r\n private _visitor: ISchemaPartVisitor;\r\n\r\n constructor(visitor: ISchemaPartVisitor) {\r\n this._visitor = visitor;\r\n }\r\n\r\n /**\r\n * Calls (async) visitEmptySchema or visitFullSchema on the configured [[ISchemaPartVisitor]].\r\n * @param schema The schema to pass to the visitor.\r\n * @param fullSchema Indicates if the schema is partially or fully-loaded.\r\n */\r\n public async visitSchema(schema: Schema, fullSchema: boolean = true): Promise<void> {\r\n if (!fullSchema && this._visitor.visitEmptySchema)\r\n await this._visitor.visitEmptySchema(schema);\r\n\r\n if (fullSchema && this._visitor.visitFullSchema)\r\n await this._visitor.visitFullSchema(schema);\r\n }\r\n\r\n /**\r\n * Calls (synchronously) visitEmptySchema or visitFullSchema on the configured [[ISchemaPartVisitor]].\r\n * @param schema The schema to pass to the visitor.\r\n * @param fullSchema Indicates if the schema is partially or fully-loaded.\r\n */\r\n public visitSchemaSync(schema: Schema, fullSchema: boolean = true): void {\r\n if (!fullSchema && this._visitor.visitEmptySchemaSync)\r\n this._visitor.visitEmptySchemaSync(schema);\r\n\r\n if (fullSchema && this._visitor.visitFullSchemaSync)\r\n this._visitor.visitFullSchemaSync(schema);\r\n }\r\n\r\n /**\r\n * Calls (async) the appropriate visit methods on the configured [[ISchemaPartVisitor]]\r\n * based on the type of the part specified.\r\n * @param schemaPart The schema part to pass to the visitor methods.\r\n */\r\n public async visitSchemaPart(schemaPart: AnyECType): Promise<void> {\r\n if (SchemaItem.isSchemaItem(schemaPart)) {\r\n await this.visitSchemaItem(schemaPart);\r\n } else if (Property.isProperty(schemaPart) && this._visitor.visitProperty) {\r\n await this._visitor.visitProperty(schemaPart);\r\n } else if (RelationshipConstraint.isRelationshipConstraint(schemaPart) && this._visitor.visitRelationshipConstraint) {\r\n await this._visitor.visitRelationshipConstraint(schemaPart);\r\n }\r\n\r\n if (isCustomAttributeContainer(schemaPart) && this._visitor.visitCustomAttributeContainer) {\r\n await this._visitor.visitCustomAttributeContainer(schemaPart);\r\n }\r\n }\r\n\r\n /**\r\n * Calls (synchronously) the appropriate visit methods on the configured [[ISchemaPartVisitor]]\r\n * based on the type of the part specified.\r\n * @param schemaPart The schema part to pass to the visitor methods.\r\n */\r\n public visitSchemaPartSync(schemaPart: AnyECType): void {\r\n if (SchemaItem.isSchemaItem(schemaPart)) {\r\n this.visitSchemaItemSync(schemaPart);\r\n } else if (Property.isProperty(schemaPart) && this._visitor.visitPropertySync) {\r\n this._visitor.visitPropertySync(schemaPart);\r\n } else if (RelationshipConstraint.isRelationshipConstraint(schemaPart) && this._visitor.visitRelationshipConstraintSync) {\r\n this._visitor.visitRelationshipConstraintSync(schemaPart);\r\n }\r\n\r\n if (isCustomAttributeContainer(schemaPart) && this._visitor.visitCustomAttributeContainerSync)\r\n this._visitor.visitCustomAttributeContainerSync(schemaPart);\r\n }\r\n\r\n private async visitSchemaItem(schemaItem: SchemaItem) {\r\n if (this._visitor.visitSchemaItem)\r\n await this._visitor.visitSchemaItem(schemaItem);\r\n\r\n if (ECClass.isECClass(schemaItem) && this._visitor.visitClass)\r\n await this._visitor.visitClass(schemaItem as AnyClass);\r\n\r\n switch (schemaItem.schemaItemType) {\r\n case SchemaItemType.Constant:\r\n if (this._visitor.visitConstant)\r\n await this._visitor.visitConstant(schemaItem as Constant);\r\n break;\r\n case SchemaItemType.CustomAttributeClass:\r\n if (this._visitor.visitCustomAttributeClass)\r\n await this._visitor.visitCustomAttributeClass(schemaItem as CustomAttributeClass);\r\n break;\r\n case SchemaItemType.EntityClass:\r\n if (this._visitor.visitEntityClass)\r\n await this._visitor.visitEntityClass(schemaItem as EntityClass);\r\n break;\r\n case SchemaItemType.Enumeration:\r\n if (this._visitor.visitEnumeration)\r\n await this._visitor.visitEnumeration(schemaItem as Enumeration);\r\n break;\r\n case SchemaItemType.Format:\r\n if (this._visitor.visitFormat)\r\n await this._visitor.visitFormat(schemaItem as Format);\r\n break;\r\n case SchemaItemType.InvertedUnit:\r\n if (this._visitor.visitInvertedUnit)\r\n await this._visitor.visitInvertedUnit(schemaItem as InvertedUnit);\r\n break;\r\n case SchemaItemType.KindOfQuantity:\r\n if (this._visitor.visitKindOfQuantity)\r\n await this._visitor.visitKindOfQuantity(schemaItem as KindOfQuantity);\r\n break;\r\n case SchemaItemType.Mixin:\r\n if (this._visitor.visitMixin)\r\n await this._visitor.visitMixin(schemaItem as Mixin);\r\n break;\r\n case SchemaItemType.Phenomenon:\r\n if (this._visitor.visitPhenomenon)\r\n await this._visitor.visitPhenomenon(schemaItem as Phenomenon);\r\n break;\r\n case SchemaItemType.PropertyCategory:\r\n if (this._visitor.visitPropertyCategory)\r\n await this._visitor.visitPropertyCategory(schemaItem as PropertyCategory);\r\n break;\r\n case SchemaItemType.RelationshipClass:\r\n if (this._visitor.visitRelationshipClass)\r\n await this._visitor.visitRelationshipClass(schemaItem as RelationshipClass);\r\n break;\r\n case SchemaItemType.StructClass:\r\n if (this._visitor.visitStructClass)\r\n await this._visitor.visitStructClass(schemaItem as StructClass);\r\n break;\r\n case SchemaItemType.Unit:\r\n if (this._visitor.visitUnit)\r\n await this._visitor.visitUnit(schemaItem as Unit);\r\n break;\r\n case SchemaItemType.UnitSystem:\r\n if (this._visitor.visitUnitSystem)\r\n await this._visitor.visitUnitSystem(schemaItem as UnitSystem);\r\n break;\r\n }\r\n }\r\n\r\n private visitSchemaItemSync(schemaItem: SchemaItem) {\r\n if (this._visitor.visitSchemaItemSync)\r\n this._visitor.visitSchemaItemSync(schemaItem);\r\n\r\n if (ECClass.isECClass(schemaItem) && this._visitor.visitClassSync)\r\n this._visitor.visitClassSync(schemaItem as AnyClass);\r\n\r\n switch (schemaItem.schemaItemType) {\r\n case SchemaItemType.Constant:\r\n if (this._visitor.visitConstantSync)\r\n this._visitor.visitConstantSync(schemaItem as Constant);\r\n break;\r\n case SchemaItemType.CustomAttributeClass:\r\n if (this._visitor.visitCustomAttributeClassSync)\r\n this._visitor.visitCustomAttributeClassSync(schemaItem as CustomAttributeClass);\r\n break;\r\n case SchemaItemType.EntityClass:\r\n if (this._visitor.visitEntityClassSync)\r\n this._visitor.visitEntityClassSync(schemaItem as EntityClass);\r\n break;\r\n case SchemaItemType.Enumeration:\r\n if (this._visitor.visitEnumerationSync)\r\n this._visitor.visitEnumerationSync(schemaItem as Enumeration);\r\n break;\r\n case SchemaItemType.Format:\r\n if (this._visitor.visitFormatSync)\r\n this._visitor.visitFormatSync(schemaItem as Format);\r\n break;\r\n case SchemaItemType.InvertedUnit:\r\n if (this._visitor.visitInvertedUnitSync)\r\n this._visitor.visitInvertedUnitSync(schemaItem as InvertedUnit);\r\n break;\r\n case SchemaItemType.KindOfQuantity:\r\n if (this._visitor.visitKindOfQuantitySync)\r\n this._visitor.visitKindOfQuantitySync(schemaItem as KindOfQuantity);\r\n break;\r\n case SchemaItemType.Mixin:\r\n if (this._visitor.visitMixinSync)\r\n this._visitor.visitMixinSync(schemaItem as Mixin);\r\n break;\r\n case SchemaItemType.Phenomenon:\r\n if (this._visitor.visitPhenomenonSync)\r\n this._visitor.visitPhenomenonSync(schemaItem as Phenomenon);\r\n break;\r\n case SchemaItemType.PropertyCategory:\r\n if (this._visitor.visitPropertyCategorySync)\r\n this._visitor.visitPropertyCategorySync(schemaItem as PropertyCategory);\r\n break;\r\n case SchemaItemType.RelationshipClass:\r\n if (this._visitor.visitRelationshipClassSync)\r\n this._visitor.visitRelationshipClassSync(schemaItem as RelationshipClass);\r\n break;\r\n case SchemaItemType.StructClass:\r\n if (this._visitor.visitStructClassSync)\r\n this._visitor.visitStructClassSync(schemaItem as StructClass);\r\n break;\r\n case SchemaItemType.Unit:\r\n if (this._visitor.visitUnitSync)\r\n this._visitor.visitUnitSync(schemaItem as Unit);\r\n break;\r\n case SchemaItemType.UnitSystem:\r\n if (this._visitor.visitUnitSystemSync)\r\n this._visitor.visitUnitSystemSync(schemaItem as UnitSystem);\r\n break;\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../src/UnitConversion/Graph.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n// Following https://github.com/dagrejs/graphlib/blob/master/lib/graph.js\n\n/**\n * Using generics for nodes - T represents Unit | Constant in our use case\n * @internal\n */\ninterface NodesMap<T> {\n [node: string]: T;\n}\n\n/**\n * Describe edges based on its node endpoints (v, w)\n * @internal\n */\ninterface EdgeObjsMap {\n [edge: string]: {\n v: string;\n w: string;\n };\n}\n\n/**\n * Describe edges based on the exponent they carry\n * @internal\n */\ninterface EdgeLabelsMap {\n [edge: string]: { exponent: number };\n}\n\n/**\n * List each node with outgoing edges in outer map; describe each node's outgoing edges in inner map\n * @internal\n */\ninterface OutEdgesMap {\n [node: string]: {\n [edges: string]: {\n v: string;\n w: string;\n };\n };\n}\n\n/** @internal */\nexport class Graph<T> {\n private _edgeKeyDelim = \"\\x01\";\n private _label = \"\";\n private _nodeCount = 0;\n private _edgeCount = 0;\n private _nodes: NodesMap<T>;\n private _edgeObjs: EdgeObjsMap;\n private _edgeLabels: EdgeLabelsMap;\n private _outEdges: OutEdgesMap;\n\n constructor() {\n this._nodes = {};\n this._edgeObjs = {};\n this._edgeLabels = {};\n this._outEdges = {};\n }\n\n public setGraph = (label: string): Graph<T> => {\n this._label = label;\n return this;\n };\n\n public graph = () => {\n return this._label;\n };\n\n public nodeCount = () => {\n return this._nodeCount;\n };\n\n public nodes = () => {\n return Object.keys(this._nodes);\n };\n\n public setNode = (nodeKey: string, nodeValue: T) => {\n if (nodeKey in this._nodes) {\n this._nodes[nodeKey] = nodeValue;\n return;\n }\n this._nodes[nodeKey] = nodeValue;\n this._outEdges[nodeKey] = {};\n ++this._nodeCount;\n };\n\n public node = (nodeKey: string) => {\n return this._nodes[nodeKey];\n };\n\n public hasNode = (nodeKey: string) => {\n return nodeKey in this._nodes;\n };\n\n public edgeCount = () => {\n return this._edgeCount;\n };\n\n public edges = () => {\n return Object.values(this._edgeObjs);\n };\n\n public setEdge = (v: string, w: string, value: { exponent: number }) => {\n const edgeId = v + this._edgeKeyDelim + w + this._edgeKeyDelim;\n if (edgeId in this._edgeLabels) {\n // this._edgeLabels[edgeId] = value;\n // Update exponent, specific to this graph's use case\n this._edgeLabels[edgeId].exponent += value.exponent;\n return;\n }\n\n this._edgeLabels[edgeId] = value;\n const edgeObj = {\n v,\n w,\n };\n this._edgeObjs[edgeId] = edgeObj;\n // setNode should have ran first, so this.outEdges[v] shouldn't be undefined\n this._outEdges[v][edgeId] = edgeObj;\n this._edgeCount++;\n };\n\n public edge = (v: string, w: string) => {\n const edgeId = v + this._edgeKeyDelim + w + this._edgeKeyDelim;\n return this._edgeLabels[edgeId];\n };\n\n public outEdges = (v: string) => {\n const outV = this._outEdges[v];\n const edges = Object.values(outV);\n return edges;\n };\n}\n"]}
1
+ {"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../src/UnitConversion/Graph.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// Following https://github.com/dagrejs/graphlib/blob/master/lib/graph.js\r\n\r\n/**\r\n * Using generics for nodes - T represents Unit | Constant in our use case\r\n * @internal\r\n */\r\ninterface NodesMap<T> {\r\n [node: string]: T;\r\n}\r\n\r\n/**\r\n * Describe edges based on its node endpoints (v, w)\r\n * @internal\r\n */\r\ninterface EdgeObjsMap {\r\n [edge: string]: {\r\n v: string;\r\n w: string;\r\n };\r\n}\r\n\r\n/**\r\n * Describe edges based on the exponent they carry\r\n * @internal\r\n */\r\ninterface EdgeLabelsMap {\r\n [edge: string]: { exponent: number };\r\n}\r\n\r\n/**\r\n * List each node with outgoing edges in outer map; describe each node's outgoing edges in inner map\r\n * @internal\r\n */\r\ninterface OutEdgesMap {\r\n [node: string]: {\r\n [edges: string]: {\r\n v: string;\r\n w: string;\r\n };\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport class Graph<T> {\r\n private _edgeKeyDelim = \"\\x01\";\r\n private _label = \"\";\r\n private _nodeCount = 0;\r\n private _edgeCount = 0;\r\n private _nodes: NodesMap<T>;\r\n private _edgeObjs: EdgeObjsMap;\r\n private _edgeLabels: EdgeLabelsMap;\r\n private _outEdges: OutEdgesMap;\r\n\r\n constructor() {\r\n this._nodes = {};\r\n this._edgeObjs = {};\r\n this._edgeLabels = {};\r\n this._outEdges = {};\r\n }\r\n\r\n public setGraph = (label: string): Graph<T> => {\r\n this._label = label;\r\n return this;\r\n };\r\n\r\n public graph = () => {\r\n return this._label;\r\n };\r\n\r\n public nodeCount = () => {\r\n return this._nodeCount;\r\n };\r\n\r\n public nodes = () => {\r\n return Object.keys(this._nodes);\r\n };\r\n\r\n public setNode = (nodeKey: string, nodeValue: T) => {\r\n if (nodeKey in this._nodes) {\r\n this._nodes[nodeKey] = nodeValue;\r\n return;\r\n }\r\n this._nodes[nodeKey] = nodeValue;\r\n this._outEdges[nodeKey] = {};\r\n ++this._nodeCount;\r\n };\r\n\r\n public node = (nodeKey: string) => {\r\n return this._nodes[nodeKey];\r\n };\r\n\r\n public hasNode = (nodeKey: string) => {\r\n return nodeKey in this._nodes;\r\n };\r\n\r\n public edgeCount = () => {\r\n return this._edgeCount;\r\n };\r\n\r\n public edges = () => {\r\n return Object.values(this._edgeObjs);\r\n };\r\n\r\n public setEdge = (v: string, w: string, value: { exponent: number }) => {\r\n const edgeId = v + this._edgeKeyDelim + w + this._edgeKeyDelim;\r\n if (edgeId in this._edgeLabels) {\r\n // this._edgeLabels[edgeId] = value;\r\n // Update exponent, specific to this graph's use case\r\n this._edgeLabels[edgeId].exponent += value.exponent;\r\n return;\r\n }\r\n\r\n this._edgeLabels[edgeId] = value;\r\n const edgeObj = {\r\n v,\r\n w,\r\n };\r\n this._edgeObjs[edgeId] = edgeObj;\r\n // setNode should have ran first, so this.outEdges[v] shouldn't be undefined\r\n this._outEdges[v][edgeId] = edgeObj;\r\n this._edgeCount++;\r\n };\r\n\r\n public edge = (v: string, w: string) => {\r\n const edgeId = v + this._edgeKeyDelim + w + this._edgeKeyDelim;\r\n return this._edgeLabels[edgeId];\r\n };\r\n\r\n public outEdges = (v: string) => {\r\n const outV = this._outEdges[v];\r\n const edges = Object.values(outV);\r\n return edges;\r\n };\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../../src/UnitConversion/Parser.ts"],"names":[],"mappings":";;AAuBA,0CAsBC;AA7CD;;;+FAG+F;AAC/F,MAAM,aAAa,GAAG,8EAA8E,CAAC;AACrG,MAAM,QAAQ,GAAG,uDAAuD,CAAC;AACzE,MAAM,EAAE,GAAG,GAAG,CAAC;AAEf,gBAAgB;AAChB,IAAK,MAIJ;AAJD,WAAK,MAAM;IACT,yCAAW,CAAA;IACX,mCAAQ,CAAA;IACR,2CAAY,CAAA;AACd,CAAC,EAJI,MAAM,KAAN,MAAM,QAIV;AASD,gBAAgB;AAChB,SAAgB,eAAe,CAAC,UAAkB;IAChD,MAAM,OAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;IAE3D,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;YACtD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;gBAC7C,iBAAiB,CAAC,QAAQ,IAAI,QAAQ,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nconst expressionRgx = /^(([A-Z]\\w*:)?([A-Z]\\w*|\\[([A-Z]\\w*:)?[A-Z]\\w*\\])(\\(-?\\d+\\))?(\\*(?!$)|$))+$/i;\nconst tokenRgx = /(?:(\\[)?((?:[A-Z]\\w*:)?[A-Z]\\w*)\\]?)(?:\\((-?\\d+)\\))?/i;\nconst sp = \"*\";\n\n/** @internal */\nenum Tokens {\n Bracket = 1,\n Word = 2,\n Exponent = 3,\n}\n\n/** @internal */\nexport interface DefinitionFragment {\n name: string;\n exponent: number;\n constant: boolean;\n}\n\n/** @internal */\nexport function parseDefinition(definition: string): Map<string, DefinitionFragment> {\n const unitMap: Map<string, DefinitionFragment> = new Map();\n\n if (expressionRgx.test(definition)) {\n for (const unit of definition.split(sp)) {\n const tokens = unit.split(tokenRgx);\n const name = tokens[Tokens.Word];\n const exponent = tokens[Tokens.Exponent] ? Number(tokens[Tokens.Exponent]) : 1;\n const constant = tokens[Tokens.Bracket] !== undefined;\n if (unitMap.has(name)) {\n const currentDefinition = unitMap.get(name)!;\n currentDefinition.exponent += exponent;\n unitMap.set(name, currentDefinition);\n } else {\n unitMap.set(name, { name, exponent, constant });\n }\n }\n\n return unitMap;\n } else {\n throw new Error(\"Invalid definition expression.\");\n }\n}\n"]}
1
+ {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../../src/UnitConversion/Parser.ts"],"names":[],"mappings":";;AAuBA,0CAsBC;AA7CD;;;+FAG+F;AAC/F,MAAM,aAAa,GAAG,8EAA8E,CAAC;AACrG,MAAM,QAAQ,GAAG,uDAAuD,CAAC;AACzE,MAAM,EAAE,GAAG,GAAG,CAAC;AAEf,gBAAgB;AAChB,IAAK,MAIJ;AAJD,WAAK,MAAM;IACT,yCAAW,CAAA;IACX,mCAAQ,CAAA;IACR,2CAAY,CAAA;AACd,CAAC,EAJI,MAAM,KAAN,MAAM,QAIV;AASD,gBAAgB;AAChB,SAAgB,eAAe,CAAC,UAAkB;IAChD,MAAM,OAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;IAE3D,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;YACtD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;gBAC7C,iBAAiB,CAAC,QAAQ,IAAI,QAAQ,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,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\nconst expressionRgx = /^(([A-Z]\\w*:)?([A-Z]\\w*|\\[([A-Z]\\w*:)?[A-Z]\\w*\\])(\\(-?\\d+\\))?(\\*(?!$)|$))+$/i;\r\nconst tokenRgx = /(?:(\\[)?((?:[A-Z]\\w*:)?[A-Z]\\w*)\\]?)(?:\\((-?\\d+)\\))?/i;\r\nconst sp = \"*\";\r\n\r\n/** @internal */\r\nenum Tokens {\r\n Bracket = 1,\r\n Word = 2,\r\n Exponent = 3,\r\n}\r\n\r\n/** @internal */\r\nexport interface DefinitionFragment {\r\n name: string;\r\n exponent: number;\r\n constant: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport function parseDefinition(definition: string): Map<string, DefinitionFragment> {\r\n const unitMap: Map<string, DefinitionFragment> = new Map();\r\n\r\n if (expressionRgx.test(definition)) {\r\n for (const unit of definition.split(sp)) {\r\n const tokens = unit.split(tokenRgx);\r\n const name = tokens[Tokens.Word];\r\n const exponent = tokens[Tokens.Exponent] ? Number(tokens[Tokens.Exponent]) : 1;\r\n const constant = tokens[Tokens.Bracket] !== undefined;\r\n if (unitMap.has(name)) {\r\n const currentDefinition = unitMap.get(name)!;\r\n currentDefinition.exponent += exponent;\r\n unitMap.set(name, currentDefinition);\r\n } else {\r\n unitMap.set(name, { name, exponent, constant });\r\n }\r\n }\r\n\r\n return unitMap;\r\n } else {\r\n throw new Error(\"Invalid definition expression.\");\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UnitConversion.js","sourceRoot":"","sources":["../../../src/UnitConversion/UnitConversion.ts"],"names":[],"mappings":";;;AAKA,2CAAwC;AACxC,wDAAmD;AAEnD;;;GAGG;AACH,MAAa,cAAc;IACG;IAAsC;IAAlE,YAA4B,SAAiB,GAAG,EAAkB,SAAiB,GAAG;QAA1D,WAAM,GAAN,MAAM,CAAc;QAAkB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAE1F;;;;OAIG;IACI,QAAQ,CAAC,CAAS;QACvB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,OAAO;QACZ,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxC,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,UAA0B;QACvC,OAAO,IAAI,cAAc,CACvB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAC/B,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CACpD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,UAA0B;QACxC,IAAI,IAAA,2BAAW,EAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAA,2BAAW,EAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YACtE,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAElE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,KAAa;QACxB,IAAI,IAAA,2BAAW,EAAC,KAAK,EAAE,GAAG,CAAC;YACzB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACjD,IAAI,IAAA,2BAAW,EAAC,KAAK,EAAE,GAAG,CAAC;YAC9B,OAAO,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEtC,IAAI,IAAA,2BAAW,EAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YAC/B,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;QAEvD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IAE9C;;;OAGG;IACI,MAAM,CAAC,IAAI,CAAC,cAA+B;QAChD,IAAI,WAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YAC7B,OAAO,IAAI,cAAc,CAAC,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE3G,OAAO,IAAI,cAAc,CAAC,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxF,CAAC;;AAxEH,wCAyEC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { Constant } from \"../Metadata/Constant\";\nimport { Unit } from \"../Metadata/Unit\";\nimport { almostEqual } from \"@itwin/core-quantity\";\n\n/**\n * Class used for storing calculated conversion between two Units [[UnitConverter.calculateConversion]] and converting values from one Unit to another [[UnitConverter.evaluate]]\n * @internal\n */\nexport class UnitConversion {\n constructor(public readonly factor: number = 1.0, public readonly offset: number = 0.0) {}\n\n /**\n * Converts x using UnitConversion\n * @param x Input magnitude to be converted\n * @returns Output magnitude after conversion\n */\n public evaluate(x: number): number {\n return this.factor * x + this.offset;\n }\n\n /**\n * Used to invert source's UnitConversion so that it can be composed with target's UnitConversion cleanly\n * @internal\n */\n public inverse(): UnitConversion {\n const inverseFactor = 1.0 / this.factor;\n return new UnitConversion(inverseFactor, -this.offset * inverseFactor);\n }\n\n /**\n * Combines two UnitConversions\n * Used to combine source's UnitConversion and target's UnitConversion for a final UnitConversion that can be evaluated\n * @internal\n */\n public compose(conversion: UnitConversion): UnitConversion {\n return new UnitConversion(\n this.factor * conversion.factor,\n conversion.factor * this.offset + conversion.offset,\n );\n }\n\n /**\n * Multiples two UnitConversions together to calculate factor during reducing\n * @internal\n */\n public multiply(conversion: UnitConversion): UnitConversion {\n if (almostEqual(conversion.offset, 0.0) && almostEqual(this.offset, 0.0))\n return new UnitConversion(this.factor * conversion.factor, 0.0);\n\n throw new Error(\"Cannot multiply two maps with non-zero offsets\");\n }\n\n /**\n * Raise UnitConversion's factor with power exponent to calculate factor during reducing\n * @internal\n */\n public raise(power: number): UnitConversion {\n if (almostEqual(power, 1.0))\n return new UnitConversion(this.factor, this.offset);\n else if (almostEqual(power, 0.0))\n return new UnitConversion(1.0, 0.0);\n\n if (almostEqual(this.offset, 0.0))\n return new UnitConversion(this.factor ** power, 0.0);\n\n throw new Error(\"Cannot raise map with non-zero offset\");\n }\n\n /** @internal */\n public static identity = new UnitConversion();\n\n /**\n * Returns UnitConversion with unit's numerator and denominator in factor and unit's offset in offset for reducing\n * @internal\n */\n public static from(unitOrConstant: Unit | Constant): UnitConversion {\n if (Unit.isUnit(unitOrConstant))\n return new UnitConversion(unitOrConstant.denominator / unitOrConstant.numerator, -unitOrConstant.offset);\n\n return new UnitConversion(unitOrConstant.denominator / unitOrConstant.numerator, 0.0);\n }\n}\n"]}
1
+ {"version":3,"file":"UnitConversion.js","sourceRoot":"","sources":["../../../src/UnitConversion/UnitConversion.ts"],"names":[],"mappings":";;;AAKA,2CAAwC;AACxC,wDAAmD;AAEnD;;;GAGG;AACH,MAAa,cAAc;IACG;IAAsC;IAAlE,YAA4B,SAAiB,GAAG,EAAkB,SAAiB,GAAG;QAA1D,WAAM,GAAN,MAAM,CAAc;QAAkB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAE1F;;;;OAIG;IACI,QAAQ,CAAC,CAAS;QACvB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,OAAO;QACZ,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxC,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,UAA0B;QACvC,OAAO,IAAI,cAAc,CACvB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAC/B,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CACpD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,UAA0B;QACxC,IAAI,IAAA,2BAAW,EAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAA,2BAAW,EAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YACtE,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAElE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,KAAa;QACxB,IAAI,IAAA,2BAAW,EAAC,KAAK,EAAE,GAAG,CAAC;YACzB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACjD,IAAI,IAAA,2BAAW,EAAC,KAAK,EAAE,GAAG,CAAC;YAC9B,OAAO,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEtC,IAAI,IAAA,2BAAW,EAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YAC/B,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;QAEvD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IAE9C;;;OAGG;IACI,MAAM,CAAC,IAAI,CAAC,cAA+B;QAChD,IAAI,WAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YAC7B,OAAO,IAAI,cAAc,CAAC,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE3G,OAAO,IAAI,cAAc,CAAC,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxF,CAAC;;AAxEH,wCAyEC","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\nimport { Constant } from \"../Metadata/Constant\";\r\nimport { Unit } from \"../Metadata/Unit\";\r\nimport { almostEqual } from \"@itwin/core-quantity\";\r\n\r\n/**\r\n * Class used for storing calculated conversion between two Units [[UnitConverter.calculateConversion]] and converting values from one Unit to another [[UnitConverter.evaluate]]\r\n * @internal\r\n */\r\nexport class UnitConversion {\r\n constructor(public readonly factor: number = 1.0, public readonly offset: number = 0.0) {}\r\n\r\n /**\r\n * Converts x using UnitConversion\r\n * @param x Input magnitude to be converted\r\n * @returns Output magnitude after conversion\r\n */\r\n public evaluate(x: number): number {\r\n return this.factor * x + this.offset;\r\n }\r\n\r\n /**\r\n * Used to invert source's UnitConversion so that it can be composed with target's UnitConversion cleanly\r\n * @internal\r\n */\r\n public inverse(): UnitConversion {\r\n const inverseFactor = 1.0 / this.factor;\r\n return new UnitConversion(inverseFactor, -this.offset * inverseFactor);\r\n }\r\n\r\n /**\r\n * Combines two UnitConversions\r\n * Used to combine source's UnitConversion and target's UnitConversion for a final UnitConversion that can be evaluated\r\n * @internal\r\n */\r\n public compose(conversion: UnitConversion): UnitConversion {\r\n return new UnitConversion(\r\n this.factor * conversion.factor,\r\n conversion.factor * this.offset + conversion.offset,\r\n );\r\n }\r\n\r\n /**\r\n * Multiples two UnitConversions together to calculate factor during reducing\r\n * @internal\r\n */\r\n public multiply(conversion: UnitConversion): UnitConversion {\r\n if (almostEqual(conversion.offset, 0.0) && almostEqual(this.offset, 0.0))\r\n return new UnitConversion(this.factor * conversion.factor, 0.0);\r\n\r\n throw new Error(\"Cannot multiply two maps with non-zero offsets\");\r\n }\r\n\r\n /**\r\n * Raise UnitConversion's factor with power exponent to calculate factor during reducing\r\n * @internal\r\n */\r\n public raise(power: number): UnitConversion {\r\n if (almostEqual(power, 1.0))\r\n return new UnitConversion(this.factor, this.offset);\r\n else if (almostEqual(power, 0.0))\r\n return new UnitConversion(1.0, 0.0);\r\n\r\n if (almostEqual(this.offset, 0.0))\r\n return new UnitConversion(this.factor ** power, 0.0);\r\n\r\n throw new Error(\"Cannot raise map with non-zero offset\");\r\n }\r\n\r\n /** @internal */\r\n public static identity = new UnitConversion();\r\n\r\n /**\r\n * Returns UnitConversion with unit's numerator and denominator in factor and unit's offset in offset for reducing\r\n * @internal\r\n */\r\n public static from(unitOrConstant: Unit | Constant): UnitConversion {\r\n if (Unit.isUnit(unitOrConstant))\r\n return new UnitConversion(unitOrConstant.denominator / unitOrConstant.numerator, -unitOrConstant.offset);\r\n\r\n return new UnitConversion(unitOrConstant.denominator / unitOrConstant.numerator, 0.0);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UnitConverter.js","sourceRoot":"","sources":["../../../src/UnitConversion/UnitConverter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { BentleyError, BentleyStatus } from \"@itwin/core-bentley\";\nimport { SchemaContext } from \"../Context\";\nimport { Constant } from \"../Metadata/Constant\";\nimport { SchemaItem } from \"../Metadata/SchemaItem\";\nimport { Unit } from \"../Metadata/Unit\";\nimport { SchemaKey } from \"../SchemaKey\";\nimport { UnitConversion } from \"./UnitConversion\";\nimport { UnitGraph } from \"./UnitTree\";\n\n/**\n * Class constructed with SchemaContext and used to calculate [[UnitConversion]] between Units\n * @internal\n */\nexport class UnitConverter {\n private _uGraph: UnitGraph;\n\n /**\n * Create Converter context\n * @param _context SchemaContext with contexts added to it.\n */\n constructor(private readonly _context: SchemaContext) {\n this._uGraph = new UnitGraph(this._context);\n }\n\n /**\n * Find conversion between from and to units, formatted {schemaName}.{schemaItemName} or {schemaName}:{schemaItemName}\n * @param fromUnit SchemaItem full name of source unit\n * @param toUnit SchemaItem full name of target unit\n * @returns [[UnitConversion]] converting fromUnit -> toUnit with a factor and an offset\n * @throws Error if from and to Units' SchemaItem is not found in Schema or Schema prefix is not found in SchemaContext\n * @throws Error if from and to Units do not belong to the same phenomenon\n * @throws Error if definitions' SchemaItems cannot be found in its own or referenced Schemas\n * @throws Error if base units of source and target unit do not match\n */\n public async calculateConversion(fromUnit: string, toUnit: string): Promise<UnitConversion> {\n const [fromSchemaName, fromSchemaItemName] = SchemaItem.parseFullName(fromUnit);\n const [toSchemaName, toSchemaItemName] = SchemaItem.parseFullName(toUnit);\n const fromSchemaKey = new SchemaKey(fromSchemaName);\n const toSchemaKey = new SchemaKey(toSchemaName);\n\n const fromSchema = await this._context.getSchema(fromSchemaKey);\n const toSchema = await this._context.getSchema(toSchemaKey);\n\n if (!fromSchema || !toSchema) {\n throw new BentleyError(BentleyStatus.ERROR, \"Cannot find from's and/or to's schema\", () => {\n return { from: fromUnit, fromSchema: fromSchemaName, to: toUnit, toSchema: toSchemaName };\n });\n }\n\n const from = await this._uGraph.resolveUnit(fromSchemaItemName, fromSchema);\n const to = await this._uGraph.resolveUnit(toSchemaItemName, toSchema);\n\n return this.processUnits(from, to);\n }\n\n /**\n * @param from Source unit converted from\n * @param to Target unit converted to\n * @internal\n */\n private async processUnits(from: Unit | Constant, to: Unit | Constant): Promise<UnitConversion> {\n if (from.key.matches(to.key))\n return UnitConversion.identity;\n\n const areCompatible = await Unit.areCompatible(from as Unit, to as Unit);\n if (!areCompatible)\n throw new BentleyError(BentleyStatus.ERROR, `Source and target units do not belong to same phenomenon`, () => {\n return { from, to };\n });\n\n // Add nodes and subsequent children to graph\n await this._uGraph.addUnit(from);\n await this._uGraph.addUnit(to);\n\n const fromBaseUnits = new Map<string, number>();\n const toBaseUnits = new Map<string, number>();\n // Calculate map of UnitConversions to get between from -> base\n const fromMapStore = this._uGraph.reduce(from, fromBaseUnits);\n // Calculate map of UnitConversions to get between base -> to\n const toMapStore = this._uGraph.reduce(to, toBaseUnits);\n\n if (!this.checkBaseUnitsMatch(fromBaseUnits, toBaseUnits))\n throw new BentleyError(BentleyStatus.ERROR, `Source and target units do not have matching base units`, () => {\n return { from, to };\n });\n\n // Final calculations to get singular UnitConversion between from -> to\n const fromMap = fromMapStore.get(from.key.fullName) || UnitConversion.identity;\n const toMap = toMapStore.get(to.key.fullName) || UnitConversion.identity;\n const fromInverse = fromMap.inverse();\n return fromInverse.compose(toMap);\n }\n\n /**\n * Check if fromBaseUnits's base units and exponents matches toBaseUnits's\n * @param fromBaseUnits Map of base units for source unit\n * @param toBaseUnits Map of base units for target unit\n * @internal\n */\n private checkBaseUnitsMatch(fromBaseUnits: Map<string, number>, toBaseUnits: Map<string, number>): boolean {\n // Trim maps of \"One\" and value that equal zero as they do not affect the base units and calculations\n for (const [key, value] of fromBaseUnits.entries()) {\n const [, schemaItemName] = SchemaItem.parseFullName(key);\n if (schemaItemName === \"ONE\" || value === 0) {\n fromBaseUnits.delete(key);\n }\n }\n\n for (const [key, value] of toBaseUnits.entries()) {\n const [, schemaItemName] = SchemaItem.parseFullName(key);\n if (schemaItemName === \"ONE\" || value === 0) {\n toBaseUnits.delete(key);\n }\n }\n\n if (fromBaseUnits.size !== toBaseUnits.size)\n return false;\n\n for (const key of fromBaseUnits.keys()) {\n if (!toBaseUnits.has(key) || fromBaseUnits.get(key) !== toBaseUnits.get(key)) {\n // Mismatching key or value\n return false;\n }\n }\n\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"UnitConverter.js","sourceRoot":"","sources":["../../../src/UnitConversion/UnitConverter.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\nimport { BentleyError, BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { SchemaContext } from \"../Context\";\r\nimport { Constant } from \"../Metadata/Constant\";\r\nimport { SchemaItem } from \"../Metadata/SchemaItem\";\r\nimport { Unit } from \"../Metadata/Unit\";\r\nimport { SchemaKey } from \"../SchemaKey\";\r\nimport { UnitConversion } from \"./UnitConversion\";\r\nimport { UnitGraph } from \"./UnitTree\";\r\n\r\n/**\r\n * Class constructed with SchemaContext and used to calculate [[UnitConversion]] between Units\r\n * @internal\r\n */\r\nexport class UnitConverter {\r\n private _uGraph: UnitGraph;\r\n\r\n /**\r\n * Create Converter context\r\n * @param _context SchemaContext with contexts added to it.\r\n */\r\n constructor(private readonly _context: SchemaContext) {\r\n this._uGraph = new UnitGraph(this._context);\r\n }\r\n\r\n /**\r\n * Find conversion between from and to units, formatted {schemaName}.{schemaItemName} or {schemaName}:{schemaItemName}\r\n * @param fromUnit SchemaItem full name of source unit\r\n * @param toUnit SchemaItem full name of target unit\r\n * @returns [[UnitConversion]] converting fromUnit -> toUnit with a factor and an offset\r\n * @throws Error if from and to Units' SchemaItem is not found in Schema or Schema prefix is not found in SchemaContext\r\n * @throws Error if from and to Units do not belong to the same phenomenon\r\n * @throws Error if definitions' SchemaItems cannot be found in its own or referenced Schemas\r\n * @throws Error if base units of source and target unit do not match\r\n */\r\n public async calculateConversion(fromUnit: string, toUnit: string): Promise<UnitConversion> {\r\n const [fromSchemaName, fromSchemaItemName] = SchemaItem.parseFullName(fromUnit);\r\n const [toSchemaName, toSchemaItemName] = SchemaItem.parseFullName(toUnit);\r\n const fromSchemaKey = new SchemaKey(fromSchemaName);\r\n const toSchemaKey = new SchemaKey(toSchemaName);\r\n\r\n const fromSchema = await this._context.getSchema(fromSchemaKey);\r\n const toSchema = await this._context.getSchema(toSchemaKey);\r\n\r\n if (!fromSchema || !toSchema) {\r\n throw new BentleyError(BentleyStatus.ERROR, \"Cannot find from's and/or to's schema\", () => {\r\n return { from: fromUnit, fromSchema: fromSchemaName, to: toUnit, toSchema: toSchemaName };\r\n });\r\n }\r\n\r\n const from = await this._uGraph.resolveUnit(fromSchemaItemName, fromSchema);\r\n const to = await this._uGraph.resolveUnit(toSchemaItemName, toSchema);\r\n\r\n return this.processUnits(from, to);\r\n }\r\n\r\n /**\r\n * @param from Source unit converted from\r\n * @param to Target unit converted to\r\n * @internal\r\n */\r\n private async processUnits(from: Unit | Constant, to: Unit | Constant): Promise<UnitConversion> {\r\n if (from.key.matches(to.key))\r\n return UnitConversion.identity;\r\n\r\n const areCompatible = await Unit.areCompatible(from as Unit, to as Unit);\r\n if (!areCompatible)\r\n throw new BentleyError(BentleyStatus.ERROR, `Source and target units do not belong to same phenomenon`, () => {\r\n return { from, to };\r\n });\r\n\r\n // Add nodes and subsequent children to graph\r\n await this._uGraph.addUnit(from);\r\n await this._uGraph.addUnit(to);\r\n\r\n const fromBaseUnits = new Map<string, number>();\r\n const toBaseUnits = new Map<string, number>();\r\n // Calculate map of UnitConversions to get between from -> base\r\n const fromMapStore = this._uGraph.reduce(from, fromBaseUnits);\r\n // Calculate map of UnitConversions to get between base -> to\r\n const toMapStore = this._uGraph.reduce(to, toBaseUnits);\r\n\r\n if (!this.checkBaseUnitsMatch(fromBaseUnits, toBaseUnits))\r\n throw new BentleyError(BentleyStatus.ERROR, `Source and target units do not have matching base units`, () => {\r\n return { from, to };\r\n });\r\n\r\n // Final calculations to get singular UnitConversion between from -> to\r\n const fromMap = fromMapStore.get(from.key.fullName) || UnitConversion.identity;\r\n const toMap = toMapStore.get(to.key.fullName) || UnitConversion.identity;\r\n const fromInverse = fromMap.inverse();\r\n return fromInverse.compose(toMap);\r\n }\r\n\r\n /**\r\n * Check if fromBaseUnits's base units and exponents matches toBaseUnits's\r\n * @param fromBaseUnits Map of base units for source unit\r\n * @param toBaseUnits Map of base units for target unit\r\n * @internal\r\n */\r\n private checkBaseUnitsMatch(fromBaseUnits: Map<string, number>, toBaseUnits: Map<string, number>): boolean {\r\n // Trim maps of \"One\" and value that equal zero as they do not affect the base units and calculations\r\n for (const [key, value] of fromBaseUnits.entries()) {\r\n const [, schemaItemName] = SchemaItem.parseFullName(key);\r\n if (schemaItemName === \"ONE\" || value === 0) {\r\n fromBaseUnits.delete(key);\r\n }\r\n }\r\n\r\n for (const [key, value] of toBaseUnits.entries()) {\r\n const [, schemaItemName] = SchemaItem.parseFullName(key);\r\n if (schemaItemName === \"ONE\" || value === 0) {\r\n toBaseUnits.delete(key);\r\n }\r\n }\r\n\r\n if (fromBaseUnits.size !== toBaseUnits.size)\r\n return false;\r\n\r\n for (const key of fromBaseUnits.keys()) {\r\n if (!toBaseUnits.has(key) || fromBaseUnits.get(key) !== toBaseUnits.get(key)) {\r\n // Mismatching key or value\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}