@itwin/core-backend 5.13.0-dev.1 → 5.13.0-dev.11

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 (508) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/BlobContainerService.js.map +1 -1
  6. package/lib/cjs/BriefcaseManager.js.map +1 -1
  7. package/lib/cjs/CatalogDb.js.map +1 -1
  8. package/lib/cjs/Category.d.ts +4 -4
  9. package/lib/cjs/Category.js.map +1 -1
  10. package/lib/cjs/ChangeSummaryManager.js +2 -2
  11. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  12. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  13. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  14. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  15. package/lib/cjs/ChangesetReader.js +3 -3
  16. package/lib/cjs/ChangesetReader.js.map +1 -1
  17. package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
  18. package/lib/cjs/ChannelControl.js.map +1 -1
  19. package/lib/cjs/CheckpointManager.d.ts +3 -0
  20. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  21. package/lib/cjs/CheckpointManager.js +8 -2
  22. package/lib/cjs/CheckpointManager.js.map +1 -1
  23. package/lib/cjs/ClassRegistry.js +10 -10
  24. package/lib/cjs/ClassRegistry.js.map +1 -1
  25. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  26. package/lib/cjs/CloudSqlite.js +19 -8
  27. package/lib/cjs/CloudSqlite.js.map +1 -1
  28. package/lib/cjs/CodeService.js.map +1 -1
  29. package/lib/cjs/CodeSpecs.d.ts +3 -3
  30. package/lib/cjs/CodeSpecs.js.map +1 -1
  31. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  32. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  33. package/lib/cjs/DevTools.js.map +1 -1
  34. package/lib/cjs/DisplayStyle.d.ts +2 -2
  35. package/lib/cjs/DisplayStyle.js.map +1 -1
  36. package/lib/cjs/ECDb.js.map +1 -1
  37. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  38. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  39. package/lib/cjs/ECSqlStatement.js.map +1 -1
  40. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  41. package/lib/cjs/EditTxn.js.map +1 -1
  42. package/lib/cjs/Element.d.ts +33 -9
  43. package/lib/cjs/Element.d.ts.map +1 -1
  44. package/lib/cjs/Element.js +47 -2
  45. package/lib/cjs/Element.js.map +1 -1
  46. package/lib/cjs/ElementAspect.js.map +1 -1
  47. package/lib/cjs/ElementGraphics.js.map +1 -1
  48. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  49. package/lib/cjs/Entity.js.map +1 -1
  50. package/lib/cjs/EntityReferences.js +2 -2
  51. package/lib/cjs/EntityReferences.js.map +1 -1
  52. package/lib/cjs/ExportGraphics.js.map +1 -1
  53. package/lib/cjs/ExternalSource.js.map +1 -1
  54. package/lib/cjs/FontFile.js.map +1 -1
  55. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  56. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  57. package/lib/cjs/GeometrySummary.js +47 -47
  58. package/lib/cjs/GeometrySummary.js.map +1 -1
  59. package/lib/cjs/IModelDb.d.ts +60 -22
  60. package/lib/cjs/IModelDb.d.ts.map +1 -1
  61. package/lib/cjs/IModelDb.js +113 -40
  62. package/lib/cjs/IModelDb.js.map +1 -1
  63. package/lib/cjs/IModelDbFonts.js.map +1 -1
  64. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  65. package/lib/cjs/IModelHost.d.ts.map +1 -1
  66. package/lib/cjs/IModelHost.js +3 -0
  67. package/lib/cjs/IModelHost.js.map +1 -1
  68. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  69. package/lib/cjs/IModelJsFs.js.map +1 -1
  70. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  71. package/lib/cjs/IpcHost.js.map +1 -1
  72. package/lib/cjs/LineStyle.js.map +1 -1
  73. package/lib/cjs/LocalHub.js +1 -1
  74. package/lib/cjs/LocalHub.js.map +1 -1
  75. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  76. package/lib/cjs/LockControl.js.map +1 -1
  77. package/lib/cjs/Material.js.map +1 -1
  78. package/lib/cjs/Model.d.ts +5 -5
  79. package/lib/cjs/Model.d.ts.map +1 -1
  80. package/lib/cjs/Model.js.map +1 -1
  81. package/lib/cjs/NativeAppStorage.js.map +1 -1
  82. package/lib/cjs/NativeHost.js.map +1 -1
  83. package/lib/cjs/NavigationRelationship.js.map +1 -1
  84. package/lib/cjs/PartialChangeUnifier.js +7 -7
  85. package/lib/cjs/PartialChangeUnifier.js.map +1 -1
  86. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  87. package/lib/cjs/PropertyStore.js.map +1 -1
  88. package/lib/cjs/Relationship.js.map +1 -1
  89. package/lib/cjs/RpcBackend.js.map +1 -1
  90. package/lib/cjs/SQLiteDb.js.map +1 -1
  91. package/lib/cjs/Schema.js.map +1 -1
  92. package/lib/cjs/SchemaSync.js.map +1 -1
  93. package/lib/cjs/SchemaUtils.js.map +1 -1
  94. package/lib/cjs/SheetIndex.js.map +1 -1
  95. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  96. package/lib/cjs/SqliteStatement.js.map +1 -1
  97. package/lib/cjs/StashManager.js.map +1 -1
  98. package/lib/cjs/Texture.d.ts +1 -1
  99. package/lib/cjs/Texture.js.map +1 -1
  100. package/lib/cjs/TileStorage.js.map +1 -1
  101. package/lib/cjs/TxnManager.js.map +1 -1
  102. package/lib/cjs/ViewDefinition.d.ts +6 -6
  103. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  104. package/lib/cjs/ViewDefinition.js.map +1 -1
  105. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  106. package/lib/cjs/ViewStore.js.map +1 -1
  107. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  108. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  109. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  110. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  111. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  112. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  113. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  114. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  115. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +36 -36
  116. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +28 -28
  117. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  118. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  119. package/lib/cjs/core-backend.js.map +1 -1
  120. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  121. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  122. package/lib/cjs/domains/GenericElements.js.map +1 -1
  123. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  124. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  125. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  126. package/lib/cjs/internal/ECSqlInstanceReshaper.js.map +1 -1
  127. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  128. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  129. package/lib/cjs/internal/HubMock.js.map +1 -1
  130. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  131. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  132. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  133. package/lib/cjs/internal/NoLocks.js.map +1 -1
  134. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  135. package/lib/cjs/internal/ServerBasedLocks.js +33 -33
  136. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  137. package/lib/cjs/internal/Symbols.js.map +1 -1
  138. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  139. package/lib/cjs/internal/cross-package.js.map +1 -1
  140. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  141. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  142. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  143. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  144. package/lib/cjs/internal/workspace/WorkspaceImpl.js +19 -3
  145. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  146. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  147. package/lib/cjs/rpc/multipart.js.map +1 -1
  148. package/lib/cjs/rpc/tracing.js.map +1 -1
  149. package/lib/cjs/rpc/web/logging.js.map +1 -1
  150. package/lib/cjs/rpc/web/request.js.map +1 -1
  151. package/lib/cjs/rpc/web/response.js.map +1 -1
  152. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  153. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  154. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  155. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  156. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  157. package/lib/cjs/workspace/Settings.js.map +1 -1
  158. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  159. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  160. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  161. package/lib/cjs/workspace/Workspace.d.ts +2 -0
  162. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  163. package/lib/cjs/workspace/Workspace.js.map +1 -1
  164. package/lib/cjs/workspace/WorkspaceEditor.d.ts +3 -0
  165. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  166. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  167. package/lib/esm/BackendHubAccess.js.map +1 -1
  168. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  169. package/lib/esm/BisCoreSchema.js.map +1 -1
  170. package/lib/esm/BlobContainerService.js.map +1 -1
  171. package/lib/esm/BriefcaseManager.js.map +1 -1
  172. package/lib/esm/CatalogDb.js.map +1 -1
  173. package/lib/esm/Category.d.ts +4 -4
  174. package/lib/esm/Category.js.map +1 -1
  175. package/lib/esm/ChangeSummaryManager.js +2 -2
  176. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  177. package/lib/esm/ChangedElementsDb.js.map +1 -1
  178. package/lib/esm/ChangesetECAdaptor.js +248 -248
  179. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  180. package/lib/esm/ChangesetReader.js +3 -3
  181. package/lib/esm/ChangesetReader.js.map +1 -1
  182. package/lib/esm/ChangesetReaderTypes.js.map +1 -1
  183. package/lib/esm/ChannelControl.js.map +1 -1
  184. package/lib/esm/CheckpointManager.d.ts +3 -0
  185. package/lib/esm/CheckpointManager.d.ts.map +1 -1
  186. package/lib/esm/CheckpointManager.js +8 -2
  187. package/lib/esm/CheckpointManager.js.map +1 -1
  188. package/lib/esm/ClassRegistry.js +6 -6
  189. package/lib/esm/ClassRegistry.js.map +1 -1
  190. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  191. package/lib/esm/CloudSqlite.js +19 -8
  192. package/lib/esm/CloudSqlite.js.map +1 -1
  193. package/lib/esm/CodeService.js.map +1 -1
  194. package/lib/esm/CodeSpecs.d.ts +3 -3
  195. package/lib/esm/CodeSpecs.js.map +1 -1
  196. package/lib/esm/ConcurrentQuery.js.map +1 -1
  197. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  198. package/lib/esm/DevTools.js.map +1 -1
  199. package/lib/esm/DisplayStyle.d.ts +2 -2
  200. package/lib/esm/DisplayStyle.js.map +1 -1
  201. package/lib/esm/ECDb.js.map +1 -1
  202. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  203. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  204. package/lib/esm/ECSqlStatement.js.map +1 -1
  205. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  206. package/lib/esm/EditTxn.js.map +1 -1
  207. package/lib/esm/Element.d.ts +33 -9
  208. package/lib/esm/Element.d.ts.map +1 -1
  209. package/lib/esm/Element.js +47 -2
  210. package/lib/esm/Element.js.map +1 -1
  211. package/lib/esm/ElementAspect.js.map +1 -1
  212. package/lib/esm/ElementGraphics.js.map +1 -1
  213. package/lib/esm/ElementTreeWalker.js.map +1 -1
  214. package/lib/esm/Entity.js.map +1 -1
  215. package/lib/esm/EntityReferences.js +1 -1
  216. package/lib/esm/EntityReferences.js.map +1 -1
  217. package/lib/esm/ExportGraphics.js.map +1 -1
  218. package/lib/esm/ExternalSource.js.map +1 -1
  219. package/lib/esm/FontFile.js.map +1 -1
  220. package/lib/esm/GeoCoordConfig.js.map +1 -1
  221. package/lib/esm/GeographicCRSServices.js.map +1 -1
  222. package/lib/esm/GeometrySummary.js +47 -47
  223. package/lib/esm/GeometrySummary.js.map +1 -1
  224. package/lib/esm/IModelDb.d.ts +60 -22
  225. package/lib/esm/IModelDb.d.ts.map +1 -1
  226. package/lib/esm/IModelDb.js +114 -41
  227. package/lib/esm/IModelDb.js.map +1 -1
  228. package/lib/esm/IModelDbFonts.js.map +1 -1
  229. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  230. package/lib/esm/IModelHost.d.ts.map +1 -1
  231. package/lib/esm/IModelHost.js +3 -0
  232. package/lib/esm/IModelHost.js.map +1 -1
  233. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  234. package/lib/esm/IModelJsFs.js.map +1 -1
  235. package/lib/esm/ImageSourceConversion.js.map +1 -1
  236. package/lib/esm/IpcHost.js.map +1 -1
  237. package/lib/esm/LineStyle.js.map +1 -1
  238. package/lib/esm/LocalHub.js +1 -1
  239. package/lib/esm/LocalHub.js.map +1 -1
  240. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  241. package/lib/esm/LockControl.js.map +1 -1
  242. package/lib/esm/Material.js.map +1 -1
  243. package/lib/esm/Model.d.ts +5 -5
  244. package/lib/esm/Model.d.ts.map +1 -1
  245. package/lib/esm/Model.js.map +1 -1
  246. package/lib/esm/NativeAppStorage.js.map +1 -1
  247. package/lib/esm/NativeHost.js.map +1 -1
  248. package/lib/esm/NavigationRelationship.js.map +1 -1
  249. package/lib/esm/PartialChangeUnifier.js +7 -7
  250. package/lib/esm/PartialChangeUnifier.js.map +1 -1
  251. package/lib/esm/PromiseMemoizer.js.map +1 -1
  252. package/lib/esm/PropertyStore.js.map +1 -1
  253. package/lib/esm/Relationship.js.map +1 -1
  254. package/lib/esm/RpcBackend.js.map +1 -1
  255. package/lib/esm/SQLiteDb.js.map +1 -1
  256. package/lib/esm/Schema.js.map +1 -1
  257. package/lib/esm/SchemaSync.js.map +1 -1
  258. package/lib/esm/SchemaUtils.js.map +1 -1
  259. package/lib/esm/SheetIndex.js.map +1 -1
  260. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  261. package/lib/esm/SqliteStatement.js.map +1 -1
  262. package/lib/esm/StashManager.js.map +1 -1
  263. package/lib/esm/Texture.d.ts +1 -1
  264. package/lib/esm/Texture.js.map +1 -1
  265. package/lib/esm/TileStorage.js.map +1 -1
  266. package/lib/esm/TxnManager.js.map +1 -1
  267. package/lib/esm/ViewDefinition.d.ts +6 -6
  268. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  269. package/lib/esm/ViewDefinition.js.map +1 -1
  270. package/lib/esm/ViewStateHydrator.js.map +1 -1
  271. package/lib/esm/ViewStore.js.map +1 -1
  272. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  273. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  274. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  275. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  276. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  277. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  278. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  279. package/lib/esm/core-backend.js.map +1 -1
  280. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  281. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  282. package/lib/esm/domains/GenericElements.js.map +1 -1
  283. package/lib/esm/domains/GenericSchema.js.map +1 -1
  284. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  285. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  286. package/lib/esm/internal/ECSqlInstanceReshaper.js.map +1 -1
  287. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  288. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  289. package/lib/esm/internal/HubMock.js.map +1 -1
  290. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  291. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  292. package/lib/esm/internal/NativePlatform.js.map +1 -1
  293. package/lib/esm/internal/NoLocks.js.map +1 -1
  294. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  295. package/lib/esm/internal/ServerBasedLocks.js +33 -33
  296. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  297. package/lib/esm/internal/Symbols.js.map +1 -1
  298. package/lib/esm/internal/annotations/fields.js.map +1 -1
  299. package/lib/esm/internal/cross-package.js.map +1 -1
  300. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  301. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  302. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  303. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  304. package/lib/esm/internal/workspace/WorkspaceImpl.js +19 -3
  305. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  306. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  307. package/lib/esm/rpc/multipart.js.map +1 -1
  308. package/lib/esm/rpc/tracing.js.map +1 -1
  309. package/lib/esm/rpc/web/logging.js.map +1 -1
  310. package/lib/esm/rpc/web/request.js.map +1 -1
  311. package/lib/esm/rpc/web/response.js.map +1 -1
  312. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  313. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  314. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  315. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  316. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  317. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  318. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  319. package/lib/esm/test/AttachDb.test.js +11 -11
  320. package/lib/esm/test/AttachDb.test.js.map +1 -1
  321. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  322. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  323. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  324. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  325. package/lib/esm/test/IModelHost.test.js.map +1 -1
  326. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  327. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  328. package/lib/esm/test/IpcHost.test.js.map +1 -1
  329. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  330. package/lib/esm/test/PrintElementTree.js.map +1 -1
  331. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  332. package/lib/esm/test/RevisionUtility.js.map +1 -1
  333. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js +51 -51
  334. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js.map +1 -1
  335. package/lib/esm/test/SchemaUtils.test.js +25 -25
  336. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  337. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  338. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  339. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  340. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  341. package/lib/esm/test/TestEditTxn.js.map +1 -1
  342. package/lib/esm/test/TestUtils.js.map +1 -1
  343. package/lib/esm/test/annotations/Fields.test.js +53 -53
  344. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  345. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  346. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  347. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  348. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  349. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  350. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  351. package/lib/esm/test/categories/Category.test.js.map +1 -1
  352. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  353. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  354. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  355. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  356. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  357. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  358. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  359. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  360. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  361. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  362. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  363. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  364. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  365. package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
  366. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  367. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  368. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  369. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js +4 -4
  370. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  371. package/lib/esm/test/ecdb/QueryReaders.test.js +33 -47
  372. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  373. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  374. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  375. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  376. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  377. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  378. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +2 -2
  379. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  380. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  381. package/lib/esm/test/element/ElementAspect.test.js +176 -24
  382. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  383. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  384. package/lib/esm/test/element/ElementRoundTrip.test.js +144 -139
  385. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  386. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  387. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  388. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  389. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  390. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  391. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  392. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  393. package/lib/esm/test/example-code/EditTxn.test.d.ts +2 -0
  394. package/lib/esm/test/example-code/EditTxn.test.d.ts.map +1 -0
  395. package/lib/esm/test/example-code/EditTxn.test.js +47 -0
  396. package/lib/esm/test/example-code/EditTxn.test.js.map +1 -0
  397. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  398. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  399. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  400. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  401. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  402. package/lib/esm/test/hubaccess/CheckpointManager.test.js +43 -1
  403. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  404. package/lib/esm/test/hubaccess/CodeSwap.test.js.map +1 -1
  405. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  406. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  407. package/lib/esm/test/hubaccess/SemanticRebase.test.js +345 -345
  408. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  409. package/lib/esm/test/imageData.js.map +1 -1
  410. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  411. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  412. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  413. package/lib/esm/test/imodel/IModel.test.js +353 -294
  414. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  415. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  416. package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
  417. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  418. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  419. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  420. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  421. package/lib/esm/test/index.js.map +1 -1
  422. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js +32 -32
  423. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js.map +1 -1
  424. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  425. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  426. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  427. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  428. package/lib/esm/test/rpc/response.test.js.map +1 -1
  429. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  430. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  431. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  432. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  433. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  434. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  435. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  436. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  437. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js +21 -21
  438. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js.map +1 -1
  439. package/lib/esm/test/schema/SchemaViewHidden.test.js +109 -109
  440. package/lib/esm/test/schema/SchemaViewHidden.test.js.map +1 -1
  441. package/lib/esm/test/schema/SchemaViewKoQ.test.js +13 -13
  442. package/lib/esm/test/schema/SchemaViewKoQ.test.js.map +1 -1
  443. package/lib/esm/test/schema/SchemaViewLifecycle.test.js +15 -15
  444. package/lib/esm/test/schema/SchemaViewLifecycle.test.js.map +1 -1
  445. package/lib/esm/test/schema/SchemaViewValidation.test.js +8 -8
  446. package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -1
  447. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  448. package/lib/esm/test/standalone/ChangeElementParentModel.test.js.map +1 -1
  449. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  450. package/lib/esm/test/standalone/ChangesetReader.test.js +313 -313
  451. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  452. package/lib/esm/test/standalone/CloudSqlite.test.js +73 -0
  453. package/lib/esm/test/standalone/CloudSqlite.test.js.map +1 -1
  454. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  455. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
  456. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  457. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  458. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  459. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  460. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  461. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  462. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  463. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  464. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  465. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  466. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  467. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  468. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  469. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  470. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  471. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  472. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  473. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  474. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  475. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  476. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  477. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
  478. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
  479. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  480. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  481. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  482. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  483. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  484. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  485. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  486. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  487. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  488. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  489. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  490. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  491. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  492. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  493. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  494. package/lib/esm/test/standalone/Workspace.test.js +115 -1
  495. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  496. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  497. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  498. package/lib/esm/workspace/Settings.js.map +1 -1
  499. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  500. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  501. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  502. package/lib/esm/workspace/Workspace.d.ts +2 -0
  503. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  504. package/lib/esm/workspace/Workspace.js.map +1 -1
  505. package/lib/esm/workspace/WorkspaceEditor.d.ts +3 -0
  506. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  507. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  508. package/package.json +18 -20
