@itwin/core-backend 5.8.2 → 5.9.0-dev.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (751) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +38 -0
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  6. package/lib/cjs/BisCoreSchema.js.map +1 -1
  7. package/lib/cjs/BlobContainerService.js.map +1 -1
  8. package/lib/cjs/BriefcaseManager.js +3 -3
  9. package/lib/cjs/BriefcaseManager.js.map +1 -1
  10. package/lib/cjs/CatalogDb.js.map +1 -1
  11. package/lib/cjs/Category.d.ts +37 -7
  12. package/lib/cjs/Category.d.ts.map +1 -1
  13. package/lib/cjs/Category.js +33 -42
  14. package/lib/cjs/Category.js.map +1 -1
  15. package/lib/cjs/ChangeSummaryManager.js +2 -2
  16. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  17. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  18. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  19. package/lib/cjs/ChangesetECAdaptor.js +253 -250
  20. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  21. package/lib/cjs/ChannelControl.d.ts +29 -0
  22. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  23. package/lib/cjs/ChannelControl.js.map +1 -1
  24. package/lib/cjs/CheckpointManager.js +1 -1
  25. package/lib/cjs/CheckpointManager.js.map +1 -1
  26. package/lib/cjs/ClassRegistry.js +5 -5
  27. package/lib/cjs/ClassRegistry.js.map +1 -1
  28. package/lib/cjs/CloudSqlite.d.ts +1 -1
  29. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  30. package/lib/cjs/CloudSqlite.js +68 -13
  31. package/lib/cjs/CloudSqlite.js.map +1 -1
  32. package/lib/cjs/CodeService.js.map +1 -1
  33. package/lib/cjs/CodeSpecs.d.ts +32 -3
  34. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  35. package/lib/cjs/CodeSpecs.js +48 -20
  36. package/lib/cjs/CodeSpecs.js.map +1 -1
  37. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  38. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  39. package/lib/cjs/DevTools.js.map +1 -1
  40. package/lib/cjs/DisplayStyle.d.ts +18 -3
  41. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  42. package/lib/cjs/DisplayStyle.js +10 -21
  43. package/lib/cjs/DisplayStyle.js.map +1 -1
  44. package/lib/cjs/ECDb.js.map +1 -1
  45. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  46. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  47. package/lib/cjs/ECSqlStatement.js.map +1 -1
  48. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  49. package/lib/cjs/EditTxn.d.ts +262 -0
  50. package/lib/cjs/EditTxn.d.ts.map +1 -0
  51. package/lib/cjs/EditTxn.js +548 -0
  52. package/lib/cjs/EditTxn.js.map +1 -0
  53. package/lib/cjs/Element.d.ts +74 -5
  54. package/lib/cjs/Element.d.ts.map +1 -1
  55. package/lib/cjs/Element.js +63 -75
  56. package/lib/cjs/Element.js.map +1 -1
  57. package/lib/cjs/ElementAspect.d.ts +10 -0
  58. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  59. package/lib/cjs/ElementAspect.js +21 -12
  60. package/lib/cjs/ElementAspect.js.map +1 -1
  61. package/lib/cjs/ElementGraphics.js.map +1 -1
  62. package/lib/cjs/ElementTreeWalker.d.ts +56 -3
  63. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  64. package/lib/cjs/ElementTreeWalker.js +53 -40
  65. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  66. package/lib/cjs/Entity.js.map +1 -1
  67. package/lib/cjs/EntityReferences.js.map +1 -1
  68. package/lib/cjs/ExportGraphics.js.map +1 -1
  69. package/lib/cjs/ExternalSource.d.ts +11 -2
  70. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  71. package/lib/cjs/ExternalSource.js +10 -8
  72. package/lib/cjs/ExternalSource.js.map +1 -1
  73. package/lib/cjs/FontFile.js.map +1 -1
  74. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  75. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  76. package/lib/cjs/GeometrySummary.js +47 -47
  77. package/lib/cjs/GeometrySummary.js.map +1 -1
  78. package/lib/cjs/IModelDb.d.ts +66 -22
  79. package/lib/cjs/IModelDb.d.ts.map +1 -1
  80. package/lib/cjs/IModelDb.js +183 -297
  81. package/lib/cjs/IModelDb.js.map +1 -1
  82. package/lib/cjs/IModelDbFonts.js.map +1 -1
  83. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  84. package/lib/cjs/IModelHost.d.ts +58 -1
  85. package/lib/cjs/IModelHost.d.ts.map +1 -1
  86. package/lib/cjs/IModelHost.js +89 -0
  87. package/lib/cjs/IModelHost.js.map +1 -1
  88. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  89. package/lib/cjs/IModelJsFs.js.map +1 -1
  90. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  91. package/lib/cjs/IpcHost.d.ts.map +1 -1
  92. package/lib/cjs/IpcHost.js +15 -6
  93. package/lib/cjs/IpcHost.js.map +1 -1
  94. package/lib/cjs/LineStyle.d.ts +47 -7
  95. package/lib/cjs/LineStyle.d.ts.map +1 -1
  96. package/lib/cjs/LineStyle.js +38 -33
  97. package/lib/cjs/LineStyle.js.map +1 -1
  98. package/lib/cjs/LocalHub.js +1 -1
  99. package/lib/cjs/LocalHub.js.map +1 -1
  100. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  101. package/lib/cjs/LockControl.d.ts +85 -1
  102. package/lib/cjs/LockControl.d.ts.map +1 -1
  103. package/lib/cjs/LockControl.js.map +1 -1
  104. package/lib/cjs/Material.d.ts +8 -1
  105. package/lib/cjs/Material.d.ts.map +1 -1
  106. package/lib/cjs/Material.js +6 -12
  107. package/lib/cjs/Material.js.map +1 -1
  108. package/lib/cjs/Model.d.ts +59 -20
  109. package/lib/cjs/Model.d.ts.map +1 -1
  110. package/lib/cjs/Model.js +38 -80
  111. package/lib/cjs/Model.js.map +1 -1
  112. package/lib/cjs/NativeAppStorage.js.map +1 -1
  113. package/lib/cjs/NativeHost.js.map +1 -1
  114. package/lib/cjs/NavigationRelationship.js.map +1 -1
  115. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  116. package/lib/cjs/PropertyStore.js.map +1 -1
  117. package/lib/cjs/Relationship.d.ts +72 -7
  118. package/lib/cjs/Relationship.d.ts.map +1 -1
  119. package/lib/cjs/Relationship.js +39 -21
  120. package/lib/cjs/Relationship.js.map +1 -1
  121. package/lib/cjs/RpcBackend.js.map +1 -1
  122. package/lib/cjs/SQLiteDb.js.map +1 -1
  123. package/lib/cjs/Schema.js.map +1 -1
  124. package/lib/cjs/SchemaSync.js +4 -4
  125. package/lib/cjs/SchemaSync.js.map +1 -1
  126. package/lib/cjs/SchemaUtils.js.map +1 -1
  127. package/lib/cjs/SheetIndex.d.ts +9 -0
  128. package/lib/cjs/SheetIndex.d.ts.map +1 -1
  129. package/lib/cjs/SheetIndex.js +38 -35
  130. package/lib/cjs/SheetIndex.js.map +1 -1
  131. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  132. package/lib/cjs/SqliteStatement.js.map +1 -1
  133. package/lib/cjs/StashManager.js +1 -1
  134. package/lib/cjs/StashManager.js.map +1 -1
  135. package/lib/cjs/Texture.d.ts +6 -0
  136. package/lib/cjs/Texture.d.ts.map +1 -1
  137. package/lib/cjs/Texture.js +6 -14
  138. package/lib/cjs/Texture.js.map +1 -1
  139. package/lib/cjs/TileStorage.js.map +1 -1
  140. package/lib/cjs/TxnManager.d.ts +105 -9
  141. package/lib/cjs/TxnManager.d.ts.map +1 -1
  142. package/lib/cjs/TxnManager.js +194 -15
  143. package/lib/cjs/TxnManager.js.map +1 -1
  144. package/lib/cjs/ViewDefinition.d.ts +21 -1
  145. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  146. package/lib/cjs/ViewDefinition.js +27 -66
  147. package/lib/cjs/ViewDefinition.js.map +1 -1
  148. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  149. package/lib/cjs/ViewStore.js.map +1 -1
  150. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  151. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  152. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
  153. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  154. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  155. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  156. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  157. package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
  158. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  159. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  160. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  161. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  162. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  163. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  164. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  165. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  166. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  167. package/lib/cjs/core-backend.d.ts +1 -0
  168. package/lib/cjs/core-backend.d.ts.map +1 -1
  169. package/lib/cjs/core-backend.js +1 -0
  170. package/lib/cjs/core-backend.js.map +1 -1
  171. package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
  172. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  173. package/lib/cjs/domains/FunctionalElements.js +8 -13
  174. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  175. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  176. package/lib/cjs/domains/GenericElements.d.ts +11 -4
  177. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  178. package/lib/cjs/domains/GenericElements.js +13 -24
  179. package/lib/cjs/domains/GenericElements.js.map +1 -1
  180. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  181. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  182. package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
  183. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  184. package/lib/cjs/internal/ChannelAdmin.js +5 -3
  185. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  186. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  187. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  188. package/lib/cjs/internal/HubMock.d.ts +2 -0
  189. package/lib/cjs/internal/HubMock.d.ts.map +1 -1
  190. package/lib/cjs/internal/HubMock.js +7 -0
  191. package/lib/cjs/internal/HubMock.js.map +1 -1
  192. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  193. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  194. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  195. package/lib/cjs/internal/NoLocks.d.ts.map +1 -1
  196. package/lib/cjs/internal/NoLocks.js +6 -0
  197. package/lib/cjs/internal/NoLocks.js.map +1 -1
  198. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  199. package/lib/cjs/internal/ServerBasedLocks.d.ts +12 -0
  200. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
  201. package/lib/cjs/internal/ServerBasedLocks.js +285 -4
  202. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  203. package/lib/cjs/internal/Symbols.d.ts +4 -0
  204. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  205. package/lib/cjs/internal/Symbols.js +5 -1
  206. package/lib/cjs/internal/Symbols.js.map +1 -1
  207. package/lib/cjs/internal/annotations/fields.d.ts +3 -2
  208. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  209. package/lib/cjs/internal/annotations/fields.js +7 -6
  210. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  211. package/lib/cjs/internal/cross-package.js.map +1 -1
  212. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts +18 -3
  213. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
  214. package/lib/cjs/internal/workspace/SettingsEditorImpl.js +49 -242
  215. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  216. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -1
  217. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  218. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  219. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +0 -1
  220. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  221. package/lib/cjs/internal/workspace/WorkspaceImpl.js +70 -41
  222. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  223. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  224. package/lib/cjs/rpc/multipart.js.map +1 -1
  225. package/lib/cjs/rpc/tracing.js.map +1 -1
  226. package/lib/cjs/rpc/web/logging.js.map +1 -1
  227. package/lib/cjs/rpc/web/request.js.map +1 -1
  228. package/lib/cjs/rpc/web/response.js.map +1 -1
  229. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  230. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  231. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  232. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  233. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  234. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  235. package/lib/cjs/workspace/Settings.d.ts +11 -5
  236. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  237. package/lib/cjs/workspace/Settings.js.map +1 -1
  238. package/lib/cjs/workspace/SettingsDb.d.ts +20 -99
  239. package/lib/cjs/workspace/SettingsDb.d.ts.map +1 -1
  240. package/lib/cjs/workspace/SettingsDb.js +23 -7
  241. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  242. package/lib/cjs/workspace/SettingsEditor.d.ts +40 -226
  243. package/lib/cjs/workspace/SettingsEditor.d.ts.map +1 -1
  244. package/lib/cjs/workspace/SettingsEditor.js +86 -25
  245. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  246. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  247. package/lib/cjs/workspace/Workspace.d.ts +7 -11
  248. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  249. package/lib/cjs/workspace/Workspace.js.map +1 -1
  250. package/lib/cjs/workspace/WorkspaceEditor.d.ts +14 -0
  251. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  252. package/lib/cjs/workspace/WorkspaceEditor.js +1 -1
  253. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  254. package/lib/esm/BackendHubAccess.d.ts +38 -0
  255. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  256. package/lib/esm/BackendHubAccess.js.map +1 -1
  257. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  258. package/lib/esm/BisCoreSchema.js.map +1 -1
  259. package/lib/esm/BlobContainerService.js.map +1 -1
  260. package/lib/esm/BriefcaseManager.js +3 -3
  261. package/lib/esm/BriefcaseManager.js.map +1 -1
  262. package/lib/esm/CatalogDb.js.map +1 -1
  263. package/lib/esm/Category.d.ts +37 -7
  264. package/lib/esm/Category.d.ts.map +1 -1
  265. package/lib/esm/Category.js +33 -42
  266. package/lib/esm/Category.js.map +1 -1
  267. package/lib/esm/ChangeSummaryManager.js +2 -2
  268. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  269. package/lib/esm/ChangedElementsDb.js.map +1 -1
  270. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  271. package/lib/esm/ChangesetECAdaptor.js +253 -250
  272. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  273. package/lib/esm/ChannelControl.d.ts +29 -0
  274. package/lib/esm/ChannelControl.d.ts.map +1 -1
  275. package/lib/esm/ChannelControl.js.map +1 -1
  276. package/lib/esm/CheckpointManager.js +1 -1
  277. package/lib/esm/CheckpointManager.js.map +1 -1
  278. package/lib/esm/ClassRegistry.js +5 -5
  279. package/lib/esm/ClassRegistry.js.map +1 -1
  280. package/lib/esm/CloudSqlite.d.ts +1 -1
  281. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  282. package/lib/esm/CloudSqlite.js +69 -14
  283. package/lib/esm/CloudSqlite.js.map +1 -1
  284. package/lib/esm/CodeService.js.map +1 -1
  285. package/lib/esm/CodeSpecs.d.ts +32 -3
  286. package/lib/esm/CodeSpecs.d.ts.map +1 -1
  287. package/lib/esm/CodeSpecs.js +49 -21
  288. package/lib/esm/CodeSpecs.js.map +1 -1
  289. package/lib/esm/ConcurrentQuery.js.map +1 -1
  290. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  291. package/lib/esm/DevTools.js.map +1 -1
  292. package/lib/esm/DisplayStyle.d.ts +18 -3
  293. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  294. package/lib/esm/DisplayStyle.js +10 -21
  295. package/lib/esm/DisplayStyle.js.map +1 -1
  296. package/lib/esm/ECDb.js.map +1 -1
  297. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  298. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  299. package/lib/esm/ECSqlStatement.js.map +1 -1
  300. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  301. package/lib/esm/EditTxn.d.ts +262 -0
  302. package/lib/esm/EditTxn.d.ts.map +1 -0
  303. package/lib/esm/EditTxn.js +543 -0
  304. package/lib/esm/EditTxn.js.map +1 -0
  305. package/lib/esm/Element.d.ts +74 -5
  306. package/lib/esm/Element.d.ts.map +1 -1
  307. package/lib/esm/Element.js +64 -76
  308. package/lib/esm/Element.js.map +1 -1
  309. package/lib/esm/ElementAspect.d.ts +10 -0
  310. package/lib/esm/ElementAspect.d.ts.map +1 -1
  311. package/lib/esm/ElementAspect.js +22 -13
  312. package/lib/esm/ElementAspect.js.map +1 -1
  313. package/lib/esm/ElementGraphics.js.map +1 -1
  314. package/lib/esm/ElementTreeWalker.d.ts +56 -3
  315. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  316. package/lib/esm/ElementTreeWalker.js +53 -40
  317. package/lib/esm/ElementTreeWalker.js.map +1 -1
  318. package/lib/esm/Entity.js.map +1 -1
  319. package/lib/esm/EntityReferences.js.map +1 -1
  320. package/lib/esm/ExportGraphics.js.map +1 -1
  321. package/lib/esm/ExternalSource.d.ts +11 -2
  322. package/lib/esm/ExternalSource.d.ts.map +1 -1
  323. package/lib/esm/ExternalSource.js +10 -8
  324. package/lib/esm/ExternalSource.js.map +1 -1
  325. package/lib/esm/FontFile.js.map +1 -1
  326. package/lib/esm/GeoCoordConfig.js.map +1 -1
  327. package/lib/esm/GeographicCRSServices.js.map +1 -1
  328. package/lib/esm/GeometrySummary.js +47 -47
  329. package/lib/esm/GeometrySummary.js.map +1 -1
  330. package/lib/esm/IModelDb.d.ts +66 -22
  331. package/lib/esm/IModelDb.d.ts.map +1 -1
  332. package/lib/esm/IModelDb.js +185 -299
  333. package/lib/esm/IModelDb.js.map +1 -1
  334. package/lib/esm/IModelDbFonts.js.map +1 -1
  335. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  336. package/lib/esm/IModelHost.d.ts +58 -1
  337. package/lib/esm/IModelHost.d.ts.map +1 -1
  338. package/lib/esm/IModelHost.js +91 -2
  339. package/lib/esm/IModelHost.js.map +1 -1
  340. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  341. package/lib/esm/IModelJsFs.js.map +1 -1
  342. package/lib/esm/ImageSourceConversion.js.map +1 -1
  343. package/lib/esm/IpcHost.d.ts.map +1 -1
  344. package/lib/esm/IpcHost.js +16 -7
  345. package/lib/esm/IpcHost.js.map +1 -1
  346. package/lib/esm/LineStyle.d.ts +47 -7
  347. package/lib/esm/LineStyle.d.ts.map +1 -1
  348. package/lib/esm/LineStyle.js +38 -33
  349. package/lib/esm/LineStyle.js.map +1 -1
  350. package/lib/esm/LocalHub.js +1 -1
  351. package/lib/esm/LocalHub.js.map +1 -1
  352. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  353. package/lib/esm/LockControl.d.ts +85 -1
  354. package/lib/esm/LockControl.d.ts.map +1 -1
  355. package/lib/esm/LockControl.js.map +1 -1
  356. package/lib/esm/Material.d.ts +8 -1
  357. package/lib/esm/Material.d.ts.map +1 -1
  358. package/lib/esm/Material.js +6 -12
  359. package/lib/esm/Material.js.map +1 -1
  360. package/lib/esm/Model.d.ts +59 -20
  361. package/lib/esm/Model.d.ts.map +1 -1
  362. package/lib/esm/Model.js +39 -81
  363. package/lib/esm/Model.js.map +1 -1
  364. package/lib/esm/NativeAppStorage.js.map +1 -1
  365. package/lib/esm/NativeHost.js.map +1 -1
  366. package/lib/esm/NavigationRelationship.js.map +1 -1
  367. package/lib/esm/PromiseMemoizer.js.map +1 -1
  368. package/lib/esm/PropertyStore.js.map +1 -1
  369. package/lib/esm/Relationship.d.ts +72 -7
  370. package/lib/esm/Relationship.d.ts.map +1 -1
  371. package/lib/esm/Relationship.js +40 -22
  372. package/lib/esm/Relationship.js.map +1 -1
  373. package/lib/esm/RpcBackend.js.map +1 -1
  374. package/lib/esm/SQLiteDb.js.map +1 -1
  375. package/lib/esm/Schema.js.map +1 -1
  376. package/lib/esm/SchemaSync.js +5 -5
  377. package/lib/esm/SchemaSync.js.map +1 -1
  378. package/lib/esm/SchemaUtils.js.map +1 -1
  379. package/lib/esm/SheetIndex.d.ts +9 -0
  380. package/lib/esm/SheetIndex.d.ts.map +1 -1
  381. package/lib/esm/SheetIndex.js +38 -35
  382. package/lib/esm/SheetIndex.js.map +1 -1
  383. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  384. package/lib/esm/SqliteStatement.js.map +1 -1
  385. package/lib/esm/StashManager.js +1 -1
  386. package/lib/esm/StashManager.js.map +1 -1
  387. package/lib/esm/Texture.d.ts +6 -0
  388. package/lib/esm/Texture.d.ts.map +1 -1
  389. package/lib/esm/Texture.js +6 -14
  390. package/lib/esm/Texture.js.map +1 -1
  391. package/lib/esm/TileStorage.js.map +1 -1
  392. package/lib/esm/TxnManager.d.ts +105 -9
  393. package/lib/esm/TxnManager.d.ts.map +1 -1
  394. package/lib/esm/TxnManager.js +194 -15
  395. package/lib/esm/TxnManager.js.map +1 -1
  396. package/lib/esm/ViewDefinition.d.ts +21 -1
  397. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  398. package/lib/esm/ViewDefinition.js +27 -66
  399. package/lib/esm/ViewDefinition.js.map +1 -1
  400. package/lib/esm/ViewStateHydrator.js.map +1 -1
  401. package/lib/esm/ViewStore.js.map +1 -1
  402. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  403. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  404. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
  405. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  406. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  407. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  408. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  409. package/lib/esm/annotations/TextAnnotationElement.js +6 -5
  410. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  411. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  412. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  413. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  414. package/lib/esm/core-backend.d.ts +1 -0
  415. package/lib/esm/core-backend.d.ts.map +1 -1
  416. package/lib/esm/core-backend.js +1 -0
  417. package/lib/esm/core-backend.js.map +1 -1
  418. package/lib/esm/domains/FunctionalElements.d.ts +6 -2
  419. package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
  420. package/lib/esm/domains/FunctionalElements.js +8 -13
  421. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  422. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  423. package/lib/esm/domains/GenericElements.d.ts +11 -4
  424. package/lib/esm/domains/GenericElements.d.ts.map +1 -1
  425. package/lib/esm/domains/GenericElements.js +13 -24
  426. package/lib/esm/domains/GenericElements.js.map +1 -1
  427. package/lib/esm/domains/GenericSchema.js.map +1 -1
  428. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  429. package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
  430. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  431. package/lib/esm/internal/ChannelAdmin.js +6 -4
  432. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  433. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  434. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  435. package/lib/esm/internal/HubMock.d.ts +2 -0
  436. package/lib/esm/internal/HubMock.d.ts.map +1 -1
  437. package/lib/esm/internal/HubMock.js +7 -0
  438. package/lib/esm/internal/HubMock.js.map +1 -1
  439. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  440. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  441. package/lib/esm/internal/NativePlatform.js.map +1 -1
  442. package/lib/esm/internal/NoLocks.d.ts.map +1 -1
  443. package/lib/esm/internal/NoLocks.js +6 -0
  444. package/lib/esm/internal/NoLocks.js.map +1 -1
  445. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  446. package/lib/esm/internal/ServerBasedLocks.d.ts +12 -0
  447. package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
  448. package/lib/esm/internal/ServerBasedLocks.js +286 -5
  449. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  450. package/lib/esm/internal/Symbols.d.ts +4 -0
  451. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  452. package/lib/esm/internal/Symbols.js +4 -0
  453. package/lib/esm/internal/Symbols.js.map +1 -1
  454. package/lib/esm/internal/annotations/fields.d.ts +3 -2
  455. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  456. package/lib/esm/internal/annotations/fields.js +7 -6
  457. package/lib/esm/internal/annotations/fields.js.map +1 -1
  458. package/lib/esm/internal/cross-package.js.map +1 -1
  459. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts +18 -3
  460. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
  461. package/lib/esm/internal/workspace/SettingsEditorImpl.js +52 -246
  462. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  463. package/lib/esm/internal/workspace/SettingsImpl.d.ts.map +1 -1
  464. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  465. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  466. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +0 -1
  467. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  468. package/lib/esm/internal/workspace/WorkspaceImpl.js +71 -41
  469. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  470. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  471. package/lib/esm/rpc/multipart.js.map +1 -1
  472. package/lib/esm/rpc/tracing.js.map +1 -1
  473. package/lib/esm/rpc/web/logging.js.map +1 -1
  474. package/lib/esm/rpc/web/request.js.map +1 -1
  475. package/lib/esm/rpc/web/response.js.map +1 -1
  476. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  477. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  478. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  479. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  480. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  481. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  482. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  483. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  484. package/lib/esm/test/AttachDb.test.js +11 -11
  485. package/lib/esm/test/AttachDb.test.js.map +1 -1
  486. package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
  487. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
  488. package/lib/esm/test/ElementDrivesElement.test.js +134 -119
  489. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  490. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  491. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  492. package/lib/esm/test/IModelHost.test.js +56 -2
  493. package/lib/esm/test/IModelHost.test.js.map +1 -1
  494. package/lib/esm/test/IModelTestUtils.d.ts +23 -23
  495. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  496. package/lib/esm/test/IModelTestUtils.js +466 -449
  497. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  498. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  499. package/lib/esm/test/IpcHost.test.js.map +1 -1
  500. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  501. package/lib/esm/test/PrintElementTree.js.map +1 -1
  502. package/lib/esm/test/PropertyDb.test.js +2 -2
  503. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  504. package/lib/esm/test/RevisionUtility.js.map +1 -1
  505. package/lib/esm/test/SchemaUtils.test.js +25 -25
  506. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  507. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  508. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +156 -147
  509. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  510. package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
  511. package/lib/esm/test/TestChangeSetUtility.js +11 -7
  512. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  513. package/lib/esm/test/TestEditTxn.d.ts +8 -0
  514. package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
  515. package/lib/esm/test/TestEditTxn.js +34 -0
  516. package/lib/esm/test/TestEditTxn.js.map +1 -0
  517. package/lib/esm/test/TestUtils.d.ts +1 -0
  518. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  519. package/lib/esm/test/TestUtils.js +8 -1
  520. package/lib/esm/test/TestUtils.js.map +1 -1
  521. package/lib/esm/test/annotations/Fields.test.js +135 -143
  522. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  523. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  524. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  525. package/lib/esm/test/annotations/TextAnnotation.test.js +156 -99
  526. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  527. package/lib/esm/test/annotations/TextBlock.test.js +5 -3
  528. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  529. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  530. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  531. package/lib/esm/test/categories/Category.test.js +63 -3
  532. package/lib/esm/test/categories/Category.test.js.map +1 -1
  533. package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
  534. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  535. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  536. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  537. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  538. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  539. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  540. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  541. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  542. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  543. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  544. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  545. package/lib/esm/test/ecdb/ECSqlAst.test.js +68 -67
  546. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  547. package/lib/esm/test/ecdb/ECSqlQuery.test.js +6 -6
  548. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  549. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -333
  550. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  551. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  552. package/lib/esm/test/ecdb/QueryReaders.test.js +47 -44
  553. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  554. package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
  555. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  556. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
  557. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
  558. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  559. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  560. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  561. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  562. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  563. package/lib/esm/test/element/DeleteDefinitionElements.test.js +159 -143
  564. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  565. package/lib/esm/test/element/ElementAspect.test.js +90 -82
  566. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  567. package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
  568. package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
  569. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  570. package/lib/esm/test/element/ElementRoundTrip.test.js +176 -177
  571. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  572. package/lib/esm/test/element/ExcludedElements.test.js +2 -2
  573. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  574. package/lib/esm/test/element/ExternalSource.test.js +40 -38
  575. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  576. package/lib/esm/test/element/NullStructArray.test.js +23 -22
  577. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  578. package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
  579. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  580. package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
  581. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  582. package/lib/esm/test/element/UrlLink.test.js +2 -2
  583. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  584. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  585. package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
  586. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  587. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +194 -155
  588. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  589. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
  590. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  591. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  592. package/lib/esm/test/hubaccess/Rebase.test.js +369 -303
  593. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  594. package/lib/esm/test/hubaccess/SemanticRebase.test.js +467 -392
  595. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  596. package/lib/esm/test/imageData.js.map +1 -1
  597. package/lib/esm/test/imodel/Code.test.js +31 -31
  598. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  599. package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
  600. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  601. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  602. package/lib/esm/test/imodel/IModel.test.js +463 -388
  603. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  604. package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
  605. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  606. package/lib/esm/test/imodel/SchemaXmlImport.test.js +13 -13
  607. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  608. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  609. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  610. package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
  611. package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
  612. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  613. package/lib/esm/test/index.d.ts +1 -0
  614. package/lib/esm/test/index.d.ts.map +1 -1
  615. package/lib/esm/test/index.js +1 -0
  616. package/lib/esm/test/index.js.map +1 -1
  617. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  618. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  619. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  620. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  621. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  622. package/lib/esm/test/rpc/response.test.js.map +1 -1
  623. package/lib/esm/test/schema/ClassRegistry.test.js +122 -121
  624. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  625. package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
  626. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  627. package/lib/esm/test/schema/GenericDomain.test.js +114 -94
  628. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  629. package/lib/esm/test/schema/IModelSchemaContext.test.js +11 -10
  630. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  631. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +226 -211
  632. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  633. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
  634. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
  635. package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
  636. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  637. package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
  638. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  639. package/lib/esm/test/standalone/ChangesetReader.test.js +242 -213
  640. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  641. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  642. package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
  643. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  644. package/lib/esm/test/standalone/Drawing.test.js +4 -3
  645. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  646. package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
  647. package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
  648. package/lib/esm/test/standalone/EditTxn.test.js +219 -0
  649. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
  650. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  651. package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
  652. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  653. package/lib/esm/test/standalone/ExportGraphics.test.js +40 -34
  654. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  655. package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
  656. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  657. package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
  658. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  659. package/lib/esm/test/standalone/HubMock.test.js +31 -25
  660. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  661. package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
  662. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  663. package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
  664. package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
  665. package/lib/esm/test/standalone/IModelWrite.test.js +211 -169
  666. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  667. package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts +2 -0
  668. package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts.map +1 -0
  669. package/lib/esm/test/standalone/ITwinWorkspace.test.js +236 -0
  670. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -0
  671. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
  672. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  673. package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
  674. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  675. package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
  676. package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
  677. package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
  678. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  679. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  680. package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
  681. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  682. package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
  683. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  684. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  685. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  686. package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
  687. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  688. package/lib/esm/test/standalone/ServerBasedLocks.test.js +928 -22
  689. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  690. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  691. package/lib/esm/test/standalone/Settings.test.js +26 -4
  692. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  693. package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
  694. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  695. package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
  696. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  697. package/lib/esm/test/standalone/StandaloneDb.test.js +27 -26
  698. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  699. package/lib/esm/test/standalone/Texture.test.js +5 -4
  700. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  701. package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
  702. package/lib/esm/test/standalone/TileCache.test.js +5 -3
  703. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  704. package/lib/esm/test/standalone/TileTree.test.js +35 -31
  705. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  706. package/lib/esm/test/standalone/TxnManager.test.js +700 -653
  707. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  708. package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
  709. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  710. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  711. package/lib/esm/test/standalone/Workspace.test.js +72 -22
  712. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  713. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  714. package/lib/esm/test/workspace/SettingsDb.test.js +28 -456
  715. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  716. package/lib/esm/workspace/Settings.d.ts +11 -5
  717. package/lib/esm/workspace/Settings.d.ts.map +1 -1
  718. package/lib/esm/workspace/Settings.js.map +1 -1
  719. package/lib/esm/workspace/SettingsDb.d.ts +20 -99
  720. package/lib/esm/workspace/SettingsDb.d.ts.map +1 -1
  721. package/lib/esm/workspace/SettingsDb.js +20 -6
  722. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  723. package/lib/esm/workspace/SettingsEditor.d.ts +40 -226
  724. package/lib/esm/workspace/SettingsEditor.d.ts.map +1 -1
  725. package/lib/esm/workspace/SettingsEditor.js +85 -24
  726. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  727. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  728. package/lib/esm/workspace/Workspace.d.ts +7 -11
  729. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  730. package/lib/esm/workspace/Workspace.js.map +1 -1
  731. package/lib/esm/workspace/WorkspaceEditor.d.ts +14 -0
  732. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  733. package/lib/esm/workspace/WorkspaceEditor.js +1 -1
  734. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  735. package/package.json +13 -13
  736. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts +0 -38
  737. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
  738. package/lib/cjs/internal/workspace/SettingsDbImpl.js +0 -108
  739. package/lib/cjs/internal/workspace/SettingsDbImpl.js.map +0 -1
  740. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts +0 -14
  741. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
  742. package/lib/cjs/internal/workspace/SettingsSqliteDb.js +0 -40
  743. package/lib/cjs/internal/workspace/SettingsSqliteDb.js.map +0 -1
  744. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts +0 -38
  745. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
  746. package/lib/esm/internal/workspace/SettingsDbImpl.js +0 -104
  747. package/lib/esm/internal/workspace/SettingsDbImpl.js.map +0 -1
  748. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts +0 -14
  749. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
  750. package/lib/esm/internal/workspace/SettingsSqliteDb.js +0 -36
  751. package/lib/esm/internal/workspace/SettingsSqliteDb.js.map +0 -1
