@itwin/core-backend 5.12.0-dev.1 → 5.12.0-dev.10

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 (188) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +1 -1
  3. package/lib/cjs/BackendHubAccess.js +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
  6. package/lib/cjs/ChangeSummaryManager.js +33 -37
  7. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  8. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  9. package/lib/cjs/ChangesetECAdaptor.js +4 -7
  10. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  11. package/lib/cjs/ChangesetReader.d.ts +65 -23
  12. package/lib/cjs/ChangesetReader.d.ts.map +1 -1
  13. package/lib/cjs/ChangesetReader.js +162 -102
  14. package/lib/cjs/ChangesetReader.js.map +1 -1
  15. package/lib/cjs/ClassRegistry.d.ts +1 -1
  16. package/lib/cjs/ClassRegistry.js +1 -1
  17. package/lib/cjs/ClassRegistry.js.map +1 -1
  18. package/lib/cjs/ECDb.d.ts +4 -4
  19. package/lib/cjs/ECDb.d.ts.map +1 -1
  20. package/lib/cjs/ECDb.js +6 -6
  21. package/lib/cjs/ECDb.js.map +1 -1
  22. package/lib/cjs/ECSqlStatement.d.ts +6 -6
  23. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  24. package/lib/cjs/ECSqlStatement.js +4 -4
  25. package/lib/cjs/ECSqlStatement.js.map +1 -1
  26. package/lib/cjs/Element.d.ts +1 -1
  27. package/lib/cjs/Element.js +1 -1
  28. package/lib/cjs/Element.js.map +1 -1
  29. package/lib/cjs/ElementAspect.d.ts +1 -1
  30. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  31. package/lib/cjs/ElementAspect.js +7 -11
  32. package/lib/cjs/ElementAspect.js.map +1 -1
  33. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  34. package/lib/cjs/ElementTreeWalker.js +16 -24
  35. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  36. package/lib/cjs/Entity.d.ts +1 -1
  37. package/lib/cjs/Entity.js +1 -1
  38. package/lib/cjs/Entity.js.map +1 -1
  39. package/lib/cjs/IModelDb.d.ts +14 -14
  40. package/lib/cjs/IModelDb.d.ts.map +1 -1
  41. package/lib/cjs/IModelDb.js +79 -99
  42. package/lib/cjs/IModelDb.js.map +1 -1
  43. package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
  44. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  45. package/lib/cjs/IModelElementCloneContext.js +1 -1
  46. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  47. package/lib/cjs/IModelHost.d.ts +2 -2
  48. package/lib/cjs/IModelHost.js +2 -2
  49. package/lib/cjs/IModelHost.js.map +1 -1
  50. package/lib/cjs/Relationship.d.ts.map +1 -1
  51. package/lib/cjs/Relationship.js +8 -11
  52. package/lib/cjs/Relationship.js.map +1 -1
  53. package/lib/cjs/SQLiteDb.d.ts +1 -1
  54. package/lib/cjs/SQLiteDb.js +1 -1
  55. package/lib/cjs/SQLiteDb.js.map +1 -1
  56. package/lib/cjs/SqliteStatement.d.ts +1 -1
  57. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  58. package/lib/cjs/SqliteStatement.js +1 -1
  59. package/lib/cjs/SqliteStatement.js.map +1 -1
  60. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  61. package/lib/cjs/ViewDefinition.js +8 -12
  62. package/lib/cjs/ViewDefinition.js.map +1 -1
  63. package/lib/cjs/ViewStore.d.ts.map +1 -1
  64. package/lib/cjs/ViewStore.js +6 -8
  65. package/lib/cjs/ViewStore.js.map +1 -1
  66. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  67. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +8 -11
  68. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  69. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  70. package/lib/cjs/internal/ChannelAdmin.js +6 -10
  71. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  72. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  73. package/lib/cjs/internal/annotations/fields.js +19 -43
  74. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  75. package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -1
  76. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +8 -7
  77. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  78. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  79. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +2 -3
  80. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  81. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  82. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  83. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  84. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  85. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  86. package/lib/cjs/workspace/SettingsSchemas.d.ts +28 -2
  87. package/lib/cjs/workspace/SettingsSchemas.d.ts.map +1 -1
  88. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  89. package/lib/esm/BackendHubAccess.d.ts +1 -1
  90. package/lib/esm/BackendHubAccess.js +1 -1
  91. package/lib/esm/BackendHubAccess.js.map +1 -1
  92. package/lib/esm/ChangeSummaryManager.d.ts.map +1 -1
  93. package/lib/esm/ChangeSummaryManager.js +34 -38
  94. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  95. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  96. package/lib/esm/ChangesetECAdaptor.js +5 -8
  97. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  98. package/lib/esm/ChangesetReader.d.ts +65 -23
  99. package/lib/esm/ChangesetReader.d.ts.map +1 -1
  100. package/lib/esm/ChangesetReader.js +163 -103
  101. package/lib/esm/ChangesetReader.js.map +1 -1
  102. package/lib/esm/ClassRegistry.d.ts +1 -1
  103. package/lib/esm/ClassRegistry.js +1 -1
  104. package/lib/esm/ClassRegistry.js.map +1 -1
  105. package/lib/esm/ECDb.d.ts +4 -4
  106. package/lib/esm/ECDb.d.ts.map +1 -1
  107. package/lib/esm/ECDb.js +6 -6
  108. package/lib/esm/ECDb.js.map +1 -1
  109. package/lib/esm/ECSqlStatement.d.ts +6 -6
  110. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  111. package/lib/esm/ECSqlStatement.js +4 -4
  112. package/lib/esm/ECSqlStatement.js.map +1 -1
  113. package/lib/esm/Element.d.ts +1 -1
  114. package/lib/esm/Element.js +1 -1
  115. package/lib/esm/Element.js.map +1 -1
  116. package/lib/esm/ElementAspect.d.ts +1 -1
  117. package/lib/esm/ElementAspect.d.ts.map +1 -1
  118. package/lib/esm/ElementAspect.js +9 -13
  119. package/lib/esm/ElementAspect.js.map +1 -1
  120. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  121. package/lib/esm/ElementTreeWalker.js +18 -26
  122. package/lib/esm/ElementTreeWalker.js.map +1 -1
  123. package/lib/esm/Entity.d.ts +1 -1
  124. package/lib/esm/Entity.js +1 -1
  125. package/lib/esm/Entity.js.map +1 -1
  126. package/lib/esm/IModelDb.d.ts +14 -14
  127. package/lib/esm/IModelDb.d.ts.map +1 -1
  128. package/lib/esm/IModelDb.js +80 -100
  129. package/lib/esm/IModelDb.js.map +1 -1
  130. package/lib/esm/IModelElementCloneContext.d.ts +1 -1
  131. package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
  132. package/lib/esm/IModelElementCloneContext.js +1 -1
  133. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  134. package/lib/esm/IModelHost.d.ts +2 -2
  135. package/lib/esm/IModelHost.js +2 -2
  136. package/lib/esm/IModelHost.js.map +1 -1
  137. package/lib/esm/Relationship.d.ts.map +1 -1
  138. package/lib/esm/Relationship.js +9 -12
  139. package/lib/esm/Relationship.js.map +1 -1
  140. package/lib/esm/SQLiteDb.d.ts +1 -1
  141. package/lib/esm/SQLiteDb.js +1 -1
  142. package/lib/esm/SQLiteDb.js.map +1 -1
  143. package/lib/esm/SqliteStatement.d.ts +1 -1
  144. package/lib/esm/SqliteStatement.d.ts.map +1 -1
  145. package/lib/esm/SqliteStatement.js +1 -1
  146. package/lib/esm/SqliteStatement.js.map +1 -1
  147. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  148. package/lib/esm/ViewDefinition.js +10 -14
  149. package/lib/esm/ViewDefinition.js.map +1 -1
  150. package/lib/esm/ViewStore.d.ts.map +1 -1
  151. package/lib/esm/ViewStore.js +7 -9
  152. package/lib/esm/ViewStore.js.map +1 -1
  153. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  154. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +10 -13
  155. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  156. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  157. package/lib/esm/internal/ChannelAdmin.js +7 -11
  158. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  159. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  160. package/lib/esm/internal/annotations/fields.js +21 -45
  161. package/lib/esm/internal/annotations/fields.js.map +1 -1
  162. package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -1
  163. package/lib/esm/internal/workspace/SettingsSchemasImpl.js +8 -7
  164. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  165. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  166. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +2 -3
  167. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  168. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  169. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  170. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  171. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  172. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  173. package/lib/esm/test/TestUtils.d.ts +1 -1
  174. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  175. package/lib/esm/test/TestUtils.js +1 -1
  176. package/lib/esm/test/TestUtils.js.map +1 -1
  177. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +1 -1
  178. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  179. package/lib/esm/test/imodel/IModel.test.js +9 -3
  180. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  181. package/lib/esm/test/standalone/ChangesetReader.test.js +725 -110
  182. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  183. package/lib/esm/test/standalone/SettingsSchemas.test.js +6 -0
  184. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  185. package/lib/esm/workspace/SettingsSchemas.d.ts +28 -2
  186. package/lib/esm/workspace/SettingsSchemas.d.ts.map +1 -1
  187. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  188. package/package.json +14 -14
