@itwin/ecschema-metadata 5.12.0-dev.15 → 5.12.0-dev.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/Constants.js.map +1 -1
- package/lib/cjs/DelayedPromise.js.map +1 -1
- package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
- package/lib/cjs/Deserialization/Helper.js.map +1 -1
- package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
- package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
- package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
- package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
- package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
- package/lib/cjs/ECName.js.map +1 -1
- package/lib/cjs/ECObjects.js.map +1 -1
- package/lib/cjs/Exception.js.map +1 -1
- package/lib/cjs/Formatting/FormatSetFormatsProvider.js.map +1 -1
- package/lib/cjs/Formatting/SchemaFormatsProvider.js.map +1 -1
- package/lib/cjs/IncrementalLoading/ClassParsers.js.map +1 -1
- package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
- package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +466 -466
- package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -1
- package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
- package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
- package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -1
- package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +235 -235
- package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -1
- package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -1
- package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +309 -309
- package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -1
- package/lib/cjs/Interfaces.js.map +1 -1
- package/lib/cjs/Localization/LocalizationProvider.js.map +1 -1
- package/lib/cjs/Localization/LocalizationTypes.js.map +1 -1
- package/lib/cjs/Localization/SchemaLocalization.d.ts +1 -1
- package/lib/cjs/Localization/SchemaLocalization.d.ts.map +1 -1
- package/lib/cjs/Localization/SchemaLocalization.js.map +1 -1
- package/lib/cjs/Metadata/Class.js.map +1 -1
- package/lib/cjs/Metadata/Constant.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/cjs/Metadata/EntityClass.js.map +1 -1
- package/lib/cjs/Metadata/Enumeration.js.map +1 -1
- package/lib/cjs/Metadata/Format.js.map +1 -1
- package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
- package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/cjs/Metadata/Mixin.js.map +1 -1
- package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
- package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
- package/lib/cjs/Metadata/Property.js.map +1 -1
- package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
- package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
- package/lib/cjs/Metadata/Schema.js.map +1 -1
- package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
- package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
- package/lib/cjs/PropertyTypes.js.map +1 -1
- package/lib/cjs/SchemaJsonLocater.js.map +1 -1
- package/lib/cjs/SchemaKey.js.map +1 -1
- package/lib/cjs/SchemaLoader.js.map +1 -1
- package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
- package/lib/cjs/SchemaView/SchemaManifest.d.ts +81 -0
- package/lib/cjs/SchemaView/SchemaManifest.d.ts.map +1 -0
- package/lib/cjs/SchemaView/SchemaManifest.js +131 -0
- package/lib/cjs/SchemaView/SchemaManifest.js.map +1 -0
- package/lib/cjs/{SchemaView.d.ts → SchemaView/SchemaView.d.ts} +23 -90
- package/lib/cjs/SchemaView/SchemaView.d.ts.map +1 -0
- package/lib/cjs/{SchemaView.js → SchemaView/SchemaView.js} +32 -198
- package/lib/cjs/SchemaView/SchemaView.js.map +1 -0
- package/lib/cjs/SchemaView/SchemaViewBinaryReader.d.ts +37 -0
- package/lib/cjs/SchemaView/SchemaViewBinaryReader.d.ts.map +1 -0
- package/lib/cjs/{SchemaViewBinaryReader.js → SchemaView/SchemaViewBinaryReader.js} +84 -43
- package/lib/cjs/SchemaView/SchemaViewBinaryReader.js.map +1 -0
- package/lib/cjs/SchemaView/SchemaViewBuilder.d.ts +116 -0
- package/lib/cjs/SchemaView/SchemaViewBuilder.d.ts.map +1 -0
- package/lib/cjs/SchemaView/SchemaViewBuilder.js +230 -0
- package/lib/cjs/SchemaView/SchemaViewBuilder.js.map +1 -0
- package/lib/cjs/{SchemaViewInterfaces.d.ts → SchemaView/SchemaViewInterfaces.d.ts} +1 -1
- package/lib/cjs/SchemaView/SchemaViewInterfaces.d.ts.map +1 -0
- package/lib/cjs/SchemaView/SchemaViewInterfaces.js.map +1 -0
- package/lib/cjs/SchemaView/SchemaViewManager.d.ts +114 -0
- package/lib/cjs/SchemaView/SchemaViewManager.d.ts.map +1 -0
- package/lib/cjs/SchemaView/SchemaViewManager.js +184 -0
- package/lib/cjs/SchemaView/SchemaViewManager.js.map +1 -0
- package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
- package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
- package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
- package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
- package/lib/cjs/ecschema-metadata.d.ts +6 -3
- package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
- package/lib/cjs/ecschema-metadata.js +6 -3
- package/lib/cjs/ecschema-metadata.js.map +1 -1
- package/lib/cjs/utils/ECClassHierarchy.js.map +1 -1
- package/lib/cjs/utils/SchemaGraph.js.map +1 -1
- package/lib/cjs/utils/SchemaLoadingController.js.map +1 -1
- package/lib/esm/Constants.js.map +1 -1
- package/lib/esm/DelayedPromise.js.map +1 -1
- package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
- package/lib/esm/Deserialization/Helper.js.map +1 -1
- package/lib/esm/Deserialization/JsonParser.js.map +1 -1
- package/lib/esm/Deserialization/JsonProps.js.map +1 -1
- package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
- package/lib/esm/Deserialization/XmlParser.js.map +1 -1
- package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
- package/lib/esm/ECName.js.map +1 -1
- package/lib/esm/ECObjects.js.map +1 -1
- package/lib/esm/Exception.js.map +1 -1
- package/lib/esm/Formatting/FormatSetFormatsProvider.js.map +1 -1
- package/lib/esm/Formatting/SchemaFormatsProvider.js.map +1 -1
- package/lib/esm/IncrementalLoading/ClassParsers.js.map +1 -1
- package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
- package/lib/esm/IncrementalLoading/FullSchemaQueries.js +466 -466
- package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -1
- package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
- package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
- package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -1
- package/lib/esm/IncrementalLoading/SchemaItemQueries.js +235 -235
- package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -1
- package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -1
- package/lib/esm/IncrementalLoading/SchemaStubQueries.js +309 -309
- package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -1
- package/lib/esm/Interfaces.js.map +1 -1
- package/lib/esm/Localization/LocalizationProvider.js.map +1 -1
- package/lib/esm/Localization/LocalizationTypes.js.map +1 -1
- package/lib/esm/Localization/SchemaLocalization.d.ts +1 -1
- package/lib/esm/Localization/SchemaLocalization.d.ts.map +1 -1
- package/lib/esm/Localization/SchemaLocalization.js.map +1 -1
- package/lib/esm/Metadata/Class.js.map +1 -1
- package/lib/esm/Metadata/Constant.js.map +1 -1
- package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
- package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/esm/Metadata/EntityClass.js.map +1 -1
- package/lib/esm/Metadata/Enumeration.js.map +1 -1
- package/lib/esm/Metadata/Format.js.map +1 -1
- package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
- package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/esm/Metadata/Mixin.js.map +1 -1
- package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
- package/lib/esm/Metadata/Phenomenon.js.map +1 -1
- package/lib/esm/Metadata/Property.js.map +1 -1
- package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
- package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
- package/lib/esm/Metadata/Schema.js.map +1 -1
- package/lib/esm/Metadata/SchemaItem.js.map +1 -1
- package/lib/esm/Metadata/UnitSystem.js.map +1 -1
- package/lib/esm/PropertyTypes.js.map +1 -1
- package/lib/esm/SchemaJsonLocater.js.map +1 -1
- package/lib/esm/SchemaKey.js.map +1 -1
- package/lib/esm/SchemaLoader.js.map +1 -1
- package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
- package/lib/esm/SchemaView/SchemaManifest.d.ts +81 -0
- package/lib/esm/SchemaView/SchemaManifest.d.ts.map +1 -0
- package/lib/esm/SchemaView/SchemaManifest.js +127 -0
- package/lib/esm/SchemaView/SchemaManifest.js.map +1 -0
- package/lib/esm/{SchemaView.d.ts → SchemaView/SchemaView.d.ts} +23 -90
- package/lib/esm/SchemaView/SchemaView.d.ts.map +1 -0
- package/lib/esm/{SchemaView.js → SchemaView/SchemaView.js} +32 -197
- package/lib/esm/SchemaView/SchemaView.js.map +1 -0
- package/lib/esm/SchemaView/SchemaViewBinaryReader.d.ts +37 -0
- package/lib/esm/SchemaView/SchemaViewBinaryReader.d.ts.map +1 -0
- package/lib/esm/{SchemaViewBinaryReader.js → SchemaView/SchemaViewBinaryReader.js} +82 -43
- package/lib/esm/SchemaView/SchemaViewBinaryReader.js.map +1 -0
- package/lib/esm/SchemaView/SchemaViewBuilder.d.ts +116 -0
- package/lib/esm/SchemaView/SchemaViewBuilder.d.ts.map +1 -0
- package/lib/esm/SchemaView/SchemaViewBuilder.js +226 -0
- package/lib/esm/SchemaView/SchemaViewBuilder.js.map +1 -0
- package/lib/esm/{SchemaViewInterfaces.d.ts → SchemaView/SchemaViewInterfaces.d.ts} +1 -1
- package/lib/esm/SchemaView/SchemaViewInterfaces.d.ts.map +1 -0
- package/lib/esm/SchemaView/SchemaViewInterfaces.js.map +1 -0
- package/lib/esm/SchemaView/SchemaViewManager.d.ts +114 -0
- package/lib/esm/SchemaView/SchemaViewManager.d.ts.map +1 -0
- package/lib/esm/SchemaView/SchemaViewManager.js +180 -0
- package/lib/esm/SchemaView/SchemaViewManager.js.map +1 -0
- package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
- package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
- package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
- package/lib/esm/Validation/SchemaWalker.js.map +1 -1
- package/lib/esm/ecschema-metadata.d.ts +6 -3
- package/lib/esm/ecschema-metadata.d.ts.map +1 -1
- package/lib/esm/ecschema-metadata.js +6 -3
- package/lib/esm/ecschema-metadata.js.map +1 -1
- package/lib/esm/utils/ECClassHierarchy.js.map +1 -1
- package/lib/esm/utils/SchemaGraph.js.map +1 -1
- package/lib/esm/utils/SchemaLoadingController.js.map +1 -1
- package/package.json +6 -6
- package/lib/cjs/SchemaView.d.ts.map +0 -1
- package/lib/cjs/SchemaView.js.map +0 -1
- package/lib/cjs/SchemaViewBinaryReader.d.ts +0 -16
- package/lib/cjs/SchemaViewBinaryReader.d.ts.map +0 -1
- package/lib/cjs/SchemaViewBinaryReader.js.map +0 -1
- package/lib/cjs/SchemaViewInterfaces.d.ts.map +0 -1
- package/lib/cjs/SchemaViewInterfaces.js.map +0 -1
- package/lib/esm/SchemaView.d.ts.map +0 -1
- package/lib/esm/SchemaView.js.map +0 -1
- package/lib/esm/SchemaViewBinaryReader.d.ts +0 -16
- package/lib/esm/SchemaViewBinaryReader.d.ts.map +0 -1
- package/lib/esm/SchemaViewBinaryReader.js.map +0 -1
- package/lib/esm/SchemaViewInterfaces.d.ts.map +0 -1
- package/lib/esm/SchemaViewInterfaces.js.map +0 -1
- /package/lib/cjs/{SchemaViewInterfaces.js → SchemaView/SchemaViewInterfaces.js} +0 -0
- /package/lib/esm/{SchemaViewInterfaces.js → SchemaView/SchemaViewInterfaces.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaViewBinaryReader.js","sourceRoot":"","sources":["../../src/SchemaViewBinaryReader.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 Schema\n */\n\nimport { BentleyError, Logger } from \"@itwin/core-bentley\";\nimport { SchemaView, SchemaViewBuilder } from \"./SchemaView\";\nimport { StrengthDirection, StrengthType } from \"./ECObjects\";\nimport { ClassData, ClassModifier, ClassType, PropertyDef, PropertyKind, schemaViewFormatVersion, SchemaViewPrimitiveType } from \"./SchemaViewInterfaces\";\n\n/** Binary record tags for the SchemaView blob format.\n * Each tag marks a flat, count-prefixed table. Must stay in sync with the C++ writer. */\nenum Tag {\n PropertyDefTable = 0x0A,\n SchemaTable = 0x10,\n EnumTable = 0x20,\n KoQTable = 0x30,\n PropCatTable = 0x31,\n ClassTable = 0x40,\n}\n\nconst MAGIC = 0x43534348; // \"CSCH\"\n\n/** Low-level binary reader for the SchemaView blob. */\nclass BinaryReader {\n private _view: DataView;\n private _bytes: Uint8Array;\n private _pos: number;\n private _strings: string[];\n\n constructor(data: Uint8Array) {\n this._bytes = data;\n this._view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n this._pos = 0;\n this._strings = [];\n }\n\n public readU8(): number {\n if (this._pos >= this._bytes.length)\n throw new Error(`SchemaView blob truncated: cannot read u8 at offset ${this._pos} (length ${this._bytes.length})`);\n return this._bytes[this._pos++];\n }\n public readU16(): number { const v = this._view.getUint16(this._pos, true); this._pos += 2; return v; }\n public readU32(): number { const v = this._view.getUint32(this._pos, true); this._pos += 4; return v; }\n public readI32(): number { const v = this._view.getInt32(this._pos, true); this._pos += 4; return v; }\n public readF64(): number { const v = this._view.getFloat64(this._pos, true); this._pos += 8; return v; }\n public get pos(): number { return this._pos; }\n public set pos(v: number) { this._pos = v; }\n\n /** Read a string-table reference (U32 index) and return the original string. */\n public readSRef(): string {\n const idx = this.readU32();\n if (idx >= this._strings.length)\n throw new Error(`SchemaView blob: string reference ${idx} out of range (string table size ${this._strings.length})`);\n return this._strings[idx];\n }\n\n /** Validate a count-prefixed table header: the declared count cannot exceed what the remaining\n * buffer could plausibly hold. Each entry consumes at least `minBytesPerEntry` bytes. */\n public validateCount(count: number, minBytesPerEntry: number, tableName: string): void {\n const remaining = this._bytes.length - this._pos;\n if (count > remaining / Math.max(1, minBytesPerEntry))\n throw new Error(`SchemaView blob: ${tableName} count ${count} exceeds remaining buffer (${remaining} bytes)`);\n }\n\n /** Parse the string table at the given offset. */\n public parseStringTable(offset: number): void {\n if (offset > this._bytes.length)\n throw new Error(`SchemaView blob: stringTable offset ${offset} is past end of blob (length ${this._bytes.length})`);\n const saved = this._pos;\n this._pos = offset;\n const count = this.readU32();\n // Each entry is at minimum a 4-byte length prefix - a count larger than the remaining bytes\n // cannot possibly be valid and would cause a huge `new Array` allocation on a malformed blob.\n const remaining = this._bytes.length - this._pos;\n if (count > remaining / 4)\n throw new Error(`SchemaView blob: stringTable count ${count} exceeds remaining buffer (${remaining} bytes)`);\n this._strings = new Array(count);\n const decoder = new TextDecoder();\n for (let i = 0; i < count; i++) {\n const len = this.readU32();\n if (len === 0) {\n this._strings[i] = \"\";\n } else {\n if (len > this._bytes.length - this._pos)\n throw new Error(`SchemaView blob: string entry ${i} has length ${len} but only ${this._bytes.length - this._pos} bytes remain`);\n this._strings[i] = decoder.decode(this._bytes.subarray(this._pos, this._pos + len));\n this._pos += len;\n }\n }\n this._pos = saved;\n }\n}\n\n/** Read a U32 that uses 0xFFFFFFFF as a sentinel for \"not set\". */\nfunction readOptionalU32(reader: BinaryReader): number | undefined {\n const v = reader.readU32();\n return v === 0xFFFFFFFF ? undefined : v;\n}\n\n/** Temporary per-class data collected during parsing, before cross-references are resolved. */\ninterface PendingClass {\n schemaIdx: number;\n classIdx: number;\n ecInstanceId: number;\n nameStringIdx: number;\n labelStringIdx: number;\n descriptionStringIdx: number;\n type: ClassType;\n modifier: ClassModifier;\n relStrength: StrengthType;\n relStrengthDir: StrengthDirection;\n baseClasses: Array<{ schemaName: string; className: string; ordinal: number }>;\n propRefs: PendingPropRef[];\n constraints: PendingConstraint[];\n schemaName: string;\n isHidden: boolean | undefined;\n}\n\n/** A property reference from the binary PropertyDefTable. During parsing, `preDefIdx` stores the\n * index into the pre-parsed def array; during resolution it's mapped to the builder's deduped defIdx. */\ninterface PendingPropRef {\n preDefIdx: number; // index into preParsedDefs (mapped to builder defIdx during resolution)\n ecInstanceId: number;\n labelStringIdx: number;\n priority: number;\n}\n\n/** Pre-parsed property definition from the binary PropertyDefTable, with row ID cross-refs. */\ninterface PreParsedDef {\n name: string;\n description: string;\n kind: PropertyKind;\n primitiveType: SchemaViewPrimitiveType;\n extType: string;\n enumRowId: number; // ec_Enumeration.Id (0 = none)\n structClassRowId: number; // ec_Class.Id for struct type (0 = none)\n koqRowId: number; // ec_KindOfQuantity.Id (0 = none)\n catRowId: number; // ec_PropertyCategory.Id (0 = none)\n arrayMinOccurs: number | undefined;\n arrayMaxOccurs: number | undefined;\n navRelClassRowId: number; // ec_Class.Id for nav relationship (0 = none)\n navDirection: StrengthDirection;\n isReadonly: boolean;\n isHidden: boolean;\n}\n\ninterface PendingConstraint {\n relEnd: number; // 0=source, 1=target\n isPolymorphic: boolean;\n multiplicityLower: number;\n multiplicityUpper: number;\n roleLabel: string;\n abstractSchemaName: string;\n abstractClassName: string;\n constraintClasses: Array<{ schemaName: string; className: string }>;\n}\n\n/** Helper: read a tag byte and validate it matches the expected tag. */\nfunction expectTag(reader: BinaryReader, expected: Tag): void {\n const tag = reader.readU8();\n if (tag !== expected)\n throw new Error(`Expected tag 0x${expected.toString(16)} but found 0x${tag.toString(16)} at offset ${reader.pos - 1}`);\n}\n\n/** Parse a schema view blob (binary format) into a `SchemaView`.\n *\n * Layout: Header, PropertyDefTable, SchemaTable, EnumTable, KoQTable, PropCatTable, ClassTable, StringTable.\n * Each table is count-prefixed. Schema items carry their schema's ecInstanceId for ownership resolution.\n * Classes have count-prefixed inline sub-items (base classes, property refs, constraints).\n *\n * Consumers should call `SchemaView.fromBinary` instead - this function is the low-level\n * implementation behind it.\n * @internal\n */\nexport function parseSchemaViewBlob(data: Uint8Array, schemaToken?: string): SchemaView {\n const reader = new BinaryReader(data);\n\n // Header: magic(4) + version(1) + stringTableOffset(4)\n const magic = reader.readU32();\n if (magic !== MAGIC)\n throw new Error(`Invalid SchemaView blob magic: 0x${magic.toString(16)}, expected 0x${MAGIC.toString(16)}`);\n const version = reader.readU8();\n if (version !== schemaViewFormatVersion)\n throw new Error(`Unsupported schema view format version: ${version}, expected ${schemaViewFormatVersion}`);\n const stOffset = reader.readU32();\n reader.parseStringTable(stOffset);\n\n const builder = new SchemaViewBuilder();\n\n // Cross-reference maps (ecInstanceId -> builder array index)\n const schemaEcIdToIdx = new Map<number, number>();\n const enumRowIdToIdx = new Map<number, number>();\n const koqRowIdToIdx = new Map<number, number>();\n const catRowIdToIdx = new Map<number, number>();\n const classRowIdToIdx = new Map<number, number>();\n\n // Per-schema metadata for name-based class resolution\n const schemaInfos: Array<{ name: string; schemaIdx: number; classNameToIdx: Map<string, number> }> = [];\n\n // Per-schema item range tracking (indexed by schemaIdx)\n const schemaEnumStarts: number[] = [];\n const schemaEnumCounts: number[] = [];\n const schemaKoqStarts: number[] = [];\n const schemaKoqCounts: number[] = [];\n const schemaCatStarts: number[] = [];\n const schemaCatCounts: number[] = [];\n const schemaClassStarts: number[] = [];\n const schemaClassCounts: number[] = [];\n\n // Deferred class data for cross-reference resolution\n const pendingClasses: PendingClass[] = [];\n\n // ---- PropertyDefTable ----\n expectTag(reader, Tag.PropertyDefTable);\n const defCount = reader.readU32();\n // Each PreParsedDef consumes at least ~30 bytes (mix of u8/u16/u32 fields + string refs).\n // Use a conservative lower bound of 8 bytes to catch wildly oversized counts on malformed blobs.\n reader.validateCount(defCount, 8, \"PropertyDefTable\");\n const preParsedDefs: PreParsedDef[] = new Array(defCount);\n for (let i = 0; i < defCount; i++) {\n preParsedDefs[i] = {\n name: reader.readSRef(),\n kind: reader.readU8(),\n primitiveType: reader.readU16(),\n extType: reader.readSRef(),\n enumRowId: reader.readU32(),\n structClassRowId: reader.readU32(),\n koqRowId: reader.readU32(),\n catRowId: reader.readU32(),\n arrayMinOccurs: readOptionalU32(reader),\n arrayMaxOccurs: readOptionalU32(reader),\n navRelClassRowId: reader.readU32(),\n navDirection: reader.readU8(),\n isReadonly: reader.readU8() !== 0,\n isHidden: reader.readU8() !== 0,\n description: reader.readSRef(),\n };\n }\n\n // ---- SchemaTable ----\n expectTag(reader, Tag.SchemaTable);\n const schemaCount = reader.readU32();\n reader.validateCount(schemaCount, 8, \"SchemaTable\");\n for (let i = 0; i < schemaCount; i++) {\n const name = reader.readSRef();\n const vRead = reader.readU16();\n const vWrite = reader.readU16();\n const vMinor = reader.readU16();\n const alias = reader.readSRef();\n const label = reader.readSRef();\n const description = reader.readSRef();\n const ecInstanceId = reader.readU32();\n const isHidden = reader.readU8() !== 0;\n\n const schemaIdx = builder.addSchema({\n ecInstanceId,\n nameStringIdx: builder.internString(name),\n aliasStringIdx: builder.internString(alias),\n labelStringIdx: builder.internString(label),\n descriptionStringIdx: builder.internString(description),\n versionRead: vRead,\n versionWrite: vWrite,\n versionMinor: vMinor,\n classRangeStart: 0, classCount: 0,\n enumRangeStart: 0, enumCount: 0,\n koqRangeStart: 0, koqCount: 0,\n catRangeStart: 0, catCount: 0,\n isHidden,\n });\n schemaEcIdToIdx.set(ecInstanceId, schemaIdx);\n schemaInfos.push({ name, schemaIdx, classNameToIdx: new Map() });\n schemaEnumStarts.push(0); schemaEnumCounts.push(0);\n schemaKoqStarts.push(0); schemaKoqCounts.push(0);\n schemaCatStarts.push(0); schemaCatCounts.push(0);\n schemaClassStarts.push(0); schemaClassCounts.push(0);\n }\n\n /** Track an item's schema ownership and update range counters. */\n function trackItem(schemaEcId: number, globalIdx: number, starts: number[], counts: number[]): number {\n const schemaIdx = schemaEcIdToIdx.get(schemaEcId);\n if (schemaIdx === undefined)\n throw new Error(`SchemaView blob: unknown schema ecInstanceId ${schemaEcId}`);\n if (counts[schemaIdx] === 0)\n starts[schemaIdx] = globalIdx;\n counts[schemaIdx]++;\n return schemaIdx;\n }\n\n // ---- EnumTable ----\n expectTag(reader, Tag.EnumTable);\n const enumTotalCount = reader.readU32();\n reader.validateCount(enumTotalCount, 8, \"EnumTable\");\n for (let i = 0; i < enumTotalCount; i++) {\n const schemaEcId = reader.readU32();\n const schemaIdx = trackItem(schemaEcId, i, schemaEnumStarts, schemaEnumCounts);\n\n const eName = reader.readSRef();\n const ePrimType = reader.readU8();\n const eIsStrict = reader.readU8() !== 0;\n const eLabel = reader.readSRef();\n const eDesc = reader.readSRef();\n const eValuesJson = reader.readSRef();\n const eEcInstanceId = reader.readU32();\n\n const enumeratorStart = builder.enumeratorCount;\n let enumeratorCount = 0;\n if (eValuesJson) {\n try {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const values = JSON.parse(eValuesJson) as Array<{ Name?: string; IntValue?: number; StringValue?: string; DisplayLabel?: string; Description?: string }>;\n for (const v of values) {\n const value = v.IntValue !== undefined ? v.IntValue : (v.StringValue ?? \"\");\n const name = v.Name ?? (typeof value === \"string\" ? value : `${eName}${value}`);\n builder.addEnumerator({\n nameStringIdx: builder.internString(name),\n labelStringIdx: builder.internString(v.DisplayLabel),\n descriptionStringIdx: builder.internString(v.Description),\n value,\n });\n enumeratorCount++;\n }\n } catch (e) {\n Logger.logWarning(\"ecschema-metadata.SchemaView\", `Malformed EnumValues JSON for enumeration \"${eName}\": ${BentleyError.getErrorMessage(e)}`);\n }\n }\n\n const eIdx = builder.addEnumeration({\n ecInstanceId: eEcInstanceId,\n schemaIdx,\n nameStringIdx: builder.internString(eName),\n labelStringIdx: builder.internString(eLabel),\n descriptionStringIdx: builder.internString(eDesc),\n primitiveType: ePrimType,\n isStrict: eIsStrict,\n enumeratorStart,\n enumeratorCount,\n });\n enumRowIdToIdx.set(eEcInstanceId, eIdx);\n }\n\n // ---- KoQTable ----\n expectTag(reader, Tag.KoQTable);\n const koqTotalCount = reader.readU32();\n reader.validateCount(koqTotalCount, 8, \"KoQTable\");\n for (let i = 0; i < koqTotalCount; i++) {\n const schemaEcId = reader.readU32();\n const schemaIdx = trackItem(schemaEcId, i, schemaKoqStarts, schemaKoqCounts);\n\n const kName = reader.readSRef();\n const kLabel = reader.readSRef();\n const kDesc = reader.readSRef();\n const kPersUnit = reader.readSRef();\n const kRelError = reader.readF64();\n const kPresUnits = reader.readSRef();\n const kEcInstanceId = reader.readU32();\n\n const kIdx = builder.addKoq({\n ecInstanceId: kEcInstanceId,\n schemaIdx,\n nameStringIdx: builder.internString(kName),\n labelStringIdx: builder.internString(kLabel),\n descriptionStringIdx: builder.internString(kDesc),\n persistenceUnitStringIdx: builder.internString(kPersUnit),\n presentationFormatsStringIdx: builder.internString(kPresUnits),\n relativeError: kRelError,\n });\n koqRowIdToIdx.set(kEcInstanceId, kIdx);\n }\n\n // ---- PropCatTable ----\n expectTag(reader, Tag.PropCatTable);\n const catTotalCount = reader.readU32();\n reader.validateCount(catTotalCount, 8, \"PropCatTable\");\n for (let i = 0; i < catTotalCount; i++) {\n const schemaEcId = reader.readU32();\n const schemaIdx = trackItem(schemaEcId, i, schemaCatStarts, schemaCatCounts);\n\n const pcName = reader.readSRef();\n const pcLabel = reader.readSRef();\n const pcDesc = reader.readSRef();\n const pcPriority = reader.readI32();\n const pcEcInstanceId = reader.readU32();\n\n const pcIdx = builder.addPropertyCategory({\n ecInstanceId: pcEcInstanceId,\n schemaIdx,\n nameStringIdx: builder.internString(pcName),\n labelStringIdx: builder.internString(pcLabel),\n descriptionStringIdx: builder.internString(pcDesc),\n priority: pcPriority,\n });\n catRowIdToIdx.set(pcEcInstanceId, pcIdx);\n }\n\n // ---- ClassTable ----\n expectTag(reader, Tag.ClassTable);\n const classTotalCount = reader.readU32();\n reader.validateCount(classTotalCount, 8, \"ClassTable\");\n for (let i = 0; i < classTotalCount; i++) {\n const schemaEcId = reader.readU32();\n const schemaIdx = trackItem(schemaEcId, i, schemaClassStarts, schemaClassCounts);\n const schemaInfo = schemaInfos[schemaIdx];\n\n const cName = reader.readSRef();\n const cType = reader.readU8();\n const cModifier = reader.readU8();\n const cLabel = reader.readSRef();\n const cDesc = reader.readSRef();\n let relStrength: StrengthType = StrengthType.Referencing;\n let relStrengthDir: StrengthDirection = StrengthDirection.Forward;\n if (cType === ClassType.Relationship) {\n relStrength = reader.readU8();\n relStrengthDir = reader.readU8();\n }\n const cEcInstanceId = reader.readU32();\n // Tri-state hidden: 0=undefined (no CA, schema doesn't hide), 1=true (hidden), 2=false (explicitly shown)\n const cHiddenByte = reader.readU8();\n const cIsHidden: boolean | undefined = cHiddenByte === 1 ? true : cHiddenByte === 2 ? false : undefined;\n\n // Base classes (count-prefixed)\n const baseCount = reader.readU16();\n const baseClasses: Array<{ schemaName: string; className: string; ordinal: number }> = [];\n for (let b = 0; b < baseCount; b++) {\n baseClasses.push({\n schemaName: reader.readSRef(),\n className: reader.readSRef(),\n ordinal: reader.readU8(),\n });\n }\n\n // Property refs (count-prefixed)\n const propRefCount = reader.readU16();\n const propRefs: PendingPropRef[] = [];\n for (let p = 0; p < propRefCount; p++) {\n propRefs.push({\n preDefIdx: reader.readU32(),\n labelStringIdx: builder.internString(reader.readSRef()),\n priority: reader.readI32(),\n ecInstanceId: reader.readU32(),\n });\n }\n\n // Constraints (count-prefixed, only for relationships)\n const constraints: PendingConstraint[] = [];\n if (cType === ClassType.Relationship) {\n const constrCount = reader.readU8();\n for (let c = 0; c < constrCount; c++) {\n const rcEnd = reader.readU8();\n const rcMultLower = reader.readU32();\n const rcMultUpper = reader.readU32();\n const rcIsPoly = reader.readU8() !== 0;\n const rcRoleLabel = reader.readSRef();\n const rcAbsSchema = reader.readSRef();\n const rcAbsClass = reader.readSRef();\n\n // Constraint classes (count-prefixed)\n const ccCount = reader.readU8();\n const constraintClasses: Array<{ schemaName: string; className: string }> = [];\n for (let cc = 0; cc < ccCount; cc++) {\n constraintClasses.push({\n schemaName: reader.readSRef(),\n className: reader.readSRef(),\n });\n }\n\n constraints.push({\n relEnd: rcEnd,\n isPolymorphic: rcIsPoly,\n multiplicityLower: rcMultLower,\n multiplicityUpper: rcMultUpper,\n roleLabel: rcRoleLabel,\n abstractSchemaName: rcAbsSchema,\n abstractClassName: rcAbsClass,\n constraintClasses,\n });\n }\n }\n\n const nameStringIdx = builder.internString(cName);\n const classIdx = builder.addClass({\n ecInstanceId: cEcInstanceId,\n schemaIdx,\n nameStringIdx,\n labelStringIdx: builder.internString(cLabel),\n descriptionStringIdx: builder.internString(cDesc),\n type: cType,\n modifier: cModifier,\n baseClassIdx: -1,\n mixinStartIdx: -1,\n mixinCount: 0,\n ownPropStart: 0,\n ownPropCount: 0,\n strength: relStrength,\n strengthDirection: relStrengthDir,\n sourceConstraintIdx: -1,\n targetConstraintIdx: -1,\n isHidden: cIsHidden,\n });\n schemaInfo.classNameToIdx.set(cName.toLowerCase(), classIdx);\n classRowIdToIdx.set(cEcInstanceId, classIdx);\n\n pendingClasses.push({\n schemaIdx,\n classIdx,\n ecInstanceId: cEcInstanceId,\n nameStringIdx,\n labelStringIdx: builder.internString(cLabel),\n descriptionStringIdx: builder.internString(cDesc),\n type: cType,\n modifier: cModifier,\n relStrength,\n relStrengthDir,\n baseClasses,\n propRefs,\n constraints,\n schemaName: schemaInfo.name,\n isHidden: cIsHidden,\n });\n }\n\n // ---- Finalize per-schema item ranges ----\n for (let i = 0; i < schemaCount; i++) {\n builder.updateSchemaRanges(i, {\n classRangeStart: schemaClassStarts[i] ?? 0,\n classCount: schemaClassCounts[i] ?? 0,\n enumRangeStart: schemaEnumStarts[i] ?? 0,\n enumCount: schemaEnumCounts[i] ?? 0,\n koqRangeStart: schemaKoqStarts[i] ?? 0,\n koqCount: schemaKoqCounts[i] ?? 0,\n catRangeStart: schemaCatStarts[i] ?? 0,\n catCount: schemaCatCounts[i] ?? 0,\n });\n }\n\n // Build a global name resolver: \"SchemaName:ClassName\" -> classIdx\n const classResolver = new Map<string, number>();\n for (const s of schemaInfos) {\n for (const [lowerName, idx] of s.classNameToIdx)\n classResolver.set(`${s.name.toLowerCase()}:${lowerName}`, idx);\n }\n\n // Resolve pre-parsed defs to PropertyDef objects. Maps preParsedDef index -> builder defIdx.\n const danglingRefs: string[] = [];\n const resolvedDefMap = new Map<number, number>();\n const brokenDefs = new Set<number>();\n\n for (let i = 0; i < preParsedDefs.length; i++) {\n const prDef = preParsedDefs[i];\n\n let structClassIdx = -1;\n if (prDef.structClassRowId !== 0) {\n structClassIdx = classRowIdToIdx.get(prDef.structClassRowId) ?? -1;\n if (structClassIdx === -1) {\n brokenDefs.add(i);\n danglingRefs.push(`Dropped properties with struct class rowId ${prDef.structClassRowId}`);\n continue;\n }\n }\n\n let navRelClassIdx = -1;\n if (prDef.navRelClassRowId !== 0) {\n navRelClassIdx = classRowIdToIdx.get(prDef.navRelClassRowId) ?? -1;\n if (navRelClassIdx === -1) {\n brokenDefs.add(i);\n danglingRefs.push(`Dropped properties with nav relationship rowId ${prDef.navRelClassRowId}`);\n continue;\n }\n }\n\n let enumIdx = -1;\n if (prDef.enumRowId !== 0) {\n enumIdx = enumRowIdToIdx.get(prDef.enumRowId) ?? -1;\n if (enumIdx === -1)\n danglingRefs.push(`Unresolved enum rowId ${prDef.enumRowId}`);\n }\n\n let koqIdx = -1;\n if (prDef.koqRowId !== 0)\n koqIdx = koqRowIdToIdx.get(prDef.koqRowId) ?? -1;\n\n let categoryIdx = -1;\n if (prDef.catRowId !== 0)\n categoryIdx = catRowIdToIdx.get(prDef.catRowId) ?? -1;\n\n const def: PropertyDef = {\n nameStringIdx: builder.internString(prDef.name),\n descriptionStringIdx: builder.internString(prDef.description),\n kind: prDef.kind,\n primitiveType: prDef.primitiveType,\n extTypeStringIdx: builder.internString(prDef.extType),\n enumIdx,\n koqIdx,\n structClassIdx,\n navRelClassIdx,\n navDirection: prDef.navDirection,\n categoryIdx,\n isReadOnly: prDef.isReadonly,\n isHidden: prDef.isHidden,\n arrayMinOccurs: prDef.arrayMinOccurs,\n arrayMaxOccurs: prDef.arrayMaxOccurs,\n };\n\n resolvedDefMap.set(i, builder.addPropertyDef(def));\n }\n\n // Resolve cross-references and finalize classes\n for (const pc of pendingClasses) {\n pc.baseClasses.sort((a, b) => a.ordinal - b.ordinal);\n const classFullName = `${pc.schemaName}:${builder.getString(pc.nameStringIdx)}`;\n\n let baseClassIdx = -1;\n const mixinStartIdx = pc.baseClasses.length > 1 ? builder.classMixinCount : -1;\n let mixinCount = 0;\n\n for (const bc of pc.baseClasses) {\n const bcKey = `${bc.schemaName.toLowerCase()}:${bc.className.toLowerCase()}`;\n const bcIdx = classResolver.get(bcKey) ?? -1;\n if (bc.ordinal === 0) {\n if (bcIdx === -1 && bc.schemaName)\n danglingRefs.push(`${classFullName} -> base class ${bc.schemaName}:${bc.className}`);\n baseClassIdx = bcIdx;\n } else {\n if (bcIdx === -1) {\n danglingRefs.push(`${classFullName} -> mixin ${bc.schemaName}:${bc.className}`);\n continue;\n }\n builder.addClassMixin(bcIdx);\n mixinCount++;\n }\n }\n\n const ownPropStart = builder.propertyRefCount;\n for (const pr of pc.propRefs) {\n if (brokenDefs.has(pr.preDefIdx))\n continue;\n const defIdx = resolvedDefMap.get(pr.preDefIdx);\n if (defIdx === undefined)\n continue;\n builder.addPropertyRef({\n ecInstanceId: pr.ecInstanceId,\n defIdx,\n labelStringIdx: pr.labelStringIdx,\n priority: pr.priority,\n });\n }\n\n let sourceConstraintIdx = -1;\n let targetConstraintIdx = -1;\n for (const con of pc.constraints) {\n const absKey = con.abstractSchemaName && con.abstractClassName\n ? `${con.abstractSchemaName.toLowerCase()}:${con.abstractClassName.toLowerCase()}`\n : \"\";\n const absClassIdx = absKey ? (classResolver.get(absKey) ?? -1) : -1;\n if (absClassIdx === -1 && absKey)\n danglingRefs.push(`${classFullName} constraint -> abstract ${con.abstractSchemaName}:${con.abstractClassName}`);\n\n const classRefStart = builder.constraintClassRefCount;\n let classRefCount = 0;\n for (const cc of con.constraintClasses) {\n const ccKey = `${cc.schemaName.toLowerCase()}:${cc.className.toLowerCase()}`;\n const ccIdx = classResolver.get(ccKey) ?? -1;\n if (ccIdx === -1) {\n danglingRefs.push(`${classFullName} constraint -> class ${cc.schemaName}:${cc.className}`);\n continue;\n }\n builder.addConstraintClassRef(ccIdx);\n classRefCount++;\n }\n\n const constraintIdx = builder.addRelConstraint({\n abstractConstraintIdx: absClassIdx,\n polymorphic: con.isPolymorphic,\n multiplicityLower: con.multiplicityLower,\n multiplicityUpper: con.multiplicityUpper,\n roleLabelStringIdx: builder.internString(con.roleLabel),\n classRefStart,\n classRefCount,\n });\n\n if (con.relEnd === 0)\n sourceConstraintIdx = constraintIdx;\n else\n targetConstraintIdx = constraintIdx;\n }\n\n const updatedClass: ClassData = {\n ecInstanceId: pc.ecInstanceId,\n schemaIdx: pc.schemaIdx,\n nameStringIdx: pc.nameStringIdx,\n labelStringIdx: pc.labelStringIdx,\n descriptionStringIdx: pc.descriptionStringIdx,\n type: pc.type,\n modifier: pc.modifier,\n baseClassIdx,\n mixinStartIdx,\n mixinCount,\n ownPropStart,\n ownPropCount: builder.propertyRefCount - ownPropStart,\n strength: pc.relStrength,\n strengthDirection: pc.relStrengthDir,\n sourceConstraintIdx,\n targetConstraintIdx,\n isHidden: pc.isHidden,\n };\n builder.updateClass(pc.classIdx, updatedClass);\n }\n\n if (danglingRefs.length > 0) {\n const cap = 20;\n const lines = danglingRefs.length <= cap ? danglingRefs : [...danglingRefs.slice(0, cap), `... and ${danglingRefs.length - cap} more`];\n Logger.logWarning(\"ecschema-metadata.SchemaView\", `${danglingRefs.length} unresolved cross-reference(s) in schema view blob (likely from excluded schemas):\\n ${lines.join(\"\\n \")}`);\n }\n\n return builder.build(schemaToken);\n}\n\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaViewInterfaces.d.ts","sourceRoot":"","sources":["../../src/SchemaViewInterfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaViewInterfaces.js","sourceRoot":"","sources":["../../src/SchemaViewInterfaces.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH;;;;;GAKG;AACU,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAEzC;;GAEG;AACH,IAAY,SASX;AATD,WAAY,SAAS;IACnB,6CAAU,CAAA;IACV,yDAAgB,CAAA;IAChB,6CAAU,CAAA;IACV,+DAAmB,CAAA;IACnB,yFAAyF;IACzF,2CAAS,CAAA;IACT,uDAAuD;IACvD,yCAAQ,CAAA;AACV,CAAC,EATW,SAAS,yBAAT,SAAS,QASpB;AAED;;GAEG;AACH,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,iDAAQ,CAAA;IACR,yDAAY,CAAA;IACZ,qDAAU,CAAA;AACZ,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED;;GAEG;AACH,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,yDAAa,CAAA;IACb,mDAAU,CAAA;IACV,mEAAkB,CAAA;IAClB,6DAAe,CAAA;IACf,2DAAc,CAAA;AAChB,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB;AAED;;GAEG;AACH,IAAY,uBAYX;AAZD,WAAY,uBAAuB;IACjC,uFAAoB,CAAA;IACpB,2EAAc,CAAA;IACd,6EAAe,CAAA;IACf,+EAAgB,CAAA;IAChB,4EAAc,CAAA;IACd,8EAAe,CAAA;IACf,wEAAY,CAAA;IACZ,8EAAe,CAAA;IACf,8EAAe,CAAA;IACf,4EAAc,CAAA;IACd,kFAAiB,CAAA;AACnB,CAAC,EAZW,uBAAuB,uCAAvB,uBAAuB,QAYlC","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 Schema\n */\n\n/** The binary format version that this TS reader supports.\n * The C++ writer in imodel-native must produce this version (or negotiate down to it).\n * Frontend callers should always request this version explicitly via `PRAGMA schema_view(N)`.\n * Backend callers may omit it since native and backend are bundled together.\n * @beta\n */\nexport const schemaViewFormatVersion = 1;\n\n/** Matches ec_Class.Type values in ECDb.\n * @beta\n */\nexport enum ClassType {\n Entity = 0,\n Relationship = 1,\n Struct = 2,\n CustomAttribute = 3,\n /** Not stored in ec_Class.Type - synthesized from IsMixin CA during cache population. */\n Mixin = 4,\n /** Synthesized from the QueryView custom attribute. */\n View = 5,\n}\n\n/** Matches ec_Class.Modifier values.\n * @beta\n */\nexport enum ClassModifier {\n None = 0,\n Abstract = 1,\n Sealed = 2,\n}\n\n/** Matches ec_Property.Kind values.\n * @beta\n */\nexport enum PropertyKind {\n Primitive = 0,\n Struct = 1,\n PrimitiveArray = 2,\n StructArray = 3,\n Navigation = 4,\n}\n\n/** Matches ec_ PrimitiveType values.\n * @beta\n */\nexport enum SchemaViewPrimitiveType {\n Uninitialized = 0x00,\n Binary = 0x101,\n Boolean = 0x201,\n DateTime = 0x301,\n Double = 0x401,\n Integer = 0x501,\n Long = 0x601,\n Point2d = 0x701,\n Point3d = 0x801,\n String = 0x901,\n IGeometry = 0xa01,\n}\n\nimport { StrengthDirection, StrengthType } from \"./ECObjects\";\n\n/** Internal storage for a schema. Schemas own contiguous ranges of classes, enums, KoQs, and categories.\n * @internal\n */\nexport interface SchemaData {\n /** Row ID from ec_Schema - use with ECDbMeta queries, e.g. `SELECT * FROM meta.ECSchemaDef WHERE ECInstanceId = ?`. */\n readonly ecInstanceId: number;\n readonly nameStringIdx: number;\n readonly aliasStringIdx: number;\n readonly labelStringIdx: number;\n readonly descriptionStringIdx: number;\n readonly versionRead: number;\n readonly versionWrite: number;\n readonly versionMinor: number;\n readonly classRangeStart: number;\n readonly classCount: number;\n readonly enumRangeStart: number;\n readonly enumCount: number;\n readonly koqRangeStart: number;\n readonly koqCount: number;\n readonly catRangeStart: number;\n readonly catCount: number;\n readonly isHidden: boolean;\n}\n\n/** Internal storage for a class.\n * @internal\n */\nexport interface ClassData {\n /** Row ID from ec_Class - use with ECDbMeta queries, e.g. `SELECT * FROM meta.ECClassDef WHERE ECInstanceId = ?`. */\n readonly ecInstanceId: number;\n readonly schemaIdx: number;\n readonly nameStringIdx: number;\n readonly labelStringIdx: number;\n readonly descriptionStringIdx: number;\n readonly type: ClassType;\n readonly modifier: ClassModifier;\n readonly baseClassIdx: number;\n readonly mixinStartIdx: number;\n readonly mixinCount: number;\n readonly ownPropStart: number;\n readonly ownPropCount: number;\n readonly strength: StrengthType;\n readonly strengthDirection: StrengthDirection;\n readonly sourceConstraintIdx: number;\n readonly targetConstraintIdx: number;\n /** Tri-state hidden status from the `HiddenClass` / `HiddenSchema` custom attributes.\n *\n * This is the *direct* status of this class. It does NOT propagate through class\n * inheritance. Use `SchemaView.Class.isEffectivelyHidden` for hierarchy-aware checks.\n *\n * - `true`: `HiddenClass(Show!=true)` is applied, OR the owning schema has\n * `HiddenSchema(ShowClasses!=true)` and this class does not override with `HiddenClass(Show=true)`.\n * - `false`: `HiddenClass(Show=true)` is explicitly applied. This overrides schema-level\n * hiding and breaks the inheritance chain for `isEffectivelyHidden` on derived classes.\n * - `undefined`: No `HiddenClass` CA and the schema does not hide its classes. Neutral -\n * `isEffectivelyHidden` will look up the base class chain to decide.\n *\n * Binary encoding: 0 = undefined, 1 = true, 2 = false.\n */\n readonly isHidden: boolean | undefined;\n}\n\n/** Shared, deduplicated property definition. Many properties may reference the same def.\n * The definition holds the structural shape of a property - name, kind, type, cross-references.\n * Per-class overrides (label, priority) live in `PropertyRef`, not here, so that properties\n * with identical shape but different labels still share a single definition.\n * @internal\n */\nexport interface PropertyDef {\n readonly nameStringIdx: number;\n readonly descriptionStringIdx: number;\n readonly kind: PropertyKind;\n readonly primitiveType: SchemaViewPrimitiveType;\n readonly extTypeStringIdx: number;\n readonly enumIdx: number;\n readonly koqIdx: number;\n readonly structClassIdx: number;\n readonly navRelClassIdx: number;\n readonly navDirection: StrengthDirection;\n readonly categoryIdx: number;\n readonly isReadOnly: boolean;\n readonly isHidden: boolean;\n readonly arrayMinOccurs: number | undefined;\n readonly arrayMaxOccurs: number | undefined;\n}\n\n/** A reference from a specific class to a shared property definition.\n * Label and priority are per-reference (not per-definition) because EC allows class overrides\n * of these attributes. A property displayed in ClassA may have a different label than in ClassB\n * even though the underlying definition (name, type, etc.) is identical.\n *\n * `ecInstanceId` is the ec_Property.Id row ID, stored here (not on PropertyDef) because each\n * class-property pair has a unique row even when the structural definition is deduplicated.\n * @internal\n */\nexport interface PropertyRef {\n /** Row ID from ec_Property - use with ECDbMeta queries, e.g. `SELECT * FROM meta.ECPropertyDef WHERE ECInstanceId = ?`. */\n readonly ecInstanceId: number;\n readonly defIdx: number;\n readonly labelStringIdx: number;\n readonly priority: number;\n}\n\n/** Internal storage for a relationship constraint.\n * @internal\n */\nexport interface RelConstraintData {\n readonly abstractConstraintIdx: number;\n readonly polymorphic: boolean;\n readonly multiplicityLower: number;\n readonly multiplicityUpper: number;\n readonly roleLabelStringIdx: number;\n readonly classRefStart: number;\n readonly classRefCount: number;\n}\n\n/** Internal storage for an enumeration.\n * @internal\n */\nexport interface EnumerationData {\n /** Row ID from ec_Enumeration - use with ECDbMeta queries, e.g. `SELECT * FROM meta.ECEnumerationDef WHERE ECInstanceId = ?`. */\n readonly ecInstanceId: number;\n readonly schemaIdx: number;\n readonly nameStringIdx: number;\n readonly labelStringIdx: number;\n readonly descriptionStringIdx: number;\n readonly primitiveType: SchemaViewPrimitiveType;\n readonly isStrict: boolean;\n readonly enumeratorStart: number;\n readonly enumeratorCount: number;\n}\n\n/** Internal storage for an enumerator.\n * @internal\n */\nexport interface EnumeratorData {\n readonly nameStringIdx: number;\n readonly labelStringIdx: number;\n readonly descriptionStringIdx: number;\n readonly value: number | string;\n}\n\n/** Internal storage for a KindOfQuantity.\n * @internal\n */\nexport interface KoqData {\n /** Row ID from ec_KindOfQuantity - use with ECDbMeta queries, e.g. `SELECT * FROM meta.ECKindOfQuantityDef WHERE ECInstanceId = ?`. */\n readonly ecInstanceId: number;\n readonly schemaIdx: number;\n readonly nameStringIdx: number;\n readonly labelStringIdx: number;\n readonly descriptionStringIdx: number;\n readonly persistenceUnitStringIdx: number;\n readonly presentationFormatsStringIdx: number;\n readonly relativeError: number;\n}\n\n/** Internal storage for a PropertyCategory.\n * @internal\n */\nexport interface PropCategoryData {\n /** Row ID from ec_PropertyCategory - use with ECDbMeta queries, e.g. `SELECT * FROM meta.ECPropertyCategoryDef WHERE ECInstanceId = ?`. */\n readonly ecInstanceId: number;\n readonly schemaIdx: number;\n readonly nameStringIdx: number;\n readonly labelStringIdx: number;\n readonly descriptionStringIdx: number;\n readonly priority: number;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaView.d.ts","sourceRoot":"","sources":["../../src/SchemaView.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaView.js","sourceRoot":"","sources":["../../src/SchemaView.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 Schema\n */\n\nimport { type ClassData, ClassModifier, ClassType, type EnumerationData, type EnumeratorData, type KoqData, type PropCategoryData, type PropertyDef, PropertyKind, type PropertyRef, type RelConstraintData, type SchemaData, SchemaViewPrimitiveType } from \"./SchemaViewInterfaces\";\nimport { parseSchemaViewBlob } from \"./SchemaViewBinaryReader\";\nimport { StrengthDirection, StrengthType } from \"./ECObjects\";\n\n// Module-local symbol used as the storage key on SchemaView instances. Mirrors the pattern in\n// core-backend/src/internal/Symbols.ts (e.g. `_nativeDb` on IModelDb): the data is reachable\n// only by code in this module, since the symbol is not exported and not registered globally.\n// The flyweight view classes (SchemaView.Schema, SchemaView.Class, etc.) live in the same file\n// and access the storage through this symbol.\nconst _storage = Symbol(\"SchemaView.storage\");\n\n/** Internal runtime storage attached to a SchemaView instance. Carries the immutable data\n * tables built by SchemaViewBuilder plus two mutable caches populated lazily at runtime.\n * @internal\n */\ninterface SchemaViewStorage extends SchemaViewData {\n readonly transitiveBaseCache: Map<number, ReadonlySet<number>>;\n derivedClassMap: ReadonlyMap<number, readonly number[]> | undefined;\n}\n\n/** A property reference paired with the index of the class that declared it. Used for\n * property inheritance resolution - the classIdx tracks where each property originates\n * (base class, mixin, or own) so consumers can discover the declaring class.\n * @internal\n */\nexport interface ResolvedPropertyRef {\n readonly ref: PropertyRef;\n readonly classIdx: number;\n}\n\n/** Internal data bag passed from the builder to the context constructor.\n * @internal\n */\nexport interface SchemaViewData {\n readonly strings: readonly string[];\n readonly lowerStrings: readonly string[];\n readonly schemas: readonly SchemaData[];\n readonly classes: readonly ClassData[];\n readonly classMixins: readonly number[];\n readonly propDefs: readonly PropertyDef[];\n readonly propertyRefs: readonly PropertyRef[];\n readonly relConstraints: readonly RelConstraintData[];\n readonly constraintClassRefs: readonly number[];\n readonly enumerations: readonly EnumerationData[];\n readonly enumerators: readonly EnumeratorData[];\n readonly koqs: readonly KoqData[];\n readonly propCategories: readonly PropCategoryData[];\n readonly schemaByName: ReadonlyMap<string, number>;\n readonly schemaByAlias: ReadonlyMap<string, number>;\n readonly classByName: ReadonlyMap<number, ReadonlyMap<string, number>>;\n readonly enumByName: ReadonlyMap<number, ReadonlyMap<string, number>>;\n readonly koqByName: ReadonlyMap<number, ReadonlyMap<string, number>>;\n readonly catByName: ReadonlyMap<number, ReadonlyMap<string, number>>;\n}\n\n/** Read-only schema metadata view. Optimized for fast lookup and low memory usage.\n *\n * All data is stored in flat arrays. View objects (`SchemaView.Schema`, `SchemaView.Class`, etc.) are\n * stateless wrappers that hold a reference to this view plus an index. They allocate nothing\n * and cache nothing.\n *\n * The view is immutable after construction. Build it via `SchemaViewBuilder` or parse\n * from a binary blob via `fromBinary`.\n * @beta\n */\nexport class SchemaView {\n /** @internal */\n public readonly [_storage]: SchemaViewStorage;\n\n private _schemaToken: string;\n private _outdated = false;\n\n /** @internal */\n constructor(data: SchemaViewData, schemaToken?: string) {\n this[_storage] = {\n ...data,\n transitiveBaseCache: new Map<number, ReadonlySet<number>>(),\n derivedClassMap: undefined,\n };\n this._schemaToken = schemaToken ?? \"\";\n }\n\n /** SHA3-256 content hash of the ec_ schema tables at the time this view was built.\n * Empty string if not set (e.g., when built from a builder without a token).\n * @beta\n */\n public get schemaToken(): string { return this._schemaToken; }\n\n /** True if the host (`IModelDb` / `IModelConnection`) has replaced this view with a newer one.\n * The view remains fully functional - it returns stale data rather than throwing.\n * Consumers who stored a reference can check this flag for diagnostics.\n * @beta\n */\n public get isOutdated(): boolean { return this._outdated; }\n\n /** Mark this view as outdated. Called by the host when a newer view replaces it.\n * @internal\n */\n public markOutdated(): void { this._outdated = true; }\n\n /** Number of schemas in the view. */\n public get schemaCount(): number { return this[_storage].schemas.length; }\n\n /** Number of classes across all schemas. */\n public get classCount(): number { return this[_storage].classes.length; }\n\n /** Get a schema by name (case-insensitive). */\n public getSchema(name: string): SchemaView.Schema | undefined {\n const idx = this[_storage].schemaByName.get(name.toLowerCase());\n return idx !== undefined ? new SchemaView.Schema(this, idx) : undefined;\n }\n\n /** Get a schema by alias (case-insensitive). */\n public getSchemaByAlias(alias: string): SchemaView.Schema | undefined {\n const idx = this[_storage].schemaByAlias.get(alias.toLowerCase());\n return idx !== undefined ? new SchemaView.Schema(this, idx) : undefined;\n }\n\n /** Iterate all schemas. */\n public *getSchemas(): IterableIterator<SchemaView.Schema> {\n for (let i = 0; i < this[_storage].schemas.length; i++)\n yield new SchemaView.Schema(this, i);\n }\n\n /** Find a class by qualified name (\"SchemaName:ClassName\" or \"SchemaName.ClassName\").\n * The namespace part matches schema name first, then alias. Case-insensitive.\n */\n public findClass(qualifiedName: string): SchemaView.Class | undefined {\n const idx = this.resolveClassIdx(qualifiedName);\n return idx !== -1 ? SchemaView.createClass(this, idx) : undefined;\n }\n\n /** Find an enumeration by qualified name (\"SchemaName:EnumName\" or \"SchemaName.EnumName\").\n * The namespace part matches schema name first, then alias. Case-insensitive.\n */\n public findEnumeration(qualifiedName: string): SchemaView.Enumeration | undefined {\n const idx = this._resolveSchemaItemIdx(qualifiedName, this[_storage].enumByName);\n return idx !== undefined ? new SchemaView.Enumeration(this, idx) : undefined;\n }\n\n /** Find a KindOfQuantity by qualified name (\"SchemaName:KoqName\" or \"SchemaName.KoqName\").\n * The namespace part matches schema name first, then alias. Case-insensitive.\n */\n public findKindOfQuantity(qualifiedName: string): SchemaView.KindOfQuantity | undefined {\n const idx = this._resolveSchemaItemIdx(qualifiedName, this[_storage].koqByName);\n return idx !== undefined ? new SchemaView.KindOfQuantity(this, idx) : undefined;\n }\n\n /** Find a PropertyCategory by qualified name (\"SchemaName:CategoryName\" or \"SchemaName.CategoryName\").\n * The namespace part matches schema name first, then alias. Case-insensitive.\n */\n public findPropertyCategory(qualifiedName: string): SchemaView.PropertyCategory | undefined {\n const idx = this._resolveSchemaItemIdx(qualifiedName, this[_storage].catByName);\n return idx !== undefined ? new SchemaView.PropertyCategory(this, idx) : undefined;\n }\n\n /** Parse a binary blob into a SchemaView. Synchronous.\n * @param blob - The binary blob from `PRAGMA schema_view`.\n * @param schemaToken - Optional SHA3-256 content hash for cache invalidation.\n * @beta\n */\n public static fromBinary(blob: Uint8Array, schemaToken?: string): SchemaView {\n return parseSchemaViewBlob(blob, schemaToken);\n }\n\n /** Build from a pre-populated builder (used by the binary parser).\n * @internal\n */\n public static fromBuilder(builder: SchemaViewBuilder, schemaToken?: string): SchemaView {\n return builder.build(schemaToken);\n }\n\n // --- Internal helpers used by view objects ---\n\n /** Resolve a qualified \"SchemaName:ItemName\" (or dot-separated) to an index using the given\n * per-schema name map. Returns undefined if not found. @internal */\n private _resolveSchemaItemIdx(qualifiedName: string, itemByName: ReadonlyMap<number, ReadonlyMap<string, number>>): number | undefined {\n const sep = qualifiedName.indexOf(\":\");\n const dotSep = sep === -1 ? qualifiedName.indexOf(\".\") : -1;\n const splitAt = sep !== -1 ? sep : dotSep;\n if (splitAt === -1) return undefined;\n\n const ns = qualifiedName.substring(0, splitAt).toLowerCase();\n const itemName = qualifiedName.substring(splitAt + 1).toLowerCase();\n\n let schemaIdx = this[_storage].schemaByName.get(ns);\n if (schemaIdx === undefined)\n schemaIdx = this[_storage].schemaByAlias.get(ns);\n if (schemaIdx === undefined) return undefined;\n\n return itemByName.get(schemaIdx)?.get(itemName);\n }\n\n /** @internal */\n public resolveClassIdx(qualifiedName: string): number {\n const sep = qualifiedName.indexOf(\":\");\n const dotSep = sep === -1 ? qualifiedName.indexOf(\".\") : -1;\n const splitAt = sep !== -1 ? sep : dotSep;\n if (splitAt === -1) return -1;\n\n const ns = qualifiedName.substring(0, splitAt).toLowerCase();\n const cn = qualifiedName.substring(splitAt + 1).toLowerCase();\n\n let schemaIdx = this[_storage].schemaByName.get(ns);\n if (schemaIdx === undefined)\n schemaIdx = this[_storage].schemaByAlias.get(ns);\n if (schemaIdx === undefined) return -1;\n\n const classMap = this[_storage].classByName.get(schemaIdx);\n const classIdx = classMap?.get(cn);\n return classIdx ?? -1;\n }\n\n /** @internal */\n public getTransitiveBases(classIdx: number): ReadonlySet<number> {\n const cached = this[_storage].transitiveBaseCache.get(classIdx);\n if (cached !== undefined) return cached;\n\n const result = new Set<number>();\n this._buildTransitiveBases(classIdx, result);\n this[_storage].transitiveBaseCache.set(classIdx, result);\n return result;\n }\n\n private _buildTransitiveBases(classIdx: number, result: Set<number>): void {\n const cls = this[_storage].classes[classIdx];\n if (cls === undefined) return; // safety: dangling index from excluded schema\n\n if (cls.baseClassIdx !== -1 && !result.has(cls.baseClassIdx)) {\n result.add(cls.baseClassIdx);\n this._buildTransitiveBases(cls.baseClassIdx, result);\n }\n\n for (let i = 0; i < cls.mixinCount; i++) {\n const mixinIdx = this[_storage].classMixins[cls.mixinStartIdx + i];\n if (mixinIdx === -1 || mixinIdx === undefined) continue; // safety: dangling mixin ref\n if (!result.has(mixinIdx)) {\n result.add(mixinIdx);\n this._buildTransitiveBases(mixinIdx, result);\n }\n }\n }\n\n /** @internal */\n public resolveAllProperties(classIdx: number): readonly ResolvedPropertyRef[] {\n const cls = this[_storage].classes[classIdx];\n\n if (cls.type === ClassType.View) {\n // Views don't participate in property inheritance - own properties only\n const result: ResolvedPropertyRef[] = [];\n for (let i = 0; i < cls.ownPropCount; i++) {\n const ref = this[_storage].propertyRefs[cls.ownPropStart + i];\n result.push({ ref, classIdx: -1 });\n }\n return result;\n }\n\n const merged = new Map<string, ResolvedPropertyRef>();\n this._collectProperties(classIdx, merged);\n return Array.from(merged.values());\n }\n\n private _collectProperties(\n classIdx: number,\n merged: Map<string, ResolvedPropertyRef>,\n ): void {\n const cls = this[_storage].classes[classIdx];\n if (cls === undefined) return; // safety: dangling index from excluded schema\n\n // 1. Base class (recursive, depth-first)\n if (cls.baseClassIdx !== -1)\n this._collectProperties(cls.baseClassIdx, merged);\n\n // 2. Mixins in declaration order\n for (let i = 0; i < cls.mixinCount; i++) {\n const mixinIdx = this[_storage].classMixins[cls.mixinStartIdx + i];\n if (mixinIdx === -1 || mixinIdx === undefined) continue; // safety: dangling mixin ref\n this._collectMixinProperties(mixinIdx, merged);\n }\n\n // 3. Own properties - always override\n for (let i = 0; i < cls.ownPropCount; i++) {\n const ref = this[_storage].propertyRefs[cls.ownPropStart + i];\n const nameKey = this[_storage].lowerStrings[this[_storage].propDefs[ref.defIdx].nameStringIdx];\n merged.set(nameKey, { ref, classIdx });\n }\n }\n\n private _collectMixinProperties(\n mixinIdx: number,\n merged: Map<string, ResolvedPropertyRef>,\n ): void {\n const mixin = this[_storage].classes[mixinIdx];\n if (mixin === undefined) return; // safety: dangling index from excluded schema\n\n // Walk mixin's own base chain (mixins can extend other mixins)\n if (mixin.baseClassIdx !== -1)\n this._collectMixinProperties(mixin.baseClassIdx, merged);\n\n // Mixin's own mixins\n for (let i = 0; i < mixin.mixinCount; i++) {\n const subMixinIdx = this[_storage].classMixins[mixin.mixinStartIdx + i];\n if (subMixinIdx === -1 || subMixinIdx === undefined) continue; // safety: dangling mixin ref\n this._collectMixinProperties(subMixinIdx, merged);\n }\n\n // Mixin's own properties - only set if not already present (first mixin wins)\n for (let i = 0; i < mixin.ownPropCount; i++) {\n const ref = this[_storage].propertyRefs[mixin.ownPropStart + i];\n const nameKey = this[_storage].lowerStrings[this[_storage].propDefs[ref.defIdx].nameStringIdx];\n if (!merged.has(nameKey))\n merged.set(nameKey, { ref, classIdx: mixinIdx });\n }\n }\n\n /** @internal */\n public buildDerivedClassMap(): ReadonlyMap<number, readonly number[]> {\n if (this[_storage].derivedClassMap !== undefined) return this[_storage].derivedClassMap;\n\n const map = new Map<number, number[]>();\n for (let i = 0; i < this[_storage].classes.length; i++) {\n const baseIdx = this[_storage].classes[i].baseClassIdx;\n if (baseIdx !== -1) {\n let arr = map.get(baseIdx);\n if (arr === undefined) {\n arr = [];\n map.set(baseIdx, arr);\n }\n arr.push(i);\n }\n }\n this[_storage].derivedClassMap = map;\n return map;\n }\n}\n\n// =====================================================================================\n// SchemaView namespace - flyweight view types\n// =====================================================================================\n\n\n/** @beta */\nexport namespace SchemaView {\n\n /** Lightweight view over a schema in a `SchemaView`. Holds only a view reference and\n * an index - no data duplication, no mutable state.\n * @beta\n */\n export class Schema {\n /** @internal */\n constructor(\n private readonly _ctx: SchemaView,\n /** @internal */ public readonly idx: number,\n ) { }\n\n private get _data() { return this._ctx[_storage].schemas[this.idx]; }\n\n /** Row ID from ec_Schema. Matches `ECInstanceId` in ECDbMeta views, e.g.\n * `SELECT * FROM meta.ECSchemaDef WHERE ECInstanceId = ?`.\n *\n * This is not an array index or internal handle - it is the database row ID from the ec_Schema\n * table, carried through the binary blob so consumers can fall back to ECSQL meta-queries for\n * data not included in the schema view (custom attributes, schema references, etc.).\n */\n public get ecInstanceId(): number { return this._data.ecInstanceId; }\n public get name(): string { return this._ctx[_storage].strings[this._data.nameStringIdx]; }\n public get alias(): string { return this._ctx[_storage].strings[this._data.aliasStringIdx]; }\n public get label(): string {\n const sid = this._data.labelStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;\n }\n public get description(): string {\n const sid = this._data.descriptionStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n public get readVersion(): number { return this._data.versionRead; }\n public get writeVersion(): number { return this._data.versionWrite; }\n public get minorVersion(): number { return this._data.versionMinor; }\n\n /** Reflects the `HiddenSchema` custom attribute from `CoreCustomAttributes`.\n * Schemas marked hidden are typically excluded from UI display but remain accessible programmatically. */\n public get isHidden(): boolean { return this._data.isHidden; }\n\n /** \"SchemaName.RR.WW.mm\" - dot-separated, matching the EC schema versioning convention. */\n public get fullName(): string {\n const d = this._data;\n return `${this._ctx[_storage].strings[d.nameStringIdx]}.${String(d.versionRead).padStart(2, \"0\")}.${String(d.versionWrite).padStart(2, \"0\")}.${String(d.versionMinor).padStart(2, \"0\")}`;\n }\n\n /** Find a class by name within this schema (case-insensitive). */\n public getClass(name: string): Class | undefined {\n const classMap = this._ctx[_storage].classByName.get(this.idx);\n const classIdx = classMap?.get(name.toLowerCase());\n return classIdx !== undefined ? createClass(this._ctx, classIdx) : undefined;\n }\n\n /** Iterate classes in this schema. Pass a `ClassType` to filter to a single kind\n * (e.g. `getClasses(ClassType.View)`). Omit the argument to iterate every class\n * regardless of type.\n */\n public *getClasses(filter?: ClassType): IterableIterator<Class> {\n const d = this._data;\n const classes = this._ctx[_storage].classes;\n for (let i = d.classRangeStart; i < d.classRangeStart + d.classCount; i++) {\n if (filter === undefined || classes[i].type === filter)\n yield createClass(this._ctx, i);\n }\n }\n\n /** Find an enumeration by name within this schema (case-insensitive). */\n public getEnumeration(name: string): Enumeration | undefined {\n const map = this._ctx[_storage].enumByName.get(this.idx);\n const idx = map?.get(name.toLowerCase());\n return idx !== undefined ? new Enumeration(this._ctx, idx) : undefined;\n }\n\n /** Find a KindOfQuantity by name within this schema (case-insensitive). */\n public getKindOfQuantity(name: string): KindOfQuantity | undefined {\n const map = this._ctx[_storage].koqByName.get(this.idx);\n const idx = map?.get(name.toLowerCase());\n return idx !== undefined ? new KindOfQuantity(this._ctx, idx) : undefined;\n }\n\n /** Find a PropertyCategory by name within this schema (case-insensitive). */\n public getPropertyCategory(name: string): PropertyCategory | undefined {\n const map = this._ctx[_storage].catByName.get(this.idx);\n const idx = map?.get(name.toLowerCase());\n return idx !== undefined ? new PropertyCategory(this._ctx, idx) : undefined;\n }\n\n /** Iterate all enumerations in this schema. */\n public *getEnumerations(): IterableIterator<Enumeration> {\n const d = this._data;\n for (let i = d.enumRangeStart; i < d.enumRangeStart + d.enumCount; i++)\n yield new Enumeration(this._ctx, i);\n }\n\n /** Iterate all KindOfQuantity items in this schema. */\n public *getKindOfQuantities(): IterableIterator<KindOfQuantity> {\n const d = this._data;\n for (let i = d.koqRangeStart; i < d.koqRangeStart + d.koqCount; i++)\n yield new KindOfQuantity(this._ctx, i);\n }\n\n /** Iterate all PropertyCategory items in this schema. */\n public *getPropertyCategories(): IterableIterator<PropertyCategory> {\n const d = this._data;\n for (let i = d.catRangeStart; i < d.catRangeStart + d.catCount; i++)\n yield new PropertyCategory(this._ctx, i);\n }\n }\n\n /** Lightweight view over a class in a `SchemaView`. For relationship-specific\n * fields (strength, direction, source/target constraints), narrow via `isRelationship()`\n * or `assertRelationship()` to get a `SchemaView.RelationshipClass`.\n * @beta\n */\n export class Class {\n /** @internal */\n constructor(\n protected readonly _ctx: SchemaView,\n /** @internal */ public readonly idx: number,\n ) { }\n\n /** @internal */\n protected get _data() { return this._ctx[_storage].classes[this.idx]; }\n\n /** Row ID from ec_Class. Matches `ECInstanceId` in ECDbMeta views, e.g.\n * `SELECT * FROM meta.ECClassDef WHERE ECInstanceId = ?`.\n */\n public get ecInstanceId(): number { return this._data.ecInstanceId; }\n public get name(): string { return this._ctx[_storage].strings[this._data.nameStringIdx]; }\n public get label(): string {\n const sid = this._data.labelStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;\n }\n public get description(): string {\n const sid = this._data.descriptionStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n /** \"SchemaName:ClassName\" - colon-separated, matching the EC class full name convention.\n * Use either \":\" or \".\" as separator when passing to `findClass()`. */\n public get fullName(): string {\n const d = this._data;\n return `${this._ctx[_storage].strings[this._ctx[_storage].schemas[d.schemaIdx].nameStringIdx]}:${this._ctx[_storage].strings[d.nameStringIdx]}`;\n }\n public get schema(): Schema { return new Schema(this._ctx, this._data.schemaIdx); }\n public get type(): ClassType { return this._data.type; }\n public get modifier(): ClassModifier { return this._data.modifier; }\n\n // Type check methods\n\n // disabling lint rule for these because we explicitly want them to mirror same methods in ecschema-metadata, to make the APIs more compatible\n // eslint-disable-next-line @itwin/prefer-get\n public isEntity(): boolean { return this._data.type === ClassType.Entity; }\n /** Type predicate - narrows to `SchemaView.RelationshipClass` for access to strength, direction,\n * source, and target constraint fields. */\n public isRelationship(): this is RelationshipClass { return this._data.type === ClassType.Relationship; }\n // eslint-disable-next-line @itwin/prefer-get\n public isStruct(): boolean { return this._data.type === ClassType.Struct; }\n // eslint-disable-next-line @itwin/prefer-get\n public isMixin(): boolean { return this._data.type === ClassType.Mixin; }\n // eslint-disable-next-line @itwin/prefer-get\n public isCustomAttribute(): boolean { return this._data.type === ClassType.CustomAttribute; }\n // eslint-disable-next-line @itwin/prefer-get\n public isView(): boolean { return this._data.type === ClassType.View; }\n\n /** @see isRelationship */\n public assertRelationship(): asserts this is RelationshipClass {\n if (!this.isRelationship())\n throw new Error(`Expected a relationship class, got type ${this.type} for \"${this.fullName}\"`);\n }\n\n // Modifier checks\n public get isAbstract(): boolean { return this._data.modifier === ClassModifier.Abstract; }\n public get isSealed(): boolean { return this._data.modifier === ClassModifier.Sealed; }\n\n /** Reflects the `HiddenClass` custom attribute from `CoreCustomAttributes`.\n * Returns `true` when this class is directly hidden (via `HiddenClass(Show!=true)` or\n * schema-level `HiddenSchema(ShowClasses!=true)`). Does NOT consider base class inheritance -\n * use `isEffectivelyHidden` for that.\n *\n * Note: `false` means explicitly shown via `HiddenClass(Show=true)`. `undefined` means\n * no `HiddenClass` CA and the schema does not hide its classes. Both are \"not hidden\" for\n * this property, but `isEffectivelyHidden` distinguishes them when walking the hierarchy. */\n public get isHidden(): boolean | undefined { return this._data.isHidden; }\n\n /** Computed hidden status that walks the base class chain (not mixins).\n *\n * Returns `true` if this class is hidden or any ancestor in the base class chain is hidden,\n * unless this class or an intermediate class explicitly breaks the chain with\n * `HiddenClass(Show=true)` (i.e. `isHidden === false`).\n *\n * Mixins are intentionally excluded - a hidden mixin represents a hidden capability,\n * not a hidden identity. */\n public get isEffectivelyHidden(): boolean {\n let data: ClassData | undefined = this._data;\n while (data !== undefined) {\n if (data.isHidden === false) return false; // explicit Show=true breaks the chain\n if (data.isHidden === true) return true;\n // undefined: walk to base class via internal array (avoids allocating Class objects)\n data = data.baseClassIdx !== -1 ? this._ctx[_storage].classes[data.baseClassIdx] : undefined;\n }\n return false;\n }\n\n // Hierarchy\n\n /** Single base class. undefined for root classes. */\n public get baseClass(): Class | undefined {\n const idx = this._data.baseClassIdx;\n return idx !== -1 ? createClass(this._ctx, idx) : undefined;\n }\n\n /** Applied mixins in declaration order. Only meaningful for entity classes. */\n public get mixins(): readonly Class[] {\n const d = this._data;\n if (d.mixinCount === 0) return [];\n const result: Class[] = [];\n for (let i = 0; i < d.mixinCount; i++) {\n const mixinIdx = this._ctx[_storage].classMixins[d.mixinStartIdx + i];\n if (mixinIdx === -1 || mixinIdx === undefined) continue; // safety: dangling mixin ref from excluded schema\n result.push(createClass(this._ctx, mixinIdx));\n }\n return result;\n }\n\n /** IS-A check. Returns true if this class is, or derives from, `other` (transitively, including mixins).\n * Accepts a `SchemaView.Class` or a qualified name string (\"SchemaName:ClassName\").\n */\n public is(classOrName: Class | string): boolean {\n let targetIdx: number;\n if (typeof classOrName === \"string\") {\n targetIdx = this._ctx.resolveClassIdx(classOrName);\n } else if (classOrName._ctx === this._ctx) {\n targetIdx = classOrName.idx;\n } else {\n // Cross-view input: indices are not comparable across SchemaView instances.\n // Resolve by qualified name against this view.\n targetIdx = this._ctx.resolveClassIdx(classOrName.fullName);\n }\n if (targetIdx === -1) return false;\n if (this.idx === targetIdx) return true;\n return this._ctx.getTransitiveBases(this.idx).has(targetIdx);\n }\n\n /** Direct derived classes. Expensive on first call (builds reverse map across all classes). */\n public get derivedClasses(): readonly Class[] {\n const map = this._ctx.buildDerivedClassMap();\n const indices = map.get(this.idx);\n if (indices === undefined) return [];\n return indices.map((i) => createClass(this._ctx, i));\n }\n\n // Properties\n\n /** Find a property by name (case-insensitive). Searches own + inherited.\n *\n * Note: this resolves the full property list and linear-scans it on every call. For workloads\n * that hit `getProperty` repeatedly on the same class with different names, a per-class\n * resolved-property map cache could be added on the view. Not done now - measure before\n * optimizing. */\n public getProperty(name: string): Property | undefined {\n const allProps = this._ctx.resolveAllProperties(this.idx);\n const lowerName = name.toLowerCase();\n for (const rp of allProps) {\n if (this._ctx[_storage].lowerStrings[this._ctx[_storage].propDefs[rp.ref.defIdx].nameStringIdx] === lowerName)\n return createProperty(this._ctx, rp.ref, rp.classIdx);\n }\n return undefined;\n }\n\n /** All properties including inherited, in inheritance order (base first, then mixins, then own). */\n public getProperties(): readonly Property[] {\n const allRefs = this._ctx.resolveAllProperties(this.idx);\n return allRefs.map((rp) => createProperty(this._ctx, rp.ref, rp.classIdx));\n }\n\n /** Own properties only (not inherited), in ordinal order. */\n public getOwnProperties(): readonly Property[] {\n const d = this._data;\n const result: Property[] = [];\n for (let i = 0; i < d.ownPropCount; i++) {\n const ref = this._ctx[_storage].propertyRefs[d.ownPropStart + i];\n result.push(createProperty(this._ctx, ref, this.idx));\n }\n return result;\n }\n }\n\n /** A relationship class with constraint and strength metadata. Created by `createClass()`\n * when the underlying `ClassType` is `Relationship`. Use `cls.isRelationship()` to narrow a\n * `SchemaView.Class` to this type.\n * @beta\n */\n export class RelationshipClass extends Class {\n public get strength(): StrengthType { return this._data.strength; }\n public get strengthDirection(): StrengthDirection { return this._data.strengthDirection; }\n\n public get source(): RelConstraint | undefined {\n const idx = this._data.sourceConstraintIdx;\n return idx !== -1 ? new RelConstraint(this._ctx, idx) : undefined;\n }\n\n public get target(): RelConstraint | undefined {\n const idx = this._data.targetConstraintIdx;\n return idx !== -1 ? new RelConstraint(this._ctx, idx) : undefined;\n }\n }\n\n /** @internal */\n export function createClass(ctx: SchemaView, idx: number): Class {\n if (ctx[_storage].classes[idx].type === ClassType.Relationship)\n return new RelationshipClass(ctx, idx);\n return new Class(ctx, idx);\n }\n\n /** Lightweight view over a property in a `SchemaView`. Subclasses provide\n * type-safe access to kind-specific fields. Use `isPrimitive()`, `isStruct()`,\n * `isArray()`, or `isNavigation()` to narrow, or the corresponding `assert*()` methods.\n * @beta\n */\n export abstract class Property {\n /** @internal */\n constructor(\n protected readonly _ctx: SchemaView,\n private readonly _ref: PropertyRef,\n /** Index of the class that declared or contributed this property through inheritance.\n * For own properties, this is the class itself. For inherited properties, this is the\n * base class or mixin that introduced it. -1 for view properties. */\n private readonly _classIdx: number,\n ) { }\n\n /** @internal */\n protected get _def() { return this._ctx[_storage].propDefs[this._ref.defIdx]; }\n\n /** Row ID from ec_Property. Matches `ECInstanceId` in ECDbMeta views, e.g.\n * `SELECT * FROM meta.ECPropertyDef WHERE ECInstanceId = ?`.\n *\n * Stored per-reference (not per-definition) because each class-property pair has a unique\n * ec_Property row even when the structural definition is deduplicated.\n */\n public get ecInstanceId(): number { return this._ref.ecInstanceId; }\n public get name(): string { return this._ctx[_storage].strings[this._def.nameStringIdx]; }\n /** Display label. Falls back to the property name if no explicit label is set.\n * Labels are stored per-reference (not per-definition) because EC allows class overrides. */\n public get label(): string {\n const labelStringIdx = this._ref.labelStringIdx;\n return labelStringIdx !== 0 ? this._ctx[_storage].strings[labelStringIdx] : this.name;\n }\n public get description(): string {\n const sid = this._def.descriptionStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n public get kind(): PropertyKind { return this._def.kind; }\n public get isReadOnly(): boolean { return this._def.isReadOnly; }\n /** Reflects the `HiddenProperty` custom attribute from `CoreCustomAttributes`.\n * Properties marked hidden are typically excluded from UI display but remain accessible programmatically. */\n public get isHidden(): boolean { return this._def.isHidden; }\n /** Display priority. Higher values should be displayed more prominently. 0 means default. */\n public get priority(): number { return this._ref.priority; }\n\n /** The class that declared or contributed this property through inheritance.\n * For own properties, returns the class itself. For inherited properties, returns the\n * base class or mixin that introduced it. Returns `undefined` for view properties.\n * This is the class array index, not the ec_Class.Id from the database.\n * @beta\n */\n public get declaringClass(): Class | undefined {\n return this._classIdx !== -1 ? createClass(this._ctx, this._classIdx) : undefined;\n }\n\n /** Property category, or undefined if none assigned. Available on all property kinds. */\n public get category(): PropertyCategory | undefined {\n const idx = this._def.categoryIdx;\n return idx !== -1 ? new PropertyCategory(this._ctx, idx) : undefined;\n }\n\n // Type guards - real type predicates that narrow `this`\n\n /** True for `SchemaView.PrimitiveProperty` and `SchemaView.PrimitiveArrayProperty`.\n * Matches ecschema-metadata behavior where `isPrimitive()` includes primitive arrays. */\n public isPrimitive(): this is AnyPrimitiveProperty {\n return this._def.kind === PropertyKind.Primitive || this._def.kind === PropertyKind.PrimitiveArray;\n }\n /** True for `SchemaView.StructProperty` and `SchemaView.StructArrayProperty`. */\n public isStruct(): this is AnyStructProperty {\n return this._def.kind === PropertyKind.Struct || this._def.kind === PropertyKind.StructArray;\n }\n /** True for `SchemaView.PrimitiveArrayProperty` and `SchemaView.StructArrayProperty`. */\n public isArray(): this is AnyArrayProperty {\n return this._def.kind === PropertyKind.PrimitiveArray || this._def.kind === PropertyKind.StructArray;\n }\n /** True for `SchemaView.NavigationProperty`. */\n public isNavigation(): this is NavigationProperty {\n return this._def.kind === PropertyKind.Navigation;\n }\n /** True if this property is backed by an enumeration. Enumerations are a facet of primitive\n * properties - an enum property IS a primitive property with an enum binding. Narrows to\n * `AnyPrimitiveProperty` so you can access `enumeration`, `primitiveType`, etc. */\n public isEnumeration(): this is AnyPrimitiveProperty {\n return this._def.enumIdx !== -1;\n }\n\n // Assert methods - throw on mismatch, narrow `this`\n\n /** @see isPrimitive */\n public assertPrimitive(): asserts this is AnyPrimitiveProperty {\n if (!this.isPrimitive())\n throw new Error(`Expected a primitive property, got ${PropertyKind[this.kind]}`);\n }\n /** @see isStruct */\n public assertStruct(): asserts this is AnyStructProperty {\n if (!this.isStruct())\n throw new Error(`Expected a struct property, got ${PropertyKind[this.kind]}`);\n }\n /** @see isArray */\n public assertArray(): asserts this is AnyArrayProperty {\n if (!this.isArray())\n throw new Error(`Expected an array property, got ${PropertyKind[this.kind]}`);\n }\n /** @see isNavigation */\n public assertNavigation(): asserts this is NavigationProperty {\n if (!this.isNavigation())\n throw new Error(`Expected a navigation property, got ${PropertyKind[this.kind]}`);\n }\n }\n\n /** A scalar primitive property. May optionally be backed by an enumeration -\n * check `isEnumeration()` or `enumeration`.\n * @beta\n */\n export class PrimitiveProperty extends Property {\n public get primitiveType(): SchemaViewPrimitiveType { return this._def.primitiveType; }\n public get extendedTypeName(): string | undefined {\n const sid = this._def.extTypeStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : undefined;\n }\n public get enumeration(): Enumeration | undefined {\n const idx = this._def.enumIdx;\n return idx !== -1 ? new Enumeration(this._ctx, idx) : undefined;\n }\n public get kindOfQuantity(): KindOfQuantity | undefined {\n const idx = this._def.koqIdx;\n return idx !== -1 ? new KindOfQuantity(this._ctx, idx) : undefined;\n }\n }\n\n /** An array of primitive values. Same primitive/enum fields as `PrimitiveProperty`,\n * plus array bounds.\n * @beta\n */\n export class PrimitiveArrayProperty extends Property {\n public get primitiveType(): SchemaViewPrimitiveType { return this._def.primitiveType; }\n public get extendedTypeName(): string | undefined {\n const sid = this._def.extTypeStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : undefined;\n }\n public get enumeration(): Enumeration | undefined {\n const idx = this._def.enumIdx;\n return idx !== -1 ? new Enumeration(this._ctx, idx) : undefined;\n }\n public get kindOfQuantity(): KindOfQuantity | undefined {\n const idx = this._def.koqIdx;\n return idx !== -1 ? new KindOfQuantity(this._ctx, idx) : undefined;\n }\n public get arrayMinOccurs(): number | undefined { return this._def.arrayMinOccurs; }\n public get arrayMaxOccurs(): number | undefined { return this._def.arrayMaxOccurs; }\n }\n\n /** A scalar struct property. `structClass` is non-nullable - the binary parser drops\n * properties whose struct class can't be resolved (e.g. from excluded schemas).\n * @beta\n */\n export class StructProperty extends Property {\n public get structClass(): Class {\n return createClass(this._ctx, this._def.structClassIdx);\n }\n }\n\n /** An array of struct values. Same struct field as `StructProperty`, plus array bounds.\n * @beta\n */\n export class StructArrayProperty extends Property {\n public get structClass(): Class {\n return createClass(this._ctx, this._def.structClassIdx);\n }\n public get arrayMinOccurs(): number | undefined { return this._def.arrayMinOccurs; }\n public get arrayMaxOccurs(): number | undefined { return this._def.arrayMaxOccurs; }\n }\n\n /** A navigation property. `relationshipClass` is non-nullable - the binary parser drops\n * properties whose relationship class can't be resolved.\n * @beta\n */\n export class NavigationProperty extends Property {\n public get direction(): StrengthDirection { return this._def.navDirection; }\n public get relationshipClass(): RelationshipClass {\n return createClass(this._ctx, this._def.navRelClassIdx) as RelationshipClass;\n }\n }\n\n /** Any primitive property (scalar or array). Useful for accessing `primitiveType`,\n * `extendedTypeName`, `enumeration`, `kindOfQuantity` after an `isPrimitive()` check.\n * @beta\n */\n export type AnyPrimitiveProperty = PrimitiveProperty | PrimitiveArrayProperty;\n\n /** Any struct property (scalar or array). Useful for accessing `structClass` after an `isStruct()` check.\n * @beta\n */\n export type AnyStructProperty = StructProperty | StructArrayProperty;\n\n /** Any array property (primitive or struct). Useful for accessing `arrayMinOccurs`/`arrayMaxOccurs`\n * after an `isArray()` check.\n * @beta\n */\n export type AnyArrayProperty = PrimitiveArrayProperty | StructArrayProperty;\n\n /** Union of all concrete property types.\n * @beta\n */\n export type AnyProperty = PrimitiveProperty | PrimitiveArrayProperty\n | StructProperty | StructArrayProperty | NavigationProperty;\n\n /** @internal */\n export function createProperty(ctx: SchemaView, ref: PropertyRef, classIdx: number): Property {\n const kind = ctx[_storage].propDefs[ref.defIdx].kind;\n switch (kind) {\n case PropertyKind.Primitive: return new PrimitiveProperty(ctx, ref, classIdx);\n case PropertyKind.PrimitiveArray: return new PrimitiveArrayProperty(ctx, ref, classIdx);\n case PropertyKind.Struct: return new StructProperty(ctx, ref, classIdx);\n case PropertyKind.StructArray: return new StructArrayProperty(ctx, ref, classIdx);\n case PropertyKind.Navigation: return new NavigationProperty(ctx, ref, classIdx);\n default: throw new Error(`Unknown PropertyKind ${kind as number} for property \"${ctx[_storage].strings[ctx[_storage].propDefs[ref.defIdx].nameStringIdx]}\"`);\n }\n }\n\n /** Lightweight view over an enumeration in a `SchemaView`.\n * @beta\n */\n export class Enumeration {\n /** @internal */\n constructor(\n private readonly _ctx: SchemaView,\n /** @internal */ public readonly idx: number,\n ) { }\n\n private get _data() { return this._ctx[_storage].enumerations[this.idx]; }\n\n /** Row ID from ec_Enumeration. Matches `ECInstanceId` in ECDbMeta views, e.g.\n * `SELECT * FROM meta.ECEnumerationDef WHERE ECInstanceId = ?`.\n */\n public get ecInstanceId(): number { return this._data.ecInstanceId; }\n public get name(): string { return this._ctx[_storage].strings[this._data.nameStringIdx]; }\n public get label(): string {\n const sid = this._data.labelStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;\n }\n public get description(): string {\n const sid = this._data.descriptionStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n /** \"SchemaName:EnumName\" - colon-separated. */\n public get fullName(): string {\n const d = this._data;\n return `${this._ctx[_storage].strings[this._ctx[_storage].schemas[d.schemaIdx].nameStringIdx]}:${this._ctx[_storage].strings[d.nameStringIdx]}`;\n }\n public get schema(): Schema { return new Schema(this._ctx, this._data.schemaIdx); }\n public get primitiveType(): SchemaViewPrimitiveType { return this._data.primitiveType; }\n public get isStrict(): boolean { return this._data.isStrict; }\n\n /** Iterate enumerators in declaration order. */\n public *getEnumerators(): IterableIterator<Enumerator> {\n const d = this._data;\n for (let i = d.enumeratorStart; i < d.enumeratorStart + d.enumeratorCount; i++)\n yield new Enumerator(this._ctx, i);\n }\n\n /** Find enumerator by name (case-insensitive). */\n public getEnumeratorByName(name: string): Enumerator | undefined {\n const lower = name.toLowerCase();\n const d = this._data;\n for (let i = d.enumeratorStart; i < d.enumeratorStart + d.enumeratorCount; i++) {\n if (this._ctx[_storage].lowerStrings[this._ctx[_storage].enumerators[i].nameStringIdx] === lower)\n return new Enumerator(this._ctx, i);\n }\n return undefined;\n }\n\n /** Find enumerator by value. */\n public getEnumerator(value: number | string): Enumerator | undefined {\n const d = this._data;\n for (let i = d.enumeratorStart; i < d.enumeratorStart + d.enumeratorCount; i++) {\n if (this._ctx[_storage].enumerators[i].value === value)\n return new Enumerator(this._ctx, i);\n }\n return undefined;\n }\n }\n\n /** Thin view over an enumerator.\n * @beta\n */\n export class Enumerator {\n /** @internal */\n constructor(\n private readonly _ctx: SchemaView,\n /** @internal */ public readonly idx: number,\n ) { }\n\n private get _data() { return this._ctx[_storage].enumerators[this.idx]; }\n\n public get name(): string { return this._ctx[_storage].strings[this._data.nameStringIdx]; }\n public get label(): string {\n const sid = this._data.labelStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;\n }\n public get description(): string {\n const sid = this._data.descriptionStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n public get value(): number | string { return this._data.value; }\n }\n\n /** A parsed presentation format override from a KindOfQuantity. Names are alias-qualified\n * as stored in ECDb (e.g. `\"f:DefaultRealU\"`, `\"u:M\"`). The alias can be resolved to a\n * full schema name via the schema's alias if needed.\n *\n * Format string syntax: `formatName(precision)[unitName|label][unitName|label]...`\n * @beta\n */\n export interface PresentationFormat {\n /** Format name (alias-qualified), e.g. `\"f:DefaultRealU\"`. */\n readonly name: string;\n /** Precision override. `undefined` if the format string does not override precision. */\n readonly precision?: number;\n /** Unit overrides as `[unitName, labelOverride]` tuples. `unitName` is alias-qualified\n * (e.g. `\"u:M\"`). `labelOverride` is `undefined` when no label was specified, or a\n * string (possibly empty) when a `|` separator was present.\n */\n readonly unitAndLabels?: ReadonlyArray<readonly [string, string | undefined]>;\n }\n\n /** Parse a single format override string into a `PresentationFormat`.\n * @internal\n */\n export function parseFormatString(formatString: string): PresentationFormat {\n const nameMatch = /^([\\w.:]+)/.exec(formatString);\n if (!nameMatch)\n return { name: formatString };\n\n const name = nameMatch[1];\n const precMatch = /\\((\\d+)\\)/.exec(formatString);\n const precision = precMatch ? parseInt(precMatch[1], 10) : undefined;\n\n const bracketRgx = /\\[([^\\]]+)\\]/g;\n const units: Array<readonly [string, string | undefined]> = [];\n let m;\n while ((m = bracketRgx.exec(formatString)) !== null) {\n const pipeIdx = m[1].indexOf(\"|\");\n units.push(pipeIdx < 0 ? [m[1], undefined] : [m[1].substring(0, pipeIdx), m[1].substring(pipeIdx + 1)]);\n }\n\n return { name, precision, unitAndLabels: units.length > 0 ? units : undefined };\n }\n\n /** Lightweight view over a KindOfQuantity in a `SchemaView`.\n * @beta\n */\n export class KindOfQuantity {\n /** @internal */\n constructor(\n private readonly _ctx: SchemaView,\n /** @internal */ public readonly idx: number,\n ) { }\n\n private get _data() { return this._ctx[_storage].koqs[this.idx]; }\n\n /** Row ID from ec_KindOfQuantity. Matches `ECInstanceId` in ECDbMeta views, e.g.\n * `SELECT * FROM meta.ECKindOfQuantityDef WHERE ECInstanceId = ?`.\n */\n public get ecInstanceId(): number { return this._data.ecInstanceId; }\n public get name(): string { return this._ctx[_storage].strings[this._data.nameStringIdx]; }\n public get label(): string {\n const sid = this._data.labelStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;\n }\n public get description(): string {\n const sid = this._data.descriptionStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n /** \"SchemaName:KoqName\" - colon-separated. */\n public get fullName(): string {\n const d = this._data;\n return `${this._ctx[_storage].strings[this._ctx[_storage].schemas[d.schemaIdx].nameStringIdx]}:${this._ctx[_storage].strings[d.nameStringIdx]}`;\n }\n public get schema(): Schema { return new Schema(this._ctx, this._data.schemaIdx); }\n public get relativeError(): number { return this._data.relativeError; }\n /** Persistence unit as a full name string, e.g. \"Units:M\".\n *\n * On iModels still on ECDb profile `4.0.0.1` (predates the 2018 EC3.2 Units/Formats migration)\n * this string is in legacy FUS format rather than the EC3.2 alias-qualified form.\n * Upgrade the iModel's ECDb profile to get EC3.2 strings.\n */\n public get persistenceUnit(): string {\n const sid = this._data.persistenceUnitStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n // EC XML serializes this as \"presentationUnits\"; we use \"presentationFormats\" to align with KindOfQuantity.presentationFormats in ecschema-metadata.\n /** Raw presentation format string as stored in ECDb (`ec_KindOfQuantity.PresentationUnits`).\n * This is a JSON array of format override strings. Empty string if none are defined.\n * Prefer `presentationFormats` for structured access.\n *\n * On iModels still on ECDb profile `4.0.0.1` (predates the 2018 EC3.2 Units/Formats migration)\n * the strings are in legacy FUS format and will not parse via `presentationFormats`.\n * Upgrade the iModel's ECDb profile to get EC3.2 strings.\n */\n public get presentationFormatsRaw(): string {\n const sid = this._data.presentationFormatsStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n\n /** Presentation formats parsed into structured overrides. Each entry has the format name\n * (alias-qualified, e.g. `\"f:DefaultRealU\"`), optional precision override, and optional\n * unit-and-label overrides. Returns an empty array if no presentation formats are defined.\n *\n * Example - given a raw string of `[\"f:DefaultRealU(4)[u:M_PER_SEC_SQ]\",\"f:DefaultRealU(4)[u:CM_PER_SEC_SQ]\"]`:\n * ```ts\n * // [\n * // { name: \"f:DefaultRealU\", precision: 4, unitAndLabels: [[\"u:M_PER_SEC_SQ\", undefined]] },\n * // { name: \"f:DefaultRealU\", precision: 4, unitAndLabels: [[\"u:CM_PER_SEC_SQ\", undefined]] },\n * // ]\n * ```\n */\n public get presentationFormats(): readonly PresentationFormat[] {\n const raw = this.presentationFormatsRaw;\n if (raw === \"\")\n return [];\n const formats: string[] = JSON.parse(raw);\n return formats.map((f) => parseFormatString(f));\n }\n }\n\n /** Lightweight view over a PropertyCategory in a `SchemaView`.\n * @beta\n */\n export class PropertyCategory {\n /** @internal */\n constructor(\n private readonly _ctx: SchemaView,\n /** @internal */ public readonly idx: number,\n ) { }\n\n private get _data() { return this._ctx[_storage].propCategories[this.idx]; }\n\n /** Row ID from ec_PropertyCategory. Matches `ECInstanceId` in ECDbMeta views, e.g.\n * `SELECT * FROM meta.ECPropertyCategoryDef WHERE ECInstanceId = ?`.\n */\n public get ecInstanceId(): number { return this._data.ecInstanceId; }\n public get name(): string { return this._ctx[_storage].strings[this._data.nameStringIdx]; }\n public get label(): string {\n const sid = this._data.labelStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : this.name;\n }\n public get description(): string {\n const sid = this._data.descriptionStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n /** \"SchemaName:CategoryName\" - colon-separated. */\n public get fullName(): string {\n const d = this._data;\n return `${this._ctx[_storage].strings[this._ctx[_storage].schemas[d.schemaIdx].nameStringIdx]}:${this._ctx[_storage].strings[d.nameStringIdx]}`;\n }\n public get schema(): Schema { return new Schema(this._ctx, this._data.schemaIdx); }\n public get priority(): number { return this._data.priority; }\n }\n\n /** Lightweight view over a relationship constraint in a `SchemaView`.\n * @beta\n */\n export class RelConstraint {\n /** @internal */\n constructor(\n private readonly _ctx: SchemaView,\n private readonly _idx: number,\n ) { }\n\n private get _data() { return this._ctx[_storage].relConstraints[this._idx]; }\n\n public get abstractConstraint(): Class | undefined {\n const idx = this._data.abstractConstraintIdx;\n return idx !== -1 ? createClass(this._ctx, idx) : undefined;\n }\n public get polymorphic(): boolean { return this._data.polymorphic; }\n /** Multiplicity lower bound (0 = unbounded). */\n public get multiplicityLower(): number { return this._data.multiplicityLower; }\n /** Multiplicity upper bound (0 = unbounded). */\n public get multiplicityUpper(): number { return this._data.multiplicityUpper; }\n /** Role label string, or empty if not set. */\n public get roleLabel(): string {\n const sid = this._data.roleLabelStringIdx;\n return sid !== 0 ? this._ctx[_storage].strings[sid] : \"\";\n }\n public get constraintClasses(): readonly Class[] {\n const d = this._data;\n const result: Class[] = [];\n for (let i = 0; i < d.classRefCount; i++)\n result.push(createClass(this._ctx, this._ctx[_storage].constraintClassRefs[d.classRefStart + i]));\n return result;\n }\n }\n}\n\n// =====================================================================================\n// SchemaViewBuilder\n// =====================================================================================\n\n/** Builder for constructing an immutable `SchemaView`.\n *\n * Collects data during binary blob parsing, then freezes it into a view.\n * Handles string interning and property definition deduplication.\n *\n * Consumers should not use this directly - read views via `IModelDb.getSchemaView`\n * / `IModelConnection.getSchemaView` (or `SchemaView.fromBinary` if you have a raw blob).\n * @internal\n */\nexport class SchemaViewBuilder {\n private readonly _strings: string[] = [\"\"]; // SID 0 = empty string\n private readonly _lowerStrings: string[] = [\"\"];\n private readonly _stringMap = new Map<string, number>(); // original value -> SID\n\n private readonly _schemas: SchemaData[] = [];\n private readonly _classes: ClassData[] = [];\n private readonly _classMixins: number[] = [];\n private readonly _propDefs: PropertyDef[] = [];\n private readonly _propertyRefs: PropertyRef[] = [];\n private readonly _relConstraints: RelConstraintData[] = [];\n private readonly _constraintClassRefs: number[] = [];\n private readonly _enumerations: EnumerationData[] = [];\n private readonly _enumerators: EnumeratorData[] = [];\n private readonly _koqs: KoqData[] = [];\n private readonly _propCategories: PropCategoryData[] = [];\n\n // For PropertyDef dedup\n private readonly _propDefMap = new Map<string, number>(); // signature string -> defIdx\n\n /** Intern a string, returning its SID. Empty/undefined strings return 0.\n * Interning is case-sensitive - \"MyLabel\" and \"MYLABEL\" get distinct SIDs.\n * The `lowerStrings` array provides case-insensitive lookup without mutating display values.\n */\n public internString(value: string | undefined): number {\n if (value === undefined || value === \"\") return 0;\n const existing = this._stringMap.get(value);\n if (existing !== undefined) return existing;\n const sid = this._strings.length;\n this._strings.push(value);\n this._lowerStrings.push(value.toLowerCase());\n this._stringMap.set(value, sid);\n return sid;\n }\n\n /** Add a schema. Returns its index. */\n public addSchema(data: SchemaData): number {\n const idx = this._schemas.length;\n this._schemas.push(data);\n return idx;\n }\n\n /** Add a class. Returns its index. Must be called after the owning schema. */\n public addClass(data: ClassData): number {\n const idx = this._classes.length;\n this._classes.push(data);\n return idx;\n }\n\n /** Add a property definition with deduplication. Returns the def index (possibly existing). */\n public addPropertyDef(data: PropertyDef): number {\n const sig = this._propDefSignature(data);\n const existing = this._propDefMap.get(sig);\n if (existing !== undefined) return existing;\n\n const idx = this._propDefs.length;\n this._propDefs.push(data);\n this._propDefMap.set(sig, idx);\n return idx;\n }\n\n /** Append a property reference to the flat refs array. */\n public addPropertyRef(ref: PropertyRef): void {\n this._propertyRefs.push(ref);\n }\n\n /** Add an enumeration. Returns its index. */\n public addEnumeration(data: EnumerationData): number {\n const idx = this._enumerations.length;\n this._enumerations.push(data);\n return idx;\n }\n\n /** Append an enumerator to the flat enumerators array. */\n public addEnumerator(data: EnumeratorData): void {\n this._enumerators.push(data);\n }\n\n /** Add a KindOfQuantity. Returns its index. */\n public addKoq(data: KoqData): number {\n const idx = this._koqs.length;\n this._koqs.push(data);\n return idx;\n }\n\n /** Add a PropertyCategory. Returns its index. */\n public addPropertyCategory(data: PropCategoryData): number {\n const idx = this._propCategories.length;\n this._propCategories.push(data);\n return idx;\n }\n\n /** Add a relationship constraint. Returns its index. */\n public addRelConstraint(data: RelConstraintData): number {\n const idx = this._relConstraints.length;\n this._relConstraints.push(data);\n return idx;\n }\n\n /** Append a constraint class reference to the flat array. */\n public addConstraintClassRef(classIdx: number): void {\n this._constraintClassRefs.push(classIdx);\n }\n\n /** Append a mixin class reference to the flat array. */\n public addClassMixin(classIdx: number): void {\n this._classMixins.push(classIdx);\n }\n\n /** The current count of property refs (used to set ownPropStart on ClassData). */\n public get propertyRefCount(): number { return this._propertyRefs.length; }\n\n /** The current count of enumerators (used to set enumeratorStart on EnumerationData). */\n public get enumeratorCount(): number { return this._enumerators.length; }\n\n /** The current count of constraint class refs (used to set classRefStart). */\n public get constraintClassRefCount(): number { return this._constraintClassRefs.length; }\n\n /** The current count of class mixins (used to set mixinStartIdx). */\n public get classMixinCount(): number { return this._classMixins.length; }\n\n /** Get a string by SID. @internal */\n public getString(sid: number): string { return this._strings[sid]; }\n\n /** Replace class data at the given index (used during deferred cross-ref resolution). @internal */\n public updateClass(classIdx: number, data: ClassData): void { this._classes[classIdx] = data; }\n\n /** Update range fields on a schema (used after all items for a schema are collected). @internal */\n public updateSchemaRanges(schemaIdx: number, ranges: { classRangeStart: number; classCount: number; enumRangeStart: number; enumCount: number; koqRangeStart: number; koqCount: number; catRangeStart: number; catCount: number }): void {\n const s = this._schemas[schemaIdx];\n this._schemas[schemaIdx] = { ...s, ...ranges };\n }\n\n /** Freeze all data and produce an immutable SchemaView. */\n public build(schemaToken?: string): SchemaView {\n const schemaByName = new Map<string, number>();\n const schemaByAlias = new Map<string, number>();\n const classByName = new Map<number, Map<string, number>>();\n const enumByName = new Map<number, Map<string, number>>();\n const koqByName = new Map<number, Map<string, number>>();\n const catByName = new Map<number, Map<string, number>>();\n\n // Build schema lookup maps\n for (let i = 0; i < this._schemas.length; i++) {\n const s = this._schemas[i];\n schemaByName.set(this._lowerStrings[s.nameStringIdx], i);\n if (s.aliasStringIdx !== 0)\n schemaByAlias.set(this._lowerStrings[s.aliasStringIdx], i);\n\n // Build class-by-name map for this schema\n const classMap = new Map<string, number>();\n for (let c = s.classRangeStart; c < s.classRangeStart + s.classCount; c++)\n classMap.set(this._lowerStrings[this._classes[c].nameStringIdx], c);\n classByName.set(i, classMap);\n\n // Build enum-by-name map for this schema\n const eMap = new Map<string, number>();\n for (let e = s.enumRangeStart; e < s.enumRangeStart + s.enumCount; e++)\n eMap.set(this._lowerStrings[this._enumerations[e].nameStringIdx], e);\n enumByName.set(i, eMap);\n\n // Build koq-by-name map for this schema\n const kMap = new Map<string, number>();\n for (let k = s.koqRangeStart; k < s.koqRangeStart + s.koqCount; k++)\n kMap.set(this._lowerStrings[this._koqs[k].nameStringIdx], k);\n koqByName.set(i, kMap);\n\n // Build category-by-name map for this schema\n const cMap = new Map<string, number>();\n for (let p = s.catRangeStart; p < s.catRangeStart + s.catCount; p++)\n cMap.set(this._lowerStrings[this._propCategories[p].nameStringIdx], p);\n catByName.set(i, cMap);\n }\n\n return new SchemaView({\n strings: this._strings,\n lowerStrings: this._lowerStrings,\n schemas: this._schemas,\n classes: this._classes,\n classMixins: this._classMixins,\n propDefs: this._propDefs,\n propertyRefs: this._propertyRefs,\n relConstraints: this._relConstraints,\n constraintClassRefs: this._constraintClassRefs,\n enumerations: this._enumerations,\n enumerators: this._enumerators,\n koqs: this._koqs,\n propCategories: this._propCategories,\n schemaByName,\n schemaByAlias,\n classByName,\n enumByName,\n koqByName,\n catByName,\n }, schemaToken);\n }\n\n /** Produce a dedup signature for a PropertyDef. Label and priority are excluded because\n * they are per-PropertyRef overrides, not part of the structural definition.\n * Uses SIDs (not lowercase strings) for name/description so that case-preserving names\n * stay distinct - matching the C++ writer's dedup behavior. */\n private _propDefSignature(def: PropertyDef): string {\n return `${def.nameStringIdx}|${def.kind}|${def.primitiveType}|${def.extTypeStringIdx}|${def.enumIdx}|${def.koqIdx}|${def.structClassIdx}|${def.navRelClassIdx}|${def.navDirection}|${def.categoryIdx}|${def.isReadOnly ? 1 : 0}|${def.isHidden ? 1 : 0}|${def.arrayMinOccurs}|${def.arrayMaxOccurs}|${def.descriptionStringIdx}`;\n }\n}\n"]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/** @packageDocumentation
|
|
2
|
-
* @module Schema
|
|
3
|
-
*/
|
|
4
|
-
import { SchemaView } from "./SchemaView";
|
|
5
|
-
/** Parse a schema view blob (binary format) into a `SchemaView`.
|
|
6
|
-
*
|
|
7
|
-
* Layout: Header, PropertyDefTable, SchemaTable, EnumTable, KoQTable, PropCatTable, ClassTable, StringTable.
|
|
8
|
-
* Each table is count-prefixed. Schema items carry their schema's ecInstanceId for ownership resolution.
|
|
9
|
-
* Classes have count-prefixed inline sub-items (base classes, property refs, constraints).
|
|
10
|
-
*
|
|
11
|
-
* Consumers should call `SchemaView.fromBinary` instead - this function is the low-level
|
|
12
|
-
* implementation behind it.
|
|
13
|
-
* @internal
|
|
14
|
-
*/
|
|
15
|
-
export declare function parseSchemaViewBlob(data: Uint8Array, schemaToken?: string): SchemaView;
|
|
16
|
-
//# sourceMappingURL=SchemaViewBinaryReader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaViewBinaryReader.d.ts","sourceRoot":"","sources":["../../src/SchemaViewBinaryReader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AA+J7D;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CA4hBtF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaViewBinaryReader.js","sourceRoot":"","sources":["../../src/SchemaViewBinaryReader.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 Schema\n */\n\nimport { BentleyError, Logger } from \"@itwin/core-bentley\";\nimport { SchemaView, SchemaViewBuilder } from \"./SchemaView\";\nimport { StrengthDirection, StrengthType } from \"./ECObjects\";\nimport { ClassData, ClassModifier, ClassType, PropertyDef, PropertyKind, schemaViewFormatVersion, SchemaViewPrimitiveType } from \"./SchemaViewInterfaces\";\n\n/** Binary record tags for the SchemaView blob format.\n * Each tag marks a flat, count-prefixed table. Must stay in sync with the C++ writer. */\nenum Tag {\n PropertyDefTable = 0x0A,\n SchemaTable = 0x10,\n EnumTable = 0x20,\n KoQTable = 0x30,\n PropCatTable = 0x31,\n ClassTable = 0x40,\n}\n\nconst MAGIC = 0x43534348; // \"CSCH\"\n\n/** Low-level binary reader for the SchemaView blob. */\nclass BinaryReader {\n private _view: DataView;\n private _bytes: Uint8Array;\n private _pos: number;\n private _strings: string[];\n\n constructor(data: Uint8Array) {\n this._bytes = data;\n this._view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n this._pos = 0;\n this._strings = [];\n }\n\n public readU8(): number {\n if (this._pos >= this._bytes.length)\n throw new Error(`SchemaView blob truncated: cannot read u8 at offset ${this._pos} (length ${this._bytes.length})`);\n return this._bytes[this._pos++];\n }\n public readU16(): number { const v = this._view.getUint16(this._pos, true); this._pos += 2; return v; }\n public readU32(): number { const v = this._view.getUint32(this._pos, true); this._pos += 4; return v; }\n public readI32(): number { const v = this._view.getInt32(this._pos, true); this._pos += 4; return v; }\n public readF64(): number { const v = this._view.getFloat64(this._pos, true); this._pos += 8; return v; }\n public get pos(): number { return this._pos; }\n public set pos(v: number) { this._pos = v; }\n\n /** Read a string-table reference (U32 index) and return the original string. */\n public readSRef(): string {\n const idx = this.readU32();\n if (idx >= this._strings.length)\n throw new Error(`SchemaView blob: string reference ${idx} out of range (string table size ${this._strings.length})`);\n return this._strings[idx];\n }\n\n /** Validate a count-prefixed table header: the declared count cannot exceed what the remaining\n * buffer could plausibly hold. Each entry consumes at least `minBytesPerEntry` bytes. */\n public validateCount(count: number, minBytesPerEntry: number, tableName: string): void {\n const remaining = this._bytes.length - this._pos;\n if (count > remaining / Math.max(1, minBytesPerEntry))\n throw new Error(`SchemaView blob: ${tableName} count ${count} exceeds remaining buffer (${remaining} bytes)`);\n }\n\n /** Parse the string table at the given offset. */\n public parseStringTable(offset: number): void {\n if (offset > this._bytes.length)\n throw new Error(`SchemaView blob: stringTable offset ${offset} is past end of blob (length ${this._bytes.length})`);\n const saved = this._pos;\n this._pos = offset;\n const count = this.readU32();\n // Each entry is at minimum a 4-byte length prefix - a count larger than the remaining bytes\n // cannot possibly be valid and would cause a huge `new Array` allocation on a malformed blob.\n const remaining = this._bytes.length - this._pos;\n if (count > remaining / 4)\n throw new Error(`SchemaView blob: stringTable count ${count} exceeds remaining buffer (${remaining} bytes)`);\n this._strings = new Array(count);\n const decoder = new TextDecoder();\n for (let i = 0; i < count; i++) {\n const len = this.readU32();\n if (len === 0) {\n this._strings[i] = \"\";\n } else {\n if (len > this._bytes.length - this._pos)\n throw new Error(`SchemaView blob: string entry ${i} has length ${len} but only ${this._bytes.length - this._pos} bytes remain`);\n this._strings[i] = decoder.decode(this._bytes.subarray(this._pos, this._pos + len));\n this._pos += len;\n }\n }\n this._pos = saved;\n }\n}\n\n/** Read a U32 that uses 0xFFFFFFFF as a sentinel for \"not set\". */\nfunction readOptionalU32(reader: BinaryReader): number | undefined {\n const v = reader.readU32();\n return v === 0xFFFFFFFF ? undefined : v;\n}\n\n/** Temporary per-class data collected during parsing, before cross-references are resolved. */\ninterface PendingClass {\n schemaIdx: number;\n classIdx: number;\n ecInstanceId: number;\n nameStringIdx: number;\n labelStringIdx: number;\n descriptionStringIdx: number;\n type: ClassType;\n modifier: ClassModifier;\n relStrength: StrengthType;\n relStrengthDir: StrengthDirection;\n baseClasses: Array<{ schemaName: string; className: string; ordinal: number }>;\n propRefs: PendingPropRef[];\n constraints: PendingConstraint[];\n schemaName: string;\n isHidden: boolean | undefined;\n}\n\n/** A property reference from the binary PropertyDefTable. During parsing, `preDefIdx` stores the\n * index into the pre-parsed def array; during resolution it's mapped to the builder's deduped defIdx. */\ninterface PendingPropRef {\n preDefIdx: number; // index into preParsedDefs (mapped to builder defIdx during resolution)\n ecInstanceId: number;\n labelStringIdx: number;\n priority: number;\n}\n\n/** Pre-parsed property definition from the binary PropertyDefTable, with row ID cross-refs. */\ninterface PreParsedDef {\n name: string;\n description: string;\n kind: PropertyKind;\n primitiveType: SchemaViewPrimitiveType;\n extType: string;\n enumRowId: number; // ec_Enumeration.Id (0 = none)\n structClassRowId: number; // ec_Class.Id for struct type (0 = none)\n koqRowId: number; // ec_KindOfQuantity.Id (0 = none)\n catRowId: number; // ec_PropertyCategory.Id (0 = none)\n arrayMinOccurs: number | undefined;\n arrayMaxOccurs: number | undefined;\n navRelClassRowId: number; // ec_Class.Id for nav relationship (0 = none)\n navDirection: StrengthDirection;\n isReadonly: boolean;\n isHidden: boolean;\n}\n\ninterface PendingConstraint {\n relEnd: number; // 0=source, 1=target\n isPolymorphic: boolean;\n multiplicityLower: number;\n multiplicityUpper: number;\n roleLabel: string;\n abstractSchemaName: string;\n abstractClassName: string;\n constraintClasses: Array<{ schemaName: string; className: string }>;\n}\n\n/** Helper: read a tag byte and validate it matches the expected tag. */\nfunction expectTag(reader: BinaryReader, expected: Tag): void {\n const tag = reader.readU8();\n if (tag !== expected)\n throw new Error(`Expected tag 0x${expected.toString(16)} but found 0x${tag.toString(16)} at offset ${reader.pos - 1}`);\n}\n\n/** Parse a schema view blob (binary format) into a `SchemaView`.\n *\n * Layout: Header, PropertyDefTable, SchemaTable, EnumTable, KoQTable, PropCatTable, ClassTable, StringTable.\n * Each table is count-prefixed. Schema items carry their schema's ecInstanceId for ownership resolution.\n * Classes have count-prefixed inline sub-items (base classes, property refs, constraints).\n *\n * Consumers should call `SchemaView.fromBinary` instead - this function is the low-level\n * implementation behind it.\n * @internal\n */\nexport function parseSchemaViewBlob(data: Uint8Array, schemaToken?: string): SchemaView {\n const reader = new BinaryReader(data);\n\n // Header: magic(4) + version(1) + stringTableOffset(4)\n const magic = reader.readU32();\n if (magic !== MAGIC)\n throw new Error(`Invalid SchemaView blob magic: 0x${magic.toString(16)}, expected 0x${MAGIC.toString(16)}`);\n const version = reader.readU8();\n if (version !== schemaViewFormatVersion)\n throw new Error(`Unsupported schema view format version: ${version}, expected ${schemaViewFormatVersion}`);\n const stOffset = reader.readU32();\n reader.parseStringTable(stOffset);\n\n const builder = new SchemaViewBuilder();\n\n // Cross-reference maps (ecInstanceId -> builder array index)\n const schemaEcIdToIdx = new Map<number, number>();\n const enumRowIdToIdx = new Map<number, number>();\n const koqRowIdToIdx = new Map<number, number>();\n const catRowIdToIdx = new Map<number, number>();\n const classRowIdToIdx = new Map<number, number>();\n\n // Per-schema metadata for name-based class resolution\n const schemaInfos: Array<{ name: string; schemaIdx: number; classNameToIdx: Map<string, number> }> = [];\n\n // Per-schema item range tracking (indexed by schemaIdx)\n const schemaEnumStarts: number[] = [];\n const schemaEnumCounts: number[] = [];\n const schemaKoqStarts: number[] = [];\n const schemaKoqCounts: number[] = [];\n const schemaCatStarts: number[] = [];\n const schemaCatCounts: number[] = [];\n const schemaClassStarts: number[] = [];\n const schemaClassCounts: number[] = [];\n\n // Deferred class data for cross-reference resolution\n const pendingClasses: PendingClass[] = [];\n\n // ---- PropertyDefTable ----\n expectTag(reader, Tag.PropertyDefTable);\n const defCount = reader.readU32();\n // Each PreParsedDef consumes at least ~30 bytes (mix of u8/u16/u32 fields + string refs).\n // Use a conservative lower bound of 8 bytes to catch wildly oversized counts on malformed blobs.\n reader.validateCount(defCount, 8, \"PropertyDefTable\");\n const preParsedDefs: PreParsedDef[] = new Array(defCount);\n for (let i = 0; i < defCount; i++) {\n preParsedDefs[i] = {\n name: reader.readSRef(),\n kind: reader.readU8(),\n primitiveType: reader.readU16(),\n extType: reader.readSRef(),\n enumRowId: reader.readU32(),\n structClassRowId: reader.readU32(),\n koqRowId: reader.readU32(),\n catRowId: reader.readU32(),\n arrayMinOccurs: readOptionalU32(reader),\n arrayMaxOccurs: readOptionalU32(reader),\n navRelClassRowId: reader.readU32(),\n navDirection: reader.readU8(),\n isReadonly: reader.readU8() !== 0,\n isHidden: reader.readU8() !== 0,\n description: reader.readSRef(),\n };\n }\n\n // ---- SchemaTable ----\n expectTag(reader, Tag.SchemaTable);\n const schemaCount = reader.readU32();\n reader.validateCount(schemaCount, 8, \"SchemaTable\");\n for (let i = 0; i < schemaCount; i++) {\n const name = reader.readSRef();\n const vRead = reader.readU16();\n const vWrite = reader.readU16();\n const vMinor = reader.readU16();\n const alias = reader.readSRef();\n const label = reader.readSRef();\n const description = reader.readSRef();\n const ecInstanceId = reader.readU32();\n const isHidden = reader.readU8() !== 0;\n\n const schemaIdx = builder.addSchema({\n ecInstanceId,\n nameStringIdx: builder.internString(name),\n aliasStringIdx: builder.internString(alias),\n labelStringIdx: builder.internString(label),\n descriptionStringIdx: builder.internString(description),\n versionRead: vRead,\n versionWrite: vWrite,\n versionMinor: vMinor,\n classRangeStart: 0, classCount: 0,\n enumRangeStart: 0, enumCount: 0,\n koqRangeStart: 0, koqCount: 0,\n catRangeStart: 0, catCount: 0,\n isHidden,\n });\n schemaEcIdToIdx.set(ecInstanceId, schemaIdx);\n schemaInfos.push({ name, schemaIdx, classNameToIdx: new Map() });\n schemaEnumStarts.push(0); schemaEnumCounts.push(0);\n schemaKoqStarts.push(0); schemaKoqCounts.push(0);\n schemaCatStarts.push(0); schemaCatCounts.push(0);\n schemaClassStarts.push(0); schemaClassCounts.push(0);\n }\n\n /** Track an item's schema ownership and update range counters. */\n function trackItem(schemaEcId: number, globalIdx: number, starts: number[], counts: number[]): number {\n const schemaIdx = schemaEcIdToIdx.get(schemaEcId);\n if (schemaIdx === undefined)\n throw new Error(`SchemaView blob: unknown schema ecInstanceId ${schemaEcId}`);\n if (counts[schemaIdx] === 0)\n starts[schemaIdx] = globalIdx;\n counts[schemaIdx]++;\n return schemaIdx;\n }\n\n // ---- EnumTable ----\n expectTag(reader, Tag.EnumTable);\n const enumTotalCount = reader.readU32();\n reader.validateCount(enumTotalCount, 8, \"EnumTable\");\n for (let i = 0; i < enumTotalCount; i++) {\n const schemaEcId = reader.readU32();\n const schemaIdx = trackItem(schemaEcId, i, schemaEnumStarts, schemaEnumCounts);\n\n const eName = reader.readSRef();\n const ePrimType = reader.readU8();\n const eIsStrict = reader.readU8() !== 0;\n const eLabel = reader.readSRef();\n const eDesc = reader.readSRef();\n const eValuesJson = reader.readSRef();\n const eEcInstanceId = reader.readU32();\n\n const enumeratorStart = builder.enumeratorCount;\n let enumeratorCount = 0;\n if (eValuesJson) {\n try {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const values = JSON.parse(eValuesJson) as Array<{ Name?: string; IntValue?: number; StringValue?: string; DisplayLabel?: string; Description?: string }>;\n for (const v of values) {\n const value = v.IntValue !== undefined ? v.IntValue : (v.StringValue ?? \"\");\n const name = v.Name ?? (typeof value === \"string\" ? value : `${eName}${value}`);\n builder.addEnumerator({\n nameStringIdx: builder.internString(name),\n labelStringIdx: builder.internString(v.DisplayLabel),\n descriptionStringIdx: builder.internString(v.Description),\n value,\n });\n enumeratorCount++;\n }\n } catch (e) {\n Logger.logWarning(\"ecschema-metadata.SchemaView\", `Malformed EnumValues JSON for enumeration \"${eName}\": ${BentleyError.getErrorMessage(e)}`);\n }\n }\n\n const eIdx = builder.addEnumeration({\n ecInstanceId: eEcInstanceId,\n schemaIdx,\n nameStringIdx: builder.internString(eName),\n labelStringIdx: builder.internString(eLabel),\n descriptionStringIdx: builder.internString(eDesc),\n primitiveType: ePrimType,\n isStrict: eIsStrict,\n enumeratorStart,\n enumeratorCount,\n });\n enumRowIdToIdx.set(eEcInstanceId, eIdx);\n }\n\n // ---- KoQTable ----\n expectTag(reader, Tag.KoQTable);\n const koqTotalCount = reader.readU32();\n reader.validateCount(koqTotalCount, 8, \"KoQTable\");\n for (let i = 0; i < koqTotalCount; i++) {\n const schemaEcId = reader.readU32();\n const schemaIdx = trackItem(schemaEcId, i, schemaKoqStarts, schemaKoqCounts);\n\n const kName = reader.readSRef();\n const kLabel = reader.readSRef();\n const kDesc = reader.readSRef();\n const kPersUnit = reader.readSRef();\n const kRelError = reader.readF64();\n const kPresUnits = reader.readSRef();\n const kEcInstanceId = reader.readU32();\n\n const kIdx = builder.addKoq({\n ecInstanceId: kEcInstanceId,\n schemaIdx,\n nameStringIdx: builder.internString(kName),\n labelStringIdx: builder.internString(kLabel),\n descriptionStringIdx: builder.internString(kDesc),\n persistenceUnitStringIdx: builder.internString(kPersUnit),\n presentationFormatsStringIdx: builder.internString(kPresUnits),\n relativeError: kRelError,\n });\n koqRowIdToIdx.set(kEcInstanceId, kIdx);\n }\n\n // ---- PropCatTable ----\n expectTag(reader, Tag.PropCatTable);\n const catTotalCount = reader.readU32();\n reader.validateCount(catTotalCount, 8, \"PropCatTable\");\n for (let i = 0; i < catTotalCount; i++) {\n const schemaEcId = reader.readU32();\n const schemaIdx = trackItem(schemaEcId, i, schemaCatStarts, schemaCatCounts);\n\n const pcName = reader.readSRef();\n const pcLabel = reader.readSRef();\n const pcDesc = reader.readSRef();\n const pcPriority = reader.readI32();\n const pcEcInstanceId = reader.readU32();\n\n const pcIdx = builder.addPropertyCategory({\n ecInstanceId: pcEcInstanceId,\n schemaIdx,\n nameStringIdx: builder.internString(pcName),\n labelStringIdx: builder.internString(pcLabel),\n descriptionStringIdx: builder.internString(pcDesc),\n priority: pcPriority,\n });\n catRowIdToIdx.set(pcEcInstanceId, pcIdx);\n }\n\n // ---- ClassTable ----\n expectTag(reader, Tag.ClassTable);\n const classTotalCount = reader.readU32();\n reader.validateCount(classTotalCount, 8, \"ClassTable\");\n for (let i = 0; i < classTotalCount; i++) {\n const schemaEcId = reader.readU32();\n const schemaIdx = trackItem(schemaEcId, i, schemaClassStarts, schemaClassCounts);\n const schemaInfo = schemaInfos[schemaIdx];\n\n const cName = reader.readSRef();\n const cType = reader.readU8();\n const cModifier = reader.readU8();\n const cLabel = reader.readSRef();\n const cDesc = reader.readSRef();\n let relStrength: StrengthType = StrengthType.Referencing;\n let relStrengthDir: StrengthDirection = StrengthDirection.Forward;\n if (cType === ClassType.Relationship) {\n relStrength = reader.readU8();\n relStrengthDir = reader.readU8();\n }\n const cEcInstanceId = reader.readU32();\n // Tri-state hidden: 0=undefined (no CA, schema doesn't hide), 1=true (hidden), 2=false (explicitly shown)\n const cHiddenByte = reader.readU8();\n const cIsHidden: boolean | undefined = cHiddenByte === 1 ? true : cHiddenByte === 2 ? false : undefined;\n\n // Base classes (count-prefixed)\n const baseCount = reader.readU16();\n const baseClasses: Array<{ schemaName: string; className: string; ordinal: number }> = [];\n for (let b = 0; b < baseCount; b++) {\n baseClasses.push({\n schemaName: reader.readSRef(),\n className: reader.readSRef(),\n ordinal: reader.readU8(),\n });\n }\n\n // Property refs (count-prefixed)\n const propRefCount = reader.readU16();\n const propRefs: PendingPropRef[] = [];\n for (let p = 0; p < propRefCount; p++) {\n propRefs.push({\n preDefIdx: reader.readU32(),\n labelStringIdx: builder.internString(reader.readSRef()),\n priority: reader.readI32(),\n ecInstanceId: reader.readU32(),\n });\n }\n\n // Constraints (count-prefixed, only for relationships)\n const constraints: PendingConstraint[] = [];\n if (cType === ClassType.Relationship) {\n const constrCount = reader.readU8();\n for (let c = 0; c < constrCount; c++) {\n const rcEnd = reader.readU8();\n const rcMultLower = reader.readU32();\n const rcMultUpper = reader.readU32();\n const rcIsPoly = reader.readU8() !== 0;\n const rcRoleLabel = reader.readSRef();\n const rcAbsSchema = reader.readSRef();\n const rcAbsClass = reader.readSRef();\n\n // Constraint classes (count-prefixed)\n const ccCount = reader.readU8();\n const constraintClasses: Array<{ schemaName: string; className: string }> = [];\n for (let cc = 0; cc < ccCount; cc++) {\n constraintClasses.push({\n schemaName: reader.readSRef(),\n className: reader.readSRef(),\n });\n }\n\n constraints.push({\n relEnd: rcEnd,\n isPolymorphic: rcIsPoly,\n multiplicityLower: rcMultLower,\n multiplicityUpper: rcMultUpper,\n roleLabel: rcRoleLabel,\n abstractSchemaName: rcAbsSchema,\n abstractClassName: rcAbsClass,\n constraintClasses,\n });\n }\n }\n\n const nameStringIdx = builder.internString(cName);\n const classIdx = builder.addClass({\n ecInstanceId: cEcInstanceId,\n schemaIdx,\n nameStringIdx,\n labelStringIdx: builder.internString(cLabel),\n descriptionStringIdx: builder.internString(cDesc),\n type: cType,\n modifier: cModifier,\n baseClassIdx: -1,\n mixinStartIdx: -1,\n mixinCount: 0,\n ownPropStart: 0,\n ownPropCount: 0,\n strength: relStrength,\n strengthDirection: relStrengthDir,\n sourceConstraintIdx: -1,\n targetConstraintIdx: -1,\n isHidden: cIsHidden,\n });\n schemaInfo.classNameToIdx.set(cName.toLowerCase(), classIdx);\n classRowIdToIdx.set(cEcInstanceId, classIdx);\n\n pendingClasses.push({\n schemaIdx,\n classIdx,\n ecInstanceId: cEcInstanceId,\n nameStringIdx,\n labelStringIdx: builder.internString(cLabel),\n descriptionStringIdx: builder.internString(cDesc),\n type: cType,\n modifier: cModifier,\n relStrength,\n relStrengthDir,\n baseClasses,\n propRefs,\n constraints,\n schemaName: schemaInfo.name,\n isHidden: cIsHidden,\n });\n }\n\n // ---- Finalize per-schema item ranges ----\n for (let i = 0; i < schemaCount; i++) {\n builder.updateSchemaRanges(i, {\n classRangeStart: schemaClassStarts[i] ?? 0,\n classCount: schemaClassCounts[i] ?? 0,\n enumRangeStart: schemaEnumStarts[i] ?? 0,\n enumCount: schemaEnumCounts[i] ?? 0,\n koqRangeStart: schemaKoqStarts[i] ?? 0,\n koqCount: schemaKoqCounts[i] ?? 0,\n catRangeStart: schemaCatStarts[i] ?? 0,\n catCount: schemaCatCounts[i] ?? 0,\n });\n }\n\n // Build a global name resolver: \"SchemaName:ClassName\" -> classIdx\n const classResolver = new Map<string, number>();\n for (const s of schemaInfos) {\n for (const [lowerName, idx] of s.classNameToIdx)\n classResolver.set(`${s.name.toLowerCase()}:${lowerName}`, idx);\n }\n\n // Resolve pre-parsed defs to PropertyDef objects. Maps preParsedDef index -> builder defIdx.\n const danglingRefs: string[] = [];\n const resolvedDefMap = new Map<number, number>();\n const brokenDefs = new Set<number>();\n\n for (let i = 0; i < preParsedDefs.length; i++) {\n const prDef = preParsedDefs[i];\n\n let structClassIdx = -1;\n if (prDef.structClassRowId !== 0) {\n structClassIdx = classRowIdToIdx.get(prDef.structClassRowId) ?? -1;\n if (structClassIdx === -1) {\n brokenDefs.add(i);\n danglingRefs.push(`Dropped properties with struct class rowId ${prDef.structClassRowId}`);\n continue;\n }\n }\n\n let navRelClassIdx = -1;\n if (prDef.navRelClassRowId !== 0) {\n navRelClassIdx = classRowIdToIdx.get(prDef.navRelClassRowId) ?? -1;\n if (navRelClassIdx === -1) {\n brokenDefs.add(i);\n danglingRefs.push(`Dropped properties with nav relationship rowId ${prDef.navRelClassRowId}`);\n continue;\n }\n }\n\n let enumIdx = -1;\n if (prDef.enumRowId !== 0) {\n enumIdx = enumRowIdToIdx.get(prDef.enumRowId) ?? -1;\n if (enumIdx === -1)\n danglingRefs.push(`Unresolved enum rowId ${prDef.enumRowId}`);\n }\n\n let koqIdx = -1;\n if (prDef.koqRowId !== 0)\n koqIdx = koqRowIdToIdx.get(prDef.koqRowId) ?? -1;\n\n let categoryIdx = -1;\n if (prDef.catRowId !== 0)\n categoryIdx = catRowIdToIdx.get(prDef.catRowId) ?? -1;\n\n const def: PropertyDef = {\n nameStringIdx: builder.internString(prDef.name),\n descriptionStringIdx: builder.internString(prDef.description),\n kind: prDef.kind,\n primitiveType: prDef.primitiveType,\n extTypeStringIdx: builder.internString(prDef.extType),\n enumIdx,\n koqIdx,\n structClassIdx,\n navRelClassIdx,\n navDirection: prDef.navDirection,\n categoryIdx,\n isReadOnly: prDef.isReadonly,\n isHidden: prDef.isHidden,\n arrayMinOccurs: prDef.arrayMinOccurs,\n arrayMaxOccurs: prDef.arrayMaxOccurs,\n };\n\n resolvedDefMap.set(i, builder.addPropertyDef(def));\n }\n\n // Resolve cross-references and finalize classes\n for (const pc of pendingClasses) {\n pc.baseClasses.sort((a, b) => a.ordinal - b.ordinal);\n const classFullName = `${pc.schemaName}:${builder.getString(pc.nameStringIdx)}`;\n\n let baseClassIdx = -1;\n const mixinStartIdx = pc.baseClasses.length > 1 ? builder.classMixinCount : -1;\n let mixinCount = 0;\n\n for (const bc of pc.baseClasses) {\n const bcKey = `${bc.schemaName.toLowerCase()}:${bc.className.toLowerCase()}`;\n const bcIdx = classResolver.get(bcKey) ?? -1;\n if (bc.ordinal === 0) {\n if (bcIdx === -1 && bc.schemaName)\n danglingRefs.push(`${classFullName} -> base class ${bc.schemaName}:${bc.className}`);\n baseClassIdx = bcIdx;\n } else {\n if (bcIdx === -1) {\n danglingRefs.push(`${classFullName} -> mixin ${bc.schemaName}:${bc.className}`);\n continue;\n }\n builder.addClassMixin(bcIdx);\n mixinCount++;\n }\n }\n\n const ownPropStart = builder.propertyRefCount;\n for (const pr of pc.propRefs) {\n if (brokenDefs.has(pr.preDefIdx))\n continue;\n const defIdx = resolvedDefMap.get(pr.preDefIdx);\n if (defIdx === undefined)\n continue;\n builder.addPropertyRef({\n ecInstanceId: pr.ecInstanceId,\n defIdx,\n labelStringIdx: pr.labelStringIdx,\n priority: pr.priority,\n });\n }\n\n let sourceConstraintIdx = -1;\n let targetConstraintIdx = -1;\n for (const con of pc.constraints) {\n const absKey = con.abstractSchemaName && con.abstractClassName\n ? `${con.abstractSchemaName.toLowerCase()}:${con.abstractClassName.toLowerCase()}`\n : \"\";\n const absClassIdx = absKey ? (classResolver.get(absKey) ?? -1) : -1;\n if (absClassIdx === -1 && absKey)\n danglingRefs.push(`${classFullName} constraint -> abstract ${con.abstractSchemaName}:${con.abstractClassName}`);\n\n const classRefStart = builder.constraintClassRefCount;\n let classRefCount = 0;\n for (const cc of con.constraintClasses) {\n const ccKey = `${cc.schemaName.toLowerCase()}:${cc.className.toLowerCase()}`;\n const ccIdx = classResolver.get(ccKey) ?? -1;\n if (ccIdx === -1) {\n danglingRefs.push(`${classFullName} constraint -> class ${cc.schemaName}:${cc.className}`);\n continue;\n }\n builder.addConstraintClassRef(ccIdx);\n classRefCount++;\n }\n\n const constraintIdx = builder.addRelConstraint({\n abstractConstraintIdx: absClassIdx,\n polymorphic: con.isPolymorphic,\n multiplicityLower: con.multiplicityLower,\n multiplicityUpper: con.multiplicityUpper,\n roleLabelStringIdx: builder.internString(con.roleLabel),\n classRefStart,\n classRefCount,\n });\n\n if (con.relEnd === 0)\n sourceConstraintIdx = constraintIdx;\n else\n targetConstraintIdx = constraintIdx;\n }\n\n const updatedClass: ClassData = {\n ecInstanceId: pc.ecInstanceId,\n schemaIdx: pc.schemaIdx,\n nameStringIdx: pc.nameStringIdx,\n labelStringIdx: pc.labelStringIdx,\n descriptionStringIdx: pc.descriptionStringIdx,\n type: pc.type,\n modifier: pc.modifier,\n baseClassIdx,\n mixinStartIdx,\n mixinCount,\n ownPropStart,\n ownPropCount: builder.propertyRefCount - ownPropStart,\n strength: pc.relStrength,\n strengthDirection: pc.relStrengthDir,\n sourceConstraintIdx,\n targetConstraintIdx,\n isHidden: pc.isHidden,\n };\n builder.updateClass(pc.classIdx, updatedClass);\n }\n\n if (danglingRefs.length > 0) {\n const cap = 20;\n const lines = danglingRefs.length <= cap ? danglingRefs : [...danglingRefs.slice(0, cap), `... and ${danglingRefs.length - cap} more`];\n Logger.logWarning(\"ecschema-metadata.SchemaView\", `${danglingRefs.length} unresolved cross-reference(s) in schema view blob (likely from excluded schemas):\\n ${lines.join(\"\\n \")}`);\n }\n\n return builder.build(schemaToken);\n}\n\n"]}
|