@@ -68,6 +68,17 @@ import { HubMock } from "../../internal/HubMock";
68
68
  import { SqliteChangesetReader } from "../../SqliteChangesetReader";
69
69
  import { HubWrappers, IModelTestUtils } from "../IModelTestUtils";
70
70
  import { KnownTestLocations } from "../KnownTestLocations";
71
+ import { EditTxn } from "../../EditTxn";
72
+ function startTestTxn(iModel, description = "changeset reader") {
73
+ const txn = new EditTxn(iModel, description);
74
+ txn.start();
75
+ return txn;
76
+ }
77
+ async function importSchemaStrings(txn, schemas) {
78
+ if (txn.isActive)
79
+ txn.saveChanges();
80
+ await txn.iModel.importSchemaStrings(schemas);
81
+ }
71
82
  describe("Changeset Reader API", async () => {
72
83
  let iTwinId;
73
84
  before(() => {
@@ -92,25 +103,26 @@ describe("Changeset Reader API", async () => {
92
103
  const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
93
104
  assert.isNotEmpty(rwIModelId);
94
105
  const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
106
+ const txn = startTestTxn(rwIModel, "recover overflow table changeset reader");
95
107
  // 1. Import schema with class that span overflow table.
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>
108
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
109
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
110
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
111
+ <ECEntityClass typeName="Test2dElement">
112
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
113
+ ${Array(nProps).fill(undefined).map((_, i) => `<ECProperty propertyName="p${i}" typeName="string"/>`).join("\n")}
114
+ </ECEntityClass>
103
115
  </ECSchema>`;
104
- await rwIModel.importSchemaStrings([schema]);
116
+ await importSchemaStrings(txn, [schema]);
105
117
  rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
106
118
  // Create drawing model and category
107
119
  await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });
108
120
  const codeProps = Code.createEmpty();
109
121
  codeProps.value = "DrawingModel";
110
- const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwIModel, codeProps, true);
122
+ const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);
111
123
  let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, "MyDrawingCategory");
112
124
  if (undefined === drawingCategoryId)
113
- drawingCategoryId = DrawingCategory.insert(rwIModel, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
125
+ drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
114
126
  // Insert element with 100 properties
115
127
  const geomArray = [
116
128
  Arc3d.createXY(Point3d.create(0, 0), 5),
@@ -136,9 +148,9 @@ describe("Changeset Reader API", async () => {
136
148
  ...props,
137
149
  };
138
150
  // 2. Insert a element for the class.
139
- const id = rwIModel.elements.insertElement(geomElement);
151
+ const id = txn.insertElement(geomElement);
140
152
  assert.isTrue(Id64.isValidId64(id), "insert worked");
141
- rwIModel.saveChanges();
153
+ txn.saveChanges();
142
154
  // 3. Push changes to hub.
143
155
  await rwIModel.pushChanges({ description: "insert element", accessToken: adminToken });
144
156
  // 4. Update the element.
@@ -148,14 +160,14 @@ describe("Changeset Reader API", async () => {
148
160
  return { ...acc, ...curr };
149
161
  }, {}));
150
162
  await rwIModel.locks.acquireLocks({ exclusive: id });
151
- rwIModel.elements.updateElement(updatedElementProps);
152
- rwIModel.saveChanges();
163
+ txn.updateElement(updatedElementProps);
164
+ txn.saveChanges();
153
165
  // 5. Push changes to hub.
154
166
  await rwIModel.pushChanges({ description: "update element", accessToken: adminToken });
155
167
  await rwIModel.locks.acquireLocks({ exclusive: id });
156
168
  // 6. Delete the element.
157
- rwIModel.elements.deleteElement(id);
158
- rwIModel.saveChanges();
169
+ txn.deleteElement(id);
170
+ txn.saveChanges();
159
171
  await rwIModel.pushChanges({ description: "delete element", accessToken: adminToken });
160
172
  const targetDir = path.join(KnownTestLocations.outputDir, rwIModelId, "changesets");
161
173
  const changesets = await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir });
@@ -187,6 +199,7 @@ describe("Changeset Reader API", async () => {
187
199
  }
188
200
  }
189
201
  assert.isTrue(assertOnOverflowTable);
202
+ txn.end();
190
203
  rwIModel.close();
191
204
  });
192
205
  function getClassIdByName(iModel, className) {
@@ -209,16 +222,16 @@ describe("Changeset Reader API", async () => {
209
222
  const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
210
223
  assert.isNotEmpty(rwIModelId);
211
224
  const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
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>
225
+ const txn = startTestTxn(rwIModel, "changeset reader EC adaptor");
226
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
227
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
228
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
229
+ <ECEntityClass typeName="Test2dElement">
230
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
231
+ <ECProperty propertyName="s" typeName="string"/>
232
+ </ECEntityClass>
219
233
  </ECSchema>`;
220
- await rwIModel.importSchemaStrings([schema]);
221
- rwIModel.saveChanges("user 1: schema changeset");
234
+ await importSchemaStrings(txn, [schema]);
222
235
  if (true || "push changes") {
223
236
  // Push the changes to the hub
224
237
  const prePushChangeSetId = rwIModel.changeset.id;
@@ -232,11 +245,11 @@ describe("Changeset Reader API", async () => {
232
245
  const codeProps = Code.createEmpty();
233
246
  codeProps.value = "DrawingModel";
234
247
  let totalEl = 0;
235
- const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwIModel, codeProps, true);
248
+ const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);
236
249
  let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, "MyDrawingCategory");
237
250
  if (undefined === drawingCategoryId)
238
- drawingCategoryId = DrawingCategory.insert(rwIModel, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
239
- rwIModel.saveChanges("user 1: create drawing partition");
251
+ drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
252
+ txn.saveChanges("user 1: create drawing partition");
240
253
  if (true || "push changes") {
241
254
  // Push the changes to the hub
242
255
  const prePushChangeSetId = rwIModel.changeset.id;
@@ -246,7 +259,7 @@ describe("Changeset Reader API", async () => {
246
259
  expect(prePushChangeSetId !== postPushChangeSetId);
247
260
  }
248
261
  await rwIModel.locks.acquireLocks({ shared: drawingModelId });
249
- const insertElements = (imodel, className = "Test2dElement", noOfElements = 10, userProp) => {
262
+ const insertElements = (className = "Test2dElement", noOfElements = 10, userProp) => {
250
263
  for (let m = 0; m < noOfElements; ++m) {
251
264
  const geomArray = [
252
265
  Arc3d.createXY(Point3d.create(0, 0), 5),
@@ -268,23 +281,23 @@ describe("Changeset Reader API", async () => {
268
281
  geom: geometryStream,
269
282
  ...prop,
270
283
  };
271
- const id = imodel.elements.insertElement(geomElement);
284
+ const id = txn.insertElement(geomElement);
272
285
  assert.isTrue(Id64.isValidId64(id), "insert worked");
273
286
  }
274
287
  };
275
288
  const generatedStr = new Array(10).join("x");
276
- insertElements(rwIModel, "Test2dElement", 1, () => {
289
+ insertElements("Test2dElement", 1, () => {
277
290
  return { s: generatedStr };
278
291
  });
279
292
  const updatedElements = async () => {
280
293
  await rwIModel.locks.acquireLocks({ exclusive: "0x20000000004" });
281
294
  const updatedElement = rwIModel.elements.getElementProps("0x20000000004");
282
295
  updatedElement.s = "updated property";
283
- rwIModel.elements.updateElement(updatedElement);
284
- rwIModel.saveChanges("user 1: updated data");
296
+ txn.updateElement(updatedElement);
297
+ txn.saveChanges("user 1: updated data");
285
298
  await rwIModel.pushChanges({ description: "user 1: update property id=0x20000000004", accessToken: adminToken });
286
299
  };
287
- rwIModel.saveChanges("user 1: data");
300
+ txn.saveChanges("user 1: data");
288
301
  if (true || "test local changes") {
289
302
  const testChanges = async (changes) => {
290
303
  assert.equal(changes.length, 3);
@@ -714,6 +727,7 @@ describe("Changeset Reader API", async () => {
714
727
  }
715
728
  }
716
729
  }
730
+ txn.end();
717
731
  rwIModel.close();
718
732
  });
719
733
  it("revert timeline changes", async () => {
@@ -722,20 +736,21 @@ describe("Changeset Reader API", async () => {
722
736
  const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
723
737
  assert.isNotEmpty(rwIModelId);
724
738
  const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
739
+ const txn = startTestTxn(rwIModel, "revert timeline changes");
725
740
  let nProps = 0;
726
741
  // 1. Import schema with class that span overflow table.
727
742
  const addPropertyAndImportSchema = async () => {
728
743
  await rwIModel.acquireSchemaLock();
729
744
  ++nProps;
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>
745
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
746
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00.${nProps}" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
747
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
748
+ <ECEntityClass typeName="Test2dElement">
749
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
750
+ ${Array(nProps).fill(undefined).map((_, i) => `<ECProperty propertyName="p${i + 1}" typeName="string"/>`).join("\n")}
751
+ </ECEntityClass>
737
752
  </ECSchema>`;
738
- await rwIModel.importSchemaStrings([schema]);
753
+ await importSchemaStrings(txn, [schema]);
739
754
  };
740
755
  await addPropertyAndImportSchema();
741
756
  rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
@@ -743,11 +758,11 @@ describe("Changeset Reader API", async () => {
743
758
  await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });
744
759
  const codeProps = Code.createEmpty();
745
760
  codeProps.value = "DrawingModel";
746
- const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwIModel, codeProps, true);
761
+ const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);
747
762
  let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, "MyDrawingCategory");
748
763
  if (undefined === drawingCategoryId)
749
- drawingCategoryId = DrawingCategory.insert(rwIModel, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
750
- rwIModel.saveChanges();
764
+ drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
765
+ txn.saveChanges();
751
766
  await rwIModel.pushChanges({ description: "setup category", accessToken: adminToken });
752
767
  const createEl = async (args) => {
753
768
  await rwIModel.locks.acquireLocks({ exclusive: drawingModelId });
@@ -769,17 +784,17 @@ describe("Changeset Reader API", async () => {
769
784
  geom: geometryStream,
770
785
  ...args,
771
786
  };
772
- return rwIModel.elements.insertElement(e1);
787
+ return txn.insertElement(e1);
773
788
  ;
774
789
  };
775
790
  const updateEl = async (id, args) => {
776
791
  await rwIModel.locks.acquireLocks({ exclusive: id });
777
792
  const updatedElementProps = Object.assign(rwIModel.elements.getElementProps(id), args);
778
- rwIModel.elements.updateElement(updatedElementProps);
793
+ txn.updateElement(updatedElementProps);
779
794
  };
780
795
  const deleteEl = async (id) => {
781
796
  await rwIModel.locks.acquireLocks({ exclusive: id });
782
- rwIModel.elements.deleteElement(id);
797
+ txn.deleteElement(id);
783
798
  };
784
799
  const getChanges = async () => {
785
800
  return HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir: path.join(KnownTestLocations.outputDir, rwIModelId, "changesets") });
@@ -795,22 +810,22 @@ describe("Changeset Reader API", async () => {
795
810
  // 2. Insert a element for the class
796
811
  const el1 = await createEl({ p1: "test1" });
797
812
  const el2 = await createEl({ p1: "test2" });
798
- rwIModel.saveChanges();
813
+ txn.saveChanges();
799
814
  await rwIModel.pushChanges({ description: "insert 2 elements" });
800
815
  // 3. Update the element.
801
816
  await updateEl(el1, { p1: "test3" });
802
- rwIModel.saveChanges();
817
+ txn.saveChanges();
803
818
  await rwIModel.pushChanges({ description: "update element 1" });
804
819
  // 4. Delete the element.
805
820
  await deleteEl(el2);
806
821
  const el3 = await createEl({ p1: "test4" });
807
- rwIModel.saveChanges();
822
+ txn.saveChanges();
808
823
  await rwIModel.pushChanges({ description: "delete element 2" });
809
824
  // 5. import schema and insert element 4 & update element 3
810
825
  await addPropertyAndImportSchema();
811
826
  const el4 = await createEl({ p1: "test5", p2: "test6" });
812
827
  await updateEl(el3, { p1: "test7", p2: "test8" });
813
- rwIModel.saveChanges();
828
+ txn.saveChanges();
814
829
  await rwIModel.pushChanges({ description: "import schema, insert element 4 & update element 3" });
815
830
  assert.isDefined(findEl(el1));
816
831
  assert.isUndefined(findEl(el2));
@@ -838,7 +853,7 @@ describe("Changeset Reader API", async () => {
838
853
  await addPropertyAndImportSchema();
839
854
  const el5 = await createEl({ p1: "test9", p2: "test10", p3: "test11" });
840
855
  await updateEl(el1, { p1: "test12", p2: "test13", p3: "test114" });
841
- rwIModel.saveChanges();
856
+ txn.saveChanges();
842
857
  await rwIModel.pushChanges({ description: "import schema, insert element 5 & update element 1" });
843
858
  // eslint-disable-next-line @typescript-eslint/no-deprecated
844
859
  assert.deepEqual(Object.getOwnPropertyNames(rwIModel.getMetaData("TestDomain:Test2dElement").properties), ["p1", "p2", "p3"]);
@@ -861,6 +876,7 @@ describe("Changeset Reader API", async () => {
861
876
  assert.isDefined(findEl(el5));
862
877
  // eslint-disable-next-line @typescript-eslint/no-deprecated
863
878
  assert.deepEqual(Object.getOwnPropertyNames(rwIModel.getMetaData("TestDomain:Test2dElement").properties), ["p1", "p2", "p3"]);
879
+ txn.end();
864
880
  rwIModel.close();
865
881
  });
866
882
  it("openGroup() & writeToFile()", async () => {
@@ -869,26 +885,27 @@ describe("Changeset Reader API", async () => {
869
885
  const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
870
886
  assert.isNotEmpty(rwIModelId);
871
887
  const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
888
+ const txn = startTestTxn(rwIModel, "openGroup writeToFile");
872
889
  // 1. Import schema with class that span overflow table.
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>
890
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
891
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
892
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
893
+ <ECEntityClass typeName="Test2dElement">
894
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
895
+ <ECProperty propertyName="p1" typeName="string"/>
896
+ </ECEntityClass>
880
897
  </ECSchema>`;
881
- await rwIModel.importSchemaStrings([schema]);
898
+ await importSchemaStrings(txn, [schema]);
882
899
  rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
883
900
  // Create drawing model and category
884
901
  await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });
885
902
  const codeProps = Code.createEmpty();
886
903
  codeProps.value = "DrawingModel";
887
- const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwIModel, codeProps, true);
904
+ const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);
888
905
  let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, "MyDrawingCategory");
889
906
  if (undefined === drawingCategoryId)
890
- drawingCategoryId = DrawingCategory.insert(rwIModel, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
891
- rwIModel.saveChanges();
907
+ drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
908
+ txn.saveChanges();
892
909
  await rwIModel.pushChanges({ description: "setup category", accessToken: adminToken });
893
910
  const geomArray = [
894
911
  Arc3d.createXY(Point3d.create(0, 0), 5),
@@ -910,20 +927,20 @@ describe("Changeset Reader API", async () => {
910
927
  };
911
928
  // 2. Insert a element for the class
912
929
  await rwIModel.locks.acquireLocks({ shared: drawingModelId });
913
- const e1id = rwIModel.elements.insertElement(e1);
930
+ const e1id = txn.insertElement(e1);
914
931
  assert.isTrue(Id64.isValidId64(e1id), "insert worked");
915
- rwIModel.saveChanges();
932
+ txn.saveChanges();
916
933
  await rwIModel.pushChanges({ description: "insert element", accessToken: adminToken });
917
934
  // 3. Update the element.
918
935
  const updatedElementProps = Object.assign(rwIModel.elements.getElementProps(e1id), { p1: "test2" });
919
936
  await rwIModel.locks.acquireLocks({ exclusive: e1id });
920
- rwIModel.elements.updateElement(updatedElementProps);
921
- rwIModel.saveChanges();
937
+ txn.updateElement(updatedElementProps);
938
+ txn.saveChanges();
922
939
  await rwIModel.pushChanges({ description: "update element", accessToken: adminToken });
923
940
  // 4. Delete the element.
924
941
  await rwIModel.locks.acquireLocks({ exclusive: e1id });
925
- rwIModel.elements.deleteElement(e1id);
926
- rwIModel.saveChanges();
942
+ txn.deleteElement(e1id);
943
+ txn.saveChanges();
927
944
  await rwIModel.pushChanges({ description: "delete element", accessToken: adminToken });
928
945
  const targetDir = path.join(KnownTestLocations.outputDir, rwIModelId, "changesets");
929
946
  const changesets = (await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir })).slice(1);
@@ -1045,6 +1062,7 @@ describe("Changeset Reader API", async () => {
1045
1062
  classFullName: "BisCore:DrawingModel",
1046
1063
  });
1047
1064
  }
1065
+ txn.end();
1048
1066
  rwIModel.close();
1049
1067
  });
1050
1068
  it("Delete class FK constraint violation in cache table", async () => {
@@ -1071,37 +1089,36 @@ describe("Changeset Reader API", async () => {
1071
1089
  HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken }),
1072
1090
  HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken })
1073
1091
  ]);
1092
+ const firstTxn = startTestTxn(firstBriefCase, "delete class FK constraint setup");
1074
1093
  // Enable shared channel for both
1075
1094
  [firstBriefCase, secondBriefCase].forEach(briefcase => briefcase.channels.addAllowedChannel(ChannelControl.sharedChannelName));
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>
1095
+ await importSchemaStrings(firstTxn, [`<?xml version="1.0" encoding="UTF-8"?>
1096
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1097
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1098
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1099
+
1100
+ <ECCustomAttributes>
1101
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1102
+ </ECCustomAttributes>
1103
+
1104
+ <ECEntityClass typeName="TestClass">
1105
+ <BaseClass>bis:PhysicalElement</BaseClass>
1106
+ </ECEntityClass>
1088
1107
  </ECSchema>`]);
1089
- firstBriefCase.saveChanges("import initial schema");
1090
1108
  // Push the changes to the hub
1091
1109
  await firstBriefCase.pushChanges({ description: "push initial schema changeset", accessToken: adminToken });
1092
1110
  // Sync the second briefcase with the iModel
1093
1111
  await secondBriefCase.pullChanges({ accessToken: adminToken });
1094
1112
  checkClass(firstBriefCase, true, secondBriefCase, true);
1095
1113
  // Import the schema
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>
1114
+ await importSchemaStrings(firstTxn, [`<?xml version="1.0" encoding="UTF-8"?>
1115
+ <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1116
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1117
+
1118
+ <ECCustomAttributes>
1119
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1120
+ </ECCustomAttributes>
1103
1121
  </ECSchema>`]);
1104
- firstBriefCase.saveChanges("imported schema");
1105
1122
  // Push the changeset to the hub
1106
1123
  await firstBriefCase.pushChanges({ description: "Delete class major change", accessToken: adminToken });
1107
1124
  checkClass(firstBriefCase, false, secondBriefCase, true);
@@ -1114,6 +1131,7 @@ describe("Changeset Reader API", async () => {
1114
1131
  }
1115
1132
  checkClass(firstBriefCase, false, secondBriefCase, false);
1116
1133
  // Cleanup
1134
+ firstTxn.end();
1117
1135
  secondBriefCase.close();
1118
1136
  firstBriefCase.close();
1119
1137
  });
@@ -1139,46 +1157,45 @@ describe("Changeset Reader API", async () => {
1139
1157
  HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken }),
1140
1158
  HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken })
1141
1159
  ]);
1160
+ const firstTxn = startTestTxn(firstBriefCase, "delete class FK revert");
1142
1161
  // Enable shared channel for both
1143
1162
  [firstBriefCase, secondBriefCase].forEach(briefcase => briefcase.channels.addAllowedChannel(ChannelControl.sharedChannelName));
1144
- await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1145
- <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1146
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1147
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1148
-
1149
- <ECCustomAttributes>
1150
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1151
- </ECCustomAttributes>
1152
-
1153
- <ECEntityClass typeName="TestClass">
1154
- <BaseClass>bis:PhysicalElement</BaseClass>
1155
- </ECEntityClass>
1163
+ await importSchemaStrings(firstTxn, [`<?xml version="1.0" encoding="UTF-8"?>
1164
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" 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>
1156
1175
  </ECSchema>`]);
1157
- firstBriefCase.saveChanges("import initial schema");
1158
1176
  // Push the changes to the hub
1159
1177
  await firstBriefCase.pushChanges({ description: "push initial schema changeset", accessToken: adminToken });
1160
1178
  // Sync the second briefcase
1161
1179
  await secondBriefCase.pullChanges({ accessToken: adminToken });
1162
1180
  checkClass("TestClass", firstBriefCase, true, secondBriefCase, true);
1163
1181
  // Import the schema
1164
- await firstBriefCase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1165
- <ECSchema schemaName="TestSchema" alias="ts" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1166
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1167
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1168
-
1169
- <ECCustomAttributes>
1170
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1171
- </ECCustomAttributes>
1172
-
1173
- <ECEntityClass typeName="TestClass">
1174
- <BaseClass>bis:PhysicalElement</BaseClass>
1175
- </ECEntityClass>
1176
-
1177
- <ECEntityClass typeName="AnotherTestClass">
1178
- <BaseClass>bis:PhysicalElement</BaseClass>
1179
- </ECEntityClass>
1182
+ await importSchemaStrings(firstTxn, [`<?xml version="1.0" encoding="UTF-8"?>
1183
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1184
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1185
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1186
+
1187
+ <ECCustomAttributes>
1188
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1189
+ </ECCustomAttributes>
1190
+
1191
+ <ECEntityClass typeName="TestClass">
1192
+ <BaseClass>bis:PhysicalElement</BaseClass>
1193
+ </ECEntityClass>
1194
+
1195
+ <ECEntityClass typeName="AnotherTestClass">
1196
+ <BaseClass>bis:PhysicalElement</BaseClass>
1197
+ </ECEntityClass>
1180
1198
  </ECSchema>`]);
1181
- firstBriefCase.saveChanges("imported schema");
1182
1199
  // Push the changeset to the hub
1183
1200
  await firstBriefCase.pushChanges({ description: "Add another class change", accessToken: adminToken });
1184
1201
  // Sync the second briefcase
@@ -1203,6 +1220,7 @@ describe("Changeset Reader API", async () => {
1203
1220
  checkClass("TestClass", firstBriefCase, true, secondBriefCase, true);
1204
1221
  checkClass("AnotherTestClass", firstBriefCase, false, secondBriefCase, false);
1205
1222
  // Cleanup
1223
+ firstTxn.end();
1206
1224
  secondBriefCase.close();
1207
1225
  firstBriefCase.close();
1208
1226
  });
@@ -1216,63 +1234,62 @@ describe("Changeset Reader API", async () => {
1216
1234
  HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken }),
1217
1235
  HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken })
1218
1236
  ]);