@@ -166,7 +166,7 @@ class IModelDb extends core_common_1.IModel {
166
166
  _schemaMap;
167
167
  _schemaContext;
168
168
  _schemasPromise;
169
- /** @deprecated in 5.0.0 - will not be removed until after 2026-06-13. Use [[fonts]]. */
169
+ /** @deprecated in 5.0.0 - might be removed in next major version. Use [[fonts]]. */
170
170
  _fontMap; // eslint-disable-line @typescript-eslint/no-deprecated
171
171
  _fonts = (0, IModelDbFontsImpl_1.createIModelDbFonts)(this);
172
172
  _workspace;
@@ -241,7 +241,7 @@ class IModelDb extends core_common_1.IModel {
241
241
  restartDefaultTxn() {
242
242
  this[Symbols_1._nativeDb].restartDefaultTxn();
243
243
  }
244
- /** @deprecated in 5.0.0 - will not be removed until after 2026-06-13. Use [[fonts]]. */
244
+ /** @deprecated in 5.0.0 - might be removed in next major version. Use [[fonts]]. */
245
245
  get fontMap() {
246
246
  return this._fontMap ?? (this._fontMap = new core_common_1.FontMap(this[Symbols_1._nativeDb].readFontMap())); // eslint-disable-line @typescript-eslint/no-deprecated
247
247
  }
@@ -524,7 +524,7 @@ class IModelDb extends core_common_1.IModel {
524
524
  * @returns the value returned by `callback`.
525
525
  * @see [[withStatement]]
526
526
  * @public
527
- * @deprecated in 4.11 - will not be removed until after 2026-06-13. Use [[createQueryReader]] instead.
527
+ * @deprecated in 4.11 - might be removed in next major version. Use [[createQueryReader]] instead.
528
528
  */
529
529
  // eslint-disable-next-line @typescript-eslint/no-deprecated
530
530
  withPreparedStatement(ecsql, callback, logErrors = true) {
@@ -556,7 +556,7 @@ class IModelDb extends core_common_1.IModel {
556
556
  * @returns the value returned by `callback`.
557
557
  * @see [[withPreparedStatement]]
558
558
  * @public
559
- * @deprecated in 4.11 - will not be removed until after 2026-06-13. Use [[createQueryReader]] instead.
559
+ * @deprecated in 4.11 - might be removed in next major version. Use [[createQueryReader]] instead.
560
560
  */
561
561
  // eslint-disable-next-line @typescript-eslint/no-deprecated
562
562
  withStatement(ecsql, callback, logErrors = true) {
@@ -593,7 +593,7 @@ class IModelDb extends core_common_1.IModel {
593
593
  * */
594
594
  createQueryReader(ecsql, params, config) {
595
595
  if (!this[Symbols_1._nativeDb].isOpen())
596
- throw new core_common_1.IModelError(core_bentley_1.DbResult.BE_SQLITE_ERROR, "db not open");
596
+ throw new core_common_1.IModelError(core_bentley_1.DbResult.BE_SQLITE_ERROR_NOTOPEN, "db not open");
597
597
  const executor = {
598
598
  execute: async (request) => {
599
599
  return ConcurrentQuery_1.ConcurrentQuery.executeQueryRequest(this[Symbols_1._nativeDb], request);
@@ -618,7 +618,7 @@ class IModelDb extends core_common_1.IModel {
618
618
  * */
619
619
  withQueryReader(ecsql, callback, params, config) {
620
620
  if (!this[Symbols_1._nativeDb].isOpen())
621
- throw new core_common_1.IModelError(core_bentley_1.DbResult.BE_SQLITE_ERROR, "db not open");
621
+ throw new core_common_1.IModelError(core_bentley_1.DbResult.BE_SQLITE_ERROR_NOTOPEN, "db not open");
622
622
  const executor = new ECSqlRowExecutor_1.ECSqlRowExecutor(this);
623
623
  const reader = new ECSqlSyncReader_1.ECSqlSyncReader(executor, ecsql, params, config);
624
624
  const release = () => executor[Symbol.dispose]();
@@ -777,19 +777,17 @@ class IModelDb extends core_common_1.IModel {
777
777
  if (typeof params.offset === "number" && params.offset > 0)
778
778
  sql += ` OFFSET ${params.offset}`;
779
779
  const ids = new Set();
780
- // eslint-disable-next-line @typescript-eslint/no-deprecated
781
- this.withPreparedStatement(sql, (stmt) => {
782
- if (params.bindings)
783
- stmt.bindValues(params.bindings);
784
- for (const row of stmt) {
785
- if (row.id !== undefined) {
786
- ids.add(row.id);
780
+ this.withQueryReader(sql, (reader) => {
781
+ for (const row of reader) {
782
+ const id = row[0];
783
+ if (id !== undefined) {
784
+ ids.add(id);
787
785
  if (ids.size > IModelDb.maxLimit) {
788
786
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadRequest, "Max LIMIT exceeded in SELECT statement");
789
787
  }
790
788
  }
791
789
  }
792
- });
790
+ }, core_common_1.QueryBinder.from(params.bindings));
793
791
  return ids;
794
792
  }
795
793
  clearCaches(params) {
@@ -878,7 +876,7 @@ class IModelDb extends core_common_1.IModel {
878
876
  }
879
877
  }
880
878
  /** @internal
881
- * @deprecated in 4.8 - will not be removed until after 2026-06-13. Use `txns.reverseTxns`.
879
+ * @deprecated in 4.8 - might be removed in next major version. Use `txns.reverseTxns`.
882
880
  */
883
881
  reverseTxns(numOperations) {
884
882
  return this[Symbols_1._nativeDb].reverseTxns(numOperations);
@@ -1245,7 +1243,7 @@ class IModelDb extends core_common_1.IModel {
1245
1243
  }
1246
1244
  /** The registry of entity metadata for this iModel.
1247
1245
  * @internal
1248
- * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` from the `iModel` instead.
1246
+ * @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` from the `iModel` instead.
1249
1247
  *
1250
1248
  * @example
1251
1249
  * ```typescript
@@ -1360,7 +1358,7 @@ class IModelDb extends core_common_1.IModel {
1360
1358
  * @param sql The ECSQL statement to prepare
1361
1359
  * @param logErrors Determines if error will be logged if statement fail to prepare
1362
1360
  * @throws [[IModelError]] if there is a problem preparing the statement.
1363
- * @deprecated in 4.11 - will not be removed until after 2026-06-13. Use [IModelDb.createQueryReader]($backend) or [ECDb.createQueryReader]($backend) to query.
1361
+ * @deprecated in 4.11 - might be removed in next major version. Use [IModelDb.createQueryReader]($backend) or [ECDb.createQueryReader]($backend) to query.
1364
1362
  */
1365
1363
  // eslint-disable-next-line @typescript-eslint/no-deprecated
1366
1364
  prepareStatement(sql, logErrors = true) {
@@ -1372,7 +1370,7 @@ class IModelDb extends core_common_1.IModel {
1372
1370
  /** Prepare an ECSQL statement.
1373
1371
  * @param sql The ECSQL statement to prepare
1374
1372
  * @returns `undefined` if there is a problem preparing the statement.
1375
- * @deprecated in 4.11 - will not be removed until after 2026-06-13. Use [IModelDb.createQueryReader]($backend) or [ECDb.createQueryReader]($backend) to query.
1373
+ * @deprecated in 4.11 - might be removed in next major version. Use [IModelDb.createQueryReader]($backend) or [ECDb.createQueryReader]($backend) to query.
1376
1374
  */
1377
1375
  // eslint-disable-next-line @typescript-eslint/no-deprecated
1378
1376
  tryPrepareStatement(sql) {
@@ -1422,7 +1420,7 @@ class IModelDb extends core_common_1.IModel {
1422
1420
  }
1423
1421
  /** Get metadata for a class. This method will load the metadata from the iModel into the cache as a side-effect, if necessary.
1424
1422
  * @throws [[IModelError]] if the metadata cannot be found nor loaded.
1425
- * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` on the iModel and call `view.findClass(...)` instead.
1423
+ * @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` on the iModel and call `view.findClass(...)` instead.
1426
1424
  *
1427
1425
  * @example
1428
1426
  * * ```typescript
@@ -1449,7 +1447,7 @@ class IModelDb extends core_common_1.IModel {
1449
1447
  return metadata;
1450
1448
  }
1451
1449
  /** Identical to [[getMetaData]], except it returns `undefined` instead of throwing an error if the metadata cannot be found nor loaded.
1452
- * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` on the iModel and call `view.findClass(...)` instead.
1450
+ * @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` on the iModel and call `view.findClass(...)` instead.
1453
1451
  *
1454
1452
  * @example
1455
1453
  * * ```typescript
@@ -1478,7 +1476,7 @@ class IModelDb extends core_common_1.IModel {
1478
1476
  * @param func The callback to be invoked on each property
1479
1477
  * @param includeCustom If true (default), include custom-handled properties in the iteration. Otherwise, skip custom-handled properties.
1480
1478
  * @note Custom-handled properties are core properties that have behavior enforced by C++ handlers.
1481
- * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` on the iModel and iterate `view.findClass(classFullName)?.getProperties()` instead.
1479
+ * @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` on the iModel and iterate `view.findClass(classFullName)?.getProperties()` instead.
1482
1480
  *
1483
1481
  * @example
1484
1482
  * ```typescript
@@ -1505,7 +1503,7 @@ class IModelDb extends core_common_1.IModel {
1505
1503
  * @param func The callback to be invoked on each property
1506
1504
  * @param includeCustom If true (default), include custom-handled properties in the iteration. Otherwise, skip custom-handled properties.
1507
1505
  * @note Custom-handled properties are core properties that have behavior enforced by C++ handlers.
1508
- * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` on the iModel and iterate `view.findClass(classFullName)?.getProperties()` instead.
1506
+ * @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` on the iModel and iterate `view.findClass(classFullName)?.getProperties()` instead.
1509
1507
  *
1510
1508
  * @example
1511
1509
  * ```typescript
@@ -1536,7 +1534,7 @@ class IModelDb extends core_common_1.IModel {
1536
1534
  }
1537
1535
  /**
1538
1536
  * @internal
1539
- * @deprecated in 5.0 - will not be removed until after 2026-06-13. Please use `schemaContext` from `iModel` instead to get metadata.
1537
+ * @deprecated in 5.0 - might be removed in next major version. Please use `schemaContext` from `iModel` instead to get metadata.
1540
1538
  */
1541
1539
  loadMetaData(classFullName) {
1542
1540
  // eslint-disable-next-line @typescript-eslint/no-deprecated
@@ -1588,17 +1586,15 @@ class IModelDb extends core_common_1.IModel {
1588
1586
  */
1589
1587
  querySchemaVersionNumbers(schemaName) {
1590
1588
  const sql = `SELECT VersionMajor,VersionWrite,VersionMinor FROM ECDbMeta.ECSchemaDef WHERE Name=:schemaName LIMIT 1`;
1591
- // eslint-disable-next-line @typescript-eslint/no-deprecated
1592
- return this.withPreparedStatement(sql, (statement) => {
1593
- statement.bindString("schemaName", schemaName);
1594
- if (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) {
1595
- const read = statement.getValue(0).getInteger(); // ECSchemaDef.VersionMajor --> semver.major
1596
- const write = statement.getValue(1).getInteger(); // ECSchemaDef.VersionWrite --> semver.minor
1597
- const minor = statement.getValue(2).getInteger(); // ECSchemaDef.VersionMinor --> semver.patch
1589
+ return this.withQueryReader(sql, (reader) => {
1590
+ if (reader.step()) {
1591
+ const read = reader.current[0]; // ECSchemaDef.VersionMajor --> semver.major
1592
+ const write = reader.current[1]; // ECSchemaDef.VersionWrite --> semver.minor
1593
+ const minor = reader.current[2]; // ECSchemaDef.VersionMinor --> semver.patch
1598
1594
  return new ecschema_metadata_1.ECVersion(read, write, minor);
1599
1595
  }
1600
1596
  return undefined;
1601
- });
1597
+ }, new core_common_1.QueryBinder().bindString("schemaName", schemaName));
1602
1598
  }
1603
1599
  /** Returns true if the specified schema exists in the iModel and is no older than the specified minimum version.
1604
1600
  * @beta
@@ -2054,14 +2050,12 @@ function processSchemaWriteStatus(status) {
2054
2050
  */
2055
2051
  queryLastModifiedTime(modelId) {
2056
2052
  const sql = `SELECT LastMod FROM ${Model_1.Model.classFullName} WHERE ECInstanceId=:modelId`;
2057
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2058
- return this._iModel.withPreparedStatement(sql, (statement) => {
2059
- statement.bindId("modelId", modelId);
2060
- if (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) {
2061
- return statement.getValue(0).getDateTime();
2053
+ return this._iModel.withQueryReader(sql, (reader) => {
2054
+ if (reader.step()) {
2055
+ return reader.current[0];
2062
2056
  }
2063
2057
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.InvalidId, `Can't get lastMod time for Model ${modelId}`);
2064
- });
2058
+ }, new core_common_1.QueryBinder().bindId("modelId", modelId));
2065
2059
  }
2066
2060
  /** Get the Model with the specified identifier.
2067
2061
  * @param modelId The Model identifier.
@@ -2389,13 +2383,11 @@ function processSchemaWriteStatus(status) {
2389
2383
  */
2390
2384
  queryLastModifiedTime(elementId) {
2391
2385
  const sql = "SELECT LastMod FROM BisCore:Element WHERE ECInstanceId=:elementId";
2392
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2393
- return this._iModel.withPreparedStatement(sql, (statement) => {
2394
- statement.bindId("elementId", elementId);
2395
- if (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step())
2396
- return statement.getValue(0).getDateTime();
2386
+ return this._iModel.withQueryReader(sql, (reader) => {
2387
+ if (reader.step())
2388
+ return reader.current[0];
2397
2389
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.InvalidId, `Can't get lastMod time for Element ${elementId}`);
2398
- });
2390
+ }, new core_common_1.QueryBinder().bindId("elementId", elementId));
2399
2391
  }
2400
2392
  /** Create a new instance of an element.
2401
2393
  * @param elProps The properties of the new element.
@@ -2470,15 +2462,13 @@ function processSchemaWriteStatus(status) {
2470
2462
  */
2471
2463
  queryChildren(elementId) {
2472
2464
  const sql = "SELECT ECInstanceId FROM BisCore:Element WHERE Parent.Id=:elementId";
2473
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2474
- return this._iModel.withPreparedStatement(sql, (statement) => {
2475
- statement.bindId("elementId", elementId);
2465
+ return this._iModel.withQueryReader(sql, (reader) => {
2476
2466
  const childIds = [];
2477
- while (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) {
2478
- childIds.push(statement.getValue(0).getId());
2467
+ for (const row of reader) {
2468
+ childIds.push(row[0]);
2479
2469
  }
2480
2470
  return childIds;
2481
- });
2471
+ }, new core_common_1.QueryBinder().bindId("elementId", elementId));
2482
2472
  }
2483
2473
  /** Query for the parent of the specified element.
2484
2474
  * @param elementId The element to check for a parent
@@ -2486,14 +2476,12 @@ function processSchemaWriteStatus(status) {
2486
2476
  * @throws [[IModelError]] if the element does not exist
2487
2477
  */
2488
2478
  queryParent(elementId) {
2489
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2490
- return this._iModel.withPreparedStatement(`select parent.id from ${Element_1.Element.classFullName} where ecinstanceid=?`, (stmt) => {
2491
- stmt.bindId(1, elementId);
2492
- if (stmt.step() !== core_bentley_1.DbResult.BE_SQLITE_ROW)
2479
+ return this._iModel.withQueryReader(`select parent.id from ${Element_1.Element.classFullName} where ecinstanceid=?`, (reader) => {
2480
+ if (!reader.step())
2493
2481
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `Element=${elementId}`);
2494
- const value = stmt.getValue(0);
2495
- return value.isNull ? undefined : value.getId();
2496
- });
2482
+ const value = reader.current[0];
2483
+ return value ?? undefined;
2484
+ }, new core_common_1.QueryBinder().bindId(1, elementId));
2497
2485
  }
2498
2486
  /** Returns true if the specified Element has a sub-model.
2499
2487
  * @see [[IModelDb.Models.getSubModel]]
@@ -2503,11 +2491,9 @@ function processSchemaWriteStatus(status) {
2503
2491
  return false; // Special case since the RepositoryModel does not sub-model the root Subject
2504
2492
  // A sub-model will have the same Id value as the element it is describing
2505
2493
  const sql = "SELECT ECInstanceId FROM BisCore:Model WHERE ECInstanceId=:elementId";
2506
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2507
- return this._iModel.withPreparedStatement(sql, (statement) => {
2508
- statement.bindId("elementId", elementId);
2509
- return core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step();
2510
- });
2494
+ return this._iModel.withQueryReader(sql, (reader) => {
2495
+ return reader.step();
2496
+ }, new core_common_1.QueryBinder().bindId("elementId", elementId));
2511
2497
  }
2512
2498
  /** Get the root subject element. */
2513
2499
  getRootSubject() { return this.getElement(core_common_1.IModel.rootSubjectId); }
@@ -2517,37 +2503,33 @@ function processSchemaWriteStatus(status) {
2517
2503
  * @internal
2518
2504
  */
2519
2505
  _queryAspects(elementId, fromClassFullName, excludedClassFullNames) {
2520
- const sql = `SELECT ECInstanceId,ECClassId FROM ${fromClassFullName} WHERE Element.Id=:elementId ORDER BY ECClassId,ECInstanceId`; // ORDER BY to maximize statement reuse
2521
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2522
- return this._iModel.withPreparedStatement(sql, (statement) => {
2523
- statement.bindId("elementId", elementId);
2506
+ const sql = `SELECT ECInstanceId, ec_classname(ECClassId, 's:c') FROM ${fromClassFullName} WHERE Element.Id=:elementId ORDER BY ECClassId,ECInstanceId`; // ORDER BY to maximize statement reuse
2507
+ return this._iModel.withQueryReader(sql, (reader) => {
2524
2508
  const aspects = [];
2525
- while (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) {
2526
- const aspectInstanceId = statement.getValue(0).getId();
2527
- const aspectClassFullName = statement.getValue(1).getClassNameForClassId().replace(".", ":");
2509
+ for (const row of reader) {
2510
+ const aspectInstanceId = row[0];
2511
+ const aspectClassFullName = row[1];
2528
2512
  if ((undefined === excludedClassFullNames) || (!excludedClassFullNames.has(aspectClassFullName))) {
2529
2513
  aspects.push(this._queryAspect(aspectInstanceId, aspectClassFullName));
2530
2514
  }
2531
2515
  }
2532
2516
  return aspects;
2533
- });
2517
+ }, new core_common_1.QueryBinder().bindId("elementId", elementId));
2534
2518
  }
2535
2519
  /** Query for aspect by ECInstanceId
2536
2520
  * @throws [[IModelError]]
2537
2521
  */
2538
2522
  _queryAspect(aspectInstanceId, aspectClassName) {
2539
- const sql = `SELECT * FROM ${aspectClassName} WHERE ECInstanceId=:aspectInstanceId`;
2540
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2541
- const aspect = this._iModel.withPreparedStatement(sql, (statement) => {
2542
- statement.bindId("aspectInstanceId", aspectInstanceId);
2543
- if (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) {
2544
- const aspectProps = statement.getRow(); // start with everything that SELECT * returned
2545
- aspectProps.classFullName = aspectProps.className.replace(".", ":"); // add in property required by EntityProps
2546
- aspectProps.className = undefined; // clear property from SELECT * that we don't want in the final instance
2523
+ const sql = `SELECT *, ec_classname(ECClassId, 's:c') classFullName FROM ${aspectClassName} WHERE ECInstanceId=:aspectInstanceId`;
2524
+ const aspect = this._iModel.withQueryReader(sql, (reader) => {
2525
+ if (reader.step()) {
2526
+ const aspectProps = { ...reader.current.toRow() }; // start with everything that SELECT * returned; classFullName is supplied by the ec_classname alias
2527
+ aspectProps.className = undefined; // clear the raw ECClassId-derived property from SELECT * that we don't want in the final instance
2547
2528
  return aspectProps;
2548
2529
  }
2549
2530
  return undefined;
2550
- });
2531
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
2532
+ }, new core_common_1.QueryBinder().bindId("aspectInstanceId", aspectInstanceId), { rowFormat: core_common_1.QueryRowFormat.UseJsPropertyNames });
2551
2533
  if (undefined === aspect) {
2552
2534
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `ElementAspect not found ${aspectInstanceId}, ${aspectClassName}`);
2553
2535
  }
@@ -2557,12 +2539,10 @@ function processSchemaWriteStatus(status) {
2557
2539
  * @throws [[IModelError]]
2558
2540
  */
2559
2541
  getAspect(aspectInstanceId) {
2560
- const sql = "SELECT ECClassId FROM BisCore:ElementAspect WHERE ECInstanceId=:aspectInstanceId";
2561
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2562
- const aspectClassFullName = this._iModel.withPreparedStatement(sql, (statement) => {
2563
- statement.bindId("aspectInstanceId", aspectInstanceId);
2564
- return (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) ? statement.getValue(0).getClassNameForClassId().replace(".", ":") : undefined;
2565
- });
2542
+ const sql = "SELECT ec_classname(ECClassId, 's:c') FROM BisCore:ElementAspect WHERE ECInstanceId=:aspectInstanceId";
2543
+ const aspectClassFullName = this._iModel.withQueryReader(sql, (reader) => {
2544
+ return reader.step() ? reader.current[0] : undefined;
2545
+ }, new core_common_1.QueryBinder().bindId("aspectInstanceId", aspectInstanceId));
2566
2546
  if (undefined === aspectClassFullName) {
2567
2547
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `ElementAspect not found ${aspectInstanceId}`);
2568
2548
  }
@@ -2570,13 +2550,12 @@ function processSchemaWriteStatus(status) {
2570
2550
  }
2571
2551
  static classMap = new Map();
2572
2552
  runInstanceQuery(sql, elementId, excludedClassFullNames) {
2573
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2574
- return this._iModel.withPreparedStatement(sql, (statement) => {
2575
- statement.bindId("elementId", elementId);
2553
+ return this._iModel.withQueryReader(sql, (reader) => {
2576
2554
  const aspects = [];
2577
- while (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) {
2555
+ for (const queryRow of reader) {
2578
2556
  const row = {};
2579
- const parsedRow = JSON.parse(statement.getValue(0).getString());
2557
+ const rawInstance = queryRow[0];
2558
+ const parsedRow = typeof rawInstance === "string" ? JSON.parse(rawInstance) : rawInstance;
2580
2559
  // eslint-disable-next-line guard-for-in
2581
2560
  for (const key in parsedRow) {
2582
2561
  const jsName = core_common_1.ECJsNames.toJsName(key[0].toUpperCase() + key.substring(1));
@@ -2589,7 +2568,7 @@ function processSchemaWriteStatus(status) {
2589
2568
  aspects.push(this._iModel.constructEntity(aspectProps));
2590
2569
  }
2591
2570
  return aspects;
2592
- });
2571
+ }, new core_common_1.QueryBinder().bindId("elementId", elementId));
2593
2572
  }
2594
2573
  /** Get the ElementAspect instances that are owned by the specified element.
2595
2574
  * @param elementId Get ElementAspects associated with this Element
@@ -2620,14 +2599,15 @@ function processSchemaWriteStatus(status) {
2620
2599
  let classIdList = IModelDb.Elements.classMap.get(aspectClassFullName);
2621
2600
  if (classIdList === undefined) {
2622
2601
  const classIds = [];
2623
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2624
- this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
2625
- and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name='${fullClassName[0]}')) and SourceECInstanceId != TargetECInstanceId`,
2626
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2627
- (statement) => {
2628
- while (statement.step() === core_bentley_1.DbResult.BE_SQLITE_ROW)
2629
- classIds.push(statement.getValue(0).getId());
2630
- });
2602
+ const sql = `select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name=:className
2603
+ and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name=:schemaName)) and SourceECInstanceId != TargetECInstanceId`;
2604
+ this._iModel.withQueryReader(sql, (reader) => {
2605
+ for (const row of reader) {
2606
+ classIds.push(row[0]);
2607
+ }
2608
+ }, new core_common_1.QueryBinder()
2609
+ .bindString("className", fullClassName[1])
2610
+ .bindString("schemaName", fullClassName[0]));
2631
2611
  if (classIds.length > 0) {
2632
2612
  classIdList = classIds.join(",");
2633
2613
  IModelDb.Elements.classMap.set(aspectClassFullName, classIdList);
@@ -2879,7 +2859,7 @@ function processSchemaWriteStatus(status) {
2879
2859
  }
2880
2860
  /** Set the default view property the iModel.
2881
2861
  * @param viewId The Id of the ViewDefinition to use as the default
2882
- * @deprecated in 4.2.0 - will not be removed until after 2026-06-13. Avoid setting this property - it is not practical for one single view to serve the needs of the many applications
2862
+ * @deprecated in 4.2.0 - might be removed in next major version. Avoid setting this property - it is not practical for one single view to serve the needs of the many applications
2883
2863
  * that might wish to view the contents of the iModel.
2884
2864
  */
2885
2865
  setDefaultViewId(viewId) {