@itwin/core-backend 5.5.0-dev.2 → 5.5.0-dev.5

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 (398) hide show
  1. package/CHANGELOG.md +19 -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.js.map +1 -1
  9. package/lib/cjs/ChangeSummaryManager.js +2 -2
  10. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  11. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  12. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  13. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  14. package/lib/cjs/ChannelControl.js.map +1 -1
  15. package/lib/cjs/CheckpointManager.js.map +1 -1
  16. package/lib/cjs/ClassRegistry.js +5 -5
  17. package/lib/cjs/ClassRegistry.js.map +1 -1
  18. package/lib/cjs/CloudSqlite.js.map +1 -1
  19. package/lib/cjs/CodeService.js.map +1 -1
  20. package/lib/cjs/CodeSpecs.js.map +1 -1
  21. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  22. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  23. package/lib/cjs/DevTools.js.map +1 -1
  24. package/lib/cjs/DisplayStyle.js.map +1 -1
  25. package/lib/cjs/ECDb.js.map +1 -1
  26. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  27. package/lib/cjs/ECSqlStatement.js.map +1 -1
  28. package/lib/cjs/Element.js.map +1 -1
  29. package/lib/cjs/ElementAspect.js.map +1 -1
  30. package/lib/cjs/ElementGraphics.js.map +1 -1
  31. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  32. package/lib/cjs/Entity.js.map +1 -1
  33. package/lib/cjs/EntityReferences.js.map +1 -1
  34. package/lib/cjs/ExportGraphics.js.map +1 -1
  35. package/lib/cjs/ExternalSource.js.map +1 -1
  36. package/lib/cjs/FontFile.js.map +1 -1
  37. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  38. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  39. package/lib/cjs/GeometrySummary.js +47 -47
  40. package/lib/cjs/GeometrySummary.js.map +1 -1
  41. package/lib/cjs/IModelDb.js +8 -8
  42. package/lib/cjs/IModelDb.js.map +1 -1
  43. package/lib/cjs/IModelDbFonts.js.map +1 -1
  44. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  45. package/lib/cjs/IModelHost.js.map +1 -1
  46. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  47. package/lib/cjs/IModelJsFs.js.map +1 -1
  48. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  49. package/lib/cjs/IpcHost.js.map +1 -1
  50. package/lib/cjs/LineStyle.js.map +1 -1
  51. package/lib/cjs/LocalHub.js +1 -1
  52. package/lib/cjs/LocalHub.js.map +1 -1
  53. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  54. package/lib/cjs/LockControl.js.map +1 -1
  55. package/lib/cjs/Material.js.map +1 -1
  56. package/lib/cjs/Model.js.map +1 -1
  57. package/lib/cjs/NativeAppStorage.js.map +1 -1
  58. package/lib/cjs/NativeHost.js.map +1 -1
  59. package/lib/cjs/NavigationRelationship.js.map +1 -1
  60. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  61. package/lib/cjs/PropertyStore.js.map +1 -1
  62. package/lib/cjs/Relationship.js.map +1 -1
  63. package/lib/cjs/RpcBackend.js.map +1 -1
  64. package/lib/cjs/SQLiteDb.js.map +1 -1
  65. package/lib/cjs/Schema.js.map +1 -1
  66. package/lib/cjs/SchemaSync.js.map +1 -1
  67. package/lib/cjs/SchemaUtils.js.map +1 -1
  68. package/lib/cjs/SheetIndex.js.map +1 -1
  69. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  70. package/lib/cjs/SqliteStatement.js.map +1 -1
  71. package/lib/cjs/StashManager.js.map +1 -1
  72. package/lib/cjs/Texture.js.map +1 -1
  73. package/lib/cjs/TileStorage.js.map +1 -1
  74. package/lib/cjs/TxnManager.js.map +1 -1
  75. package/lib/cjs/ViewDefinition.js.map +1 -1
  76. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  77. package/lib/cjs/ViewStore.js.map +1 -1
  78. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  79. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  80. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  81. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  82. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  83. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  84. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  85. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  86. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  87. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  88. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  89. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  90. package/lib/cjs/core-backend.js.map +1 -1
  91. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  92. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  93. package/lib/cjs/domains/GenericElements.js.map +1 -1
  94. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  95. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  96. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  97. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  98. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  99. package/lib/cjs/internal/HubMock.js.map +1 -1
  100. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  101. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  102. package/lib/cjs/internal/NoLocks.js.map +1 -1
  103. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  104. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  105. package/lib/cjs/internal/Symbols.js.map +1 -1
  106. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  107. package/lib/cjs/internal/cross-package.js.map +1 -1
  108. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  109. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  110. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  111. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  112. package/lib/cjs/rpc/multipart.js.map +1 -1
  113. package/lib/cjs/rpc/tracing.js.map +1 -1
  114. package/lib/cjs/rpc/web/logging.js.map +1 -1
  115. package/lib/cjs/rpc/web/request.js.map +1 -1
  116. package/lib/cjs/rpc/web/response.js.map +1 -1
  117. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  118. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  119. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  120. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  121. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  122. package/lib/cjs/workspace/Settings.js.map +1 -1
  123. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  124. package/lib/cjs/workspace/Workspace.js.map +1 -1
  125. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  126. package/lib/esm/BackendHubAccess.js.map +1 -1
  127. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  128. package/lib/esm/BisCoreSchema.js.map +1 -1
  129. package/lib/esm/BlobContainerService.js.map +1 -1
  130. package/lib/esm/BriefcaseManager.js.map +1 -1
  131. package/lib/esm/CatalogDb.js.map +1 -1
  132. package/lib/esm/Category.js.map +1 -1
  133. package/lib/esm/ChangeSummaryManager.js +2 -2
  134. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  135. package/lib/esm/ChangedElementsDb.js.map +1 -1
  136. package/lib/esm/ChangesetECAdaptor.js +248 -248
  137. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  138. package/lib/esm/ChannelControl.js.map +1 -1
  139. package/lib/esm/CheckpointManager.js.map +1 -1
  140. package/lib/esm/ClassRegistry.js +5 -5
  141. package/lib/esm/ClassRegistry.js.map +1 -1
  142. package/lib/esm/CloudSqlite.js.map +1 -1
  143. package/lib/esm/CodeService.js.map +1 -1
  144. package/lib/esm/CodeSpecs.js.map +1 -1
  145. package/lib/esm/ConcurrentQuery.js.map +1 -1
  146. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  147. package/lib/esm/DevTools.js.map +1 -1
  148. package/lib/esm/DisplayStyle.js.map +1 -1
  149. package/lib/esm/ECDb.js.map +1 -1
  150. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  151. package/lib/esm/ECSqlStatement.js.map +1 -1
  152. package/lib/esm/Element.js.map +1 -1
  153. package/lib/esm/ElementAspect.js.map +1 -1
  154. package/lib/esm/ElementGraphics.js.map +1 -1
  155. package/lib/esm/ElementTreeWalker.js.map +1 -1
  156. package/lib/esm/Entity.js.map +1 -1
  157. package/lib/esm/EntityReferences.js.map +1 -1
  158. package/lib/esm/ExportGraphics.js.map +1 -1
  159. package/lib/esm/ExternalSource.js.map +1 -1
  160. package/lib/esm/FontFile.js.map +1 -1
  161. package/lib/esm/GeoCoordConfig.js.map +1 -1
  162. package/lib/esm/GeographicCRSServices.js.map +1 -1
  163. package/lib/esm/GeometrySummary.js +47 -47
  164. package/lib/esm/GeometrySummary.js.map +1 -1
  165. package/lib/esm/IModelDb.js +8 -8
  166. package/lib/esm/IModelDb.js.map +1 -1
  167. package/lib/esm/IModelDbFonts.js.map +1 -1
  168. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  169. package/lib/esm/IModelHost.js.map +1 -1
  170. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  171. package/lib/esm/IModelJsFs.js.map +1 -1
  172. package/lib/esm/ImageSourceConversion.js.map +1 -1
  173. package/lib/esm/IpcHost.js.map +1 -1
  174. package/lib/esm/LineStyle.js.map +1 -1
  175. package/lib/esm/LocalHub.js +1 -1
  176. package/lib/esm/LocalHub.js.map +1 -1
  177. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  178. package/lib/esm/LockControl.js.map +1 -1
  179. package/lib/esm/Material.js.map +1 -1
  180. package/lib/esm/Model.js.map +1 -1
  181. package/lib/esm/NativeAppStorage.js.map +1 -1
  182. package/lib/esm/NativeHost.js.map +1 -1
  183. package/lib/esm/NavigationRelationship.js.map +1 -1
  184. package/lib/esm/PromiseMemoizer.js.map +1 -1
  185. package/lib/esm/PropertyStore.js.map +1 -1
  186. package/lib/esm/Relationship.js.map +1 -1
  187. package/lib/esm/RpcBackend.js.map +1 -1
  188. package/lib/esm/SQLiteDb.js.map +1 -1
  189. package/lib/esm/Schema.js.map +1 -1
  190. package/lib/esm/SchemaSync.js.map +1 -1
  191. package/lib/esm/SchemaUtils.js.map +1 -1
  192. package/lib/esm/SheetIndex.js.map +1 -1
  193. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  194. package/lib/esm/SqliteStatement.js.map +1 -1
  195. package/lib/esm/StashManager.js.map +1 -1
  196. package/lib/esm/Texture.js.map +1 -1
  197. package/lib/esm/TileStorage.js.map +1 -1
  198. package/lib/esm/TxnManager.js.map +1 -1
  199. package/lib/esm/ViewDefinition.js.map +1 -1
  200. package/lib/esm/ViewStateHydrator.js.map +1 -1
  201. package/lib/esm/ViewStore.js.map +1 -1
  202. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  203. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  204. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  205. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  206. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  207. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  208. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  209. package/lib/esm/core-backend.js.map +1 -1
  210. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  211. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  212. package/lib/esm/domains/GenericElements.js.map +1 -1
  213. package/lib/esm/domains/GenericSchema.js.map +1 -1
  214. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  215. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  216. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  217. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  218. package/lib/esm/internal/HubMock.js.map +1 -1
  219. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  220. package/lib/esm/internal/NativePlatform.js.map +1 -1
  221. package/lib/esm/internal/NoLocks.js.map +1 -1
  222. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  223. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  224. package/lib/esm/internal/Symbols.js.map +1 -1
  225. package/lib/esm/internal/annotations/fields.js.map +1 -1
  226. package/lib/esm/internal/cross-package.js.map +1 -1
  227. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  228. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  229. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  230. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  231. package/lib/esm/rpc/multipart.js.map +1 -1
  232. package/lib/esm/rpc/tracing.js.map +1 -1
  233. package/lib/esm/rpc/web/logging.js.map +1 -1
  234. package/lib/esm/rpc/web/request.js.map +1 -1
  235. package/lib/esm/rpc/web/response.js.map +1 -1
  236. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  237. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  238. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  239. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  240. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  241. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  242. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  243. package/lib/esm/test/AttachDb.test.js +11 -11
  244. package/lib/esm/test/AttachDb.test.js.map +1 -1
  245. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  246. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  247. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  248. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  249. package/lib/esm/test/IModelHost.test.js.map +1 -1
  250. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  251. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  252. package/lib/esm/test/IpcHost.test.js.map +1 -1
  253. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  254. package/lib/esm/test/PrintElementTree.js.map +1 -1
  255. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  256. package/lib/esm/test/RevisionUtility.js.map +1 -1
  257. package/lib/esm/test/SchemaUtils.test.js +25 -25
  258. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  259. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  260. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  261. package/lib/esm/test/TestUtils.js.map +1 -1
  262. package/lib/esm/test/annotations/Fields.test.js +53 -53
  263. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  264. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  265. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  266. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  267. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  268. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  269. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js +5 -5
  270. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  271. package/lib/esm/test/categories/Category.test.js.map +1 -1
  272. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  273. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  274. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  275. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +15 -15
  276. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  277. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  278. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  279. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  280. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  281. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  282. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  283. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  284. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  285. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  286. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  287. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  288. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  289. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  290. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  291. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  292. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  293. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  294. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  295. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  296. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  297. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  298. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  299. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  300. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  301. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  302. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  303. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  304. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  305. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  306. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  307. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  308. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  309. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  310. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  311. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  312. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  313. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  314. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  315. package/lib/esm/test/hubaccess/Rebase.test.js +40 -40
  316. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  317. package/lib/esm/test/imageData.js.map +1 -1
  318. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  319. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  320. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  321. package/lib/esm/test/imodel/IModel.test.js +44 -44
  322. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  323. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  324. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  325. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js +432 -198
  326. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  327. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js +272 -190
  328. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  329. package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts +27 -0
  330. package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -0
  331. package/lib/esm/test/incrementalSchemaLocater/TestContext.js +136 -0
  332. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -0
  333. package/lib/esm/test/index.js.map +1 -1
  334. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  335. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  336. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  337. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  338. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  339. package/lib/esm/test/rpc/response.test.js.map +1 -1
  340. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  341. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  342. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  343. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  344. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  345. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  346. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  347. package/lib/esm/test/standalone/ChangesetReader.test.js +346 -127
  348. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  349. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  350. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  351. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  352. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  353. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  354. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  355. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  356. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  357. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  358. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  359. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  360. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  361. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  362. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  363. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  364. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  365. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  366. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  367. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  368. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  369. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  370. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  371. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  372. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  373. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  374. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  375. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  376. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  377. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  378. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  379. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  380. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  381. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  382. package/lib/esm/workspace/Settings.js.map +1 -1
  383. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  384. package/lib/esm/workspace/Workspace.js.map +1 -1
  385. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  386. package/package.json +14 -14
  387. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.d.ts +0 -11
  388. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.d.ts.map +0 -1
  389. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js +0 -36
  390. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +0 -1
  391. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts +0 -20
  392. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts.map +0 -1
  393. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js +0 -126
  394. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +0 -1
  395. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts +0 -24
  396. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts.map +0 -1
  397. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js +0 -67
  398. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +0 -1