1237
+ const firstTxn = startTestTxn(firstBriefcase, "track changeset health first briefcase");
1238
+ const secondTxn = startTestTxn(secondBriefcase, "track changeset health second briefcase");
1219
1239
  [firstBriefcase, secondBriefcase].forEach(briefcase => briefcase.channels.addAllowedChannel(ChannelControl.sharedChannelName));
1220
- await firstBriefcase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1221
- <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1222
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1223
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1224
-
1225
- <ECCustomAttributes>
1226
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1227
- </ECCustomAttributes>
1228
-
1229
- <ECEntityClass typeName="TestClass">
1230
- <BaseClass>bis:PhysicalElement</BaseClass>
1231
- </ECEntityClass>
1240
+ await importSchemaStrings(firstTxn, [`<?xml version="1.0" encoding="UTF-8"?>
1241
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1242
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1243
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1244
+
1245
+ <ECCustomAttributes>
1246
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1247
+ </ECCustomAttributes>
1248
+
1249
+ <ECEntityClass typeName="TestClass">
1250
+ <BaseClass>bis:PhysicalElement</BaseClass>
1251
+ </ECEntityClass>
1232
1252
  </ECSchema>`]);
1233
- firstBriefcase.saveChanges("import initial schema");
1234
1253
  // Enable changeset tracking for both briefcases
