@itwin/core-backend 5.12.0-dev.5 → 5.12.0-dev.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
  2. package/lib/cjs/ChangeSummaryManager.js +33 -37
  3. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  4. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  5. package/lib/cjs/ChangesetECAdaptor.js +4 -7
  6. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  7. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  8. package/lib/cjs/ElementAspect.js +6 -10
  9. package/lib/cjs/ElementAspect.js.map +1 -1
  10. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  11. package/lib/cjs/ElementTreeWalker.js +16 -24
  12. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  13. package/lib/cjs/IModelDb.d.ts.map +1 -1
  14. package/lib/cjs/IModelDb.js +63 -83
  15. package/lib/cjs/IModelDb.js.map +1 -1
  16. package/lib/cjs/Relationship.d.ts.map +1 -1
  17. package/lib/cjs/Relationship.js +8 -11
  18. package/lib/cjs/Relationship.js.map +1 -1
  19. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  20. package/lib/cjs/ViewDefinition.js +8 -12
  21. package/lib/cjs/ViewDefinition.js.map +1 -1
  22. package/lib/cjs/ViewStore.d.ts.map +1 -1
  23. package/lib/cjs/ViewStore.js +6 -8
  24. package/lib/cjs/ViewStore.js.map +1 -1
  25. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  26. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +8 -11
  27. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  28. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  29. package/lib/cjs/internal/ChannelAdmin.js +6 -10
  30. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  31. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  32. package/lib/cjs/internal/annotations/fields.js +19 -43
  33. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  34. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  35. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +2 -3
  36. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  37. package/lib/esm/ChangeSummaryManager.d.ts.map +1 -1
  38. package/lib/esm/ChangeSummaryManager.js +34 -38
  39. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  40. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  41. package/lib/esm/ChangesetECAdaptor.js +5 -8
  42. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  43. package/lib/esm/ElementAspect.d.ts.map +1 -1
  44. package/lib/esm/ElementAspect.js +8 -12
  45. package/lib/esm/ElementAspect.js.map +1 -1
  46. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  47. package/lib/esm/ElementTreeWalker.js +18 -26
  48. package/lib/esm/ElementTreeWalker.js.map +1 -1
  49. package/lib/esm/IModelDb.d.ts.map +1 -1
  50. package/lib/esm/IModelDb.js +64 -84
  51. package/lib/esm/IModelDb.js.map +1 -1
  52. package/lib/esm/Relationship.d.ts.map +1 -1
  53. package/lib/esm/Relationship.js +9 -12
  54. package/lib/esm/Relationship.js.map +1 -1
  55. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  56. package/lib/esm/ViewDefinition.js +10 -14
  57. package/lib/esm/ViewDefinition.js.map +1 -1
  58. package/lib/esm/ViewStore.d.ts.map +1 -1
  59. package/lib/esm/ViewStore.js +7 -9
  60. package/lib/esm/ViewStore.js.map +1 -1
  61. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  62. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +10 -13
  63. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  64. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  65. package/lib/esm/internal/ChannelAdmin.js +7 -11
  66. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  67. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  68. package/lib/esm/internal/annotations/fields.js +21 -45
  69. package/lib/esm/internal/annotations/fields.js.map +1 -1
  70. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  71. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +2 -3
  72. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  73. package/lib/esm/test/imodel/IModel.test.js +7 -1
  74. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  75. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"ChangesetECAdaptor.js","sourceRoot":"","sources":["../../src/ChangesetECAdaptor.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 ECDb\n */\nimport { DbResult, Guid, GuidString, Id64String } from \"@itwin/core-bentley\";\nimport { AnyDb, SqliteChange, SqliteChangeOp, SqliteChangesetReader, SqliteValueStage } from \"./SqliteChangesetReader\";\nimport { Base64EncodedString } from \"@itwin/core-common\";\nimport { ECDb } from \"./ECDb\";\nimport { _nativeDb } from \"./internal/Symbols\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */ // This file is marked as deprecated and will be removed subsequently, so we can allow usage of deprecated APIs within it.\n\ninterface IClassRef {\n classId: Id64String;\n classFullName: string;\n}\n\ninterface IClassMap {\n readonly id: Id64String;\n readonly name: string;\n readonly mapStrategy: \"NotMapped\" | \"OwnTable\" | \"TablePerHierarchy\" | \"ExistingTable\" | \"ForeignKeyInTargetTable\" | \"ForeignKeyInSourceTable\";\n readonly type: \"Entity\" | \"Relationship\" | \"Struct\" | \"CustomAttribute\";\n readonly modifier: \"None\" | \"Abstract\" | \"Sealed\";\n readonly properties: IProperty[];\n}\n\ninterface IDateTimeInfo {\n readonly dateTimeKind?: \"Utc\" | \"Local\" | \"Unspecified\";\n readonly dateTimeComponent?: \"DateTime\" | \"Date\" | \"TimeOfDay\";\n}\n\ninterface IProperty {\n readonly id: Id64String;\n readonly name: string;\n readonly kind: \"Primitive\" | \"Struct\" | \"PrimitiveArray\" | \"StructArray\" | \"Navigation\";\n readonly primitiveType?: \"Binary\" | \"Boolean\" | \"DateTime\" | \"Double\" | \"Integer\" | \"Long\" | \"Point2d\" | \"Point3d\" | \"String\" | \"IGeometry\";\n readonly extendedTypeName?: string;\n readonly navigationRelationship?: IClassRef;\n readonly structClass?: IClassRef;\n readonly dateTimeInfo?: IDateTimeInfo;\n readonly columns: IColumn[];\n\n}\n\ninterface IColumn {\n readonly table: string;\n readonly column: string;\n readonly type: \"Any\" | \"Boolean\" | \"Blob\" | \"Timestamp\" | \"Real\" | \"Integer\" | \"Text\";\n readonly columnKind: \"Default\" | \"Id\" | \"ClassId\" | \"Shared\";\n readonly accessString: string;\n readonly isVirtual: boolean;\n}\n\ninterface ITable {\n readonly id: Id64String;\n readonly name: string;\n readonly type: \"Primary\" | \"Joined\" | \"Existing\" | \"Overflow\" | \"Virtual\";\n readonly exclusiveRootClassId: Id64String;\n readonly isClassIdVirtual: boolean;\n}\n\nclass ECDbMap {\n private _cachedClassMaps = new Map<Id64String, IClassMap>();\n private _cacheTables = new Map<string, ITable>();\n public constructor(public readonly db: AnyDb) { }\n public getAllDerivedClasses(classFullName: string) {\n const sql = `\n SELECT format('0x%x', ch.ClassId)\n FROM [ec_cache_ClassHierarchy] [ch]\n JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]\n JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]\n WHERE (([sc].[Alias] = :schemaNameOrAlias\n OR [sc].[Name] = :schemaNameOrAlias)\n AND ([cs].[Name] = :className))\n `;\n return this.db.withPreparedSqliteStatement(sql, (stmt) => {\n const parts = classFullName.indexOf(\".\") !== -1 ? classFullName.split(\".\") : classFullName.split(\":\");\n stmt.bindString(\":schemaNameOrAlias\", parts[0]);\n stmt.bindString(\":className\", parts[1]);\n const classIds = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW)\n classIds.push(stmt.getValueString(0));\n return classIds;\n });\n }\n public getTable(tableName: string): ITable | undefined {\n if (this._cacheTables.has(tableName))\n return this._cacheTables.get(tableName);\n\n const sql = `\n SELECT\n JSON_OBJECT (\n 'id', FORMAT ('0x%x', [t].[id]),\n 'name', [t].[Name],\n 'type', (\n CASE\n [t].[type]\n WHEN 0 THEN 'Primary'\n WHEN 1 THEN 'Joined'\n WHEN 2 THEN 'Existing'\n WHEN 3 THEN 'Overflow'\n WHEN 4 THEN 'Virtual'\n END\n ),\n 'exclusiveRootClassId', FORMAT ('0x%x',\n COALESCE (\n [t].[ExclusiveRootClassId], (\n SELECT [parent].[ExclusiveRootClassId]\n FROM [ec_Table] [parent]\n WHERE [parent].[Id] = [t].[ParentTableId] AND [parent].[Type] = 1))),\n 'isClassIdVirtual', (\n SELECT\n [c].[IsVirtual]\n FROM\n [ec_Column] [c]\n WHERE\n [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]\n )\n )\n FROM [ec_Table] [t]\n WHERE\n [t].[Name] = ?;\n `;\n\n return this.db.withPreparedSqliteStatement(sql, (stmt) => {\n stmt.bindString(1, tableName);\n if (stmt.step() === DbResult.BE_SQLITE_ROW) {\n const table = JSON.parse(stmt.getValueString(0), (key, value) => {\n if (value === null)\n return undefined;\n\n if (key === \"isClassIdVirtual\")\n return value === 0 ? false : true;\n\n return value;\n }) as ITable;\n\n this._cacheTables.set(tableName, table);\n return table;\n }\n return undefined;\n });\n }\n public getClassMap(classId: Id64String): IClassMap | undefined {\n if (this._cachedClassMaps.has(classId))\n return this._cachedClassMaps.get(classId);\n\n const sql = `\n SELECT\n JSON_OBJECT(\n 'id', format('0x%x', cs.id),\n 'name', format('%s:%s', ss.Name, cs.Name),\n 'mapStrategy',\n (\n CASE cm.MapStrategy\n WHEN 0 THEN 'NotMapped'\n WHEN 1 THEN 'OwnTable'\n WHEN 2 THEN 'TablePerHierarchy'\n WHEN 3 THEN 'ExistingTable'\n WHEN 10 THEN 'ForeignKeyInTargetTable'\n WHEN 11 THEN 'ForeignKeyInSourceTable'\n END\n ),\n 'type',\n (\n CASE cs.Type\n WHEN 0 THEN 'Entity'\n WHEN 1 THEN 'Relationship'\n WHEN 2 THEN 'Struct'\n WHEN 3 THEN 'CustomAttribute'\n END\n ),\n 'modifier',\n (\n CASE cs.Modifier\n WHEN 0 THEN 'None'\n WHEN 1 THEN 'Abstract'\n WHEN 2 THEN 'Sealed'\n END\n ),\n 'properties',\n (\n SELECT\n JSON_GROUP_ARRAY(JSON(propJson))\n FROM\n (\n SELECT\n JSON_OBJECT(\n 'id', format('0x%x', pt.id),\n 'name', pt.Name,\n 'kind',\n (\n CASE pt.Kind\n WHEN 0 THEN 'Primitive'\n WHEN 1 THEN 'Struct'\n WHEN 2 THEN 'PrimitiveArray'\n WHEN 3 THEN 'StructArray'\n WHEN 4 THEN 'Navigation'\n END\n ),\n 'primitiveType',\n (\n CASE pt.PrimitiveType\n WHEN 0x101 THEN 'Binary'\n WHEN 0x201 THEN 'Boolean'\n WHEN 0x301 THEN 'DateTime'\n WHEN 0x401 THEN 'Double'\n WHEN 0x501 THEN 'Integer'\n WHEN 0x601 THEN 'Long'\n WHEN 0x701 THEN 'Point2d'\n WHEN 0x801 THEN 'Point3d'\n WHEN 0x901 THEN 'String'\n WHEN 0xa01 THEN 'IGeometry'\n END\n ),\n 'extendedTypeName', ExtendedTypeName,\n 'navigationRelationship',\n (\n SELECT\n JSON_OBJECT(\n 'classId', format('0x%x', nc.Id),\n 'classFullName', format('%s:%s', ns.Name, nc.Name)\n )\n FROM ec_Class nc\n JOIN ec_Schema ns ON ns.Id = nc.SchemaId\n WHERE\n nc.Id = pt.NavigationRelationshipClassId\n ),\n 'structClass',\n (\n SELECT\n JSON_OBJECT(\n 'classId', format('0x%x', nc.Id),\n 'classFullName', format('%s:%s', ns.Name, nc.Name)\n )\n FROM ec_Class nc\n JOIN ec_Schema ns ON ns.Id = nc.SchemaId\n WHERE\n nc.Id = pt.StructClassId\n ),\n 'dateTimeInfo', (\n SELECT\n JSON_OBJECT (\n 'dateTimeKind', (\n CASE\n WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'\n WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'\n ELSE 'Unspecified'\n END\n ),\n 'dateTimeComponent', (\n CASE\n WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'\n WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'\n WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'\n ELSE 'DateTime'\n END\n )\n )\n FROM\n [ec_CustomAttribute] [ca]\n JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]\n JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]\n WHERE\n [ca].[ContainerType] = 992\n AND [cl].[Name] = 'DateTimeInfo'\n AND [sc].[Name] = 'CoreCustomAttributes'\n AND [ca].[ContainerId] = [pt].[Id]\n ),\n 'columns',\n (\n SELECT\n JSON_GROUP_ARRAY(JSON(columnJson))\n FROM\n (\n SELECT\n JSON_OBJECT(\n 'table', tb.Name,\n 'column', cc.Name,\n 'type',\n (\n CASE cc.Type\n WHEN 0 THEN 'Any'\n WHEN 1 THEN 'Boolean'\n WHEN 2 THEN 'Blob'\n WHEN 3 THEN 'Timestamp'\n WHEN 4 THEN 'Real'\n WHEN 5 THEN 'Integer'\n WHEN 6 THEN 'Text'\n END\n ),\n 'columnKind',\n (\n CASE cc.ColumnKind\n WHEN 0 THEN 'Default'\n WHEN 1 THEN 'Id'\n WHEN 2 THEN 'ClassId'\n WHEN 4 THEN 'SharedData'\n END\n ),\n 'accessString', pp0.AccessString,\n 'isVirtual', cc.IsVirtual OR tb.Type = 4\n ) columnJson\n FROM [ec_PropertyMap] [pm0]\n JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]\n JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]\n JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]\n WHERE\n [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id\n )\n )\n ) propJson\n FROM [ec_PropertyMap] [pm]\n JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]\n JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]\n WHERE\n pm.ClassId = cs.Id\n GROUP BY\n pt.Id\n )\n )\n ) classDef\n FROM [ec_Class] [cs]\n JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]\n JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]\n WHERE\n [cs].[Id] = ?\n `;\n\n return this.db.withPreparedSqliteStatement(sql, (stmt) => {\n stmt.bindId(1, classId);\n if (stmt.step() === DbResult.BE_SQLITE_ROW) {\n const classMap = JSON.parse(stmt.getValueString(0), (key, value) => {\n if (value === null) {\n return undefined;\n }\n if (key === \"isVirtual\") {\n return value === 0 ? false : true;\n }\n return value;\n }) as IClassMap;\n\n this._cachedClassMaps.set(classId, classMap);\n return classMap;\n }\n return undefined;\n });\n }\n}\n\n/**\n * Record meta data for the change.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangeMeta]($backend) with [ChangesetReader]($backend) instead.\n * */\nexport interface ChangeMetaData {\n /** list of tables making up this EC change */\n tables: string[];\n /** full name of the class of this EC change */\n classFullName?: string;\n /** sqlite operation that caused the change */\n op: SqliteChangeOp;\n /** version of the value read from sqlite change */\n stage: SqliteValueStage;\n /** if classId for the change was not found in db then fallback class for the table */\n fallbackClassId?: Id64String;\n /** list of change index making up this change (one per table) */\n changeIndexes: number[];\n}\n\n/**\n * Represent EC change derived from low level sqlite change\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangeInstance]($backend) with [ChangesetReader]($backend) instead.\n */\nexport interface ChangedECInstance {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n ECInstanceId: Id64String;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n ECClassId?: Id64String;\n $meta?: ChangeMetaData;\n [key: string]: any;\n}\n\n/**\n * Helper function to convert between JS DateTime & SQLite JulianDay values.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. The DateTime namespace is deprecated and will be removed in a future release.\n * */\nnamespace DateTime {\n /**\n * Convert JS date to JulianDay value.\n * @param dt JS Date object.\n * @param convertToUtc convert the input value to UTC.\n * @returns julian day value\n */\n export function toJulianDay(dt: Date, convertToUtc = true): number {\n const utcOffset = convertToUtc ? dt.getTimezoneOffset() / 1440 : 0;\n return (dt.valueOf() / 86400000) - utcOffset + 2440587.5;\n }\n /**\n * Convert Julian day to JS Date object\n * @param jd JulianDay value for date/time\n * @param isLocalTime if julian day is local time or UTC\n * @returns JS Date object.\n */\n export function fromJulianDay(jd: number, isLocalTime: boolean): Date {\n const utcOffset = isLocalTime ? 0 : new Date().getTimezoneOffset() / 1440;\n return new Date((jd - 2440587.5 + utcOffset) * 86400000);\n }\n}\n\n/**\n * Represents a cache for unifying EC changes.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangeCache]($backend) with [ChangesetReader]($backend) instead.\n */\nexport interface ECChangeUnifierCache extends Disposable {\n /**\n * Retrieves the value associated with the specified key from the cache.\n * @param key - The key to retrieve the value for.\n * @returns The value associated with the key, or undefined if the key is not found.\n */\n get(key: string): ChangedECInstance | undefined;\n\n /**\n * Sets the value associated with the specified key in the cache.\n * @param key - The key to set the value for.\n * @param value - The value to be associated with the key.\n */\n set(key: string, value: ChangedECInstance): void;\n\n /**\n * Returns an iterator for all the values in the cache.\n * @returns An iterator for all the values in the cache.\n */\n all(): IterableIterator<ChangedECInstance>;\n\n /**\n * Returns the number of entries in the cache.\n * @returns The number of entries in the cache.\n */\n count(): number;\n}\n/**\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangeUnifierCache.createInMemoryCache]($backend) / [ChangeUnifierCache.createSqliteBackedCache]($backend) instead.\n*/\nexport namespace ECChangeUnifierCache {\n /**\n * Creates and returns a new in-memory cache for EC change unification.\n * @note This cache is fast but recommended for small to medium size changesets. As it store changes in memory using a hash map, it may run out of memory for larger changesets.\n * @returns {ECChangeUnifierCache} An instance of cache that store changes in memory using a hash map.\n */\n export function createInMemoryCache(): ECChangeUnifierCache {\n return new InMemoryInstanceCache();\n }\n\n /**\n * Creates an ECChangeUnifierCache that is backed by a database.\n * @note This cache is suitable for larger changesets and uses SQLite to store changes. It is slower than the in-memory cache but can handle larger datasets without running out of memory.\n * @param db - The database instance to use for caching.\n * @param bufferedReadInstanceSizeInBytes - The size in bytes for buffered read instances. Defaults to 10 MB.\n * @returns An instance of ECChangeUnifierCache backed by SQLite temp db.\n */\n export function createSqliteBackedCache(db: AnyDb, bufferedReadInstanceSizeInBytes = 1024 * 1024 * 10): ECChangeUnifierCache {\n return new SqliteBackedInstanceCache(db, bufferedReadInstanceSizeInBytes);\n }\n}\n\n/**\n * In-memory cache for storing changed EC instances.\n */\nclass InMemoryInstanceCache implements ECChangeUnifierCache {\n private readonly _cache = new Map<string, ChangedECInstance>();\n\n /**\n * Retrieves the changed EC instance associated with the specified key.\n * @param key - The key used to retrieve the instance.\n * @returns The changed EC instance, or undefined if not found.\n */\n public get(key: string): ChangedECInstance | undefined {\n return this._cache.get(key);\n }\n\n /**\n * Sets the changed EC instance associated with the specified key.\n * @param key - The key used to store the instance.\n * @param value - The changed EC instance to be stored.\n */\n public set(key: string, value: ChangedECInstance): void {\n const meta = value.$meta as any;\n // Remove undefined keys\n if (meta) {\n Object.keys(meta).forEach((k) => meta[k] === undefined && delete meta[k]);\n }\n this._cache.set(key, value);\n }\n\n /**\n * Returns an iterator over all the changed EC instances in the cache.\n * @returns An iterator over all the changed EC instances.\n */\n public *all(): IterableIterator<ChangedECInstance> {\n for (const key of Array.from(this._cache.keys()).sort()) {\n const instance = this._cache.get(key);\n if (instance) {\n yield instance;\n }\n }\n }\n\n /**\n * Returns the number of changed EC instances in the cache.\n * @returns The number of changed EC instances.\n */\n public count(): number {\n return this._cache.size;\n }\n\n /**\n * Disposes the cache.\n */\n public [Symbol.dispose](): void {\n // Implementation details\n }\n}\n\n/**\n * Represents a cache for unifying EC changes in a SQLite-backed instance cache.\n */\nclass SqliteBackedInstanceCache implements ECChangeUnifierCache {\n private readonly _cacheTable = `[temp].[${Guid.createValue()}]`;\n public static readonly defaultBufferSize = 1024 * 1024 * 10; // 10MB\n /**\n * Creates an instance of SqliteBackedInstanceCache.\n * @param _db The underlying database connection.\n * @param bufferedReadInstanceSizeInBytes The size of read instance buffer defaults to 10Mb.\n * @throws Error if bufferedReadInstanceSizeInBytes is less than or equal to 0.\n */\n public constructor(private readonly _db: AnyDb, public readonly bufferedReadInstanceSizeInBytes: number = SqliteBackedInstanceCache.defaultBufferSize) {\n if (bufferedReadInstanceSizeInBytes <= 0)\n throw new Error(\"bufferedReadInstanceCount must be greater than 0\");\n this.createTempTable();\n }\n\n /**\n * Creates a temporary table in the database for caching instances.\n * @throws Error if unable to create the temporary table.\n */\n private createTempTable(): void {\n this._db.withSqliteStatement(`CREATE TABLE ${this._cacheTable} ([key] text primary key, [value] text)`, (stmt) => {\n if (DbResult.BE_SQLITE_DONE !== stmt.step())\n throw new Error(\"unable to create temp table\");\n });\n }\n\n /**\n * Drops the temporary table from the database.\n * @throws Error if unable to drop the temporary table.\n */\n private dropTempTable(): void {\n if (this._db instanceof ECDb) {\n this._db.saveChanges();\n this._db.clearStatementCache();\n } else {\n this._db[_nativeDb].saveChanges();\n this._db.clearCaches();\n }\n this._db.withSqliteStatement(`DROP TABLE IF EXISTS ${this._cacheTable}`, (stmt) => {\n if (DbResult.BE_SQLITE_DONE !== stmt.step())\n throw new Error(\"unable to drop temp table\");\n });\n }\n\n /**\n * Retrieves the changed EC instance from the cache based on the specified key.\n * @param key The key of the instance.\n * @returns The changed EC instance if found, otherwise undefined.\n */\n public get(key: string): ChangedECInstance | undefined {\n return this._db.withPreparedSqliteStatement(`SELECT [value] FROM ${this._cacheTable} WHERE [key]=?`, (stmt) => {\n stmt.bindString(1, key);\n if (stmt.step() === DbResult.BE_SQLITE_ROW) {\n const out = JSON.parse(stmt.getValueString(0), Base64EncodedString.reviver) as ChangedECInstance;\n return out;\n }\n return undefined;\n });\n }\n\n /**\n * Sets the changed EC instance in the cache with the specified key.\n * @param key The key of the instance.\n * @param value The changed EC instance to be set.\n */\n public set(key: string, value: ChangedECInstance): void {\n const shallowCopy = Object.assign({}, value);\n this._db.withPreparedSqliteStatement(`INSERT INTO ${this._cacheTable} ([key], [value]) VALUES (?, ?) ON CONFLICT ([key]) DO UPDATE SET [value] = [excluded].[value]`, (stmt) => {\n stmt.bindString(1, key);\n stmt.bindString(2, JSON.stringify(shallowCopy, Base64EncodedString.replacer));\n stmt.step();\n });\n }\n\n /**\n * Returns an iterator for all the changed EC instances in the cache.\n * @returns An iterator for all the changed EC instances.\n */\n public *all(): IterableIterator<ChangedECInstance> {\n const sql = `\n SELECT JSON_GROUP_ARRAY (JSON([value]))\n FROM (SELECT\n [value],\n SUM (LENGTH ([value])) OVER (ORDER BY [key] ROWS UNBOUNDED PRECEDING) / ${this.bufferedReadInstanceSizeInBytes} AS [bucket]\n FROM ${this._cacheTable})\n GROUP BY [bucket]`;\n\n const stmt = this._db.prepareSqliteStatement(sql);\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n const instanceBucket = JSON.parse(stmt.getValueString(0), Base64EncodedString.reviver) as ChangedECInstance[];\n for (const value of instanceBucket) {\n yield value;\n }\n }\n stmt[Symbol.dispose]();\n }\n\n /**\n * Returns the number of instances in the cache.\n * @returns The number of instances in the cache.\n */\n public count(): number {\n return this._db.withPreparedSqliteStatement(`SELECT COUNT(*) FROM ${this._cacheTable}`, (stmt) => {\n if (stmt.step() === DbResult.BE_SQLITE_ROW)\n return stmt.getValue(0).getInteger();\n return 0;\n });\n }\n\n /**\n * Disposes the cache by dropping the temporary table.\n */\n public [Symbol.dispose](): void {\n if (this._db.isOpen) {\n this.dropTempTable();\n }\n }\n}\n\n\n/**\n * Combine partial changed instance into single instance.\n * Partial changes is per table and a single instance can\n * span multiple tables.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [PartialChangeUnifier]($backend) with [ChangesetReader]($backend) instead.\n */\nexport class PartialECChangeUnifier implements Disposable {\n private _readonly = false;\n public constructor(private _db: AnyDb, private _cache: ECChangeUnifierCache = new InMemoryInstanceCache()) { }\n\n /**\n * Dispose the instance.\n */\n public [Symbol.dispose](): void {\n this._cache[Symbol.dispose]();\n }\n\n /**\n * Get root class id for a given class\n * @param classId given class id\n * @param db use to find root class\n * @returns return root class id\n */\n private getRootClassId(classId: Id64String): Id64String | undefined {\n const sql = `\n WITH\n [base_class]([classId], [baseClassId], [Level]) AS(\n SELECT [ch].[ClassId], [ch].[BaseClassId], 0\n FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?\n UNION ALL\n SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1\n FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]\n\n )\n SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass\n FROM [base_class] [bc]\n WHERE [bc].[ClassId] <> [bc].[BaseClassId]\n AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]\n FROM [ec_CustomAttribute] [ca]\n WHERE [ca].[ContainerType] = 30\n AND [ca].[ClassId] IN (SELECT [cc].[Id]\n FROM [ec_Class] [cc]\n JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]\n WHERE [cc].[Name] = 'IsMixIn'\n AND [ss].[Name] = 'CoreCustomAttributes'))\n ORDER BY [Level] DESC`;\n\n return this._db.withSqliteStatement(sql, (stmt) => {\n stmt.bindId(1, classId);\n if (stmt.step() === DbResult.BE_SQLITE_ROW && !stmt.isValueNull(0)) {\n return stmt.getValueString(0);\n }\n return classId;\n });\n }\n\n /**\n * Checks if the given `rhsClassId` is an instance of the `lhsClassId`.\n * @param rhsClassId The ID of the right-hand side class.\n * @param lhsClassId The ID of the left-hand side class.\n * @returns `true` if `rhsClassId` is an instance of `lhsClassId`, `false` otherwise.\n */\n private instanceOf(rhsClassId: Id64String, lhsClassId: Id64String): boolean {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return this._db.withPreparedStatement(\"SELECT ec_instanceof(?,?)\", (stmt) => {\n stmt.bindId(1, rhsClassId);\n stmt.bindId(2, lhsClassId);\n stmt.step();\n return stmt.getValue(0).getInteger() === 1;\n });\n }\n\n /**\n * Combine partial instance with instance with same key if already exists.\n * @param rhs partial instance\n */\n private combine(rhs: ChangedECInstance): void {\n if (!rhs.$meta) {\n throw new Error(\"PartialECChange being combine must have '$meta' property\");\n }\n const key = this.buildKey(rhs);\n const lhs = this._cache.get(key);\n if (lhs) {\n const { $meta: _, ...restOfRhs } = rhs;\n Object.assign(lhs, restOfRhs);\n if (lhs.$meta && rhs.$meta) {\n lhs.$meta.tables = [...rhs.$meta?.tables, ...lhs.$meta?.tables];\n lhs.$meta.changeIndexes = [...rhs.$meta?.changeIndexes, ...lhs.$meta?.changeIndexes];\n\n // we preserve child class name & id when merging instance.\n if (rhs.$meta.fallbackClassId && lhs.$meta.fallbackClassId && rhs.$meta.fallbackClassId !== lhs.$meta.fallbackClassId) {\n const lhsClassId = lhs.$meta.fallbackClassId;\n const rhsClassId = rhs.$meta.fallbackClassId;\n const isRhsIsSubClassOfLhs = this.instanceOf(rhsClassId, lhsClassId);\n if (isRhsIsSubClassOfLhs) {\n lhs.$meta.fallbackClassId = rhs.$meta.fallbackClassId;\n lhs.$meta.classFullName = rhs.$meta.classFullName;\n }\n }\n }\n this._cache.set(key, lhs);\n } else {\n this._cache.set(key, rhs);\n }\n }\n\n /**\n * Returns the number of instances in the cache.\n * @returns The number of instances in the cache.\n */\n public getInstanceCount(): number {\n return this._cache.count();\n }\n\n /**\n * Build key from EC change.\n * @param change EC change\n * @returns key created from EC change.\n */\n private buildKey(change: ChangedECInstance): string {\n let classId = change.ECClassId;\n if (typeof classId === \"undefined\") {\n if (change.$meta?.fallbackClassId) {\n classId = this.getRootClassId(change.$meta.fallbackClassId);\n }\n if (typeof classId === \"undefined\") {\n throw new Error(`unable to resolve ECClassId to root class id.`);\n }\n }\n return `${change.ECInstanceId}-${classId}-${change.$meta?.stage}`.toLowerCase();\n }\n\n /**\n * Append partial changes which will be combine using there instance key.\n * @note $meta property must be present on partial change as information\n * in it is used to combine partial instances.\n * @param adaptor changeset adaptor is use to read the partial EC change.\n * @beta\n */\n public appendFrom(adaptor: ChangesetECAdaptor): void {\n if (adaptor.disableMetaData) {\n throw new Error(\"change adaptor property 'disableMetaData' must be set to 'false'\");\n }\n\n if (this._readonly) {\n throw new Error(\"this instance is marked as readonly.\");\n }\n\n if (adaptor.op === \"Updated\" && adaptor.inserted && adaptor.deleted) {\n this.combine(adaptor.inserted);\n this.combine(adaptor.deleted);\n } else if (adaptor.op === \"Inserted\" && adaptor.inserted) {\n this.combine(adaptor.inserted);\n } else if (adaptor.op === \"Deleted\" && adaptor.deleted) {\n this.combine(adaptor.deleted);\n }\n }\n\n /**\n * Returns complete EC change instances.\n * @beta\n */\n public get instances(): IterableIterator<ChangedECInstance> {\n return this._cache.all();\n }\n}\n\n/**\n * Transform sqlite change to ec change. EC change is partial change as\n * it is per table while a single instance can span multiple table.\n * @note PrimitiveArray and StructArray are not supported types.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangesetReader]($backend) instead.\n *\n*/\nexport class ChangesetECAdaptor implements Disposable {\n private readonly _mapCache: ECDbMap;\n private readonly _tableFilter = new Set<string>();\n private readonly _opFilter = new Set<SqliteChangeOp>();\n private readonly _classFilter = new Set<string>();\n private _allowedClasses = new Set<string>();\n /**\n * set debug flags\n */\n public readonly debugFlags = {\n replaceBlobWithEllipsis: false, // replace bolb with ... for debugging\n replaceGeomWithEllipsis: false, // replace geom with ... for debugging\n replaceGuidWithEllipsis: false, // replace geom with ... for debugging\n };\n /**\n * Return partial inserted instance\n * For updates inserted represent new version of instance after update.\n */\n public inserted?: ChangedECInstance;\n /**\n * Return partial deleted instance.\n * For updates deleted represent old version of instance before update.\n */\n public deleted?: ChangedECInstance;\n\n /**\n * Setup filter that will result in change enumeration restricted to\n * list of tables added by acceptTable().\n * @param table Name of the table\n * @returns Fluent reference to ChangesetAdaptor.\n */\n public acceptTable(table: string): ChangesetECAdaptor {\n if (!this._tableFilter.has(table))\n this._tableFilter.add(table);\n return this;\n }\n\n /**\n * Setup filter that will result in change enumeration restricted to\n * list of op added by acceptOp().\n * @param op\n * @returns Fluent reference to ChangesetAdaptor.\n */\n public acceptOp(op: SqliteChangeOp): ChangesetECAdaptor {\n if (!this._opFilter.has(op))\n this._opFilter.add(op);\n return this;\n }\n\n /**\n * Setup filter that will result in change enumeration restricted to\n * list of class and its derived classes added by acceptClass().\n * @param classFullName\n * @returns\n */\n public acceptClass(classFullName: string): ChangesetECAdaptor {\n if (!this._classFilter.has(classFullName))\n this._classFilter.add(classFullName);\n\n this._allowedClasses.clear();\n return this;\n }\n\n private buildClassFilter() {\n if (this._allowedClasses.size !== 0 || this._classFilter.size === 0)\n return;\n\n this._classFilter.forEach((className) => {\n this._mapCache.getAllDerivedClasses(className).forEach((classId) => {\n this._allowedClasses.add(classId);\n });\n });\n }\n\n /**\n * Construct adaptor with a initialized reader.\n * @note the changeset reader must have disableSchemaCheck\n * set to false and db must also be set.\n * @param reader wrap changeset reader.\n */\n public constructor(public readonly reader: SqliteChangesetReader, public readonly disableMetaData = false) {\n if (!reader.disableSchemaCheck)\n throw new Error(\"SqliteChangesetReader, 'disableSchemaCheck' param must be set to false.\");\n\n this._mapCache = new ECDbMap(reader.db);\n }\n\n /**\n * dispose current instance and it will also dispose the changeset reader.\n */\n public [Symbol.dispose](): void {\n this.close();\n }\n\n /**\n * close current instance and it will also close the changeset reader.\n */\n public close(): void {\n this.reader.close();\n }\n\n /**\n * Convert binary GUID into string GUID.\n * @param binaryGUID binary version of guid.\n * @returns GUID string.\n */\n private static convertBinaryToGuid(binaryGUID: Uint8Array): GuidString {\n // Check if the array has 16 elements\n if (binaryGUID.length !== 16) {\n throw new Error(\"Invalid array length for Guid\");\n }\n // Convert each element to a two-digit hexadecimal string\n const hex = Array.from(binaryGUID, (byte) => byte.toString(16).padStart(2, \"0\"));\n // Join the hexadecimal strings and insert hyphens\n return `${hex.slice(0, 4).join(\"\")}-${hex.slice(4, 6).join(\"\")}-${hex.slice(6, 8).join(\"\")}-${hex.slice(8, 10).join(\"\")}-${hex.slice(10, 16).join(\"\")}`;\n\n }\n\n /**\n * Set value use access string in a JS object.\n * @param targetObj object that will be updated.\n * @param accessString access string token separated by '.'.\n */\n private static setValue(targetObj: any, accessString: string, value: any): void {\n let cursor = targetObj;\n const propPath = accessString.split(\".\");\n propPath.forEach((propertyName) => {\n if (propertyName === \"__proto__\")\n throw new Error(\"access string cannot container __proto__\");\n });\n\n const leafProp = propPath.splice(-1).shift();\n if (!leafProp)\n throw new Error(\"not access string was specified.\");\n\n for (const elem of propPath) {\n if (typeof cursor[elem] === \"undefined\")\n cursor[elem] = {};\n cursor = cursor[elem];\n }\n cursor[leafProp] = value;\n }\n\n /**\n * Check if sqlite change table is a EC data table\n * @param tableName name of the table.\n * @returns true if table has EC data.\n */\n public isECTable(tableName: string) {\n return typeof this._mapCache.getTable(tableName) !== \"undefined\";\n }\n\n /**\n * Attempt find ECClassId from ECInstanceId for a change of type 'updated'.\n * @param tableName name of the table to find ECClassId from given ECInstanceId\n * @param instanceId instance id for which we need ECClassId for.\n * @returns if successful returns ECClassId else return undefined.\n */\n private getClassIdFromDb(tableName: string, instanceId: Id64String): Id64String | undefined {\n try {\n return this.reader.db?.withPreparedSqliteStatement(`SELECT [ECClassId] FROM [${tableName}] WHERE [rowId]=?`, (stmt) => {\n stmt.bindId(1, instanceId);\n return stmt.step() === DbResult.BE_SQLITE_ROW ? stmt.getValueId(0) : undefined;\n });\n } catch {\n return undefined;\n }\n }\n\n /** helper method around reader.op */\n public get op() { return this.reader.op; }\n /** Return true if current change is of type \"Inserted\" */\n public get isInserted() { return this.op === \"Inserted\"; }\n /** Return true if current change is of type \"Deleted\" */\n public get isDeleted() { return this.op === \"Deleted\"; }\n /** Return true if current change is of type \"Updated\" */\n public get isUpdated() { return this.op === \"Updated\"; }\n\n /**\n * Advance reader to next change or a change that meets the filter set in the current adaptor\n * @returns return false if no more changes to read.\n */\n public step(): boolean {\n this.inserted = undefined;\n this.deleted = undefined;\n this.buildClassFilter();\n while (this.reader.step()) {\n if (!this.isECTable(this.reader.tableName))\n continue;\n\n if (this._tableFilter.size > 0) {\n if (!this._tableFilter.has(this.reader.tableName))\n continue;\n }\n\n if (this._opFilter.size > 0) {\n if (!this._opFilter.has(this.reader.op))\n continue;\n }\n\n if (this.reader.hasRow) {\n const table = this._mapCache.getTable(this.reader.tableName);\n if (!table || table.type === \"Virtual\") {\n throw new Error(`table in changeset not found or is virtual ${this.reader.tableName}`);\n }\n\n const change = {\n inserted: this.reader.getChangeValuesObject(\"New\", { includePrimaryKeyInUpdateNew: true }),\n deleted: this.reader.getChangeValuesObject(\"Old\", { includePrimaryKeyInUpdateNew: true }),\n };\n\n if (!change.inserted && !change.deleted) {\n throw new Error(`unable to get change from changeset reader`);\n }\n\n let ecClassId: Id64String | undefined = this.reader.op === \"Inserted\" ? change.inserted?.ECClassId : change.deleted?.ECClassId;\n const classIdPresentInChange = typeof ecClassId !== \"undefined\";\n let classMap: IClassMap | undefined;\n let fallbackClassId: Id64String | undefined;\n if (table.isClassIdVirtual) {\n classMap = this._mapCache.getClassMap(table.exclusiveRootClassId);\n } else {\n if (!ecClassId) {\n // attempt to find ECClassId against row from the db.\n const primaryKeys = this.reader.primaryKeyValues;\n if (primaryKeys.length === 1) {\n ecClassId = this.getClassIdFromDb(this.reader.tableName, this.reader.primaryKeyValues[0] as Id64String);\n }\n }\n if (ecClassId)\n classMap = this._mapCache.getClassMap(ecClassId);\n if (!classMap) {\n // fallback to root map for table.\n classMap = this._mapCache.getClassMap(table.exclusiveRootClassId);\n if (classMap)\n fallbackClassId = table.exclusiveRootClassId;\n }\n }\n\n if (!classMap)\n throw new Error(`unable to load class map`);\n\n if (!classIdPresentInChange && !ecClassId && !fallbackClassId)\n ecClassId = classMap.id;\n\n if (this._allowedClasses.size !== 0) {\n if (!this._allowedClasses.has(classMap.id))\n continue;\n }\n\n const $meta = {\n tables: [this.reader.tableName],\n op: this.reader.op,\n classFullName: classMap.name,\n fallbackClassId,\n changeIndexes: [this.reader.changeIndex],\n };\n\n if (this.reader.op === \"Inserted\" && change.inserted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n this.inserted = { ECClassId: ecClassId, ECInstanceId: \"\" };\n if (!this.disableMetaData)\n this.inserted.$meta = { ...$meta, stage: \"New\" };\n this.transform(classMap, change.inserted, table, this.inserted);\n } else if (this.reader.op === \"Deleted\" && change.deleted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n this.deleted = { ECClassId: ecClassId, ECInstanceId: \"\" };\n if (!this.disableMetaData)\n this.deleted.$meta = { ...$meta, stage: \"Old\" };\n this.transform(classMap, change.deleted, table, this.deleted);\n } else if (change.inserted && change.deleted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n this.inserted = { ECClassId: ecClassId, ECInstanceId: \"\" };\n if (!this.disableMetaData)\n this.inserted.$meta = { ...$meta, stage: \"New\" };\n this.transform(classMap, change.inserted, table, this.inserted);\n // eslint-disable-next-line @typescript-eslint/naming-convention\n this.deleted = { ECClassId: ecClassId, ECInstanceId: \"\" };\n if (!this.disableMetaData)\n this.deleted.$meta = { ...$meta, stage: \"Old\" };\n this.transform(classMap, change.deleted, table, this.deleted);\n } else {\n throw new Error(\"unable to read EC changes\");\n }\n break;\n }\n }\n return this.reader.hasRow;\n }\n\n /**\n * Transform nav change column into navigation EC property\n * @param prop navigation property definition.\n * @param change sqlite change.\n * @param out ec instance that will be updated with navigation property.\n */\n private transformNavigationProperty(prop: IProperty, change: SqliteChange, out: ChangedECInstance): void {\n const idCol = prop.columns.filter(($) => $.accessString.endsWith(\".Id\")).at(0);\n if (!idCol) {\n throw new Error(\"invalid map for nav property\");\n }\n\n const idValue = change[idCol.column];\n if (typeof idValue === \"undefined\")\n return;\n\n ChangesetECAdaptor.setValue(out, idCol.accessString, idValue);\n\n const relClassIdCol = prop.columns.filter(($) => $.accessString.endsWith(\".RelECClassId\")).at(0);\n if (!relClassIdCol) {\n throw new Error(\"invalid map for nav property\");\n }\n\n const relClassIdValue = relClassIdCol.isVirtual ? prop.navigationRelationship?.classId : change[relClassIdCol.column];\n if (typeof relClassIdValue === \"undefined\")\n return;\n\n ChangesetECAdaptor.setValue(out, relClassIdCol.accessString, relClassIdValue);\n }\n\n /**\n * Transform sqlite change into EC change.\n * @param classMap classMap use to deserialize sqlite change into EC change.\n * @param change sqlite change from changeset.\n * @param table table definition of sqlite change provided.\n * @param out EC changeset that will be updated with properties.\n */\n private transform(classMap: IClassMap, change: SqliteChange, table: ITable, out: ChangedECInstance): void {\n // transform change row to instance\n for (const prop of classMap.properties) {\n if (prop.kind === \"PrimitiveArray\" || prop.kind === \"StructArray\") {\n // Arrays not supported\n continue;\n }\n if (prop.columns.filter((_) => _.isVirtual).length === prop.columns.length) {\n continue;\n }\n if (prop.kind === \"Navigation\") {\n this.transformNavigationProperty(prop, change, out);\n } else {\n for (const col of prop.columns) {\n if (col.table !== table.name)\n continue;\n\n const columnValue = change[col.column];\n if (typeof columnValue === \"undefined\")\n continue;\n\n if (columnValue !== null) {\n if (prop.primitiveType === \"DateTime\") {\n const dt = DateTime.fromJulianDay(columnValue, prop.dateTimeInfo?.dateTimeKind === \"Local\");\n ChangesetECAdaptor.setValue(out, col.accessString, dt.toISOString());\n continue;\n }\n if (prop.extendedTypeName === \"BeGuid\") {\n ChangesetECAdaptor.setValue(out, col.accessString, this.debugFlags.replaceGuidWithEllipsis ? \"...\" : ChangesetECAdaptor.convertBinaryToGuid(columnValue));\n continue;\n }\n if (prop.extendedTypeName === \"GeometryStream\") {\n ChangesetECAdaptor.setValue(out, col.accessString, this.debugFlags.replaceGeomWithEllipsis ? \"...\" : columnValue);\n continue;\n }\n if (prop.primitiveType === \"Binary\") {\n ChangesetECAdaptor.setValue(out, col.accessString, this.debugFlags.replaceBlobWithEllipsis ? \"...\" : columnValue);\n continue;\n }\n }\n ChangesetECAdaptor.setValue(out, col.accessString, columnValue);\n }\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ChangesetECAdaptor.js","sourceRoot":"","sources":["../../src/ChangesetECAdaptor.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 ECDb\n */\nimport { DbResult, Guid, GuidString, Id64String } from \"@itwin/core-bentley\";\nimport { AnyDb, SqliteChange, SqliteChangeOp, SqliteChangesetReader, SqliteValueStage } from \"./SqliteChangesetReader\";\nimport { Base64EncodedString, QueryBinder } from \"@itwin/core-common\";\nimport { ECDb } from \"./ECDb\";\nimport { _nativeDb } from \"./internal/Symbols\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */ // This file is marked as deprecated and will be removed subsequently, so we can allow usage of deprecated APIs within it.\n\ninterface IClassRef {\n classId: Id64String;\n classFullName: string;\n}\n\ninterface IClassMap {\n readonly id: Id64String;\n readonly name: string;\n readonly mapStrategy: \"NotMapped\" | \"OwnTable\" | \"TablePerHierarchy\" | \"ExistingTable\" | \"ForeignKeyInTargetTable\" | \"ForeignKeyInSourceTable\";\n readonly type: \"Entity\" | \"Relationship\" | \"Struct\" | \"CustomAttribute\";\n readonly modifier: \"None\" | \"Abstract\" | \"Sealed\";\n readonly properties: IProperty[];\n}\n\ninterface IDateTimeInfo {\n readonly dateTimeKind?: \"Utc\" | \"Local\" | \"Unspecified\";\n readonly dateTimeComponent?: \"DateTime\" | \"Date\" | \"TimeOfDay\";\n}\n\ninterface IProperty {\n readonly id: Id64String;\n readonly name: string;\n readonly kind: \"Primitive\" | \"Struct\" | \"PrimitiveArray\" | \"StructArray\" | \"Navigation\";\n readonly primitiveType?: \"Binary\" | \"Boolean\" | \"DateTime\" | \"Double\" | \"Integer\" | \"Long\" | \"Point2d\" | \"Point3d\" | \"String\" | \"IGeometry\";\n readonly extendedTypeName?: string;\n readonly navigationRelationship?: IClassRef;\n readonly structClass?: IClassRef;\n readonly dateTimeInfo?: IDateTimeInfo;\n readonly columns: IColumn[];\n\n}\n\ninterface IColumn {\n readonly table: string;\n readonly column: string;\n readonly type: \"Any\" | \"Boolean\" | \"Blob\" | \"Timestamp\" | \"Real\" | \"Integer\" | \"Text\";\n readonly columnKind: \"Default\" | \"Id\" | \"ClassId\" | \"Shared\";\n readonly accessString: string;\n readonly isVirtual: boolean;\n}\n\ninterface ITable {\n readonly id: Id64String;\n readonly name: string;\n readonly type: \"Primary\" | \"Joined\" | \"Existing\" | \"Overflow\" | \"Virtual\";\n readonly exclusiveRootClassId: Id64String;\n readonly isClassIdVirtual: boolean;\n}\n\nclass ECDbMap {\n private _cachedClassMaps = new Map<Id64String, IClassMap>();\n private _cacheTables = new Map<string, ITable>();\n public constructor(public readonly db: AnyDb) { }\n public getAllDerivedClasses(classFullName: string) {\n const sql = `\n SELECT format('0x%x', ch.ClassId)\n FROM [ec_cache_ClassHierarchy] [ch]\n JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]\n JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]\n WHERE (([sc].[Alias] = :schemaNameOrAlias\n OR [sc].[Name] = :schemaNameOrAlias)\n AND ([cs].[Name] = :className))\n `;\n return this.db.withPreparedSqliteStatement(sql, (stmt) => {\n const parts = classFullName.indexOf(\".\") !== -1 ? classFullName.split(\".\") : classFullName.split(\":\");\n stmt.bindString(\":schemaNameOrAlias\", parts[0]);\n stmt.bindString(\":className\", parts[1]);\n const classIds = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW)\n classIds.push(stmt.getValueString(0));\n return classIds;\n });\n }\n public getTable(tableName: string): ITable | undefined {\n if (this._cacheTables.has(tableName))\n return this._cacheTables.get(tableName);\n\n const sql = `\n SELECT\n JSON_OBJECT (\n 'id', FORMAT ('0x%x', [t].[id]),\n 'name', [t].[Name],\n 'type', (\n CASE\n [t].[type]\n WHEN 0 THEN 'Primary'\n WHEN 1 THEN 'Joined'\n WHEN 2 THEN 'Existing'\n WHEN 3 THEN 'Overflow'\n WHEN 4 THEN 'Virtual'\n END\n ),\n 'exclusiveRootClassId', FORMAT ('0x%x',\n COALESCE (\n [t].[ExclusiveRootClassId], (\n SELECT [parent].[ExclusiveRootClassId]\n FROM [ec_Table] [parent]\n WHERE [parent].[Id] = [t].[ParentTableId] AND [parent].[Type] = 1))),\n 'isClassIdVirtual', (\n SELECT\n [c].[IsVirtual]\n FROM\n [ec_Column] [c]\n WHERE\n [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]\n )\n )\n FROM [ec_Table] [t]\n WHERE\n [t].[Name] = ?;\n `;\n\n return this.db.withPreparedSqliteStatement(sql, (stmt) => {\n stmt.bindString(1, tableName);\n if (stmt.step() === DbResult.BE_SQLITE_ROW) {\n const table = JSON.parse(stmt.getValueString(0), (key, value) => {\n if (value === null)\n return undefined;\n\n if (key === \"isClassIdVirtual\")\n return value === 0 ? false : true;\n\n return value;\n }) as ITable;\n\n this._cacheTables.set(tableName, table);\n return table;\n }\n return undefined;\n });\n }\n public getClassMap(classId: Id64String): IClassMap | undefined {\n if (this._cachedClassMaps.has(classId))\n return this._cachedClassMaps.get(classId);\n\n const sql = `\n SELECT\n JSON_OBJECT(\n 'id', format('0x%x', cs.id),\n 'name', format('%s:%s', ss.Name, cs.Name),\n 'mapStrategy',\n (\n CASE cm.MapStrategy\n WHEN 0 THEN 'NotMapped'\n WHEN 1 THEN 'OwnTable'\n WHEN 2 THEN 'TablePerHierarchy'\n WHEN 3 THEN 'ExistingTable'\n WHEN 10 THEN 'ForeignKeyInTargetTable'\n WHEN 11 THEN 'ForeignKeyInSourceTable'\n END\n ),\n 'type',\n (\n CASE cs.Type\n WHEN 0 THEN 'Entity'\n WHEN 1 THEN 'Relationship'\n WHEN 2 THEN 'Struct'\n WHEN 3 THEN 'CustomAttribute'\n END\n ),\n 'modifier',\n (\n CASE cs.Modifier\n WHEN 0 THEN 'None'\n WHEN 1 THEN 'Abstract'\n WHEN 2 THEN 'Sealed'\n END\n ),\n 'properties',\n (\n SELECT\n JSON_GROUP_ARRAY(JSON(propJson))\n FROM\n (\n SELECT\n JSON_OBJECT(\n 'id', format('0x%x', pt.id),\n 'name', pt.Name,\n 'kind',\n (\n CASE pt.Kind\n WHEN 0 THEN 'Primitive'\n WHEN 1 THEN 'Struct'\n WHEN 2 THEN 'PrimitiveArray'\n WHEN 3 THEN 'StructArray'\n WHEN 4 THEN 'Navigation'\n END\n ),\n 'primitiveType',\n (\n CASE pt.PrimitiveType\n WHEN 0x101 THEN 'Binary'\n WHEN 0x201 THEN 'Boolean'\n WHEN 0x301 THEN 'DateTime'\n WHEN 0x401 THEN 'Double'\n WHEN 0x501 THEN 'Integer'\n WHEN 0x601 THEN 'Long'\n WHEN 0x701 THEN 'Point2d'\n WHEN 0x801 THEN 'Point3d'\n WHEN 0x901 THEN 'String'\n WHEN 0xa01 THEN 'IGeometry'\n END\n ),\n 'extendedTypeName', ExtendedTypeName,\n 'navigationRelationship',\n (\n SELECT\n JSON_OBJECT(\n 'classId', format('0x%x', nc.Id),\n 'classFullName', format('%s:%s', ns.Name, nc.Name)\n )\n FROM ec_Class nc\n JOIN ec_Schema ns ON ns.Id = nc.SchemaId\n WHERE\n nc.Id = pt.NavigationRelationshipClassId\n ),\n 'structClass',\n (\n SELECT\n JSON_OBJECT(\n 'classId', format('0x%x', nc.Id),\n 'classFullName', format('%s:%s', ns.Name, nc.Name)\n )\n FROM ec_Class nc\n JOIN ec_Schema ns ON ns.Id = nc.SchemaId\n WHERE\n nc.Id = pt.StructClassId\n ),\n 'dateTimeInfo', (\n SELECT\n JSON_OBJECT (\n 'dateTimeKind', (\n CASE\n WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'\n WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'\n ELSE 'Unspecified'\n END\n ),\n 'dateTimeComponent', (\n CASE\n WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'\n WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'\n WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'\n ELSE 'DateTime'\n END\n )\n )\n FROM\n [ec_CustomAttribute] [ca]\n JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]\n JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]\n WHERE\n [ca].[ContainerType] = 992\n AND [cl].[Name] = 'DateTimeInfo'\n AND [sc].[Name] = 'CoreCustomAttributes'\n AND [ca].[ContainerId] = [pt].[Id]\n ),\n 'columns',\n (\n SELECT\n JSON_GROUP_ARRAY(JSON(columnJson))\n FROM\n (\n SELECT\n JSON_OBJECT(\n 'table', tb.Name,\n 'column', cc.Name,\n 'type',\n (\n CASE cc.Type\n WHEN 0 THEN 'Any'\n WHEN 1 THEN 'Boolean'\n WHEN 2 THEN 'Blob'\n WHEN 3 THEN 'Timestamp'\n WHEN 4 THEN 'Real'\n WHEN 5 THEN 'Integer'\n WHEN 6 THEN 'Text'\n END\n ),\n 'columnKind',\n (\n CASE cc.ColumnKind\n WHEN 0 THEN 'Default'\n WHEN 1 THEN 'Id'\n WHEN 2 THEN 'ClassId'\n WHEN 4 THEN 'SharedData'\n END\n ),\n 'accessString', pp0.AccessString,\n 'isVirtual', cc.IsVirtual OR tb.Type = 4\n ) columnJson\n FROM [ec_PropertyMap] [pm0]\n JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]\n JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]\n JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]\n WHERE\n [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id\n )\n )\n ) propJson\n FROM [ec_PropertyMap] [pm]\n JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]\n JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]\n WHERE\n pm.ClassId = cs.Id\n GROUP BY\n pt.Id\n )\n )\n ) classDef\n FROM [ec_Class] [cs]\n JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]\n JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]\n WHERE\n [cs].[Id] = ?\n `;\n\n return this.db.withPreparedSqliteStatement(sql, (stmt) => {\n stmt.bindId(1, classId);\n if (stmt.step() === DbResult.BE_SQLITE_ROW) {\n const classMap = JSON.parse(stmt.getValueString(0), (key, value) => {\n if (value === null) {\n return undefined;\n }\n if (key === \"isVirtual\") {\n return value === 0 ? false : true;\n }\n return value;\n }) as IClassMap;\n\n this._cachedClassMaps.set(classId, classMap);\n return classMap;\n }\n return undefined;\n });\n }\n}\n\n/**\n * Record meta data for the change.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangeMeta]($backend) with [ChangesetReader]($backend) instead.\n * */\nexport interface ChangeMetaData {\n /** list of tables making up this EC change */\n tables: string[];\n /** full name of the class of this EC change */\n classFullName?: string;\n /** sqlite operation that caused the change */\n op: SqliteChangeOp;\n /** version of the value read from sqlite change */\n stage: SqliteValueStage;\n /** if classId for the change was not found in db then fallback class for the table */\n fallbackClassId?: Id64String;\n /** list of change index making up this change (one per table) */\n changeIndexes: number[];\n}\n\n/**\n * Represent EC change derived from low level sqlite change\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangeInstance]($backend) with [ChangesetReader]($backend) instead.\n */\nexport interface ChangedECInstance {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n ECInstanceId: Id64String;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n ECClassId?: Id64String;\n $meta?: ChangeMetaData;\n [key: string]: any;\n}\n\n/**\n * Helper function to convert between JS DateTime & SQLite JulianDay values.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. The DateTime namespace is deprecated and will be removed in a future release.\n * */\nnamespace DateTime {\n /**\n * Convert JS date to JulianDay value.\n * @param dt JS Date object.\n * @param convertToUtc convert the input value to UTC.\n * @returns julian day value\n */\n export function toJulianDay(dt: Date, convertToUtc = true): number {\n const utcOffset = convertToUtc ? dt.getTimezoneOffset() / 1440 : 0;\n return (dt.valueOf() / 86400000) - utcOffset + 2440587.5;\n }\n /**\n * Convert Julian day to JS Date object\n * @param jd JulianDay value for date/time\n * @param isLocalTime if julian day is local time or UTC\n * @returns JS Date object.\n */\n export function fromJulianDay(jd: number, isLocalTime: boolean): Date {\n const utcOffset = isLocalTime ? 0 : new Date().getTimezoneOffset() / 1440;\n return new Date((jd - 2440587.5 + utcOffset) * 86400000);\n }\n}\n\n/**\n * Represents a cache for unifying EC changes.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangeCache]($backend) with [ChangesetReader]($backend) instead.\n */\nexport interface ECChangeUnifierCache extends Disposable {\n /**\n * Retrieves the value associated with the specified key from the cache.\n * @param key - The key to retrieve the value for.\n * @returns The value associated with the key, or undefined if the key is not found.\n */\n get(key: string): ChangedECInstance | undefined;\n\n /**\n * Sets the value associated with the specified key in the cache.\n * @param key - The key to set the value for.\n * @param value - The value to be associated with the key.\n */\n set(key: string, value: ChangedECInstance): void;\n\n /**\n * Returns an iterator for all the values in the cache.\n * @returns An iterator for all the values in the cache.\n */\n all(): IterableIterator<ChangedECInstance>;\n\n /**\n * Returns the number of entries in the cache.\n * @returns The number of entries in the cache.\n */\n count(): number;\n}\n/**\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangeUnifierCache.createInMemoryCache]($backend) / [ChangeUnifierCache.createSqliteBackedCache]($backend) instead.\n*/\nexport namespace ECChangeUnifierCache {\n /**\n * Creates and returns a new in-memory cache for EC change unification.\n * @note This cache is fast but recommended for small to medium size changesets. As it store changes in memory using a hash map, it may run out of memory for larger changesets.\n * @returns {ECChangeUnifierCache} An instance of cache that store changes in memory using a hash map.\n */\n export function createInMemoryCache(): ECChangeUnifierCache {\n return new InMemoryInstanceCache();\n }\n\n /**\n * Creates an ECChangeUnifierCache that is backed by a database.\n * @note This cache is suitable for larger changesets and uses SQLite to store changes. It is slower than the in-memory cache but can handle larger datasets without running out of memory.\n * @param db - The database instance to use for caching.\n * @param bufferedReadInstanceSizeInBytes - The size in bytes for buffered read instances. Defaults to 10 MB.\n * @returns An instance of ECChangeUnifierCache backed by SQLite temp db.\n */\n export function createSqliteBackedCache(db: AnyDb, bufferedReadInstanceSizeInBytes = 1024 * 1024 * 10): ECChangeUnifierCache {\n return new SqliteBackedInstanceCache(db, bufferedReadInstanceSizeInBytes);\n }\n}\n\n/**\n * In-memory cache for storing changed EC instances.\n */\nclass InMemoryInstanceCache implements ECChangeUnifierCache {\n private readonly _cache = new Map<string, ChangedECInstance>();\n\n /**\n * Retrieves the changed EC instance associated with the specified key.\n * @param key - The key used to retrieve the instance.\n * @returns The changed EC instance, or undefined if not found.\n */\n public get(key: string): ChangedECInstance | undefined {\n return this._cache.get(key);\n }\n\n /**\n * Sets the changed EC instance associated with the specified key.\n * @param key - The key used to store the instance.\n * @param value - The changed EC instance to be stored.\n */\n public set(key: string, value: ChangedECInstance): void {\n const meta = value.$meta as any;\n // Remove undefined keys\n if (meta) {\n Object.keys(meta).forEach((k) => meta[k] === undefined && delete meta[k]);\n }\n this._cache.set(key, value);\n }\n\n /**\n * Returns an iterator over all the changed EC instances in the cache.\n * @returns An iterator over all the changed EC instances.\n */\n public *all(): IterableIterator<ChangedECInstance> {\n for (const key of Array.from(this._cache.keys()).sort()) {\n const instance = this._cache.get(key);\n if (instance) {\n yield instance;\n }\n }\n }\n\n /**\n * Returns the number of changed EC instances in the cache.\n * @returns The number of changed EC instances.\n */\n public count(): number {\n return this._cache.size;\n }\n\n /**\n * Disposes the cache.\n */\n public [Symbol.dispose](): void {\n // Implementation details\n }\n}\n\n/**\n * Represents a cache for unifying EC changes in a SQLite-backed instance cache.\n */\nclass SqliteBackedInstanceCache implements ECChangeUnifierCache {\n private readonly _cacheTable = `[temp].[${Guid.createValue()}]`;\n public static readonly defaultBufferSize = 1024 * 1024 * 10; // 10MB\n /**\n * Creates an instance of SqliteBackedInstanceCache.\n * @param _db The underlying database connection.\n * @param bufferedReadInstanceSizeInBytes The size of read instance buffer defaults to 10Mb.\n * @throws Error if bufferedReadInstanceSizeInBytes is less than or equal to 0.\n */\n public constructor(private readonly _db: AnyDb, public readonly bufferedReadInstanceSizeInBytes: number = SqliteBackedInstanceCache.defaultBufferSize) {\n if (bufferedReadInstanceSizeInBytes <= 0)\n throw new Error(\"bufferedReadInstanceCount must be greater than 0\");\n this.createTempTable();\n }\n\n /**\n * Creates a temporary table in the database for caching instances.\n * @throws Error if unable to create the temporary table.\n */\n private createTempTable(): void {\n this._db.withSqliteStatement(`CREATE TABLE ${this._cacheTable} ([key] text primary key, [value] text)`, (stmt) => {\n if (DbResult.BE_SQLITE_DONE !== stmt.step())\n throw new Error(\"unable to create temp table\");\n });\n }\n\n /**\n * Drops the temporary table from the database.\n * @throws Error if unable to drop the temporary table.\n */\n private dropTempTable(): void {\n if (this._db instanceof ECDb) {\n this._db.saveChanges();\n this._db.clearStatementCache();\n } else {\n this._db[_nativeDb].saveChanges();\n this._db.clearCaches();\n }\n this._db.withSqliteStatement(`DROP TABLE IF EXISTS ${this._cacheTable}`, (stmt) => {\n if (DbResult.BE_SQLITE_DONE !== stmt.step())\n throw new Error(\"unable to drop temp table\");\n });\n }\n\n /**\n * Retrieves the changed EC instance from the cache based on the specified key.\n * @param key The key of the instance.\n * @returns The changed EC instance if found, otherwise undefined.\n */\n public get(key: string): ChangedECInstance | undefined {\n return this._db.withPreparedSqliteStatement(`SELECT [value] FROM ${this._cacheTable} WHERE [key]=?`, (stmt) => {\n stmt.bindString(1, key);\n if (stmt.step() === DbResult.BE_SQLITE_ROW) {\n const out = JSON.parse(stmt.getValueString(0), Base64EncodedString.reviver) as ChangedECInstance;\n return out;\n }\n return undefined;\n });\n }\n\n /**\n * Sets the changed EC instance in the cache with the specified key.\n * @param key The key of the instance.\n * @param value The changed EC instance to be set.\n */\n public set(key: string, value: ChangedECInstance): void {\n const shallowCopy = Object.assign({}, value);\n this._db.withPreparedSqliteStatement(`INSERT INTO ${this._cacheTable} ([key], [value]) VALUES (?, ?) ON CONFLICT ([key]) DO UPDATE SET [value] = [excluded].[value]`, (stmt) => {\n stmt.bindString(1, key);\n stmt.bindString(2, JSON.stringify(shallowCopy, Base64EncodedString.replacer));\n stmt.step();\n });\n }\n\n /**\n * Returns an iterator for all the changed EC instances in the cache.\n * @returns An iterator for all the changed EC instances.\n */\n public *all(): IterableIterator<ChangedECInstance> {\n const sql = `\n SELECT JSON_GROUP_ARRAY (JSON([value]))\n FROM (SELECT\n [value],\n SUM (LENGTH ([value])) OVER (ORDER BY [key] ROWS UNBOUNDED PRECEDING) / ${this.bufferedReadInstanceSizeInBytes} AS [bucket]\n FROM ${this._cacheTable})\n GROUP BY [bucket]`;\n\n const stmt = this._db.prepareSqliteStatement(sql);\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n const instanceBucket = JSON.parse(stmt.getValueString(0), Base64EncodedString.reviver) as ChangedECInstance[];\n for (const value of instanceBucket) {\n yield value;\n }\n }\n stmt[Symbol.dispose]();\n }\n\n /**\n * Returns the number of instances in the cache.\n * @returns The number of instances in the cache.\n */\n public count(): number {\n return this._db.withPreparedSqliteStatement(`SELECT COUNT(*) FROM ${this._cacheTable}`, (stmt) => {\n if (stmt.step() === DbResult.BE_SQLITE_ROW)\n return stmt.getValue(0).getInteger();\n return 0;\n });\n }\n\n /**\n * Disposes the cache by dropping the temporary table.\n */\n public [Symbol.dispose](): void {\n if (this._db.isOpen) {\n this.dropTempTable();\n }\n }\n}\n\n\n/**\n * Combine partial changed instance into single instance.\n * Partial changes is per table and a single instance can\n * span multiple tables.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [PartialChangeUnifier]($backend) with [ChangesetReader]($backend) instead.\n */\nexport class PartialECChangeUnifier implements Disposable {\n private _readonly = false;\n public constructor(private _db: AnyDb, private _cache: ECChangeUnifierCache = new InMemoryInstanceCache()) { }\n\n /**\n * Dispose the instance.\n */\n public [Symbol.dispose](): void {\n this._cache[Symbol.dispose]();\n }\n\n /**\n * Get root class id for a given class\n * @param classId given class id\n * @param db use to find root class\n * @returns return root class id\n */\n private getRootClassId(classId: Id64String): Id64String | undefined {\n const sql = `\n WITH\n [base_class]([classId], [baseClassId], [Level]) AS(\n SELECT [ch].[ClassId], [ch].[BaseClassId], 0\n FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?\n UNION ALL\n SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1\n FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]\n\n )\n SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass\n FROM [base_class] [bc]\n WHERE [bc].[ClassId] <> [bc].[BaseClassId]\n AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]\n FROM [ec_CustomAttribute] [ca]\n WHERE [ca].[ContainerType] = 30\n AND [ca].[ClassId] IN (SELECT [cc].[Id]\n FROM [ec_Class] [cc]\n JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]\n WHERE [cc].[Name] = 'IsMixIn'\n AND [ss].[Name] = 'CoreCustomAttributes'))\n ORDER BY [Level] DESC`;\n\n return this._db.withSqliteStatement(sql, (stmt) => {\n stmt.bindId(1, classId);\n if (stmt.step() === DbResult.BE_SQLITE_ROW && !stmt.isValueNull(0)) {\n return stmt.getValueString(0);\n }\n return classId;\n });\n }\n\n /**\n * Checks if the given `rhsClassId` is an instance of the `lhsClassId`.\n * @param rhsClassId The ID of the right-hand side class.\n * @param lhsClassId The ID of the left-hand side class.\n * @returns `true` if `rhsClassId` is an instance of `lhsClassId`, `false` otherwise.\n */\n private instanceOf(rhsClassId: Id64String, lhsClassId: Id64String): boolean {\n return this._db.withQueryReader(\"SELECT ec_instanceof(?,?)\", (reader) => {\n reader.step();\n return reader.current[0] === 1;\n }, new QueryBinder().bindId(1, rhsClassId).bindId(2, lhsClassId));\n }\n\n /**\n * Combine partial instance with instance with same key if already exists.\n * @param rhs partial instance\n */\n private combine(rhs: ChangedECInstance): void {\n if (!rhs.$meta) {\n throw new Error(\"PartialECChange being combine must have '$meta' property\");\n }\n const key = this.buildKey(rhs);\n const lhs = this._cache.get(key);\n if (lhs) {\n const { $meta: _, ...restOfRhs } = rhs;\n Object.assign(lhs, restOfRhs);\n if (lhs.$meta && rhs.$meta) {\n lhs.$meta.tables = [...rhs.$meta?.tables, ...lhs.$meta?.tables];\n lhs.$meta.changeIndexes = [...rhs.$meta?.changeIndexes, ...lhs.$meta?.changeIndexes];\n\n // we preserve child class name & id when merging instance.\n if (rhs.$meta.fallbackClassId && lhs.$meta.fallbackClassId && rhs.$meta.fallbackClassId !== lhs.$meta.fallbackClassId) {\n const lhsClassId = lhs.$meta.fallbackClassId;\n const rhsClassId = rhs.$meta.fallbackClassId;\n const isRhsIsSubClassOfLhs = this.instanceOf(rhsClassId, lhsClassId);\n if (isRhsIsSubClassOfLhs) {\n lhs.$meta.fallbackClassId = rhs.$meta.fallbackClassId;\n lhs.$meta.classFullName = rhs.$meta.classFullName;\n }\n }\n }\n this._cache.set(key, lhs);\n } else {\n this._cache.set(key, rhs);\n }\n }\n\n /**\n * Returns the number of instances in the cache.\n * @returns The number of instances in the cache.\n */\n public getInstanceCount(): number {\n return this._cache.count();\n }\n\n /**\n * Build key from EC change.\n * @param change EC change\n * @returns key created from EC change.\n */\n private buildKey(change: ChangedECInstance): string {\n let classId = change.ECClassId;\n if (typeof classId === \"undefined\") {\n if (change.$meta?.fallbackClassId) {\n classId = this.getRootClassId(change.$meta.fallbackClassId);\n }\n if (typeof classId === \"undefined\") {\n throw new Error(`unable to resolve ECClassId to root class id.`);\n }\n }\n return `${change.ECInstanceId}-${classId}-${change.$meta?.stage}`.toLowerCase();\n }\n\n /**\n * Append partial changes which will be combine using there instance key.\n * @note $meta property must be present on partial change as information\n * in it is used to combine partial instances.\n * @param adaptor changeset adaptor is use to read the partial EC change.\n * @beta\n */\n public appendFrom(adaptor: ChangesetECAdaptor): void {\n if (adaptor.disableMetaData) {\n throw new Error(\"change adaptor property 'disableMetaData' must be set to 'false'\");\n }\n\n if (this._readonly) {\n throw new Error(\"this instance is marked as readonly.\");\n }\n\n if (adaptor.op === \"Updated\" && adaptor.inserted && adaptor.deleted) {\n this.combine(adaptor.inserted);\n this.combine(adaptor.deleted);\n } else if (adaptor.op === \"Inserted\" && adaptor.inserted) {\n this.combine(adaptor.inserted);\n } else if (adaptor.op === \"Deleted\" && adaptor.deleted) {\n this.combine(adaptor.deleted);\n }\n }\n\n /**\n * Returns complete EC change instances.\n * @beta\n */\n public get instances(): IterableIterator<ChangedECInstance> {\n return this._cache.all();\n }\n}\n\n/**\n * Transform sqlite change to ec change. EC change is partial change as\n * it is per table while a single instance can span multiple table.\n * @note PrimitiveArray and StructArray are not supported types.\n * @beta\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use [ChangesetReader]($backend) instead.\n *\n*/\nexport class ChangesetECAdaptor implements Disposable {\n private readonly _mapCache: ECDbMap;\n private readonly _tableFilter = new Set<string>();\n private readonly _opFilter = new Set<SqliteChangeOp>();\n private readonly _classFilter = new Set<string>();\n private _allowedClasses = new Set<string>();\n /**\n * set debug flags\n */\n public readonly debugFlags = {\n replaceBlobWithEllipsis: false, // replace bolb with ... for debugging\n replaceGeomWithEllipsis: false, // replace geom with ... for debugging\n replaceGuidWithEllipsis: false, // replace geom with ... for debugging\n };\n /**\n * Return partial inserted instance\n * For updates inserted represent new version of instance after update.\n */\n public inserted?: ChangedECInstance;\n /**\n * Return partial deleted instance.\n * For updates deleted represent old version of instance before update.\n */\n public deleted?: ChangedECInstance;\n\n /**\n * Setup filter that will result in change enumeration restricted to\n * list of tables added by acceptTable().\n * @param table Name of the table\n * @returns Fluent reference to ChangesetAdaptor.\n */\n public acceptTable(table: string): ChangesetECAdaptor {\n if (!this._tableFilter.has(table))\n this._tableFilter.add(table);\n return this;\n }\n\n /**\n * Setup filter that will result in change enumeration restricted to\n * list of op added by acceptOp().\n * @param op\n * @returns Fluent reference to ChangesetAdaptor.\n */\n public acceptOp(op: SqliteChangeOp): ChangesetECAdaptor {\n if (!this._opFilter.has(op))\n this._opFilter.add(op);\n return this;\n }\n\n /**\n * Setup filter that will result in change enumeration restricted to\n * list of class and its derived classes added by acceptClass().\n * @param classFullName\n * @returns\n */\n public acceptClass(classFullName: string): ChangesetECAdaptor {\n if (!this._classFilter.has(classFullName))\n this._classFilter.add(classFullName);\n\n this._allowedClasses.clear();\n return this;\n }\n\n private buildClassFilter() {\n if (this._allowedClasses.size !== 0 || this._classFilter.size === 0)\n return;\n\n this._classFilter.forEach((className) => {\n this._mapCache.getAllDerivedClasses(className).forEach((classId) => {\n this._allowedClasses.add(classId);\n });\n });\n }\n\n /**\n * Construct adaptor with a initialized reader.\n * @note the changeset reader must have disableSchemaCheck\n * set to false and db must also be set.\n * @param reader wrap changeset reader.\n */\n public constructor(public readonly reader: SqliteChangesetReader, public readonly disableMetaData = false) {\n if (!reader.disableSchemaCheck)\n throw new Error(\"SqliteChangesetReader, 'disableSchemaCheck' param must be set to false.\");\n\n this._mapCache = new ECDbMap(reader.db);\n }\n\n /**\n * dispose current instance and it will also dispose the changeset reader.\n */\n public [Symbol.dispose](): void {\n this.close();\n }\n\n /**\n * close current instance and it will also close the changeset reader.\n */\n public close(): void {\n this.reader.close();\n }\n\n /**\n * Convert binary GUID into string GUID.\n * @param binaryGUID binary version of guid.\n * @returns GUID string.\n */\n private static convertBinaryToGuid(binaryGUID: Uint8Array): GuidString {\n // Check if the array has 16 elements\n if (binaryGUID.length !== 16) {\n throw new Error(\"Invalid array length for Guid\");\n }\n // Convert each element to a two-digit hexadecimal string\n const hex = Array.from(binaryGUID, (byte) => byte.toString(16).padStart(2, \"0\"));\n // Join the hexadecimal strings and insert hyphens\n return `${hex.slice(0, 4).join(\"\")}-${hex.slice(4, 6).join(\"\")}-${hex.slice(6, 8).join(\"\")}-${hex.slice(8, 10).join(\"\")}-${hex.slice(10, 16).join(\"\")}`;\n\n }\n\n /**\n * Set value use access string in a JS object.\n * @param targetObj object that will be updated.\n * @param accessString access string token separated by '.'.\n */\n private static setValue(targetObj: any, accessString: string, value: any): void {\n let cursor = targetObj;\n const propPath = accessString.split(\".\");\n propPath.forEach((propertyName) => {\n if (propertyName === \"__proto__\")\n throw new Error(\"access string cannot container __proto__\");\n });\n\n const leafProp = propPath.splice(-1).shift();\n if (!leafProp)\n throw new Error(\"not access string was specified.\");\n\n for (const elem of propPath) {\n if (typeof cursor[elem] === \"undefined\")\n cursor[elem] = {};\n cursor = cursor[elem];\n }\n cursor[leafProp] = value;\n }\n\n /**\n * Check if sqlite change table is a EC data table\n * @param tableName name of the table.\n * @returns true if table has EC data.\n */\n public isECTable(tableName: string) {\n return typeof this._mapCache.getTable(tableName) !== \"undefined\";\n }\n\n /**\n * Attempt find ECClassId from ECInstanceId for a change of type 'updated'.\n * @param tableName name of the table to find ECClassId from given ECInstanceId\n * @param instanceId instance id for which we need ECClassId for.\n * @returns if successful returns ECClassId else return undefined.\n */\n private getClassIdFromDb(tableName: string, instanceId: Id64String): Id64String | undefined {\n try {\n return this.reader.db?.withPreparedSqliteStatement(`SELECT [ECClassId] FROM [${tableName}] WHERE [rowId]=?`, (stmt) => {\n stmt.bindId(1, instanceId);\n return stmt.step() === DbResult.BE_SQLITE_ROW ? stmt.getValueId(0) : undefined;\n });\n } catch {\n return undefined;\n }\n }\n\n /** helper method around reader.op */\n public get op() { return this.reader.op; }\n /** Return true if current change is of type \"Inserted\" */\n public get isInserted() { return this.op === \"Inserted\"; }\n /** Return true if current change is of type \"Deleted\" */\n public get isDeleted() { return this.op === \"Deleted\"; }\n /** Return true if current change is of type \"Updated\" */\n public get isUpdated() { return this.op === \"Updated\"; }\n\n /**\n * Advance reader to next change or a change that meets the filter set in the current adaptor\n * @returns return false if no more changes to read.\n */\n public step(): boolean {\n this.inserted = undefined;\n this.deleted = undefined;\n this.buildClassFilter();\n while (this.reader.step()) {\n if (!this.isECTable(this.reader.tableName))\n continue;\n\n if (this._tableFilter.size > 0) {\n if (!this._tableFilter.has(this.reader.tableName))\n continue;\n }\n\n if (this._opFilter.size > 0) {\n if (!this._opFilter.has(this.reader.op))\n continue;\n }\n\n if (this.reader.hasRow) {\n const table = this._mapCache.getTable(this.reader.tableName);\n if (!table || table.type === \"Virtual\") {\n throw new Error(`table in changeset not found or is virtual ${this.reader.tableName}`);\n }\n\n const change = {\n inserted: this.reader.getChangeValuesObject(\"New\", { includePrimaryKeyInUpdateNew: true }),\n deleted: this.reader.getChangeValuesObject(\"Old\", { includePrimaryKeyInUpdateNew: true }),\n };\n\n if (!change.inserted && !change.deleted) {\n throw new Error(`unable to get change from changeset reader`);\n }\n\n let ecClassId: Id64String | undefined = this.reader.op === \"Inserted\" ? change.inserted?.ECClassId : change.deleted?.ECClassId;\n const classIdPresentInChange = typeof ecClassId !== \"undefined\";\n let classMap: IClassMap | undefined;\n let fallbackClassId: Id64String | undefined;\n if (table.isClassIdVirtual) {\n classMap = this._mapCache.getClassMap(table.exclusiveRootClassId);\n } else {\n if (!ecClassId) {\n // attempt to find ECClassId against row from the db.\n const primaryKeys = this.reader.primaryKeyValues;\n if (primaryKeys.length === 1) {\n ecClassId = this.getClassIdFromDb(this.reader.tableName, this.reader.primaryKeyValues[0] as Id64String);\n }\n }\n if (ecClassId)\n classMap = this._mapCache.getClassMap(ecClassId);\n if (!classMap) {\n // fallback to root map for table.\n classMap = this._mapCache.getClassMap(table.exclusiveRootClassId);\n if (classMap)\n fallbackClassId = table.exclusiveRootClassId;\n }\n }\n\n if (!classMap)\n throw new Error(`unable to load class map`);\n\n if (!classIdPresentInChange && !ecClassId && !fallbackClassId)\n ecClassId = classMap.id;\n\n if (this._allowedClasses.size !== 0) {\n if (!this._allowedClasses.has(classMap.id))\n continue;\n }\n\n const $meta = {\n tables: [this.reader.tableName],\n op: this.reader.op,\n classFullName: classMap.name,\n fallbackClassId,\n changeIndexes: [this.reader.changeIndex],\n };\n\n if (this.reader.op === \"Inserted\" && change.inserted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n this.inserted = { ECClassId: ecClassId, ECInstanceId: \"\" };\n if (!this.disableMetaData)\n this.inserted.$meta = { ...$meta, stage: \"New\" };\n this.transform(classMap, change.inserted, table, this.inserted);\n } else if (this.reader.op === \"Deleted\" && change.deleted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n this.deleted = { ECClassId: ecClassId, ECInstanceId: \"\" };\n if (!this.disableMetaData)\n this.deleted.$meta = { ...$meta, stage: \"Old\" };\n this.transform(classMap, change.deleted, table, this.deleted);\n } else if (change.inserted && change.deleted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n this.inserted = { ECClassId: ecClassId, ECInstanceId: \"\" };\n if (!this.disableMetaData)\n this.inserted.$meta = { ...$meta, stage: \"New\" };\n this.transform(classMap, change.inserted, table, this.inserted);\n // eslint-disable-next-line @typescript-eslint/naming-convention\n this.deleted = { ECClassId: ecClassId, ECInstanceId: \"\" };\n if (!this.disableMetaData)\n this.deleted.$meta = { ...$meta, stage: \"Old\" };\n this.transform(classMap, change.deleted, table, this.deleted);\n } else {\n throw new Error(\"unable to read EC changes\");\n }\n break;\n }\n }\n return this.reader.hasRow;\n }\n\n /**\n * Transform nav change column into navigation EC property\n * @param prop navigation property definition.\n * @param change sqlite change.\n * @param out ec instance that will be updated with navigation property.\n */\n private transformNavigationProperty(prop: IProperty, change: SqliteChange, out: ChangedECInstance): void {\n const idCol = prop.columns.filter(($) => $.accessString.endsWith(\".Id\")).at(0);\n if (!idCol) {\n throw new Error(\"invalid map for nav property\");\n }\n\n const idValue = change[idCol.column];\n if (typeof idValue === \"undefined\")\n return;\n\n ChangesetECAdaptor.setValue(out, idCol.accessString, idValue);\n\n const relClassIdCol = prop.columns.filter(($) => $.accessString.endsWith(\".RelECClassId\")).at(0);\n if (!relClassIdCol) {\n throw new Error(\"invalid map for nav property\");\n }\n\n const relClassIdValue = relClassIdCol.isVirtual ? prop.navigationRelationship?.classId : change[relClassIdCol.column];\n if (typeof relClassIdValue === \"undefined\")\n return;\n\n ChangesetECAdaptor.setValue(out, relClassIdCol.accessString, relClassIdValue);\n }\n\n /**\n * Transform sqlite change into EC change.\n * @param classMap classMap use to deserialize sqlite change into EC change.\n * @param change sqlite change from changeset.\n * @param table table definition of sqlite change provided.\n * @param out EC changeset that will be updated with properties.\n */\n private transform(classMap: IClassMap, change: SqliteChange, table: ITable, out: ChangedECInstance): void {\n // transform change row to instance\n for (const prop of classMap.properties) {\n if (prop.kind === \"PrimitiveArray\" || prop.kind === \"StructArray\") {\n // Arrays not supported\n continue;\n }\n if (prop.columns.filter((_) => _.isVirtual).length === prop.columns.length) {\n continue;\n }\n if (prop.kind === \"Navigation\") {\n this.transformNavigationProperty(prop, change, out);\n } else {\n for (const col of prop.columns) {\n if (col.table !== table.name)\n continue;\n\n const columnValue = change[col.column];\n if (typeof columnValue === \"undefined\")\n continue;\n\n if (columnValue !== null) {\n if (prop.primitiveType === \"DateTime\") {\n const dt = DateTime.fromJulianDay(columnValue, prop.dateTimeInfo?.dateTimeKind === \"Local\");\n ChangesetECAdaptor.setValue(out, col.accessString, dt.toISOString());\n continue;\n }\n if (prop.extendedTypeName === \"BeGuid\") {\n ChangesetECAdaptor.setValue(out, col.accessString, this.debugFlags.replaceGuidWithEllipsis ? \"...\" : ChangesetECAdaptor.convertBinaryToGuid(columnValue));\n continue;\n }\n if (prop.extendedTypeName === \"GeometryStream\") {\n ChangesetECAdaptor.setValue(out, col.accessString, this.debugFlags.replaceGeomWithEllipsis ? \"...\" : columnValue);\n continue;\n }\n if (prop.primitiveType === \"Binary\") {\n ChangesetECAdaptor.setValue(out, col.accessString, this.debugFlags.replaceBlobWithEllipsis ? \"...\" : columnValue);\n continue;\n }\n }\n ChangesetECAdaptor.setValue(out, col.accessString, columnValue);\n }\n }\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ElementAspect.d.ts","sourceRoot":"","sources":["../../src/ElementAspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ElementAspect.d.ts","sourceRoot":"","sources":["../../src/ElementAspect.ts"],"names":[],"mappings":"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"}
@@ -270,17 +270,13 @@ class ExternalSourceAspect extends ElementMultiAspect {
270
270
  */
271
271
  static findAllBySource(iModelDb, scope, kind, identifier) {
272
272
  const sql = `SELECT Element.Id, ECInstanceId FROM ${ExternalSourceAspect.classFullName} WHERE (Scope.Id=:scope AND Kind=:kind AND Identifier=:identifier)`;
273
- const found = [];
274
- // eslint-disable-next-line @typescript-eslint/no-deprecated
275
- iModelDb.withPreparedStatement(sql, (statement) => {
276
- statement.bindId("scope", scope);
277
- statement.bindString("kind", kind);
278
- statement.bindString("identifier", identifier);
279
- while (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) {
280
- found.push({ elementId: statement.getValue(0).getId(), aspectId: statement.getValue(1).getId() });
273
+ return iModelDb.withQueryReader(sql, (reader) => {
274
+ const found = [];
275
+ for (const row of reader) {
276
+ found.push({ elementId: row[0], aspectId: row[1] });
281
277
  }
282
- });
283
- return found;
278
+ return found;
279
+ }, new core_common_1.QueryBinder().bindId("scope", scope).bindString("kind", kind).bindString("identifier", identifier));
284
280
  }
285
281
  toJSON() {
286
282
  const val = super.toJSON();
@@ -1 +1 @@
1
- {"version":3,"file":"ElementAspect.js","sourceRoot":"","sources":["../../src/ElementAspect.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 ElementAspects\n */\n\nimport { ChannelRootAspectProps, ElementAspectProps, EntityReferenceSet, ExternalSourceAspectProps, RelatedElement, SheetInformation, SheetInformationAspectProps } from \"@itwin/core-common\";\nimport { Entity } from \"./Entity\";\nimport { IModelDb } from \"./IModelDb\";\nimport { ECSqlStatement } from \"./ECSqlStatement\";\nimport { assert, DbResult, Id64String } from \"@itwin/core-bentley\";\nimport { _implicitTxn, _verifyChannel } from \"./internal/Symbols\";\nimport { SheetOwnsSheetInformationAspect } from \"./NavigationRelationship\";\nimport { Sheet } from \"./Element\";\nimport { ECVersion } from \"@itwin/ecschema-metadata\";\nimport { EditTxn } from \"./EditTxn\";\n\n/** Argument for the `ElementAspect.onXxx` static methods\n * @beta\n */\nexport interface OnAspectArg {\n /** The iModel for the aspect affected by this event. */\n iModel: IModelDb;\n /** The model for the aspect affected by this event */\n model: Id64String;\n}\n/** Argument for the `ElementAspect.onXxx` static methods that supply the properties of an aspect to be inserted or updated.\n * @beta\n */\nexport interface OnAspectPropsArg extends OnAspectArg {\n /** The new properties of the aspect affected by this event. */\n props: Readonly<ElementAspectProps>;\n}\n/** Argument for the `ElementAspect.onXxx` static methods that only supply the Id of the affected aspect.\n * @beta\n */\nexport interface OnAspectIdArg extends OnAspectArg {\n /** The Id of the aspect affected by this event */\n aspectId: Id64String;\n}\n\n/** An Element Aspect is a class that defines a set of properties that are related to (and owned by) a single element.\n * Semantically, an ElementAspect can be considered part of the Element. Thus, an ElementAspect is deleted if its owning Element is deleted.\n * BIS Guideline: Subclass ElementUniqueAspect or ElementMultiAspect rather than subclassing ElementAspect directly.\n * @public @preview\n */\nexport class ElementAspect extends Entity {\n public static override get className(): string { return \"ElementAspect\"; }\n public element: RelatedElement;\n\n /** Construct an aspect from its JSON representation and its containing iModel. */\n constructor(props: ElementAspectProps, iModel: IModelDb) {\n super(props, iModel);\n this.element = RelatedElement.fromJSON(props.element)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n }\n\n public override toJSON(): ElementAspectProps {\n const val = super.toJSON() as ElementAspectProps;\n val.element = this.element;\n return val;\n }\n\n /** Called before a new ElementAspect is inserted.\n * @note throw an exception to disallow the insert\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onInsert(arg: OnAspectPropsArg): void {\n const { props, iModel } = arg;\n iModel.channels[_verifyChannel](arg.model);\n iModel.locks.checkExclusiveLock(props.element.id, \"element\", \"insert aspect\");\n }\n\n /** Called after a new ElementAspect was inserted.\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onInserted(_arg: OnAspectPropsArg): void { }\n\n /** Called before an ElementAspect is updated.\n * @note throw an exception to disallow the update\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onUpdate(arg: OnAspectPropsArg): void {\n const { props, iModel } = arg;\n iModel.channels[_verifyChannel](arg.model);\n iModel.locks.checkExclusiveLock(props.element.id, \"element\", \"update aspect\");\n }\n\n /** Called after an ElementAspect was updated.\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onUpdated(_arg: OnAspectPropsArg): void { }\n\n /** Called before an ElementAspect is deleted.\n * @note throw an exception to disallow the delete\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onDelete(arg: OnAspectIdArg): void {\n const { aspectId, iModel } = arg;\n iModel.channels[_verifyChannel](arg.model);\n const { element } = iModel.elements.getAspect(aspectId);\n iModel.locks.checkExclusiveLock(element.id, \"element\", \"delete aspect\");\n }\n\n /** Called after an ElementAspect was deleted.\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onDeleted(_arg: OnAspectIdArg): void { }\n}\n/** An Element Unique Aspect is an ElementAspect where there can be only zero or one instance of the Element Aspect class per Element.\n * @public @preview\n */\nexport class ElementUniqueAspect extends ElementAspect {\n public static override get className(): string { return \"ElementUniqueAspect\"; }\n}\n\n/** An Element Multi-Aspect is an ElementAspect where there can be **n** instances of the Element Aspect class per Element.\n * @public @preview\n */\nexport class ElementMultiAspect extends ElementAspect {\n public static override get className(): string { return \"ElementMultiAspect\"; }\n}\n\n/**\n * @public @preview\n */\nexport class ChannelRootAspect extends ElementUniqueAspect {\n public static override get className(): string { return \"ChannelRootAspect\"; }\n /** Insert a ChannelRootAspect on the specified element.\n * @deprecated in 4.0 - might be removed in next major version. Use [[ChannelControl.makeChannelRoot]]. This method does not enforce the rule that channels may not nest and is therefore dangerous.\n */\n public static insert(iModel: IModelDb, ownerId: Id64String, channelName: string) {\n const props: ChannelRootAspectProps = { classFullName: this.classFullName, element: { id: ownerId }, owner: channelName };\n iModel[_implicitTxn].insertAspect(props);\n }\n}\n\nconst minimumBisCoreVersion = new ECVersion(1, 0, 25);\n\n/** An [[ElementUniqueAspect]] that captures common metadata about a single [[Sheet]].\n * Use [[getSheetInformation]] to retrieve the metadata for a Sheet and [[setSheetInformation]] to create, update, or delete it.\n * @beta\n */\nexport class SheetInformationAspect extends ElementUniqueAspect {\n public static override get className() { return \"SheetInformationAspect\"; }\n\n /** The sheet's metadata. */\n public sheetInformation: SheetInformation;\n\n protected static override onInsert(arg: OnAspectPropsArg): void {\n super.onInsert(arg);\n\n const sheet = arg.iModel.elements.tryGetElement<Sheet>(arg.props.element);\n if (!(sheet instanceof Sheet)) {\n throw new Error(\"SheetInformationAspect can only be applied to a Sheet element\");\n }\n }\n\n private constructor(props: SheetInformationAspectProps, iModel: IModelDb) {\n super(props, iModel);\n\n const designedDate = undefined !== props.designedDate ? new Date(props.designedDate) : undefined;\n\n this.sheetInformation = {\n designedBy: props.designedBy,\n designedDate,\n drawnBy: props.drawnBy,\n checkedBy: props.checkedBy,\n };\n }\n\n public override toJSON(): SheetInformationAspectProps {\n const props = super.toJSON() as SheetInformationAspectProps;\n for (const key of [\"designedBy\", \"drawnBy\", \"checkedBy\"] as const) {\n const value = this.sheetInformation[key];\n if (undefined !== value) {\n props[key] = value;\n }\n }\n\n if (undefined !== this.sheetInformation.designedDate) {\n props.designedDate = this.sheetInformation.designedDate.toISOString();\n }\n\n return props;\n }\n\n private static findForSheet(sheetId: Id64String, iModel: IModelDb): SheetInformationAspect | undefined {\n if (!iModel.meetsMinimumSchemaVersion(\"BisCore\", minimumBisCoreVersion)) {\n return undefined;\n }\n\n const aspects = iModel.elements.getAspects(sheetId, this.classFullName);\n if (aspects[0]) {\n assert(aspects[0] instanceof SheetInformationAspect);\n return aspects[0];\n }\n\n return undefined;\n }\n\n /** Retrieves the metadata hosted by the aspect on the specified sheet, returning `undefined` if no such metadata could be retrieved.\n * @see [[setSheetInformation]] to create, update, or delete the aspect.\n */\n public static getSheetInformation(sheetId: Id64String, iModel: IModelDb): SheetInformation | undefined {\n const aspect = this.findForSheet(sheetId, iModel);\n return aspect?.sheetInformation;\n }\n\n /** Sets the `information` for the [[Sheet]] element specified by ``sheetId`.\n * If `information` is `undefined`, any existing aspect will be deleted.\n * Otherwise, a new aspect will be inserted, or an existing aspect will be updated with the new metadata.\n * @throws Error if the iModel contains a version of the BisCore schema older than 01.00.25.\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use SheetInformationAspect.setSheetInformation(txn, ...) instead, within an explicit EditTxn scope (or via withEditTxn). See EditTxn documentation for migration help.\n */\n public static setSheetInformation(information: SheetInformation | undefined, sheetId: Id64String, iModel: IModelDb): void;\n\n /** Sets the `information` for the [[Sheet]] element specified by `sheetId`, using an explicit EditTxn.\n * If `information` is `undefined`, any existing aspect will be deleted.\n * Otherwise, a new aspect will be inserted, or an existing aspect will be updated with the new metadata.\n * @throws Error if the iModel contains a version of the BisCore schema older than 01.00.25.\n * @throws EditTxnError if the EditTxn is not active.\n * @beta\n */\n public static setSheetInformation(txn: EditTxn, information: SheetInformation | undefined, sheetId: Id64String): void;\n public static setSheetInformation(arg1: EditTxn | SheetInformation | undefined, arg2: SheetInformation | Id64String | undefined, arg3: Id64String | IModelDb): void {\n let txn: EditTxn;\n let information: SheetInformation | undefined;\n let sheetId: Id64String;\n\n if (arg1 instanceof EditTxn) {\n txn = arg1;\n information = arg2 as SheetInformation | undefined;\n sheetId = arg3 as Id64String;\n } else {\n txn = (arg3 as IModelDb)[_implicitTxn];\n information = arg1;\n sheetId = arg2 as Id64String;\n }\n\n txn.iModel.requireMinimumSchemaVersion(\"BisCore\", minimumBisCoreVersion, \"SheetInformationAspect\");\n\n const aspect = this.findForSheet(sheetId, txn.iModel);\n if (!information) {\n if (aspect) {\n txn.deleteAspect(aspect.id);\n }\n\n return;\n }\n\n if (aspect) {\n aspect.sheetInformation = { ...information };\n txn.updateAspect(aspect.toJSON());\n } else {\n const info = { ...information } as any;\n for (const key of Object.keys(info)) {\n if (info[key] === undefined) {\n delete info[key];\n }\n }\n\n if (undefined !== info.designedDate) {\n info.designedDate = info.designedDate.toISOString();\n }\n\n const props: SheetInformationAspectProps = {\n classFullName: this.classFullName,\n element: {\n id: sheetId,\n relClassName: SheetOwnsSheetInformationAspect.classFullName,\n },\n ...info,\n };\n\n txn.insertAspect(props);\n }\n }\n}\n\n/** An ElementMultiAspect that stores synchronization information for an Element originating from an external source.\n * @note The associated ECClass was added to the BisCore schema in version 1.0.2\n * @public @preview\n */\nexport class ExternalSourceAspect extends ElementMultiAspect {\n public static override get className(): string { return \"ExternalSourceAspect\"; }\n\n /** An element that scopes the combination of `kind` and `identifier` to uniquely identify the object from the external source.\n * @note Warning: in a future major release the `scope` property will be optional, since the scope is intended to be potentially invalid.\n * all references should treat it as potentially undefined, but we cannot change the type yet since that is a breaking change.\n */\n public scope: RelatedElement;\n /** The identifier of the object in the source repository. */\n public identifier: string;\n /** The kind of object within the source repository. */\n public kind: string;\n /** The cryptographic hash (any algorithm) of the source object's content. If defined, it must be guaranteed to change when the source object's content changes. */\n public checksum?: string;\n /** An optional value that is typically a version number or a pseudo version number like last modified time.\n * It will be used by the synchronization process to detect that a source object is unchanged so that computing a cryptographic hash can be avoided.\n * If present, this value must be guaranteed to change when any of the source object's content changes.\n */\n public version?: string;\n /** A place where additional JSON properties can be stored. For example, provenance information or properties relating to the synchronization process.\n * @note Warning: in a future major release, the type of `jsonProperties` will be changed to object, and itwin.js will automatically stringify it when writing to the iModel.\n * This will be a breaking change, since application code will have to change from supplying a string to supplying an object.\n */\n public jsonProperties?: string;\n /** The source of the imported/synchronized object. Should point to an instance of [ExternalSource]($backend). */\n public source?: RelatedElement;\n\n /** Construct an aspect from its JSON representation and its containing iModel. */\n constructor(props: ExternalSourceAspectProps, iModel: IModelDb) {\n super(props, iModel);\n this.scope = RelatedElement.fromJSON(props.scope)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n this.source = RelatedElement.fromJSON(props.source);\n this.identifier = props.identifier;\n this.kind = props.kind;\n this.checksum = props.checksum;\n this.version = props.version;\n this.jsonProperties = props.jsonProperties;\n }\n\n /** Look up the elements that contain one or more ExternalSourceAspect with the specified Scope, Kind, and Identifier.\n * The result of this function is an array of all of the ExternalSourceAspects that were found, each associated with the owning element.\n * A given element could have more than one ExternalSourceAspect with the given scope, kind, and identifier.\n * Also, many elements could have ExternalSourceAspect with the same scope, kind, and identifier.\n * Therefore, the result array could have more than one entry with the same elementId.\n * Aspects are never shared. Each aspect has its own unique ECInstanceId.\n * @param iModelDb The iModel to query\n * @param scope The scope of the ExternalSourceAspects to find\n * @param kind The kind of the ExternalSourceAspects to find\n * @param identifier The identifier of the ExternalSourceAspects to find\n * @returns the query results\n */\n public static findAllBySource(iModelDb: IModelDb, scope: Id64String, kind: string, identifier: string): Array<{ elementId: Id64String, aspectId: Id64String }> {\n const sql = `SELECT Element.Id, ECInstanceId FROM ${ExternalSourceAspect.classFullName} WHERE (Scope.Id=:scope AND Kind=:kind AND Identifier=:identifier)`;\n const found: Array<{ elementId: Id64String, aspectId: Id64String }> = [];\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n iModelDb.withPreparedStatement(sql, (statement: ECSqlStatement) => {\n statement.bindId(\"scope\", scope);\n statement.bindString(\"kind\", kind);\n statement.bindString(\"identifier\", identifier);\n while (DbResult.BE_SQLITE_ROW === statement.step()) {\n found.push({ elementId: statement.getValue(0).getId(), aspectId: statement.getValue(1).getId() });\n }\n });\n return found;\n }\n\n public override toJSON(): ExternalSourceAspectProps {\n const val = super.toJSON() as ExternalSourceAspectProps;\n val.scope = this.scope;\n val.source = this.source;\n val.identifier = this.identifier;\n val.kind = this.kind;\n val.checksum = this.checksum;\n val.version = this.version;\n val.jsonProperties = this.jsonProperties;\n return val;\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n if (this.scope)\n referenceIds.addElement(this.scope.id);\n referenceIds.addElement(this.element.id);\n if (this.source)\n referenceIds.addElement(this.source.id);\n }\n}\n\n/** @public @preview */\nexport namespace ExternalSourceAspect {\n /** Standard values for the `Kind` property of `ExternalSourceAspect`.\n * @public @preview\n */\n export enum Kind {\n /** Indicates that the [[ExternalSourceAspect]] is storing [[Element]] provenance */\n Element = \"Element\",\n /** Indicates that the [[ExternalSourceAspect]] is storing [[Relationship]] provenance */\n Relationship = \"Relationship\",\n /** Indicates that the [[ExternalSourceAspect]] is storing *scope* provenance\n * @see [[ExternalSourceAspect.scope]]\n */\n Scope = \"Scope\",\n }\n}\n"]}
1
+ {"version":3,"file":"ElementAspect.js","sourceRoot":"","sources":["../../src/ElementAspect.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 ElementAspects\n */\n\nimport { ChannelRootAspectProps, ElementAspectProps, EntityReferenceSet, ExternalSourceAspectProps, QueryBinder, RelatedElement, SheetInformation, SheetInformationAspectProps } from \"@itwin/core-common\";\nimport { Entity } from \"./Entity\";\nimport { IModelDb } from \"./IModelDb\";\nimport { assert, Id64String } from \"@itwin/core-bentley\";\nimport { _implicitTxn, _verifyChannel } from \"./internal/Symbols\";\nimport { SheetOwnsSheetInformationAspect } from \"./NavigationRelationship\";\nimport { Sheet } from \"./Element\";\nimport { ECVersion } from \"@itwin/ecschema-metadata\";\nimport { EditTxn } from \"./EditTxn\";\n\n/** Argument for the `ElementAspect.onXxx` static methods\n * @beta\n */\nexport interface OnAspectArg {\n /** The iModel for the aspect affected by this event. */\n iModel: IModelDb;\n /** The model for the aspect affected by this event */\n model: Id64String;\n}\n/** Argument for the `ElementAspect.onXxx` static methods that supply the properties of an aspect to be inserted or updated.\n * @beta\n */\nexport interface OnAspectPropsArg extends OnAspectArg {\n /** The new properties of the aspect affected by this event. */\n props: Readonly<ElementAspectProps>;\n}\n/** Argument for the `ElementAspect.onXxx` static methods that only supply the Id of the affected aspect.\n * @beta\n */\nexport interface OnAspectIdArg extends OnAspectArg {\n /** The Id of the aspect affected by this event */\n aspectId: Id64String;\n}\n\n/** An Element Aspect is a class that defines a set of properties that are related to (and owned by) a single element.\n * Semantically, an ElementAspect can be considered part of the Element. Thus, an ElementAspect is deleted if its owning Element is deleted.\n * BIS Guideline: Subclass ElementUniqueAspect or ElementMultiAspect rather than subclassing ElementAspect directly.\n * @public @preview\n */\nexport class ElementAspect extends Entity {\n public static override get className(): string { return \"ElementAspect\"; }\n public element: RelatedElement;\n\n /** Construct an aspect from its JSON representation and its containing iModel. */\n constructor(props: ElementAspectProps, iModel: IModelDb) {\n super(props, iModel);\n this.element = RelatedElement.fromJSON(props.element)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n }\n\n public override toJSON(): ElementAspectProps {\n const val = super.toJSON() as ElementAspectProps;\n val.element = this.element;\n return val;\n }\n\n /** Called before a new ElementAspect is inserted.\n * @note throw an exception to disallow the insert\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onInsert(arg: OnAspectPropsArg): void {\n const { props, iModel } = arg;\n iModel.channels[_verifyChannel](arg.model);\n iModel.locks.checkExclusiveLock(props.element.id, \"element\", \"insert aspect\");\n }\n\n /** Called after a new ElementAspect was inserted.\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onInserted(_arg: OnAspectPropsArg): void { }\n\n /** Called before an ElementAspect is updated.\n * @note throw an exception to disallow the update\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onUpdate(arg: OnAspectPropsArg): void {\n const { props, iModel } = arg;\n iModel.channels[_verifyChannel](arg.model);\n iModel.locks.checkExclusiveLock(props.element.id, \"element\", \"update aspect\");\n }\n\n /** Called after an ElementAspect was updated.\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onUpdated(_arg: OnAspectPropsArg): void { }\n\n /** Called before an ElementAspect is deleted.\n * @note throw an exception to disallow the delete\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onDelete(arg: OnAspectIdArg): void {\n const { aspectId, iModel } = arg;\n iModel.channels[_verifyChannel](arg.model);\n const { element } = iModel.elements.getAspect(aspectId);\n iModel.locks.checkExclusiveLock(element.id, \"element\", \"delete aspect\");\n }\n\n /** Called after an ElementAspect was deleted.\n * @note If you override this method, you must call super.\n * @beta\n */\n protected static onDeleted(_arg: OnAspectIdArg): void { }\n}\n/** An Element Unique Aspect is an ElementAspect where there can be only zero or one instance of the Element Aspect class per Element.\n * @public @preview\n */\nexport class ElementUniqueAspect extends ElementAspect {\n public static override get className(): string { return \"ElementUniqueAspect\"; }\n}\n\n/** An Element Multi-Aspect is an ElementAspect where there can be **n** instances of the Element Aspect class per Element.\n * @public @preview\n */\nexport class ElementMultiAspect extends ElementAspect {\n public static override get className(): string { return \"ElementMultiAspect\"; }\n}\n\n/**\n * @public @preview\n */\nexport class ChannelRootAspect extends ElementUniqueAspect {\n public static override get className(): string { return \"ChannelRootAspect\"; }\n /** Insert a ChannelRootAspect on the specified element.\n * @deprecated in 4.0 - might be removed in next major version. Use [[ChannelControl.makeChannelRoot]]. This method does not enforce the rule that channels may not nest and is therefore dangerous.\n */\n public static insert(iModel: IModelDb, ownerId: Id64String, channelName: string) {\n const props: ChannelRootAspectProps = { classFullName: this.classFullName, element: { id: ownerId }, owner: channelName };\n iModel[_implicitTxn].insertAspect(props);\n }\n}\n\nconst minimumBisCoreVersion = new ECVersion(1, 0, 25);\n\n/** An [[ElementUniqueAspect]] that captures common metadata about a single [[Sheet]].\n * Use [[getSheetInformation]] to retrieve the metadata for a Sheet and [[setSheetInformation]] to create, update, or delete it.\n * @beta\n */\nexport class SheetInformationAspect extends ElementUniqueAspect {\n public static override get className() { return \"SheetInformationAspect\"; }\n\n /** The sheet's metadata. */\n public sheetInformation: SheetInformation;\n\n protected static override onInsert(arg: OnAspectPropsArg): void {\n super.onInsert(arg);\n\n const sheet = arg.iModel.elements.tryGetElement<Sheet>(arg.props.element);\n if (!(sheet instanceof Sheet)) {\n throw new Error(\"SheetInformationAspect can only be applied to a Sheet element\");\n }\n }\n\n private constructor(props: SheetInformationAspectProps, iModel: IModelDb) {\n super(props, iModel);\n\n const designedDate = undefined !== props.designedDate ? new Date(props.designedDate) : undefined;\n\n this.sheetInformation = {\n designedBy: props.designedBy,\n designedDate,\n drawnBy: props.drawnBy,\n checkedBy: props.checkedBy,\n };\n }\n\n public override toJSON(): SheetInformationAspectProps {\n const props = super.toJSON() as SheetInformationAspectProps;\n for (const key of [\"designedBy\", \"drawnBy\", \"checkedBy\"] as const) {\n const value = this.sheetInformation[key];\n if (undefined !== value) {\n props[key] = value;\n }\n }\n\n if (undefined !== this.sheetInformation.designedDate) {\n props.designedDate = this.sheetInformation.designedDate.toISOString();\n }\n\n return props;\n }\n\n private static findForSheet(sheetId: Id64String, iModel: IModelDb): SheetInformationAspect | undefined {\n if (!iModel.meetsMinimumSchemaVersion(\"BisCore\", minimumBisCoreVersion)) {\n return undefined;\n }\n\n const aspects = iModel.elements.getAspects(sheetId, this.classFullName);\n if (aspects[0]) {\n assert(aspects[0] instanceof SheetInformationAspect);\n return aspects[0];\n }\n\n return undefined;\n }\n\n /** Retrieves the metadata hosted by the aspect on the specified sheet, returning `undefined` if no such metadata could be retrieved.\n * @see [[setSheetInformation]] to create, update, or delete the aspect.\n */\n public static getSheetInformation(sheetId: Id64String, iModel: IModelDb): SheetInformation | undefined {\n const aspect = this.findForSheet(sheetId, iModel);\n return aspect?.sheetInformation;\n }\n\n /** Sets the `information` for the [[Sheet]] element specified by ``sheetId`.\n * If `information` is `undefined`, any existing aspect will be deleted.\n * Otherwise, a new aspect will be inserted, or an existing aspect will be updated with the new metadata.\n * @throws Error if the iModel contains a version of the BisCore schema older than 01.00.25.\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use SheetInformationAspect.setSheetInformation(txn, ...) instead, within an explicit EditTxn scope (or via withEditTxn). See EditTxn documentation for migration help.\n */\n public static setSheetInformation(information: SheetInformation | undefined, sheetId: Id64String, iModel: IModelDb): void;\n\n /** Sets the `information` for the [[Sheet]] element specified by `sheetId`, using an explicit EditTxn.\n * If `information` is `undefined`, any existing aspect will be deleted.\n * Otherwise, a new aspect will be inserted, or an existing aspect will be updated with the new metadata.\n * @throws Error if the iModel contains a version of the BisCore schema older than 01.00.25.\n * @throws EditTxnError if the EditTxn is not active.\n * @beta\n */\n public static setSheetInformation(txn: EditTxn, information: SheetInformation | undefined, sheetId: Id64String): void;\n public static setSheetInformation(arg1: EditTxn | SheetInformation | undefined, arg2: SheetInformation | Id64String | undefined, arg3: Id64String | IModelDb): void {\n let txn: EditTxn;\n let information: SheetInformation | undefined;\n let sheetId: Id64String;\n\n if (arg1 instanceof EditTxn) {\n txn = arg1;\n information = arg2 as SheetInformation | undefined;\n sheetId = arg3 as Id64String;\n } else {\n txn = (arg3 as IModelDb)[_implicitTxn];\n information = arg1;\n sheetId = arg2 as Id64String;\n }\n\n txn.iModel.requireMinimumSchemaVersion(\"BisCore\", minimumBisCoreVersion, \"SheetInformationAspect\");\n\n const aspect = this.findForSheet(sheetId, txn.iModel);\n if (!information) {\n if (aspect) {\n txn.deleteAspect(aspect.id);\n }\n\n return;\n }\n\n if (aspect) {\n aspect.sheetInformation = { ...information };\n txn.updateAspect(aspect.toJSON());\n } else {\n const info = { ...information } as any;\n for (const key of Object.keys(info)) {\n if (info[key] === undefined) {\n delete info[key];\n }\n }\n\n if (undefined !== info.designedDate) {\n info.designedDate = info.designedDate.toISOString();\n }\n\n const props: SheetInformationAspectProps = {\n classFullName: this.classFullName,\n element: {\n id: sheetId,\n relClassName: SheetOwnsSheetInformationAspect.classFullName,\n },\n ...info,\n };\n\n txn.insertAspect(props);\n }\n }\n}\n\n/** An ElementMultiAspect that stores synchronization information for an Element originating from an external source.\n * @note The associated ECClass was added to the BisCore schema in version 1.0.2\n * @public @preview\n */\nexport class ExternalSourceAspect extends ElementMultiAspect {\n public static override get className(): string { return \"ExternalSourceAspect\"; }\n\n /** An element that scopes the combination of `kind` and `identifier` to uniquely identify the object from the external source.\n * @note Warning: in a future major release the `scope` property will be optional, since the scope is intended to be potentially invalid.\n * all references should treat it as potentially undefined, but we cannot change the type yet since that is a breaking change.\n */\n public scope: RelatedElement;\n /** The identifier of the object in the source repository. */\n public identifier: string;\n /** The kind of object within the source repository. */\n public kind: string;\n /** The cryptographic hash (any algorithm) of the source object's content. If defined, it must be guaranteed to change when the source object's content changes. */\n public checksum?: string;\n /** An optional value that is typically a version number or a pseudo version number like last modified time.\n * It will be used by the synchronization process to detect that a source object is unchanged so that computing a cryptographic hash can be avoided.\n * If present, this value must be guaranteed to change when any of the source object's content changes.\n */\n public version?: string;\n /** A place where additional JSON properties can be stored. For example, provenance information or properties relating to the synchronization process.\n * @note Warning: in a future major release, the type of `jsonProperties` will be changed to object, and itwin.js will automatically stringify it when writing to the iModel.\n * This will be a breaking change, since application code will have to change from supplying a string to supplying an object.\n */\n public jsonProperties?: string;\n /** The source of the imported/synchronized object. Should point to an instance of [ExternalSource]($backend). */\n public source?: RelatedElement;\n\n /** Construct an aspect from its JSON representation and its containing iModel. */\n constructor(props: ExternalSourceAspectProps, iModel: IModelDb) {\n super(props, iModel);\n this.scope = RelatedElement.fromJSON(props.scope)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n this.source = RelatedElement.fromJSON(props.source);\n this.identifier = props.identifier;\n this.kind = props.kind;\n this.checksum = props.checksum;\n this.version = props.version;\n this.jsonProperties = props.jsonProperties;\n }\n\n /** Look up the elements that contain one or more ExternalSourceAspect with the specified Scope, Kind, and Identifier.\n * The result of this function is an array of all of the ExternalSourceAspects that were found, each associated with the owning element.\n * A given element could have more than one ExternalSourceAspect with the given scope, kind, and identifier.\n * Also, many elements could have ExternalSourceAspect with the same scope, kind, and identifier.\n * Therefore, the result array could have more than one entry with the same elementId.\n * Aspects are never shared. Each aspect has its own unique ECInstanceId.\n * @param iModelDb The iModel to query\n * @param scope The scope of the ExternalSourceAspects to find\n * @param kind The kind of the ExternalSourceAspects to find\n * @param identifier The identifier of the ExternalSourceAspects to find\n * @returns the query results\n */\n public static findAllBySource(iModelDb: IModelDb, scope: Id64String, kind: string, identifier: string): Array<{ elementId: Id64String, aspectId: Id64String }> {\n const sql = `SELECT Element.Id, ECInstanceId FROM ${ExternalSourceAspect.classFullName} WHERE (Scope.Id=:scope AND Kind=:kind AND Identifier=:identifier)`;\n return iModelDb.withQueryReader(sql, (reader): Array<{ elementId: Id64String, aspectId: Id64String }> => {\n const found: Array<{ elementId: Id64String, aspectId: Id64String }> = [];\n for (const row of reader) {\n found.push({ elementId: row[0], aspectId: row[1] });\n }\n return found;\n }, new QueryBinder().bindId(\"scope\", scope).bindString(\"kind\", kind).bindString(\"identifier\", identifier));\n }\n\n public override toJSON(): ExternalSourceAspectProps {\n const val = super.toJSON() as ExternalSourceAspectProps;\n val.scope = this.scope;\n val.source = this.source;\n val.identifier = this.identifier;\n val.kind = this.kind;\n val.checksum = this.checksum;\n val.version = this.version;\n val.jsonProperties = this.jsonProperties;\n return val;\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n if (this.scope)\n referenceIds.addElement(this.scope.id);\n referenceIds.addElement(this.element.id);\n if (this.source)\n referenceIds.addElement(this.source.id);\n }\n}\n\n/** @public @preview */\nexport namespace ExternalSourceAspect {\n /** Standard values for the `Kind` property of `ExternalSourceAspect`.\n * @public @preview\n */\n export enum Kind {\n /** Indicates that the [[ExternalSourceAspect]] is storing [[Element]] provenance */\n Element = \"Element\",\n /** Indicates that the [[ExternalSourceAspect]] is storing [[Relationship]] provenance */\n Relationship = \"Relationship\",\n /** Indicates that the [[ExternalSourceAspect]] is storing *scope* provenance\n * @see [[ExternalSourceAspect.scope]]\n */\n Scope = \"Scope\",\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ElementTreeWalker.d.ts","sourceRoot":"","sources":["../../src/ElementTreeWalker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ElementTreeWalker.d.ts","sourceRoot":"","sources":["../../src/ElementTreeWalker.ts"],"names":[],"mappings":"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"}
@@ -34,12 +34,10 @@ function sortChildrenBeforeParents(iModel, ids) {
34
34
  return [...sortChildrenBeforeParents(iModel, children), parents];
35
35
  }
36
36
  function isModelEmpty(iModel, modelId) {
37
- // eslint-disable-next-line @typescript-eslint/no-deprecated
38
- return iModel.withPreparedStatement(`select count(*) from ${Element_1.Element.classFullName} where Model.Id = ?`, (stmt) => {
39
- stmt.bindId(1, modelId);
40
- stmt.step();
41
- return stmt.getValue(0).getInteger() === 0;
42
- });
37
+ return iModel.withQueryReader(`select count(*) from ${Element_1.Element.classFullName} where Model.Id = ?`, (reader) => {
38
+ reader.step();
39
+ return reader.current[0] === 0;
40
+ }, new core_common_1.QueryBinder().bindId(1, modelId));
43
41
  }
44
42
  function isDefinitionModel(model) {
45
43
  return (model.id !== core_common_1.IModel.repositoryModelId) && (model instanceof Model_1.DefinitionModel);
@@ -141,13 +139,11 @@ function logModel(op, iModel, modelId, scope, logElements) {
141
139
  const model = iModel.models.getModel(modelId);
142
140
  core_bentley_1.Logger.logTrace(loggerCategory, `${op} ${fmtModel(model)} ${scope ? scope.toString() : ""}`);
143
141
  if (logElements) {
144
- // eslint-disable-next-line @typescript-eslint/no-deprecated
145
- iModel.withPreparedStatement(`select ecinstanceid from ${Element_1.Element.classFullName} where Model.Id = ?`, (stmt) => {
146
- stmt.bindId(1, modelId);
147
- while (stmt.step() === core_bentley_1.DbResult.BE_SQLITE_ROW) {
148
- logElement(" - ", iModel, stmt.getValue(0).getId());
142
+ iModel.withQueryReader(`select ecinstanceid from ${Element_1.Element.classFullName} where Model.Id = ?`, (reader) => {
143
+ for (const row of reader) {
144
+ logElement(" - ", iModel, row[0]);
149
145
  }
150
- });
146
+ }, new core_common_1.QueryBinder().bindId(1, modelId));
151
147
  }
152
148
  }
153
149
  /** Does a depth-first search on the tree defined by an element and its sub-models and children.
@@ -201,14 +197,12 @@ class ElementTreeBottomUp {
201
197
  _processSubModel(model, parenScope) {
202
198
  const scope = new ElementTreeWalkerScope(parenScope, model);
203
199
  // Visit only the top-level parents. processElementTree will visit their children (bottom-up).
204
- // eslint-disable-next-line @typescript-eslint/no-deprecated
205
- model.iModel.withPreparedStatement(`select ECInstanceId from bis:Element where Model.id=? and Parent.Id is null`, (stmt) => {
206
- stmt.bindId(1, model.id);
207
- while (stmt.step() === core_bentley_1.DbResult.BE_SQLITE_ROW) {
208
- const elementId = stmt.getValue(0).getId();
200
+ model.iModel.withQueryReader(`select ECInstanceId from bis:Element where Model.id=? and Parent.Id is null`, (reader) => {
201
+ for (const row of reader) {
202
+ const elementId = row[0];
209
203
  this.processElementTree(elementId, scope);
210
204
  }
211
- });
205
+ }, new core_common_1.QueryBinder().bindId(1, model.id));
212
206
  }
213
207
  }
214
208
  exports.ElementTreeBottomUp = ElementTreeBottomUp;
@@ -363,14 +357,12 @@ class ElementTreeTopDown {
363
357
  _processSubModel(subModel, scope) {
364
358
  const subModelScope = new ElementTreeWalkerScope(scope, subModel);
365
359
  // Visit only the top-level parents. processElementTree will recurse into their children.
366
- // eslint-disable-next-line @typescript-eslint/no-deprecated
367
- this._iModel.withPreparedStatement(`select ECInstanceId from bis:Element where Model.id=? and Parent.Id is null`, (stmt) => {
368
- stmt.bindId(1, subModel.id);
369
- while (stmt.step() === core_bentley_1.DbResult.BE_SQLITE_ROW) {
370
- const elementId = stmt.getValue(0).getId();
360
+ this._iModel.withQueryReader(`select ECInstanceId from bis:Element where Model.id=? and Parent.Id is null`, (reader) => {
361
+ for (const row of reader) {
362
+ const elementId = row[0];
371
363
  this.processElementTree(elementId, subModelScope);
372
364
  }
373
- });
365
+ }, new core_common_1.QueryBinder().bindId(1, subModel.id));
374
366
  }
375
367
  }
376
368
  /** Performs a breadth-first search to visit elements in top-down order.