@@ -55,18 +55,19 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
55
55
  * See LICENSE.md in the project root for license terms and full copyright notice.
56
56
  *--------------------------------------------------------------------------------------------*/
57
57
  import { DbResult, Id64 } from "@itwin/core-bentley";
58
- import { Code, ColorDef, IModel, SubCategoryAppearance } from "@itwin/core-common";
58
+ import { Code, ColorDef, IModel, QueryBinder, SubCategoryAppearance } from "@itwin/core-common";
59
59
  import { Arc3d, IModelJson, Point3d } from "@itwin/core-geometry";
60
+ import * as chai from "chai";
60
61
  import { assert, expect } from "chai";
61
62
  import * as path from "node:path";
62
63
  import { DrawingCategory } from "../../Category";
63
64
  import { ChangesetECAdaptor, ChangesetECAdaptor as ECChangesetAdaptor, ECChangeUnifierCache, PartialECChangeUnifier } from "../../ChangesetECAdaptor";
65
+ import { _nativeDb, ChannelControl, GraphicalElement2d } from "../../core-backend";
66
+ import { BriefcaseDb, SnapshotDb } from "../../IModelDb";
64
67
  import { HubMock } from "../../internal/HubMock";
65
- import { SnapshotDb } from "../../IModelDb";
66
68
  import { SqliteChangesetReader } from "../../SqliteChangesetReader";