1235
1254
  await Promise.all([firstBriefcase.enableChangesetStatTracking(), secondBriefcase.enableChangesetStatTracking()]);
1236
1255
  await firstBriefcase.pushChanges({ description: "push initial schema changeset", accessToken: adminToken });
1237
1256
  await secondBriefcase.pullChanges({ accessToken: adminToken });
1238
1257
  // Schema upgrade
1239
- await secondBriefcase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1240
- <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1241
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1242
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1243
-
1244
- <ECCustomAttributes>
1245
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1246
- </ECCustomAttributes>
1247
-
1248
- <ECEntityClass typeName="TestClass">
1249
- <BaseClass>bis:PhysicalElement</BaseClass>
1250
- <ECProperty propertyName="TestProperty" typeName="string"/>
1251
- </ECEntityClass>
1252
-
1253
- <ECEnumeration typeName="TestEnum" backingTypeName="int" isStrict="true">
1254
- <ECEnumerator name="Enumerator1" value="1" displayLabel="TestEnumerator1"/>
1255
- <ECEnumerator name="Enumerator2" value="2" displayLabel="TestEnumerator2"/>
1256
- </ECEnumeration>
1258
+ await importSchemaStrings(secondTxn, [`<?xml version="1.0" encoding="UTF-8"?>
1259
+ <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1260
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
1261
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1262
+
1263
+ <ECCustomAttributes>
1264
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1265
+ </ECCustomAttributes>
1266
+
1267
+ <ECEntityClass typeName="TestClass">
1268
+ <BaseClass>bis:PhysicalElement</BaseClass>
1269
+ <ECProperty propertyName="TestProperty" typeName="string"/>
1270
+ </ECEntityClass>
1271
+
1272
+ <ECEnumeration typeName="TestEnum" backingTypeName="int" isStrict="true">
1273
+ <ECEnumerator name="Enumerator1" value="1" displayLabel="TestEnumerator1"/>
1274
+ <ECEnumerator name="Enumerator2" value="2" displayLabel="TestEnumerator2"/>
1275
+ </ECEnumeration>
1257
1276
  </ECSchema>`]);