@@ -236,10 +236,10 @@ describe("WithQueryReaderTests", () => {
236
236
  it("also caches for ECDb.withQueryReader (shared ECSqlRowExecutor path)", () => {
237
237
  const env_1 = { stack: [], error: void 0, hasError: false };
238
238
  try {
239
- const ecdb = __addDisposableResource(env_1, ECDbTestHelper.createECDb(KnownTestLocations.outputDir, "syncReaderStmtCache.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
240
- <ECEntityClass typeName="Foo" modifier="Sealed">
241
- <ECProperty propertyName="n" typeName="int"/>
242
- </ECEntityClass>
239
+ const ecdb = __addDisposableResource(env_1, ECDbTestHelper.createECDb(KnownTestLocations.outputDir, "syncReaderStmtCache.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
240
+ <ECEntityClass typeName="Foo" modifier="Sealed">
241
+ <ECProperty propertyName="n" typeName="int"/>
242
+ </ECEntityClass>
243
243
  </ECSchema>`), false);
244
244
  ecdb.saveChanges();
245
245
  const ecdbSql = "SELECT ECInstanceId FROM meta.ECClassDef WHERE ECInstanceId=?";
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlSyncReader.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlSyncReader.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert, expect } from \"chai\";\nimport * as sinon from \"sinon\";\nimport { QueryBinder, QueryOptionsBuilder, QueryRowFormat } from \"@itwin/core-common\";\nimport { SnapshotDb } from \"../../IModelDb\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { Id64 } from \"@itwin/core-bentley\";\nimport { ECSqlStatement } from \"../../ECSqlStatement\";\nimport { ECDbTestHelper } from \"./ECDbTestHelper\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\n\ndescribe(\"WithQueryReaderTests\", () => {\n let iModel: SnapshotDb;\n\n before(async () => {\n iModel = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test.bim\"));\n });\n\n after(async () => {\n iModel.close();\n });\n it(\"check behvaiour if we call clearCaches in between\", () => {\n let actualRowCount = 0;\n const expectedInstanceIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\",\n \"0x13\", \"0x14\", \"0x15\", \"0x16\", \"0x17\"];\n\n expect(() => iModel.withQueryReader(\"SELECT * FROM bis.Element\", (reader) => {\n let loopCount = 0;\n // First loop - read first 10 rows\n while (loopCount < 10) {\n reader.step()\n actualRowCount++;\n loopCount++;\n assert.isDefined(reader.current[0]);\n assert.equal(reader.current[0], expectedInstanceIds[actualRowCount - 1]);\n }\n assert.equal(loopCount, 10);\n iModel.clearCaches();\n\n reader.step(); // step should fail after clearCaches\n })).to.throw(\"Step failed\");\n });\n it(\"should throw error if we try to step on a closed iModelDb object\", () => {\n const imodelPath = iModel.pathName;\n expect(() => iModel.withQueryReader(\"SELECT * FROM bis.Element\", (reader) => {\n let loopCount = 0;\n while (loopCount < 10) {\n reader.step();\n assert.isDefined(reader.current[0]);\n loopCount++;\n }\n assert.equal(loopCount, 10);\n iModel.close();\n\n iModel = SnapshotDb.openFile(imodelPath);\n assert.isDefined(reader.current[0]);\n reader.step(); // step should fail after iModelDb is closed\n })).to.throw(\"Statement is not prepared\");\n });\n it(\"returning reader from withQueryReader callback should throw error if we try to step on it\", () => {\n const readerObj = iModel.withQueryReader(\"SELECT * FROM bis.Element\", (reader) => {\n reader.step();\n return reader;\n });\n expect(readerObj.current[0]).to.equal(\"0x1\"); // will not throw error as we are just accessing current row\n expect(() => readerObj.step()).to.throw(\"Statement is not prepared\");\n });\n it(\"checking rowFormat unspecified case - values accessed by index\", () => {\n // Default rowFormat is UseECSqlPropertyIndexes: columns are accessed by their SELECT-order index.\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\n assert.isTrue(reader.step());\n const id: string = reader.current[0];\n const classId: string = reader.current[1];\n assert.isTrue(Id64.isValid(classId));\n assert.isTrue(Id64.isValid(id));\n assert.equal(id, \"0x19\");\n });\n });\n\n it(\"checking rowFormat UseECSqlPropertyIndexes - values accessed by index\", () => {\n const config = new QueryOptionsBuilder().setRowFormat(QueryRowFormat.UseECSqlPropertyIndexes).getOptions();\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\n assert.isTrue(reader.step());\n // Index 0 → ECInstanceId, index 1 → ECClassId\n const id: string = reader.current[0];\n const classId: string = reader.current[1];\n assert.equal(id, \"0x19\");\n assert.isTrue(Id64.isValid(classId));\n // Swapping column order changes index, not value\n }, undefined, config);\n });\n\n it(\"checking rowFormat UseECSqlPropertyNames - values accessed by ECSQL property name\", () => {\n const config = new QueryOptionsBuilder().setRowFormat(QueryRowFormat.UseECSqlPropertyNames).getOptions();\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\n assert.isTrue(reader.step());\n const id: string = reader.current.ECInstanceId;\n const classId: string = reader.current.ECClassId;\n assert.equal(id, \"0x19\");\n assert.isTrue(Id64.isValid(classId));\n }, undefined, config);\n });\n\n it(\"checking rowFormat UseJsPropertyNames - values accessed by JavaScript property name\", () => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const config = new QueryOptionsBuilder().setRowFormat(QueryRowFormat.UseJsPropertyNames).getOptions();\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\n assert.isTrue(reader.step());\n // ECInstanceId → id, ECClassId → className (resolved to a fully-qualified class name string)\n const id: string = reader.current.id;\n const className: string = reader.current.className;\n assert.equal(id, \"0x19\");\n // className should be in the form \"SchemaName.ClassName\"\n assert.equal(className, \"BisCore.DrawingCategory\");\n }, undefined, config);\n });\n\n it(\"checking rowFormat UseECSqlPropertyNames with convertClassIdsToClassNames - ECClassId returned as class name string\", () => {\n const config = new QueryOptionsBuilder()\n .setRowFormat(QueryRowFormat.UseECSqlPropertyNames)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n .setConvertClassIdsToNames(true)\n .getOptions();\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\n assert.isTrue(reader.step());\n const id: string = reader.current.ECInstanceId;\n const classId: string = reader.current.ECClassId;\n assert.equal(id, \"0x19\");\n // With convertClassIdsToClassNames, ECClassId is resolved to \"SchemaName.ClassName\" instead of an Id\n assert.equal(classId, \"BisCore.DrawingCategory\");\n }, undefined, config);\n });\n\n describe(\"statement caching (regression)\", () => {\n // `withQueryReader` used to build a fresh `ECSqlStatement` and re-compile the ECSQL on every\n // call (via `ECSqlRowExecutor`), with no caching. Callers such as `IModelTransformer` invoke\n // per-element helpers (e.g. `hasSubModel`) once per element, so on large models this turned one\n // cached ECSQL prepare into N full native compiles - a significant performance regression. The\n // reader now reuses a prepared statement from the owning db's `_statementCache`.\n const sql = \"SELECT ECInstanceId FROM bis.Element WHERE ECInstanceId=?\";\n\n afterEach(() => sinon.restore());\n\n it(\"reuses a single prepared statement across repeated calls instead of re-preparing\", () => {\n iModel.clearCaches();\n const prepareSpy = sinon.spy(ECSqlStatement.prototype, \"prepare\"); // eslint-disable-line @typescript-eslint/no-deprecated\n for (let i = 0; i < 20; i++) {\n iModel.withQueryReader(sql, (reader) => {\n reader.step();\n }, new QueryBinder().bindId(1, \"0x1\"));\n }\n expect(prepareSpy.callCount).to.equal(1, \"queries with identical ECSQL text should re-use one cached prepared statement\");\n });\n\n it(\"keeps nested withQueryReader calls on the same SQL independent\", () => {\n iModel.clearCaches();\n // A nested reader on the same SQL must get its own statement (findAndRemove hands the outer\n // reader's statement out of the cache), so results do not corrupt each other.\n const outerId = iModel.withQueryReader(sql, (outer) => {\n assert.isTrue(outer.step());\n const innerId = iModel.withQueryReader(sql, (inner) => {\n assert.isTrue(inner.step());\n return inner.current[0] as string;\n }, new QueryBinder().bindId(1, \"0xe\"));\n expect(innerId).to.equal(\"0xe\");\n // Outer reader's cursor must be unaffected by the nested reader.\n return outer.current[0] as string;\n }, new QueryBinder().bindId(1, \"0x1\"));\n expect(outerId).to.equal(\"0x1\");\n });\n\n it(\"recovers from a prepare failure without poisoning the cache\", () => {\n iModel.clearCaches();\n const invalidSql = \"SELECT * FROM bis.ThisClassDoesNotExist\";\n const prepareSpy = sinon.spy(ECSqlStatement.prototype, \"prepare\"); // eslint-disable-line @typescript-eslint/no-deprecated\n expect(() => iModel.withQueryReader(invalidSql, (reader) => reader.step())).to.throw();\n expect(() => iModel.withQueryReader(invalidSql, (reader) => reader.step())).to.throw();\n expect(prepareSpy.callCount).to.equal(2, \"a statement that failed to prepare must not be cached\");\n\n iModel.withQueryReader(sql, (reader) => {\n assert.isTrue(reader.step());\n expect(reader.current[0]).to.equal(\"0x1\");\n }, new QueryBinder().bindId(1, \"0x1\"));\n });\n\n it(\"releases the executor and cached statement when binding fails during reader construction\", () => {\n iModel.clearCaches();\n const prepareSpy = sinon.spy(ECSqlStatement.prototype, \"prepare\"); // eslint-disable-line @typescript-eslint/no-deprecated\n iModel.withQueryReader(sql, (reader) => reader.step(), new QueryBinder().bindId(1, \"0x1\"));\n const listenerCount = iModel.onBeforeClose.numberOfListeners;\n\n const bindStub = sinon.stub(ECSqlStatement.prototype, \"bindParams\").throws(new Error(\"Expected bind failure\")); // eslint-disable-line @typescript-eslint/no-deprecated\n expect(() => iModel.withQueryReader(sql, () => undefined, new QueryBinder().bindId(1, \"0x1\"))).to.throw(\"Expected bind failure\");\n bindStub.restore();\n expect(iModel.onBeforeClose.numberOfListeners).to.equal(listenerCount);\n\n iModel.withQueryReader(sql, (reader) => reader.step(), new QueryBinder().bindId(1, \"0x1\"));\n expect(prepareSpy.callCount).to.equal(1, \"the statement checked out before the bind failure should be returned to the cache\");\n });\n\n it(\"also caches for ECDb.withQueryReader (shared ECSqlRowExecutor path)\", () => {\n using ecdb = ECDbTestHelper.createECDb(KnownTestLocations.outputDir, \"syncReaderStmtCache.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n ecdb.saveChanges();\n const ecdbSql = \"SELECT ECInstanceId FROM meta.ECClassDef WHERE ECInstanceId=?\";\n const prepareSpy = sinon.spy(ECSqlStatement.prototype, \"prepare\"); // eslint-disable-line @typescript-eslint/no-deprecated\n for (let i = 0; i < 10; i++)\n ecdb.withQueryReader(ecdbSql, (reader) => reader.step(), new QueryBinder().bindId(1, \"0x1\"));\n expect(prepareSpy.callCount).to.equal(1, \"ECDb.withQueryReader should also reuse a cached prepared statement\");\n });\n });\n});\n"]}
1
+ {"version":3,"file":"ECSqlSyncReader.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlSyncReader.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert, expect } from \"chai\";\r\nimport * as sinon from \"sinon\";\r\nimport { QueryBinder, QueryOptionsBuilder, QueryRowFormat } from \"@itwin/core-common\";\r\nimport { SnapshotDb } from \"../../IModelDb\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\nimport { ECSqlStatement } from \"../../ECSqlStatement\";\r\nimport { ECDbTestHelper } from \"./ECDbTestHelper\";\r\nimport { KnownTestLocations } from \"../KnownTestLocations\";\r\n\r\ndescribe(\"WithQueryReaderTests\", () => {\r\n let iModel: SnapshotDb;\r\n\r\n before(async () => {\r\n iModel = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test.bim\"));\r\n });\r\n\r\n after(async () => {\r\n iModel.close();\r\n });\r\n it(\"check behvaiour if we call clearCaches in between\", () => {\r\n let actualRowCount = 0;\r\n const expectedInstanceIds = [\"0x1\", \"0xe\", \"0x10\", \"0x11\", \"0x12\",\r\n \"0x13\", \"0x14\", \"0x15\", \"0x16\", \"0x17\"];\r\n\r\n expect(() => iModel.withQueryReader(\"SELECT * FROM bis.Element\", (reader) => {\r\n let loopCount = 0;\r\n // First loop - read first 10 rows\r\n while (loopCount < 10) {\r\n reader.step()\r\n actualRowCount++;\r\n loopCount++;\r\n assert.isDefined(reader.current[0]);\r\n assert.equal(reader.current[0], expectedInstanceIds[actualRowCount - 1]);\r\n }\r\n assert.equal(loopCount, 10);\r\n iModel.clearCaches();\r\n\r\n reader.step(); // step should fail after clearCaches\r\n })).to.throw(\"Step failed\");\r\n });\r\n it(\"should throw error if we try to step on a closed iModelDb object\", () => {\r\n const imodelPath = iModel.pathName;\r\n expect(() => iModel.withQueryReader(\"SELECT * FROM bis.Element\", (reader) => {\r\n let loopCount = 0;\r\n while (loopCount < 10) {\r\n reader.step();\r\n assert.isDefined(reader.current[0]);\r\n loopCount++;\r\n }\r\n assert.equal(loopCount, 10);\r\n iModel.close();\r\n\r\n iModel = SnapshotDb.openFile(imodelPath);\r\n assert.isDefined(reader.current[0]);\r\n reader.step(); // step should fail after iModelDb is closed\r\n })).to.throw(\"Statement is not prepared\");\r\n });\r\n it(\"returning reader from withQueryReader callback should throw error if we try to step on it\", () => {\r\n const readerObj = iModel.withQueryReader(\"SELECT * FROM bis.Element\", (reader) => {\r\n reader.step();\r\n return reader;\r\n });\r\n expect(readerObj.current[0]).to.equal(\"0x1\"); // will not throw error as we are just accessing current row\r\n expect(() => readerObj.step()).to.throw(\"Statement is not prepared\");\r\n });\r\n it(\"checking rowFormat unspecified case - values accessed by index\", () => {\r\n // Default rowFormat is UseECSqlPropertyIndexes: columns are accessed by their SELECT-order index.\r\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\r\n assert.isTrue(reader.step());\r\n const id: string = reader.current[0];\r\n const classId: string = reader.current[1];\r\n assert.isTrue(Id64.isValid(classId));\r\n assert.isTrue(Id64.isValid(id));\r\n assert.equal(id, \"0x19\");\r\n });\r\n });\r\n\r\n it(\"checking rowFormat UseECSqlPropertyIndexes - values accessed by index\", () => {\r\n const config = new QueryOptionsBuilder().setRowFormat(QueryRowFormat.UseECSqlPropertyIndexes).getOptions();\r\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\r\n assert.isTrue(reader.step());\r\n // Index 0 → ECInstanceId, index 1 → ECClassId\r\n const id: string = reader.current[0];\r\n const classId: string = reader.current[1];\r\n assert.equal(id, \"0x19\");\r\n assert.isTrue(Id64.isValid(classId));\r\n // Swapping column order changes index, not value\r\n }, undefined, config);\r\n });\r\n\r\n it(\"checking rowFormat UseECSqlPropertyNames - values accessed by ECSQL property name\", () => {\r\n const config = new QueryOptionsBuilder().setRowFormat(QueryRowFormat.UseECSqlPropertyNames).getOptions();\r\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\r\n assert.isTrue(reader.step());\r\n const id: string = reader.current.ECInstanceId;\r\n const classId: string = reader.current.ECClassId;\r\n assert.equal(id, \"0x19\");\r\n assert.isTrue(Id64.isValid(classId));\r\n }, undefined, config);\r\n });\r\n\r\n it(\"checking rowFormat UseJsPropertyNames - values accessed by JavaScript property name\", () => {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n const config = new QueryOptionsBuilder().setRowFormat(QueryRowFormat.UseJsPropertyNames).getOptions();\r\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\r\n assert.isTrue(reader.step());\r\n // ECInstanceId → id, ECClassId → className (resolved to a fully-qualified class name string)\r\n const id: string = reader.current.id;\r\n const className: string = reader.current.className;\r\n assert.equal(id, \"0x19\");\r\n // className should be in the form \"SchemaName.ClassName\"\r\n assert.equal(className, \"BisCore.DrawingCategory\");\r\n }, undefined, config);\r\n });\r\n\r\n it(\"checking rowFormat UseECSqlPropertyNames with convertClassIdsToClassNames - ECClassId returned as class name string\", () => {\r\n const config = new QueryOptionsBuilder()\r\n .setRowFormat(QueryRowFormat.UseECSqlPropertyNames)\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n .setConvertClassIdsToNames(true)\r\n .getOptions();\r\n iModel.withQueryReader(\"SELECT ECInstanceId, ECClassId FROM bis.Element\", (reader) => {\r\n assert.isTrue(reader.step());\r\n const id: string = reader.current.ECInstanceId;\r\n const classId: string = reader.current.ECClassId;\r\n assert.equal(id, \"0x19\");\r\n // With convertClassIdsToClassNames, ECClassId is resolved to \"SchemaName.ClassName\" instead of an Id\r\n assert.equal(classId, \"BisCore.DrawingCategory\");\r\n }, undefined, config);\r\n });\r\n\r\n describe(\"statement caching (regression)\", () => {\r\n // `withQueryReader` used to build a fresh `ECSqlStatement` and re-compile the ECSQL on every\r\n // call (via `ECSqlRowExecutor`), with no caching. Callers such as `IModelTransformer` invoke\r\n // per-element helpers (e.g. `hasSubModel`) once per element, so on large models this turned one\r\n // cached ECSQL prepare into N full native compiles - a significant performance regression. The\r\n // reader now reuses a prepared statement from the owning db's `_statementCache`.\r\n const sql = \"SELECT ECInstanceId FROM bis.Element WHERE ECInstanceId=?\";\r\n\r\n afterEach(() => sinon.restore());\r\n\r\n it(\"reuses a single prepared statement across repeated calls instead of re-preparing\", () => {\r\n iModel.clearCaches();\r\n const prepareSpy = sinon.spy(ECSqlStatement.prototype, \"prepare\"); // eslint-disable-line @typescript-eslint/no-deprecated\r\n for (let i = 0; i < 20; i++) {\r\n iModel.withQueryReader(sql, (reader) => {\r\n reader.step();\r\n }, new QueryBinder().bindId(1, \"0x1\"));\r\n }\r\n expect(prepareSpy.callCount).to.equal(1, \"queries with identical ECSQL text should re-use one cached prepared statement\");\r\n });\r\n\r\n it(\"keeps nested withQueryReader calls on the same SQL independent\", () => {\r\n iModel.clearCaches();\r\n // A nested reader on the same SQL must get its own statement (findAndRemove hands the outer\r\n // reader's statement out of the cache), so results do not corrupt each other.\r\n const outerId = iModel.withQueryReader(sql, (outer) => {\r\n assert.isTrue(outer.step());\r\n const innerId = iModel.withQueryReader(sql, (inner) => {\r\n assert.isTrue(inner.step());\r\n return inner.current[0] as string;\r\n }, new QueryBinder().bindId(1, \"0xe\"));\r\n expect(innerId).to.equal(\"0xe\");\r\n // Outer reader's cursor must be unaffected by the nested reader.\r\n return outer.current[0] as string;\r\n }, new QueryBinder().bindId(1, \"0x1\"));\r\n expect(outerId).to.equal(\"0x1\");\r\n });\r\n\r\n it(\"recovers from a prepare failure without poisoning the cache\", () => {\r\n iModel.clearCaches();\r\n const invalidSql = \"SELECT * FROM bis.ThisClassDoesNotExist\";\r\n const prepareSpy = sinon.spy(ECSqlStatement.prototype, \"prepare\"); // eslint-disable-line @typescript-eslint/no-deprecated\r\n expect(() => iModel.withQueryReader(invalidSql, (reader) => reader.step())).to.throw();\r\n expect(() => iModel.withQueryReader(invalidSql, (reader) => reader.step())).to.throw();\r\n expect(prepareSpy.callCount).to.equal(2, \"a statement that failed to prepare must not be cached\");\r\n\r\n iModel.withQueryReader(sql, (reader) => {\r\n assert.isTrue(reader.step());\r\n expect(reader.current[0]).to.equal(\"0x1\");\r\n }, new QueryBinder().bindId(1, \"0x1\"));\r\n });\r\n\r\n it(\"releases the executor and cached statement when binding fails during reader construction\", () => {\r\n iModel.clearCaches();\r\n const prepareSpy = sinon.spy(ECSqlStatement.prototype, \"prepare\"); // eslint-disable-line @typescript-eslint/no-deprecated\r\n iModel.withQueryReader(sql, (reader) => reader.step(), new QueryBinder().bindId(1, \"0x1\"));\r\n const listenerCount = iModel.onBeforeClose.numberOfListeners;\r\n\r\n const bindStub = sinon.stub(ECSqlStatement.prototype, \"bindParams\").throws(new Error(\"Expected bind failure\")); // eslint-disable-line @typescript-eslint/no-deprecated\r\n expect(() => iModel.withQueryReader(sql, () => undefined, new QueryBinder().bindId(1, \"0x1\"))).to.throw(\"Expected bind failure\");\r\n bindStub.restore();\r\n expect(iModel.onBeforeClose.numberOfListeners).to.equal(listenerCount);\r\n\r\n iModel.withQueryReader(sql, (reader) => reader.step(), new QueryBinder().bindId(1, \"0x1\"));\r\n expect(prepareSpy.callCount).to.equal(1, \"the statement checked out before the bind failure should be returned to the cache\");\r\n });\r\n\r\n it(\"also caches for ECDb.withQueryReader (shared ECSqlRowExecutor path)\", () => {\r\n using ecdb = ECDbTestHelper.createECDb(KnownTestLocations.outputDir, \"syncReaderStmtCache.ecdb\",\r\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\r\n </ECEntityClass>\r\n </ECSchema>`);\r\n ecdb.saveChanges();\r\n const ecdbSql = \"SELECT ECInstanceId FROM meta.ECClassDef WHERE ECInstanceId=?\";\r\n const prepareSpy = sinon.spy(ECSqlStatement.prototype, \"prepare\"); // eslint-disable-line @typescript-eslint/no-deprecated\r\n for (let i = 0; i < 10; i++)\r\n ecdb.withQueryReader(ecdbSql, (reader) => reader.step(), new QueryBinder().bindId(1, \"0x1\"));\r\n expect(prepareSpy.callCount).to.equal(1, \"ECDb.withQueryReader should also reuse a cached prepared statement\");\r\n });\r\n });\r\n});\r\n"]}
@@ -80,10 +80,10 @@ describe("QueryReaders - createQueryReader() and withQueryReader() api tests", (
80
80
  it("ecsql reader simple", async () => {
81
81
  const env_1 = { stack: [], error: void 0, hasError: false };
82
82
  try {
83
- const ecdb = __addDisposableResource(env_1, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
84
- <ECEntityClass typeName="Foo" modifier="Sealed">
85
- <ECProperty propertyName="n" typeName="int"/>
86
- </ECEntityClass>
83
+ const ecdb = __addDisposableResource(env_1, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
84
+ <ECEntityClass typeName="Foo" modifier="Sealed">
85
+ <ECProperty propertyName="n" typeName="int"/>
86
+ </ECEntityClass>
87
87
  </ECSchema>`), false);
88
88
  assert.isTrue(ecdb.isOpen);
89
89
  ecdb.saveChanges();
@@ -117,10 +117,10 @@ describe("QueryReaders - createQueryReader() and withQueryReader() api tests", (
117
117
  it("ecsql reader simple for IdSet", async () => {
118
118
  const env_2 = { stack: [], error: void 0, hasError: false };
119
119
  try {
120
- const ecdb = __addDisposableResource(env_2, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
121
- <ECEntityClass typeName="Foo" modifier="Sealed">
122
- <ECProperty propertyName="n" typeName="int"/>
123
- </ECEntityClass>
120
+ const ecdb = __addDisposableResource(env_2, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
121
+ <ECEntityClass typeName="Foo" modifier="Sealed">
122
+ <ECProperty propertyName="n" typeName="int"/>
123
+ </ECEntityClass>
124
124
  </ECSchema>`), false);
125
125
  assert.isTrue(ecdb.isOpen);
126
126
  ecdb.saveChanges();
@@ -151,32 +151,18 @@ describe("QueryReaders - createQueryReader() and withQueryReader() api tests", (
151
151
  __disposeResources(env_2);
152
152
  }
153
153
  });
154
- it("bindIdSet not working with integer Ids", async () => {
154
+ it("bindIdSet throws on invalid integer Ids", () => {
155
155
  const env_3 = { stack: [], error: void 0, hasError: false };
156
156
  try {
157
- const ecdb = __addDisposableResource(env_3, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
158
- <ECEntityClass typeName="Foo" modifier="Sealed">
159
- <ECProperty propertyName="n" typeName="int"/>
160
- </ECEntityClass>
157
+ const ecdb = __addDisposableResource(env_3, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
158
+ <ECEntityClass typeName="Foo" modifier="Sealed">
159
+ <ECProperty propertyName="n" typeName="int"/>
160
+ </ECEntityClass>
161
161
  </ECSchema>`), false);
162
162
  assert.isTrue(ecdb.isOpen);
163
163
  ecdb.saveChanges();
164
164
  const params = new QueryBinder();
165
- params.bindIdSet(1, ["50"]);
166
- const optionBuilder = new QueryOptionsBuilder();
167
- // eslint-disable-next-line @typescript-eslint/no-deprecated
168
- optionBuilder.setRowFormat(QueryRowFormat.UseJsPropertyNames);
169
- const readerCallback = async (readerObj) => {
170
- const rows = await readerObj.toArray();
171
- assert.equal(rows.length, 0);
172
- };
173
- const syncreaderCallback = (syncReader) => {
174
- const rows = syncReader.toArray();
175
- assert.equal(rows.length, 0);
176
- };
177
- ecdb.withQueryReader("SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)", syncreaderCallback, params, optionBuilder.getOptions());
178
- const reader = ecdb.createQueryReader("SELECT ECInstanceId, Name FROM meta.ECClassDef WHERE InVirtualSet(?, ECInstanceId)", params, optionBuilder.getOptions());
179
- await readerCallback(reader);
165
+ expect(() => params.bindIdSet(1, ["50"])).to.throw(/is not a valid Id64String/);
180
166
  }
181
167
  catch (e_3) {
182
168
  env_3.error = e_3;
@@ -189,10 +175,10 @@ describe("QueryReaders - createQueryReader() and withQueryReader() api tests", (
189
175
  it("ecsql reader simple using query reader", async () => {
190
176
  const env_4 = { stack: [], error: void 0, hasError: false };
191
177
  try {
192
- const ecdb = __addDisposableResource(env_4, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
193
- <ECEntityClass typeName="Foo" modifier="Sealed">
194
- <ECProperty propertyName="n" typeName="int"/>
195
- </ECEntityClass>
178
+ const ecdb = __addDisposableResource(env_4, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
179
+ <ECEntityClass typeName="Foo" modifier="Sealed">
180
+ <ECProperty propertyName="n" typeName="int"/>
181
+ </ECEntityClass>
196
182
  </ECSchema>`), false);
197
183
  assert.isTrue(ecdb.isOpen);
198
184
  const insertResult = await ecdb.withCachedWriteStatement("INSERT INTO ts.Foo(n) VALUES(20)", async (stmt) => {
@@ -272,10 +258,10 @@ describe("QueryReaders - createQueryReader() and withQueryReader() api tests", (
272
258
  const env_5 = { stack: [], error: void 0, hasError: false };
273
259
  try {
274
260
  const testRange = new Range3d(1.2, 2.3, 3.4, 4.5, 5.6, 6.7);
275
- const ecdb = __addDisposableResource(env_5, ECDbTestHelper.createECDb(outDir, "bindrange3d.ecdb", `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
276
- <ECEntityClass typeName="Foo" modifier="Sealed">
277
- <ECProperty propertyName="Range3d" typeName="binary"/>
278
- </ECEntityClass>
261
+ const ecdb = __addDisposableResource(env_5, ECDbTestHelper.createECDb(outDir, "bindrange3d.ecdb", `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
262
+ <ECEntityClass typeName="Foo" modifier="Sealed">
263
+ <ECProperty propertyName="Range3d" typeName="binary"/>
264
+ </ECEntityClass>
279
265
  </ECSchema>`), false);
280
266
  assert.isTrue(ecdb.isOpen);
281
267
  ecdb.withCachedWriteStatement("INSERT INTO test.Foo([Range3d]) VALUES(?)", (stmt) => {
@@ -1391,11 +1377,11 @@ describe("createQueryReader vs withQueryReader ", () => {
1391
1377
  _processCodeScopes(element, scope) {
1392
1378
  const newScope = new ElementTreeWalkerScope(scope, element);
1393
1379
  // eslint-disable-next-line @typescript-eslint/no-deprecated
1394
- this.txn.iModel.withPreparedStatement(`
1395
- SELECT ECInstanceId
1396
- FROM bis.Element
1397
- WHERE CodeScope.id=?
1398
- AND Parent.id IS NULL
1380
+ this.txn.iModel.withPreparedStatement(`
1381
+ SELECT ECInstanceId
1382
+ FROM bis.Element
1383
+ WHERE CodeScope.id=?
1384
+ AND Parent.id IS NULL
1399
1385
  `, (stmt) => {
1400
1386
  stmt.bindId(1, element);
1401
1387
  while (stmt.step() === DbResult.BE_SQLITE_ROW) {
@@ -1446,9 +1432,9 @@ describe("createQueryReader vs withQueryReader ", () => {
1446
1432
  iModelDb.close();
1447
1433
  });
1448
1434
  it("Failing while using createQueryReader()", async () => {
1449
- const sql = `
1450
- SELECT ECInstanceId
1451
- FROM ${PhysicalObject.classFullName}
1435
+ const sql = `
1436
+ SELECT ECInstanceId
1437
+ FROM ${PhysicalObject.classFullName}
1452
1438
  `;
1453
1439
  const reader = iModelDb.createQueryReader(sql, undefined, { usePrimaryConn: true });
1454
1440
  await reader.step(); // step to initialize reader
@@ -1460,9 +1446,9 @@ describe("createQueryReader vs withQueryReader ", () => {
1460
1446
  expect(() => withEditTxn(iModelDb, (txn) => new TestElementCascadingDeleter(txn).deleteNormalElements(secondId))).to.throw();
1461
1447
  });
1462
1448
  it("Passing while using withQueryReader()", async () => {
1463
- const sql = `
1464
- SELECT ECInstanceId
1465
- FROM ${PhysicalObject.classFullName}
1449
+ const sql = `
1450
+ SELECT ECInstanceId
1451
+ FROM ${PhysicalObject.classFullName}
1466
1452
  `;
1467
1453
  iModelDb.withQueryReader(sql, (reader) => {
1468
1454
  let cntSteps = 0;