67
69
  import { HubWrappers, IModelTestUtils } from "../IModelTestUtils";
68
70
  import { KnownTestLocations } from "../KnownTestLocations";
69
- import { _nativeDb, ChannelControl } from "../../core-backend";
70
71
  describe("Changeset Reader API", async () => {
71
72
  let iTwinId;
72
73
  before(() => {
@@ -92,13 +93,13 @@ describe("Changeset Reader API", async () => {
92
93
  assert.isNotEmpty(rwIModelId);
93
94
  const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
94
95
  // 1. Import schema with class that span overflow table.
95
- const schema = `<?xml version="1.0" encoding="UTF-8"?>
96
- <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
97
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
98
- <ECEntityClass typeName="Test2dElement">
99
- <BaseClass>bis:GraphicalElement2d</BaseClass>
100
- ${Array(nProps).fill(undefined).map((_, i) => `<ECProperty propertyName="p${i}" typeName="string"/>`).join("\n")}
101
- </ECEntityClass>
96
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
97
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
98
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
99
+ <ECEntityClass typeName="Test2dElement">
100
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
101
+ ${Array(nProps).fill(undefined).map((_, i) => `<ECProperty propertyName="p${i}" typeName="string"/>`).join("\n")}
102
+ </ECEntityClass>
102
103
  </ECSchema>`;
103
104
  await rwIModel.importSchemaStrings([schema]);
104
105
  rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
@@ -208,13 +209,13 @@ describe("Changeset Reader API", async () => {
208
209
  const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
209
210
  assert.isNotEmpty(rwIModelId);
210
211
  const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
211
- const schema = `<?xml version="1.0" encoding="UTF-8"?>
212
- <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
213
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
214
- <ECEntityClass typeName="Test2dElement">
215
- <BaseClass>bis:GraphicalElement2d</BaseClass>
216
- <ECProperty propertyName="s" typeName="string"/>
217
- </ECEntityClass>
212
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
213
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
214
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
215
+ <ECEntityClass typeName="Test2dElement">
216
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
217
+ <ECProperty propertyName="s" typeName="string"/>
218
+ </ECEntityClass>
218
219
  </ECSchema>`;
219
220
  await rwIModel.importSchemaStrings([schema]);
220
221
  rwIModel.saveChanges("user 1: schema changeset");
@@ -726,13 +727,13 @@ describe("Changeset Reader API", async () => {
726
727
  const addPropertyAndImportSchema = async () => {
727
728
  await rwIModel.acquireSchemaLock();
728
729
  ++nProps;
729
- const schema = `<?xml version="1.0" encoding="UTF-8"?>
730
- <ECSchema schemaName="TestDomain" alias="ts" version="01.00.${nProps}" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
731
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
732
- <ECEntityClass typeName="Test2dElement">
733
- <BaseClass>bis:GraphicalElement2d</BaseClass>
734
- ${Array(nProps).fill(undefined).map((_, i) => `<ECProperty propertyName="p${i + 1}" typeName="string"/>`).join("\n")}
735
- </ECEntityClass>
730
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
731
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00.${nProps}" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
732
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
733
+ <ECEntityClass typeName="Test2dElement">
734
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
735
+ ${Array(nProps).fill(undefined).map((_, i) => `<ECProperty propertyName="p${i + 1}" typeName="string"/>`).join("\n")}
736
+ </ECEntityClass>
736
737
  </ECSchema>`;
737
738
  await rwIModel.importSchemaStrings([schema]);
738
739
  };
@@ -869,13 +870,13 @@ describe("Changeset Reader API", async () => {
869
870
  assert.isNotEmpty(rwIModelId);
870
871
  const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
871
872
  // 1. Import schema with class that span overflow table.
872
- const schema = `<?xml version="1.0" encoding="UTF-8"?>
873
- <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
874
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
875
- <ECEntityClass typeName="Test2dElement">
876
- <BaseClass>bis:GraphicalElement2d</BaseClass>
877
- <ECProperty propertyName="p1" typeName="string"/>
878
- </ECEntityClass>
873
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
874
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
875
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
876
+ <ECEntityClass typeName="Test2dElement">
877
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
878
+ <ECProperty propertyName="p1" typeName="string"/>
879
+ </ECEntityClass>
879
880
  </ECSchema>`;
880
881
  await rwIModel.importSchemaStrings([schema]);
881
882
  rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
@@ -1072,18 +1073,18 @@ describe("Changeset Reader API", async () => {
1072
1073
  ]);
1073
1074
  // Enable shared channel for both
1074
1075
  [firstBriefCase, secondBriefCase].forEach(briefcase => briefcase.channels.addAllowedChannel(ChannelControl.sharedChannelName));
1075
- await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1076
- <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1077
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1078
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1079
-
1080
- <ECCustomAttributes>
1081
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1082
- </ECCustomAttributes>
1083
-
1084
- <ECEntityClass typeName="TestClass">
1085
- <BaseClass>bis:PhysicalElement</BaseClass>
1086
- </ECEntityClass>
1076
+ await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1077
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1078
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1079
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1080
+
1081
+ <ECCustomAttributes>
1082
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1083
+ </ECCustomAttributes>
1084
+
1085
+ <ECEntityClass typeName="TestClass">
1086
+ <BaseClass>bis:PhysicalElement</BaseClass>
1087
+ </ECEntityClass>
1087
1088
  </ECSchema>`]);
1088
1089
  firstBriefCase.saveChanges("import initial schema");
1089
1090
  // Push the changes to the hub
@@ -1092,13 +1093,13 @@ describe("Changeset Reader API", async () => {
1092
1093
  await secondBriefCase.pullChanges({ accessToken: adminToken });
1093
1094
  checkClass(firstBriefCase, true, secondBriefCase, true);
1094
1095
  // Import the schema
1095
- await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1096
- <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1097
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1098
-
1099
- <ECCustomAttributes>
1100
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1101
- </ECCustomAttributes>
1096
+ await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1097
+ <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1098
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1099
+
1100
+ <ECCustomAttributes>
1101
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1102
+ </ECCustomAttributes>
1102
1103
  </ECSchema>`]);
1103
1104
  firstBriefCase.saveChanges("imported schema");
1104
1105
  // Push the changeset to the hub
@@ -1139,18 +1140,18 @@ describe("Changeset Reader API", async () => {
1139
1140
  ]);
1140
1141
  // Enable shared channel for both
1141
1142
  [firstBriefCase, secondBriefCase].forEach(briefcase => briefcase.channels.addAllowedChannel(ChannelControl.sharedChannelName));
1142
- await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1143
- <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1144
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1145
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1146
-
1147
- <ECCustomAttributes>
1148
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1149
- </ECCustomAttributes>
1150
-
1151
- <ECEntityClass typeName="TestClass">
1152
- <BaseClass>bis:PhysicalElement</BaseClass>
1153
- </ECEntityClass>
1143
+ await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1144
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1145
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1146
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1147
+
1148
+ <ECCustomAttributes>
1149
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1150
+ </ECCustomAttributes>
1151
+
1152
+ <ECEntityClass typeName="TestClass">
1153
+ <BaseClass>bis:PhysicalElement</BaseClass>
1154
+ </ECEntityClass>
1154
1155
  </ECSchema>`]);
1155
1156
  firstBriefCase.saveChanges("import initial schema");
1156
1157
  // Push the changes to the hub
@@ -1159,22 +1160,22 @@ describe("Changeset Reader API", async () => {
1159
1160
  await secondBriefCase.pullChanges({ accessToken: adminToken });
1160
1161
  checkClass("TestClass", firstBriefCase, true, secondBriefCase, true);
1161
1162
  // Import the schema
1162
- await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1163
- <ECSchema schemaName="TestSchema" alias="ts" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1164
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1165
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1166
-
1167
- <ECCustomAttributes>
1168
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1169
- </ECCustomAttributes>
1170
-
1171
- <ECEntityClass typeName="TestClass">
1172
- <BaseClass>bis:PhysicalElement</BaseClass>
1173
- </ECEntityClass>
1174
-
1175
- <ECEntityClass typeName="AnotherTestClass">
1176
- <BaseClass>bis:PhysicalElement</BaseClass>
1177
- </ECEntityClass>
1163
+ await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1164
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1165
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1166
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1167
+
1168
+ <ECCustomAttributes>
1169
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1170
+ </ECCustomAttributes>
1171
+
1172
+ <ECEntityClass typeName="TestClass">
1173
+ <BaseClass>bis:PhysicalElement</BaseClass>
1174
+ </ECEntityClass>
1175
+
1176
+ <ECEntityClass typeName="AnotherTestClass">
1177
+ <BaseClass>bis:PhysicalElement</BaseClass>
1178
+ </ECEntityClass>
1178
1179
  </ECSchema>`]);
1179
1180
  firstBriefCase.saveChanges("imported schema");
1180
1181
  // Push the changeset to the hub
@@ -1214,18 +1215,18 @@ describe("Changeset Reader API", async () => {
1214
1215
  HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken })
1215
1216
  ]);
1216
1217
  [firstBriefcase, secondBriefcase].forEach(briefcase => briefcase.channels.addAllowedChannel(ChannelControl.sharedChannelName));
1217
- await firstBriefcase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1218
- <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1219
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1220
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1221
-
1222
- <ECCustomAttributes>
1223
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1224
- </ECCustomAttributes>
1225
-
1226
- <ECEntityClass typeName="TestClass">
1227
- <BaseClass>bis:PhysicalElement</BaseClass>
1228
- </ECEntityClass>
1218
+ await firstBriefcase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1219
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1220
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1221
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1222
+
1223
+ <ECCustomAttributes>
1224
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1225
+ </ECCustomAttributes>
1226
+
1227
+ <ECEntityClass typeName="TestClass">
1228
+ <BaseClass>bis:PhysicalElement</BaseClass>
1229
+ </ECEntityClass>
1229
1230
  </ECSchema>`]);
1230
1231
  firstBriefcase.saveChanges("import initial schema");
1231
1232
  // Enable changeset tracking for both briefcases
@@ -1233,41 +1234,41 @@ describe("Changeset Reader API", async () => {
1233
1234
  await firstBriefcase.pushChanges({ description: "push initial schema changeset", accessToken: adminToken });
1234
1235
  await secondBriefcase.pullChanges({ accessToken: adminToken });
1235
1236
  // Schema upgrade
1236
- await secondBriefcase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1237
- <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1238
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1239
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1240
-
1241
- <ECCustomAttributes>
1242
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1243
- </ECCustomAttributes>
1244
-
1245
- <ECEntityClass typeName="TestClass">
1246
- <BaseClass>bis:PhysicalElement</BaseClass>
1247
- <ECProperty propertyName="TestProperty" typeName="string"/>
1248
- </ECEntityClass>
1249
-
1250
- <ECEnumeration typeName="TestEnum" backingTypeName="int" isStrict="true">
1251
- <ECEnumerator name="Enumerator1" value="1" displayLabel="TestEnumerator1"/>
1252
- <ECEnumerator name="Enumerator2" value="2" displayLabel="TestEnumerator2"/>
1253
- </ECEnumeration>
1237
+ await secondBriefcase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1238
+ <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1239
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1240
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1241
+
1242
+ <ECCustomAttributes>
1243
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1244
+ </ECCustomAttributes>
1245
+
1246
+ <ECEntityClass typeName="TestClass">
1247
+ <BaseClass>bis:PhysicalElement</BaseClass>
1248
+ <ECProperty propertyName="TestProperty" typeName="string"/>
1249
+ </ECEntityClass>
1250
+
1251
+ <ECEnumeration typeName="TestEnum" backingTypeName="int" isStrict="true">
1252
+ <ECEnumerator name="Enumerator1" value="1" displayLabel="TestEnumerator1"/>
1253
+ <ECEnumerator name="Enumerator2" value="2" displayLabel="TestEnumerator2"/>
1254
+ </ECEnumeration>
1254
1255
  </ECSchema>`]);
1255
1256
  secondBriefcase.saveChanges("imported schema");
1256
1257
  await secondBriefcase.pushChanges({ description: "Added a property to TestClass and an enum", accessToken: adminToken });
1257
1258
  await firstBriefcase.pullChanges({ accessToken: adminToken });
1258
1259
  // Major schema change
1259
- await firstBriefcase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1260
- <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1261
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1262
-
1263
- <ECCustomAttributes>
1264
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1265
- </ECCustomAttributes>
1266
-
1267
- <ECEnumeration typeName="TestEnum" backingTypeName="int" isStrict="true">
1268
- <ECEnumerator name="Enumerator1" value="1" displayLabel="TestEnumerator1"/>
1269
- <ECEnumerator name="Enumerator2" value="2" displayLabel="TestEnumerator2"/>
1270
- </ECEnumeration>
1260
+ await firstBriefcase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1261
+ <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1262
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1263
+
1264
+ <ECCustomAttributes>
1265
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1266
+ </ECCustomAttributes>
1267
+
1268
+ <ECEnumeration typeName="TestEnum" backingTypeName="int" isStrict="true">
1269
+ <ECEnumerator name="Enumerator1" value="1" displayLabel="TestEnumerator1"/>
1270
+ <ECEnumerator name="Enumerator2" value="2" displayLabel="TestEnumerator2"/>
1271
+ </ECEnumeration>
1271
1272
  </ECSchema>`]);
1272
1273
  firstBriefcase.saveChanges("imported schema");
1273
1274
  await firstBriefcase.pushChanges({ description: "Deleted TestClass", accessToken: adminToken });
@@ -1309,13 +1310,13 @@ describe("Changeset Reader API", async () => {
1309
1310
  assert.isNotEmpty(rwIModelId);
1310
1311
  const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
1311
1312
  // 1. Import schema with class that span overflow table.
1312
- const schema = `<?xml version="1.0" encoding="UTF-8"?>
1313
- <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
1314
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
1315
- <ECEntityClass typeName="Test2dElement">
1316
- <BaseClass>bis:GraphicalElement2d</BaseClass>
1317
- <ECProperty propertyName="p1" typeName="string"/>
1318
- </ECEntityClass>
1313
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
1314
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
1315
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
1316
+ <ECEntityClass typeName="Test2dElement">
1317
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
1318
+ <ECProperty propertyName="p1" typeName="string"/>
1319
+ </ECEntityClass>
1319
1320
  </ECSchema>`;
1320
1321
  await rwIModel.importSchemaStrings([schema]);
1321
1322
  rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
@@ -1434,5 +1435,223 @@ describe("Changeset Reader API", async () => {
1434
1435
  }
1435
1436
  await rwIModel.pushChanges({ description: "insert element", accessToken: adminToken });
1436
1437
  });
1438
+ it("Instance update to a different class (bug)", async () => {
1439
+ /**
1440
+ * Test scenario: Verifies changeset reader behavior when an instance ID is reused with a different class.
1441
+ *
1442
+ * Steps:
1443
+ * 1. Import schema with two classes (T1 and T2) that inherit from GraphicalElement2d.
1444
+ * - T1 has property 'p' of type string
1445
+ * - T2 has property 'p' of type long
1446
+ * 2. Insert an element of type T1 with id=elId and property p="wwww"
1447
+ * 3. Push changeset #1: "insert element"
1448
+ * 4. Delete the T1 element
1449
+ * 5. Manipulate the element ID sequence to force reuse of the same ID
1450
+ * 6. Insert a new element of type T2 with the same id=elId but property p=1111
1451
+ * 7. Push changeset #2: "buggy changeset"
1452
+ *
1453
+ * Verification:
1454
+ * - Changeset #2 should show an "Updated" operation (not Delete+Insert)
1455
+ * - In bis_Element table: ECClassId changes from T1 to T2
1456
+ * - In bis_GeometricElement2d table: ECClassId changes from T1 to T2
1457
+ * - Property 'p' changes from string "wwww" to integer 1111
1458
+ *
1459
+ * This tests the changeset reader's ability to handle instance class changes,
1460
+ * which can occur in edge cases where IDs are reused with different types.
1461
+ */
1462
+ const adminToken = "super manager token";
1463
+ const iModelName = "test";
1464
+ const modelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
1465
+ assert.isNotEmpty(modelId);
1466
+ let b1 = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: modelId, accessToken: adminToken });
1467
+ // 1. Import schema with classes that span overflow table.
1468
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
1469
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
1470
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
1471
+ <ECEntityClass typeName="T1">
1472
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
1473
+ <ECProperty propertyName="p" typeName="string"/>
1474
+ </ECEntityClass>
1475
+ <ECEntityClass typeName="T2">
1476
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
1477
+ <ECProperty propertyName="p" typeName="long"/>
1478
+ </ECEntityClass>
1479
+ </ECSchema>`;
1480
+ await b1.importSchemaStrings([schema]);
1481
+ b1.channels.addAllowedChannel(ChannelControl.sharedChannelName);
1482
+ // Create drawing model and category
1483
+ await b1.locks.acquireLocks({ shared: IModel.dictionaryId });
1484
+ const codeProps = Code.createEmpty();
1485
+ codeProps.value = "DrawingModel";
1486
+ const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(b1, codeProps, true);
1487
+ let drawingCategoryId = DrawingCategory.queryCategoryIdByName(b1, IModel.dictionaryId, "MyDrawingCategory");
1488
+ if (undefined === drawingCategoryId)
1489
+ drawingCategoryId = DrawingCategory.insert(b1, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
1490
+ const geomArray = [
1491
+ Arc3d.createXY(Point3d.create(0, 0), 5),
1492
+ Arc3d.createXY(Point3d.create(5, 5), 2),
1493
+ Arc3d.createXY(Point3d.create(-5, -5), 20),
1494
+ ];
1495
+ const geometryStream = [];
1496
+ for (const geom of geomArray) {
1497
+ const arcData = IModelJson.Writer.toIModelJson(geom);
1498
+ geometryStream.push(arcData);
1499
+ }
1500
+ const geomElementT1 = {
1501
+ classFullName: `TestDomain:T1`,
1502
+ model: drawingModelId,
1503
+ category: drawingCategoryId,
1504
+ code: Code.createEmpty(),
1505
+ geom: geometryStream,
1506
+ p: "wwww",
1507
+ };
1508
+ const elId = b1.elements.insertElement(geomElementT1);
1509
+ assert.isTrue(Id64.isValidId64(elId), "insert worked");
1510
+ b1.saveChanges();
1511
+ await b1.pushChanges({ description: "insert element" });
1512
+ await b1.locks.acquireLocks({ shared: drawingModelId, exclusive: elId });
1513
+ await b1.locks.acquireLocks({ shared: IModel.dictionaryId });
1514
+ b1.elements.deleteElement(elId);
1515
+ b1.saveChanges();
1516
+ // Force id set to reproduce same instance with different classid
1517
+ const bid = BigInt(elId) - 1n;
1518
+ b1[_nativeDb].saveLocalValue("bis_elementidsequence", bid.toString());
1519
+ b1.saveChanges();
1520
+ const fileName = b1[_nativeDb].getFilePath();
1521
+ b1.close();
1522
+ b1 = await BriefcaseDb.open({ fileName });
1523
+ b1.channels.addAllowedChannel(ChannelControl.sharedChannelName);
1524
+ const geomElementT2 = {
1525
+ classFullName: `TestDomain:T2`,
1526
+ model: drawingModelId,
1527
+ category: drawingCategoryId,
1528
+ code: Code.createEmpty(),
1529
+ geom: geometryStream,
1530
+ p: 1111,
1531
+ };
1532
+ const elId2 = b1.elements.insertElement(geomElementT2);
1533
+ chai.expect(elId).equals(elId2);
1534
+ b1.saveChanges();
1535
+ await b1.pushChanges({ description: "buggy changeset" });
1536
+ const getChanges = async () => {
1537
+ return HubMock.downloadChangesets({ iModelId: modelId, targetDir: path.join(KnownTestLocations.outputDir, modelId, "changesets") });
1538
+ };
1539
+ const changesets = await getChanges();
1540
+ chai.expect(changesets.length).equals(2);
1541
+ chai.expect(changesets[0].description).equals("insert element");
1542
+ chai.expect(changesets[1].description).equals("buggy changeset");
1543
+ const getClassId = async (name) => {
1544
+ const r = b1.createQueryReader("SELECT FORMAT('0x%x', ec_classid(?))", QueryBinder.from([name]));
1545
+ if (await r.step()) {
1546
+ return r.current[0];
1547
+ }
1548
+ };
1549
+ const t1ClassId = await getClassId("TestDomain:T1");
1550
+ const t2ClassId = await getClassId("TestDomain:T2");
1551
+ const reader = SqliteChangesetReader.openFile({ fileName: changesets[1].pathname, disableSchemaCheck: true, db: b1 });
1552
+ let bisElementAsserted = false;
1553
+ let bisGeometricElement2dAsserted = false;
1554
+ while (reader.step()) {
1555
+ if (reader.tableName === "bis_Element" && reader.op === "Updated") {
1556
+ bisElementAsserted = true;
1557
+ chai.expect(reader.getColumnNames(reader.tableName)).deep.equals([
1558
+ "Id",
1559
+ "ECClassId",
1560
+ "ModelId",
1561
+ "LastMod",
1562
+ "CodeSpecId",
1563
+ "CodeScopeId",
1564
+ "CodeValue",
1565
+ "UserLabel",
1566
+ "ParentId",
1567
+ "ParentRelECClassId",
1568
+ "FederationGuid",
1569
+ "JsonProperties",
1570
+ ]);
1571
+ const oldId = reader.getChangeValueId(0, "Old");
1572
+ const newId = reader.getChangeValueId(0, "New");
1573
+ chai.expect(oldId).equals(elId);
1574
+ chai.expect(newId).to.be.undefined;
1575
+ const oldClassId = reader.getChangeValueId(1, "Old");
1576
+ const newClassId = reader.getChangeValueId(1, "New");
1577
+ chai.expect(oldClassId).equals(t1ClassId);
1578
+ chai.expect(newClassId).equals(t2ClassId);
1579
+ chai.expect(oldClassId).is.not.equal(newClassId);
1580
+ }
1581
+ if (reader.tableName === "bis_GeometricElement2d" && reader.op === "Updated") {
1582
+ bisGeometricElement2dAsserted = true;
1583
+ chai.expect(reader.getColumnNames(reader.tableName)).deep.equals([
1584
+ "ElementId",
1585
+ "ECClassId",
1586
+ "CategoryId",
1587
+ "Origin_X",
1588
+ "Origin_Y",
1589
+ "Rotation",
1590
+ "BBoxLow_X",
1591
+ "BBoxLow_Y",
1592
+ "BBoxHigh_X",
1593
+ "BBoxHigh_Y",
1594
+ "GeometryStream",
1595
+ "TypeDefinitionId",
1596
+ "TypeDefinitionRelECClassId",
1597
+ "js1",
1598
+ "js2",
1599
+ ]);
1600
+ // ECInstanceId
1601
+ const oldId = reader.getChangeValueId(0, "Old");
1602
+ const newId = reader.getChangeValueId(0, "New");
1603
+ chai.expect(oldId).equals(elId);
1604
+ chai.expect(newId).to.be.undefined;
1605
+ // ECClassId (changed)
1606
+ const oldClassId = reader.getChangeValueId(1, "Old");
1607
+ const newClassId = reader.getChangeValueId(1, "New");
1608
+ chai.expect(oldClassId).equals(t1ClassId);
1609
+ chai.expect(newClassId).equals(t2ClassId);
1610
+ chai.expect(oldClassId).is.not.equal(newClassId);
1611
+ // Property 'p' changed type and value.
1612
+ const oldP = reader.getChangeValueText(13, "Old");
1613
+ const newP = reader.getChangeValueInteger(13, "New");
1614
+ chai.expect(oldP).equals("wwww");
1615
+ chai.expect(newP).equals(1111);
1616
+ }
1617
+ }
1618
+ chai.expect(bisElementAsserted).to.be.true;
1619
+ chai.expect(bisGeometricElement2dAsserted).to.be.true;
1620
+ reader.close();
1621
+ // ChangesetECAdaptor works incorrectly as it does not expect ECClassId to change in an update.
1622
+ const adaptor = new ChangesetECAdaptor(SqliteChangesetReader.openFile({ fileName: changesets[1].pathname, disableSchemaCheck: true, db: b1 }));
1623
+ adaptor.acceptClass(GraphicalElement2d.classFullName);
1624
+ adaptor.acceptOp("Updated");
1625
+ let ecChangeForElementAsserted = false;
1626
+ let ecChangeForGeometricElement2dAsserted = false;
1627
+ while (adaptor.step()) {
1628
+ if (adaptor.reader.tableName === "bis_Element") {
1629
+ ecChangeForElementAsserted = true;
1630
+ chai.expect(adaptor.inserted?.$meta?.classFullName).equals("TestDomain:T1"); // WRONG should be TestDomain:T2
1631
+ chai.expect(adaptor.deleted?.$meta?.classFullName).equals("TestDomain:T1"); // WRONG should be TestDomain:T2
1632
+ }
1633
+ if (adaptor.reader.tableName === "bis_GeometricElement2d") {
1634
+ ecChangeForGeometricElement2dAsserted = true;
1635
+ chai.expect(adaptor.inserted?.$meta?.classFullName).equals("TestDomain:T1"); // WRONG should be TestDomain:T2
1636
+ chai.expect(adaptor.deleted?.$meta?.classFullName).equals("TestDomain:T1"); // WRONG should be TestDomain:T2
1637
+ chai.expect(adaptor.inserted?.p).equals("0x457"); // CORRECT p in T2 is integer
1638
+ chai.expect(adaptor.deleted?.p).equals("wwww"); // CORRECT p in T1 is string
1639
+ }
1640
+ }
1641
+ chai.expect(ecChangeForElementAsserted).to.be.true;
1642
+ chai.expect(ecChangeForGeometricElement2dAsserted).to.be.true;
1643
+ adaptor.close();
1644
+ // PartialECChangeUnifier fail to combine changes correctly when ECClassId is updated.
1645
+ const adaptor2 = new ChangesetECAdaptor(SqliteChangesetReader.openFile({ fileName: changesets[1].pathname, disableSchemaCheck: true, db: b1 }));
1646
+ const unifier = new PartialECChangeUnifier(b1);
1647
+ adaptor2.acceptClass(GraphicalElement2d.classFullName);
1648
+ adaptor2.acceptOp("Updated");
1649
+ while (adaptor2.step()) {
1650
+ unifier.appendFrom(adaptor2);
1651
+ }
1652
+ chai.expect(unifier.getInstanceCount()).to.be.equals(2); // WRONG should be 1
1653
+ b1.saveChanges();
1654
+ b1.close();
1655
+ });
1437
1656
  });
1438
1657
  //# sourceMappingURL=ChangesetReader.test.js.map