1258
- secondBriefcase.saveChanges("imported schema");
1259
1277
  await secondBriefcase.pushChanges({ description: "Added a property to TestClass and an enum", accessToken: adminToken });
1260
1278
  await firstBriefcase.pullChanges({ accessToken: adminToken });
1261
1279
  // Major schema change
1262
- await firstBriefcase.importSchemaStrings([`<?xml version="1.0" encoding="UTF-8"?>
1263
- <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1264
- <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1265
-
1266
- <ECCustomAttributes>
1267
- <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1268
- </ECCustomAttributes>
1269
-
1270
- <ECEnumeration typeName="TestEnum" backingTypeName="int" isStrict="true">
1271
- <ECEnumerator name="Enumerator1" value="1" displayLabel="TestEnumerator1"/>
1272
- <ECEnumerator name="Enumerator2" value="2" displayLabel="TestEnumerator2"/>
1273
- </ECEnumeration>
1280
+ await importSchemaStrings(firstTxn, [`<?xml version="1.0" encoding="UTF-8"?>
1281
+ <ECSchema schemaName="TestSchema" alias="ts" version="2.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
1282
+ <ECSchemaReference name="CoreCustomAttributes" version="1.0.0" alias="CoreCA" />
1283
+
1284
+ <ECCustomAttributes>
1285
+ <DynamicSchema xmlns = 'CoreCustomAttributes.1.0.0' />
1286
+ </ECCustomAttributes>
1287
+
1288
+ <ECEnumeration typeName="TestEnum" backingTypeName="int" isStrict="true">
1289
+ <ECEnumerator name="Enumerator1" value="1" displayLabel="TestEnumerator1"/>
1290
+ <ECEnumerator name="Enumerator2" value="2" displayLabel="TestEnumerator2"/>
1291
+ </ECEnumeration>
1274
1292
  </ECSchema>`]);
1275
- firstBriefcase.saveChanges("imported schema");
1276
1293
  await firstBriefcase.pushChanges({ description: "Deleted TestClass", accessToken: adminToken });
1277
1294
  await secondBriefcase.pullChanges({ accessToken: adminToken });
1278
1295
  const firstBriefcaseChangesets = await firstBriefcase.getAllChangesetHealthData();
@@ -1303,6 +1320,8 @@ describe("Changeset Reader API", async () => {
1303
1320
  expect(secondBriefcaseChangeset2.totalFullTableScans).to.be.eql(0);
1304
1321
  expect(secondBriefcaseChangeset2.perStatementStats.length).to.be.eql(11);
1305
1322
  // Cleanup
1323
+ secondTxn.end();
1324
+ firstTxn.end();
1306
1325
  secondBriefcase.close();
1307
1326
  firstBriefcase.close();
1308
1327
  });
@@ -1312,26 +1331,27 @@ describe("Changeset Reader API", async () => {
1312
1331
  const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
1313
1332
  assert.isNotEmpty(rwIModelId);
1314
1333
  const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
1334
+ const txn = startTestTxn(rwIModel, "openInMemory step");
1315
1335
  // 1. Import schema with class that span overflow table.
1316
- const schema = `<?xml version="1.0" encoding="UTF-8"?>
1317
- <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
1318
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
1319
- <ECEntityClass typeName="Test2dElement">
1320
- <BaseClass>bis:GraphicalElement2d</BaseClass>
1321
- <ECProperty propertyName="p1" typeName="string"/>
1322
- </ECEntityClass>
1336
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
1337
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
1338
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
1339
+ <ECEntityClass typeName="Test2dElement">
1340
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
1341
+ <ECProperty propertyName="p1" typeName="string"/>
1342
+ </ECEntityClass>
1323
1343
  </ECSchema>`;
1324
- await rwIModel.importSchemaStrings([schema]);
1344
+ await importSchemaStrings(txn, [schema]);
1325
1345
  rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
1326
1346
  // Create drawing model and category
1327
1347
  await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });
1328
1348
  const codeProps = Code.createEmpty();
1329
1349
  codeProps.value = "DrawingModel";
1330
- const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwIModel, codeProps, true);
1350
+ const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);
1331
1351
  let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, "MyDrawingCategory");
1332
1352
  if (undefined === drawingCategoryId)
1333
- drawingCategoryId = DrawingCategory.insert(rwIModel, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
1334
- rwIModel.saveChanges();
1353
+ drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
1354
+ txn.saveChanges();
1335
1355
  await rwIModel.pushChanges({ description: "setup category", accessToken: adminToken });
1336
1356
  const geomArray = [
1337
1357
  Arc3d.createXY(Point3d.create(0, 0), 5),
@@ -1353,7 +1373,7 @@ describe("Changeset Reader API", async () => {
1353
1373
  };
1354
1374
  // 2. Insert a element for the class
1355
1375
  await rwIModel.locks.acquireLocks({ shared: drawingModelId });
1356
- const e1id = rwIModel.elements.insertElement(e1);
1376
+ const e1id = txn.insertElement(e1);
1357
1377
  assert.isTrue(Id64.isValidId64(e1id), "insert worked");
1358
1378
  const testElClassId = getClassIdByName(rwIModel, "Test2dElement");
1359
1379
  if (true) {
@@ -1385,7 +1405,7 @@ describe("Changeset Reader API", async () => {
1385
1405
  expect(testEl.p1).to.equals("test1");
1386
1406
  }
1387
1407
  // save changes and verify the the txn
1388
- rwIModel.saveChanges();
1408
+ txn.saveChanges();
1389
1409
  if (true) {
1390
1410
  const txnId = rwIModel.txns.getLastSavedTxnProps()?.id;
1391
1411
  expect(txnId).to.not.be.undefined;
@@ -1437,6 +1457,8 @@ describe("Changeset Reader API", async () => {
1437
1457
  expect(testEl.p1).to.equals("test1");
1438
1458
  }
1439
1459
  await rwIModel.pushChanges({ description: "insert element", accessToken: adminToken });
1460
+ txn.end();
1461
+ rwIModel.close();
1440
1462
  });
1441
1463
  it("Instance update to a different class (bug)", async () => {
1442
1464
  /**
@@ -1467,29 +1489,30 @@ describe("Changeset Reader API", async () => {
1467
1489
  const modelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
1468
1490
  assert.isNotEmpty(modelId);
1469
1491
  let b1 = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: modelId, accessToken: adminToken });
1492
+ let txn = startTestTxn(b1, "instance update to different class");
1470
1493
  // 1. Import schema with classes that span overflow table.
1471
- const schema = `<?xml version="1.0" encoding="UTF-8"?>
1472
- <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
1473
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
1474
- <ECEntityClass typeName="T1">
1475
- <BaseClass>bis:GraphicalElement2d</BaseClass>
1476
- <ECProperty propertyName="p" typeName="string"/>
1477
- </ECEntityClass>
1478
- <ECEntityClass typeName="T2">
1479
- <BaseClass>bis:GraphicalElement2d</BaseClass>
1480
- <ECProperty propertyName="p" typeName="long"/>
1481
- </ECEntityClass>
1494
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
1495
+ <ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
1496
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
1497
+ <ECEntityClass typeName="T1">
1498
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
1499
+ <ECProperty propertyName="p" typeName="string"/>
1500
+ </ECEntityClass>
1501
+ <ECEntityClass typeName="T2">
1502
+ <BaseClass>bis:GraphicalElement2d</BaseClass>
1503
+ <ECProperty propertyName="p" typeName="long"/>
1504
+ </ECEntityClass>
1482
1505
  </ECSchema>`;
1483
- await b1.importSchemaStrings([schema]);
1506
+ await importSchemaStrings(txn, [schema]);
1484
1507
  b1.channels.addAllowedChannel(ChannelControl.sharedChannelName);
1485
1508
  // Create drawing model and category
1486
1509
  await b1.locks.acquireLocks({ shared: IModel.dictionaryId });
1487
1510
  const codeProps = Code.createEmpty();
1488
1511
  codeProps.value = "DrawingModel";
1489
- const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(b1, codeProps, true);
1512
+ const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);
1490
1513
  let drawingCategoryId = DrawingCategory.queryCategoryIdByName(b1, IModel.dictionaryId, "MyDrawingCategory");
1491
1514
  if (undefined === drawingCategoryId)
1492
- drawingCategoryId = DrawingCategory.insert(b1, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
1515
+ drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
1493
1516
  const geomArray = [
1494
1517
  Arc3d.createXY(Point3d.create(0, 0), 5),
1495
1518
  Arc3d.createXY(Point3d.create(5, 5), 2),
@@ -1508,22 +1531,24 @@ describe("Changeset Reader API", async () => {
1508
1531
  geom: geometryStream,
1509
1532
  p: "wwww",
1510
1533
  };
1511
- const elId = b1.elements.insertElement(geomElementT1);
1534
+ const elId = txn.insertElement(geomElementT1);
1512
1535
  assert.isTrue(Id64.isValidId64(elId), "insert worked");
1513
- b1.saveChanges();
1536
+ txn.saveChanges();
1514
1537
  await b1.pushChanges({ description: "insert element" });
1515
1538
  await b1.locks.acquireLocks({ shared: drawingModelId, exclusive: elId });
1516
1539
  await b1.locks.acquireLocks({ shared: IModel.dictionaryId });
1517
- b1.elements.deleteElement(elId);
1518
- b1.saveChanges();
1540
+ txn.deleteElement(elId);
1541
+ txn.saveChanges();
1519
1542
  // Force id set to reproduce same instance with different classid
1520
1543
  const bid = BigInt(elId) - 1n;
1521
1544
  b1[_nativeDb].saveLocalValue("bis_elementidsequence", bid.toString());
1522
- b1.saveChanges();
1545
+ txn.saveChanges();
1523
1546
  const fileName = b1[_nativeDb].getFilePath();
1547
+ txn.end();
1524
1548
  b1.close();
1525
1549
  b1 = await BriefcaseDb.open({ fileName });
1526
1550
  b1.channels.addAllowedChannel(ChannelControl.sharedChannelName);
1551
+ txn = startTestTxn(b1, "instance update to different class reopened briefcase");
1527
1552
  const geomElementT2 = {
1528
1553
  classFullName: `TestDomain:T2`,
1529
1554
  model: drawingModelId,
@@ -1532,9 +1557,9 @@ describe("Changeset Reader API", async () => {
1532
1557
  geom: geometryStream,
1533
1558
  p: 1111,
1534
1559
  };
1535
- const elId2 = b1.elements.insertElement(geomElementT2);
1560
+ const elId2 = txn.insertElement(geomElementT2);
1536
1561
  chai.expect(elId).equals(elId2);
1537
- b1.saveChanges();
1562
+ txn.saveChanges();
1538
1563
  await b1.pushChanges({ description: "buggy changeset" });
1539
1564
  const getChanges = async () => {
1540
1565
  return HubMock.downloadChangesets({ iModelId: modelId, targetDir: path.join(KnownTestLocations.outputDir, modelId, "changesets") });
@@ -1653,7 +1678,7 @@ describe("Changeset Reader API", async () => {
1653
1678
  unifier.appendFrom(adaptor2);
1654
1679
  }
1655
1680
  chai.expect(unifier.getInstanceCount()).to.be.equals(2); // WRONG should be 1
1656
- b1.saveChanges();
1681
+ txn.end();
1657
1682
  b1.close();
1658
1683
  });
1659
1684
  });
@@ -1745,19 +1770,20 @@ describe("PRAGMA ECSQL Functions", async () => {
1745
1770
  // Insert two elements
1746
1771
  iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
1747
1772
  await iModel.locks.acquireLocks({ shared: IModel.repositoryModelId });
1748
- const element1Id = iModel.elements.insertElement({
1773
+ const txn = startTestTxn(iModel, "PRAGMA integrity check corrupted iModel");
1774
+ const element1Id = txn.insertElement({
1749
1775
  classFullName: Subject.classFullName,
1750
1776
  model: IModel.repositoryModelId,
1751
1777
  parent: new SubjectOwnsSubjects(IModel.rootSubjectId),
1752
1778
  code: Subject.createCode(iModel, IModel.rootSubjectId, "Subject1"),
1753
1779
  });
1754
- const element2Id = iModel.elements.insertElement({
1780
+ const element2Id = txn.insertElement({
1755
1781
  classFullName: Subject.classFullName,
1756
1782
  model: IModel.repositoryModelId,
1757
1783
  parent: new SubjectOwnsSubjects(IModel.rootSubjectId),
1758
1784
  code: Subject.createCode(iModel, IModel.rootSubjectId, "Subject2"),
1759
1785
  });
1760
- iModel.saveChanges();
1786
+ txn.saveChanges();
1761
1787
  // Create a relationship between them
1762
1788
  await iModel.locks.acquireLocks({ exclusive: Id64.toIdSet([element1Id, element2Id]) });
1763
1789
  const relationship = iModel.relationships.createInstance({
@@ -1765,13 +1791,13 @@ describe("PRAGMA ECSQL Functions", async () => {
1765
1791
  sourceId: element1Id,
1766
1792
  targetId: element2Id,
1767
1793
  });
1768
- const relationshipId = iModel.relationships.insertInstance(relationship.toJSON());
1794
+ const relationshipId = txn.insertRelationship(relationship.toJSON());
1769
1795
  assert.isTrue(Id64.isValidId64(relationshipId));
1770
- iModel.saveChanges();
1796
+ txn.saveChanges();
1771
1797
  // Delete one element without deleting the relationship to corrupt the iModel
1772
1798
  const deleteResult = iModel[_nativeDb].executeSql(`DELETE FROM bis_Element WHERE Id=${element2Id}`);
1773
1799
  expect(deleteResult).to.equal(DbResult.BE_SQLITE_OK);
1774
- iModel.saveChanges();
1800
+ txn.saveChanges();
1775
1801
  // Call PRAGMA integrity_check
1776
1802
  const query = "PRAGMA integrity_check ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES";
1777
1803
  const result = iModel.createQueryReader(query, undefined, undefined);
@@ -1787,24 +1813,26 @@ describe("PRAGMA ECSQL Functions", async () => {
1787
1813
  assert(results[6][2] === true, "'check_class_ids' check should be true");
1788
1814
  assert(results[7][2] === true, "'check_data_schema' check should be true");
1789
1815
  assert(results[8][2] === true, "'check_schema_load' check should be true");
1816
+ txn.end();
1790
1817
  });
1791
1818
  it("should call PRAGMA integrity_check(check_linktable_fk_class_ids) on a corrupted iModel and return an error", async () => {
1792
1819
  // Insert two elements
1793
1820
  iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
1794
1821
  await iModel.locks.acquireLocks({ shared: IModel.repositoryModelId });
1795
- const element1Id = iModel.elements.insertElement({
1822
+ const txn = startTestTxn(iModel, "PRAGMA integrity check corrupted linktable fk ids");
1823
+ const element1Id = txn.insertElement({
1796
1824
  classFullName: Subject.classFullName,
1797
1825
  model: IModel.repositoryModelId,
1798
1826
  parent: new SubjectOwnsSubjects(IModel.rootSubjectId),
1799
1827
  code: Subject.createCode(iModel, IModel.rootSubjectId, "Subject1"),
1800
1828
  });
1801
- const element2Id = iModel.elements.insertElement({
1829
+ const element2Id = txn.insertElement({
1802
1830
  classFullName: Subject.classFullName,
1803
1831
  model: IModel.repositoryModelId,
1804
1832
  parent: new SubjectOwnsSubjects(IModel.rootSubjectId),
1805
1833
  code: Subject.createCode(iModel, IModel.rootSubjectId, "Subject2"),
1806
1834
  });
1807
- iModel.saveChanges();
1835
+ txn.saveChanges();
1808
1836
  // Create a relationship between them
1809
1837
  await iModel.locks.acquireLocks({ exclusive: Id64.toIdSet([element1Id, element2Id]) });
1810
1838
  const relationship = iModel.relationships.createInstance({
@@ -1812,13 +1840,13 @@ describe("PRAGMA ECSQL Functions", async () => {
1812
1840
  sourceId: element1Id,
1813
1841
  targetId: element2Id,
1814
1842
  });
1815
- const relationshipId = iModel.relationships.insertInstance(relationship.toJSON());
1843
+ const relationshipId = txn.insertRelationship(relationship.toJSON());
1816
1844
  assert.isTrue(Id64.isValidId64(relationshipId));
1817
- iModel.saveChanges();
1845
+ txn.saveChanges();
1818
1846
  // Delete one element without deleting the relationship to corrupt the iModel
1819
1847
  const deleteResult = iModel[_nativeDb].executeSql(`DELETE FROM bis_Element WHERE Id=${element2Id}`);
1820
1848
  expect(deleteResult).to.equal(DbResult.BE_SQLITE_OK);
1821
- iModel.saveChanges();
1849
+ txn.saveChanges();
1822
1850
  // Call PRAGMA integrity_check
1823
1851
  const query = "pragma integrity_check(check_linktable_fk_ids) options enable_experimental_features";
1824
1852
  const result = iModel.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyNames });
@@ -1826,6 +1854,7 @@ describe("PRAGMA ECSQL Functions", async () => {
1826
1854
  expect(resultArray.length).to.equal(1); // 1 error report expected
1827
1855
  expect(resultArray[0].id).to.equal("0x20000000001");
1828
1856
  expect(resultArray[0].key_id).to.equal("0x20000000002");
1857
+ txn.end();
1829
1858
  });
1830
1859
  });
1831
1860
  //# sourceMappingURL=ChangesetReader.test.js.map