@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
@@ -6,6 +6,7 @@ import { assert, expect } from "chai";
6
6
  import * as path from "path";
7
7
  import { Guid } from "@itwin/core-bentley";
8
8
  import { Code, IModel } from "@itwin/core-common";
9
+ import { withEditTxn } from "../../EditTxn";
9
10
  import { ChannelControl, DataTransformationStrategy, IModelJsFs, StandaloneDb } from "../../core-backend";
10
11
  import { HubWrappers, IModelTestUtils } from "../IModelTestUtils";
11
12
  import { KnownTestLocations } from "../KnownTestLocations";
@@ -13,26 +14,26 @@ import { HubMock } from "../../internal/HubMock";
13
14
  describe("Schema Import Callbacks", () => {
14
15
  let imodel;
15
16
  // Test schema with version changes
16
- const testSchemaV100 = () => `<?xml version="1.0" encoding="UTF-8"?>
17
- <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
18
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
19
- <ECEntityClass typeName="TestElement">
20
- <BaseClass>bis:DefinitionElement</BaseClass>
21
- <ECProperty propertyName="StringProp" typeName="string" />
22
- <ECProperty propertyName="IntProp" typeName="int" />
23
- <ECProperty propertyName="ModelName" typeName="string" />
24
- </ECEntityClass>
17
+ const testSchemaV100 = () => `<?xml version="1.0" encoding="UTF-8"?>
18
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
19
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
20
+ <ECEntityClass typeName="TestElement">
21
+ <BaseClass>bis:DefinitionElement</BaseClass>
22
+ <ECProperty propertyName="StringProp" typeName="string" />
23
+ <ECProperty propertyName="IntProp" typeName="int" />
24
+ <ECProperty propertyName="ModelName" typeName="string" />
25
+ </ECEntityClass>
25
26
  </ECSchema>`;
26
- const testSchemaV101 = () => `<?xml version="1.0" encoding="UTF-8"?>
27
- <ECSchema schemaName="TestSchema" alias="ts" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
28
- <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
29
- <ECEntityClass typeName="TestElement">
30
- <BaseClass>bis:DefinitionElement</BaseClass>
31
- <ECProperty propertyName="StringProp" typeName="string" />
32
- <ECProperty propertyName="IntProp" typeName="int" />
33
- <ECProperty propertyName="NewProp" typeName="string" />
34
- <ECProperty propertyName="ModelName" typeName="string" />
35
- </ECEntityClass>
27
+ const testSchemaV101 = () => `<?xml version="1.0" encoding="UTF-8"?>
28
+ <ECSchema schemaName="TestSchema" alias="ts" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
29
+ <ECSchemaReference name="BisCore" version="1.0.0" alias="bis"/>
30
+ <ECEntityClass typeName="TestElement">
31
+ <BaseClass>bis:DefinitionElement</BaseClass>
32
+ <ECProperty propertyName="StringProp" typeName="string" />
33
+ <ECProperty propertyName="IntProp" typeName="int" />
34
+ <ECProperty propertyName="NewProp" typeName="string" />
35
+ <ECProperty propertyName="ModelName" typeName="string" />
36
+ </ECEntityClass>
36
37
  </ECSchema>`;
37
38
  beforeEach(() => {
38
39
  const testFileName = IModelTestUtils.prepareOutputFile("SchemaImportCallbacks", `SchemaCallbackTest_${Guid.createValue()}.bim`);
@@ -122,37 +123,39 @@ describe("Schema Import Callbacks", () => {
122
123
  stringProp: "original value of first element",
123
124
  intProp: 42,
124
125
  };
125
- const elementId1 = imodel.elements.insertElement(elementProps);
126
+ const elementId1 = withEditTxn(imodel, (txn) => txn.insertElement(elementProps));
126
127
  const elementIds = [elementId1];
127
- await imodel.importSchemaStrings([testSchemaV101()], {
128
- schemaImportCallbacks: {
129
- preSchemaImportCallback: async (context) => {
130
- // Create another element before the schema import
131
- assert.equal(elementIds.length, 1);
132
- const element = context.iModel.elements.getElementProps(elementIds[0]);
133
- assert.isDefined(element.stringProp);
134
- assert.isDefined(element.intProp);
135
- elementProps.stringProp = "original value of second element";
136
- elementProps.intProp = 84;
137
- elementIds.push(imodel.elements.insertElement(elementProps));
138
- const cached = { ids: elementIds };
139
- return {
140
- transformStrategy: DataTransformationStrategy.InMemory,
141
- cachedData: cached,
142
- };
143
- },
144
- postSchemaImportCallback: async (context) => {
145
- // Use cached data to update element with new property
146
- assert.isDefined(context.resources.cachedData?.ids);
147
- const updatedElementProps = context.iModel.elements.getElementProps(context.resources.cachedData.ids[1]);
148
- assert.isDefined(updatedElementProps.stringProp);
149
- assert.isDefined(updatedElementProps.intProp);
150
- assert.isUndefined(updatedElementProps.newProp);
151
- updatedElementProps.stringProp = "modified in postImport";
152
- updatedElementProps.newProp = `New Prop Added`;
153
- context.iModel.elements.updateElement(updatedElementProps);
128
+ await withEditTxn(imodel, "cache callback writes", async (txn) => {
129
+ await imodel.importSchemaStrings([testSchemaV101()], {
130
+ schemaImportCallbacks: {
131
+ preSchemaImportCallback: async (context) => {
132
+ // Create another element before the schema import
133
+ assert.equal(elementIds.length, 1);
134
+ const element = context.iModel.elements.getElementProps(elementIds[0]);
135
+ assert.isDefined(element.stringProp);
136
+ assert.isDefined(element.intProp);
137
+ elementProps.stringProp = "original value of second element";
138
+ elementProps.intProp = 84;
139
+ elementIds.push(txn.insertElement(elementProps));
140
+ const cached = { ids: elementIds };
141
+ return {
142
+ transformStrategy: DataTransformationStrategy.InMemory,
143
+ cachedData: cached,
144
+ };
145
+ },
146
+ postSchemaImportCallback: async (context) => {
147
+ // Use cached data to update element with new property
148
+ assert.isDefined(context.resources.cachedData?.ids);
149
+ const updatedElementProps = context.iModel.elements.getElementProps(context.resources.cachedData.ids[1]);
150
+ assert.isDefined(updatedElementProps.stringProp);
151
+ assert.isDefined(updatedElementProps.intProp);
152
+ assert.isUndefined(updatedElementProps.newProp);
153
+ updatedElementProps.stringProp = "modified in postImport";
154
+ updatedElementProps.newProp = `New Prop Added`;
155
+ txn.updateElement(updatedElementProps);
156
+ },
154
157
  },
155
- },
158
+ });
156
159
  });
157
160
  // Verify the transformation
158
161
  let finalElementProps = imodel.elements.getElementProps(elementIds[0]);
@@ -192,26 +195,27 @@ describe("Schema Import Callbacks", () => {
192
195
  stringProp: "snapshot test",
193
196
  intProp: 123,
194
197
  };
195
- const elementId = imodel.elements.insertElement(elementProps);
196
- imodel.saveChanges("Insert element before schema upgrade");
198
+ const elementId = withEditTxn(imodel, "Insert element before schema upgrade", (txn) => txn.insertElement(elementProps));
197
199
  // Import updated schema with snapshot strategy
198
200
  let originalStringValue;
199
- await imodel.importSchemaStrings([testSchemaV101()], {
200
- schemaImportCallbacks: {
201
- preSchemaImportCallback: async () => ({ transformStrategy: DataTransformationStrategy.Snapshot }),
202
- postSchemaImportCallback: async (context) => {
203
- assert.isDefined(context.resources.snapshot);
204
- assert.equal(context.resources.snapshot?.getSchemaProps("TestSchema").version, "01.00.00");
205
- assert.equal(imodel.getSchemaProps("TestSchema").version, "01.00.01");
206
- // Read original value from snapshot
207
- const snapshotElementProps = context.resources.snapshot.elements.getElementProps(elementId);
208
- originalStringValue = snapshotElementProps.stringProp;
209
- // Update element in main iModel with new property based on snapshot data
210
- const updatedElementProps = context.iModel.elements.getElementProps(elementId);
211
- updatedElementProps.newProp = `Original was: ${originalStringValue}`;
212
- context.iModel.elements.updateElement(updatedElementProps);
201
+ await withEditTxn(imodel, "snapshot callback writes", async (txn) => {
202
+ await imodel.importSchemaStrings([testSchemaV101()], {
203
+ schemaImportCallbacks: {
204
+ preSchemaImportCallback: async () => ({ transformStrategy: DataTransformationStrategy.Snapshot }),
205
+ postSchemaImportCallback: async (context) => {
206
+ assert.isDefined(context.resources.snapshot);
207
+ assert.equal(context.resources.snapshot?.getSchemaProps("TestSchema").version, "01.00.00");
208
+ assert.equal(imodel.getSchemaProps("TestSchema").version, "01.00.01");
209
+ // Read original value from snapshot
210
+ const snapshotElementProps = context.resources.snapshot.elements.getElementProps(elementId);
211
+ originalStringValue = snapshotElementProps.stringProp;
212
+ // Update element in main iModel with new property based on snapshot data
213
+ const updatedElementProps = context.iModel.elements.getElementProps(elementId);
214
+ updatedElementProps.newProp = `Original was: ${originalStringValue}`;
215
+ txn.updateElement(updatedElementProps);
216
+ },
213
217
  },
214
- },
218
+ });
215
219
  });
216
220
  assert.equal(originalStringValue, "snapshot test");
217
221
  const finalElement = imodel.elements.getElement(elementId);
@@ -264,23 +268,24 @@ describe("Schema Import Callbacks", () => {
264
268
  intProp: 1,
265
269
  };
266
270
  assert.equal(imodel.getSchemaProps("TestSchema").version, "01.00.00");
267
- const elementId = imodel.elements.insertElement(elementProps);
268
- imodel.saveChanges("Insert test element");
271
+ const elementId = withEditTxn(imodel, "Insert test element", (txn) => txn.insertElement(elementProps));
269
272
  // Try to import with failing callback
270
273
  try {
271
- await imodel.importSchemaStrings([testSchemaV101()], {
272
- schemaImportCallbacks: {
273
- postSchemaImportCallback: async (context) => {
274
- // Make a change
275
- const updatedElementProps = context.iModel.elements.getElementProps(elementId);
276
- updatedElementProps.intProp += 1;
277
- updatedElementProps.stringProp = "should be reverted";
278
- updatedElementProps.newProp = "should be reverted";
279
- context.iModel.elements.updateElement(updatedElementProps);
280
- // Then throw error
281
- throw new Error("Intentional callback failure");
274
+ await withEditTxn(imodel, "failing callback writes", async (txn) => {
275
+ await imodel.importSchemaStrings([testSchemaV101()], {
276
+ schemaImportCallbacks: {
277
+ postSchemaImportCallback: async (context) => {
278
+ // Make a change
279
+ const updatedElementProps = context.iModel.elements.getElementProps(elementId);
280
+ updatedElementProps.intProp += 1;
281
+ updatedElementProps.stringProp = "should be reverted";
282
+ updatedElementProps.newProp = "should be reverted";
283
+ txn.updateElement(updatedElementProps);
284
+ // Then throw error
285
+ throw new Error("Intentional callback failure");
286
+ },
282
287
  },
283
- },
288
+ });
284
289
  });
285
290
  assert.fail("Should have thrown error");
286
291
  }
@@ -440,22 +445,23 @@ describe("Schema Import Callbacks", () => {
440
445
  stringProp: "test element",
441
446
  intProp: 100,
442
447
  };
443
- const elementId = imodel.elements.insertElement(elementProps);
444
- imodel.saveChanges("Create test element");
448
+ const elementId = withEditTxn(imodel, "Create test element", (txn) => txn.insertElement(elementProps));
445
449
  // Now REMOVE the shared channel permission
446
450
  imodel.channels.removeAllowedChannel("shared");
447
451
  // Try to import schema and modify element - should fail
448
452
  try {
449
- await imodel.importSchemaStrings([testSchemaV101()], {
450
- schemaImportCallbacks: {
451
- preSchemaImportCallback: async (context) => {
452
- // This should throw because shared channel is not allowed
453
- const updatedProps = context.iModel.elements.getElementProps(elementId);
454
- updatedProps.newProp = "This should fail";
455
- context.iModel.elements.updateElement(updatedProps); // Should throw here
456
- return { transformStrategy: DataTransformationStrategy.None };
457
- }
458
- },
453
+ await withEditTxn(imodel, "channel validation pre import", async (txn) => {
454
+ await imodel.importSchemaStrings([testSchemaV101()], {
455
+ schemaImportCallbacks: {
456
+ preSchemaImportCallback: async (context) => {
457
+ // This should throw because shared channel is not allowed
458
+ const updatedProps = context.iModel.elements.getElementProps(elementId);
459
+ updatedProps.newProp = "This should fail";
460
+ txn.updateElement(updatedProps); // Should throw here
461
+ return { transformStrategy: DataTransformationStrategy.None };
462
+ }
463
+ },
464
+ });
459
465
  });
460
466
  assert.fail("Should have thrown ChannelConstraintViolation");
461
467
  }
@@ -474,22 +480,23 @@ describe("Schema Import Callbacks", () => {
474
480
  stringProp: "test element",
475
481
  intProp: 100,
476
482
  };
477
- const elementId = imodel.elements.insertElement(elementProps);
478
- imodel.saveChanges("Create test element");
483
+ const elementId = withEditTxn(imodel, "Create test element", (txn) => txn.insertElement(elementProps));
479
484
  // Now REMOVE the shared channel permission
480
485
  imodel.channels.removeAllowedChannel("shared");
481
486
  // Try to import schema and modify element - should fail
482
487
  try {
483
- await imodel.importSchemaStrings([testSchemaV101()], {
484
- schemaImportCallbacks: {
485
- preSchemaImportCallback: async () => ({ transformStrategy: DataTransformationStrategy.None }),
486
- postSchemaImportCallback: async (context) => {
487
- // This should throw because shared channel is not allowed
488
- const updatedProps = context.iModel.elements.getElementProps(elementId);
489
- updatedProps.newProp = "This should fail";
490
- context.iModel.elements.updateElement(updatedProps); // Should throw here
488
+ await withEditTxn(imodel, "channel validation post import", async (txn) => {
489
+ await imodel.importSchemaStrings([testSchemaV101()], {
490
+ schemaImportCallbacks: {
491
+ preSchemaImportCallback: async () => ({ transformStrategy: DataTransformationStrategy.None }),
492
+ postSchemaImportCallback: async (context) => {
493
+ // This should throw because shared channel is not allowed
494
+ const updatedProps = context.iModel.elements.getElementProps(elementId);
495
+ updatedProps.newProp = "This should fail";
496
+ txn.updateElement(updatedProps); // Should throw here
497
+ },
491
498
  },
492
- },
499
+ });
493
500
  });
494
501
  assert.fail("Should have thrown ChannelConstraintViolation");
495
502
  }
@@ -514,24 +521,25 @@ describe("Schema Import Callbacks", () => {
514
521
  stringProp: "snapshot test",
515
522
  intProp: 123,
516
523
  };
517
- const elementId = imodel.elements.insertElement(elementProps);
518
- imodel.saveChanges("Create test element");
524
+ const elementId = withEditTxn(imodel, "Create test element", (txn) => txn.insertElement(elementProps));
519
525
  // Disable channel before schema import with snapshot
520
526
  imodel.channels.removeAllowedChannel("shared");
521
527
  try {
522
- await imodel.importSchemaStrings([testSchemaV101()], {
523
- schemaImportCallbacks: {
524
- preSchemaImportCallback: async () => ({ transformStrategy: DataTransformationStrategy.Snapshot }),
525
- postSchemaImportCallback: async (context) => {
526
- // Can read from snapshot (it's read-only, no channel check)
527
- const snapshotProps = context.resources.snapshot.elements.getElementProps(elementId);
528
- assert.equal(snapshotProps.stringProp, "snapshot test");
529
- // But can't modify in main iModel without channel permission
530
- const updatedProps = context.iModel.elements.getElementProps(elementId);
531
- updatedProps.newProp = "This should fail";
532
- context.iModel.elements.updateElement(updatedProps); // Should throw
528
+ await withEditTxn(imodel, "channel validation snapshot import", async (txn) => {
529
+ await imodel.importSchemaStrings([testSchemaV101()], {
530
+ schemaImportCallbacks: {
531
+ preSchemaImportCallback: async () => ({ transformStrategy: DataTransformationStrategy.Snapshot }),
532
+ postSchemaImportCallback: async (context) => {
533
+ // Can read from snapshot (it's read-only, no channel check)
534
+ const snapshotProps = context.resources.snapshot.elements.getElementProps(elementId);
535
+ assert.equal(snapshotProps.stringProp, "snapshot test");
536
+ // But can't modify in main iModel without channel permission
537
+ const updatedProps = context.iModel.elements.getElementProps(elementId);
538
+ updatedProps.newProp = "This should fail";
539
+ txn.updateElement(updatedProps); // Should throw
540
+ },
533
541
  },
534
- },
542
+ });
535
543
  });
536
544
  assert.fail("Should have thrown ChannelConstraintViolation");
537
545
  }
@@ -678,16 +686,17 @@ describe("Schema Import Callbacks", () => {
678
686
  return undefined;
679
687
  return aspects[0].asAny.version;
680
688
  }
681
- function setChannelVersion(iModel, version) {
689
+ function setChannelVersion(txn, version) {
690
+ const iModel = txn.iModel;
682
691
  const aspects = iModel.elements.getAspects(channelRootId, "BisCore:ChannelRootAspect");
683
692
  assert.equal(aspects.length, 1, "Should have exactly one ChannelRootAspect");
684
693
  const aspect = aspects[0];
685
694
  aspect.asAny.version = version;
686
- iModel.elements.updateAspect(aspect.toJSON());
695
+ txn.updateAspect(aspect.toJSON());
687
696
  }
688
697
  // Code that simulates a channel upgrade.
689
698
  // This simulates elements being moved to different models as per the new channel organization.
690
- const channelUpgradeCallback = async (context) => {
699
+ const channelUpgradeCallback = (txn) => async (context) => {
691
700
  context.data.elementIds.forEach((id) => {
692
701
  const elementProps = context.iModel.elements.getElementProps(id);
693
702
  if (elementProps.stringProp === "Material1") {
@@ -699,11 +708,10 @@ describe("Schema Import Callbacks", () => {
699
708
  else if (elementProps.stringProp === "Category1") {
700
709
  elementProps.modelName = "StyleModel";
701
710
  }
702
- context.iModel.elements.updateElement(elementProps);
711
+ txn.updateElement(elementProps);
703
712
  });
704
- setChannelVersion(context.iModel, "1.0.1");
713
+ setChannelVersion(txn, "1.0.1");
705
714
  assert.equal(getChannelVersion(context.iModel), "1.0.1");
706
- context.iModel.saveChanges();
707
715
  };
708
716
  it("need for channel reorganization before schema import", async () => {
709
717
  // Initial setup: Import v1.0.0 schema
@@ -712,13 +720,14 @@ describe("Schema Import Callbacks", () => {
712
720
  const channelKey = "TestChannel";
713
721
  imodel.channels.addAllowedChannel(channelKey);
714
722
  // Create a channel
715
- channelRootId = imodel.channels.insertChannelSubject({
723
+ channelRootId = withEditTxn(imodel, (txn) => imodel.channels.insertChannelSubject({
716
724
  subjectName: "Test Channel",
717
725
  channelKey,
718
- });
726
+ txn,
727
+ }));
719
728
  assert.isUndefined(getChannelVersion(imodel), "Version should be undefined initially");
720
729
  // Set version to 1.0.0
721
- setChannelVersion(imodel, "1.0.0");
730
+ withEditTxn(imodel, (txn) => setChannelVersion(txn, "1.0.0"));
722
731
  // Enable shared channel and create elements
723
732
  imodel.channels.addAllowedChannel("shared");
724
733
  const rootModel = imodel.models.getModel(IModel.dictionaryId);
@@ -734,40 +743,41 @@ describe("Schema Import Callbacks", () => {
734
743
  intProp: 100 + index * 100,
735
744
  modelName: "DefinitionModel"
736
745
  };
737
- elementIds.push(imodel.elements.insertElement(elementProps));
746
+ elementIds.push(withEditTxn(imodel, (txn) => txn.insertElement(elementProps)));
738
747
  }
739
- imodel.saveChanges("Create elements in a single model under the root channel structure");
740
748
  // Scenario: Let's assume schema has evolved and v1.0.1 expects elements to be in their dedicated models (i.e. it relies on channel v1.0.1)
741
749
  // The post schema upgrade code will look for elements in their own models.
742
750
  // If the channel is still in version 1.0.0, the callback will obviously fail.
743
- await imodel.importSchemaStrings([testSchemaV101()], {
744
- data: { elementIds },
745
- channelUpgrade: {
746
- channelKey,
747
- fromVersion: "1.0.0",
748
- toVersion: "1.0.1",
749
- callback: channelUpgradeCallback,
750
- },
751
- schemaImportCallbacks: {
752
- preSchemaImportCallback: async () => {
753
- return {
754
- transformStrategy: DataTransformationStrategy.InMemory,
755
- cachedData: {
756
- elementIds,
757
- },
758
- };
751
+ await withEditTxn(imodel, "channel reorganization callback writes", async (txn) => {
752
+ await imodel.importSchemaStrings([testSchemaV101()], {
753
+ data: { elementIds },
754
+ channelUpgrade: {
755
+ channelKey,
756
+ fromVersion: "1.0.0",
757
+ toVersion: "1.0.1",
758
+ callback: channelUpgradeCallback(txn),
759
759
  },
760
- postSchemaImportCallback: async (context) => {
761
- // Now schema v1.0.1 expects elements to be in their dedicated models.
762
- const elementIdList = context.resources.cachedData.elementIds;
763
- assert.equal(imodel.getSchemaProps("TestSchema").version, "01.00.01");
764
- assert.equal(getChannelVersion(context.iModel), "1.0.1");
765
- elementIdList.forEach((elementId) => {
766
- const elementProps = context.iModel.elements.getElementProps(elementId);
767
- assert.notEqual(elementProps.modelName, "DefinitionModel", "Element should have been moved to new model as part of the channel upgrade");
768
- });
760
+ schemaImportCallbacks: {
761
+ preSchemaImportCallback: async () => {
762
+ return {
763
+ transformStrategy: DataTransformationStrategy.InMemory,
764
+ cachedData: {
765
+ elementIds,
766
+ },
767
+ };
768
+ },
769
+ postSchemaImportCallback: async (context) => {
770
+ // Now schema v1.0.1 expects elements to be in their dedicated models.
771
+ const elementIdList = context.resources.cachedData.elementIds;
772
+ assert.equal(imodel.getSchemaProps("TestSchema").version, "01.00.01");
773
+ assert.equal(getChannelVersion(context.iModel), "1.0.1");
774
+ elementIdList.forEach((elementId) => {
775
+ const elementProps = context.iModel.elements.getElementProps(elementId);
776
+ assert.notEqual(elementProps.modelName, "DefinitionModel", "Element should have been moved to new model as part of the channel upgrade");
777
+ });
778
+ },
769
779
  },
770
- },
780
+ });
771
781
  });
772
782
  });
773
783
  });
@@ -787,10 +797,11 @@ describe("Schema Import Callbacks", () => {
787
797
  await briefcaseDb.importSchemaStrings([testSchemaV100()]);
788
798
  briefcaseDb.channels.addAllowedChannel(channelKey);
789
799
  if (briefcaseDb.channels.queryChannelRoot(channelKey) === undefined) {
790
- briefcaseDb.channels.insertChannelSubject({
800
+ withEditTxn(briefcaseDb, (txn) => briefcaseDb.channels.insertChannelSubject({
791
801
  subjectName: "Test Channel",
792
802
  channelKey,
793
- });
803
+ txn,
804
+ }));
794
805
  }
795
806
  const model = briefcaseDb.models.getModel(IModel.dictionaryId);
796
807
  const elementProps = {
@@ -800,8 +811,7 @@ describe("Schema Import Callbacks", () => {
800
811
  stringProp: "test",
801
812
  intProp: 100,
802
813
  };
803
- const elementId = briefcaseDb.elements.insertElement(elementProps);
804
- briefcaseDb.saveChanges("Create test element");
814
+ const elementId = withEditTxn(briefcaseDb, "Create test element", (txn) => txn.insertElement(elementProps));
805
815
  await briefcaseDb.pushChanges({ description: "Create test element" });
806
816
  return [briefcaseDb, elementId];
807
817
  }
@@ -809,41 +819,42 @@ describe("Schema Import Callbacks", () => {
809
819
  const [briefcaseDb, elementId] = await setupBriefcase();
810
820
  // Try to modify without acquiring locks in the callback
811
821
  try {
812
- await briefcaseDb.importSchemaStrings([testSchemaV101()], {
813
- channelUpgrade: {
814
- channelKey,
815
- fromVersion: "1.0.0",
816
- toVersion: "1.0.1",
817
- callback: async (context) => {
818
- // Intentionally NOT acquiring locks
819
- const props = context.iModel.elements.getElementProps(elementId);
820
- props.stringProp = "should fail";
821
- context.iModel.elements.updateElement(props);
822
- context.iModel.saveChanges("Should fail");
822
+ await withEditTxn(briefcaseDb, "channel upgrade without locks", async (txn) => {
823
+ await briefcaseDb.importSchemaStrings([testSchemaV101()], {
824
+ channelUpgrade: {
825
+ channelKey,
826
+ fromVersion: "1.0.0",
827
+ toVersion: "1.0.1",
828
+ callback: async (context) => {
829
+ // Intentionally NOT acquiring locks
830
+ const props = context.iModel.elements.getElementProps(elementId);
831
+ props.stringProp = "should fail";
832
+ txn.updateElement(props);
833
+ },
823
834
  },
824
- },
835
+ });
825
836
  });
826
837
  assert.fail("Should have thrown error about missing locks");
827
838
  }
828
839
  catch (err) {
829
840
  assert.equal(err.iTwinErrorId.key.name, "Lock Not Held");
830
- briefcaseDb.abandonChanges();
831
841
  }
832
842
  // Try again with locks
833
843
  try {
834
- await briefcaseDb.importSchemaStrings([testSchemaV101()], {
835
- channelUpgrade: {
836
- channelKey,
837
- fromVersion: "1.0.0",
838
- toVersion: "1.0.1",
839
- callback: async (context) => {
840
- await context.iModel.locks.acquireLocks({ exclusive: elementId });
841
- const props = context.iModel.elements.getElementProps(elementId);
842
- props.stringProp = "updated with locks";
843
- context.iModel.elements.updateElement(props);
844
- context.iModel.saveChanges("Updated with locks");
844
+ await withEditTxn(briefcaseDb, "channel upgrade with locks", async (txn) => {
845
+ await briefcaseDb.importSchemaStrings([testSchemaV101()], {
846
+ channelUpgrade: {
847
+ channelKey,
848
+ fromVersion: "1.0.0",
849
+ toVersion: "1.0.1",
850
+ callback: async (context) => {
851
+ await context.iModel.locks.acquireLocks({ exclusive: elementId });
852
+ const props = context.iModel.elements.getElementProps(elementId);
853
+ props.stringProp = "updated with locks";
854
+ txn.updateElement(props);
855
+ },
845
856
  },
846
- },
857
+ });
847
858
  });
848
859
  }
849
860
  catch (err) {
@@ -855,36 +866,38 @@ describe("Schema Import Callbacks", () => {
855
866
  const [briefcaseDb, elementId] = await setupBriefcase();
856
867
  // Try to modify without acquiring locks in the callback
857
868
  try {
858
- await briefcaseDb.importSchemaStrings([testSchemaV101()], {
859
- schemaImportCallbacks: {
860
- preSchemaImportCallback: async (context) => {
861
- // Intentionally NOT acquiring locks
862
- const props = context.iModel.elements.getElementProps(elementId);
863
- props.stringProp = "should fail";
864
- context.iModel.elements.updateElement(props);
865
- return { transformStrategy: DataTransformationStrategy.None };
869
+ await withEditTxn(briefcaseDb, "pre import without locks", async (txn) => {
870
+ await briefcaseDb.importSchemaStrings([testSchemaV101()], {
871
+ schemaImportCallbacks: {
872
+ preSchemaImportCallback: async (context) => {
873
+ // Intentionally NOT acquiring locks
874
+ const props = context.iModel.elements.getElementProps(elementId);
875
+ props.stringProp = "should fail";
876
+ txn.updateElement(props);
877
+ return { transformStrategy: DataTransformationStrategy.None };
878
+ },
866
879
  },
867
- },
880
+ });
868
881
  });
869
882
  assert.fail("Should have thrown error about missing locks");
870
883
  }
871
884
  catch (err) {
872
885
  assert.equal(err.name, "Lock Not Held");
873
- briefcaseDb.abandonChanges();
874
886
  }
875
887
  // Try again with locks
876
888
  try {
877
- await briefcaseDb.importSchemaStrings([testSchemaV101()], {
878
- schemaImportCallbacks: {
879
- preSchemaImportCallback: async (context) => {
880
- await context.iModel.locks.acquireLocks({ exclusive: elementId });
881
- const props = context.iModel.elements.getElementProps(elementId);
882
- props.stringProp = "should fail";
883
- context.iModel.elements.updateElement(props);
884
- context.iModel.saveChanges("Should fail");
885
- return { transformStrategy: DataTransformationStrategy.None };
889
+ await withEditTxn(briefcaseDb, "pre import with locks", async (txn) => {
890
+ await briefcaseDb.importSchemaStrings([testSchemaV101()], {
891
+ schemaImportCallbacks: {
892
+ preSchemaImportCallback: async (context) => {
893
+ await context.iModel.locks.acquireLocks({ exclusive: elementId });
894
+ const props = context.iModel.elements.getElementProps(elementId);
895
+ props.stringProp = "should fail";
896
+ txn.updateElement(props);
897
+ return { transformStrategy: DataTransformationStrategy.None };
898
+ },
886
899
  },
887
- },
900
+ });
888
901
  });
889
902
  }
890
903
  catch (err) {
@@ -895,16 +908,18 @@ describe("Schema Import Callbacks", () => {
895
908
  it("lock acquisition is not required during postSchemaImportCallback", async () => {
896
909
  const [briefcaseDb, elementId] = await setupBriefcase();
897
910
  let postImportCalled = false;
898
- await briefcaseDb.importSchemaStrings([testSchemaV101()], {
899
- schemaImportCallbacks: {
900
- postSchemaImportCallback: async (context) => {
901
- postImportCalled = true;
902
- // Schema lock is already held at this point
903
- const props = context.iModel.elements.getElementProps(elementId);
904
- props.newProp = "added in postImport with schema lock held";
905
- context.iModel.elements.updateElement(props);
911
+ await withEditTxn(briefcaseDb, "post import with schema lock", async (txn) => {
912
+ await briefcaseDb.importSchemaStrings([testSchemaV101()], {
913
+ schemaImportCallbacks: {
914
+ postSchemaImportCallback: async (context) => {
915
+ postImportCalled = true;
916
+ // Schema lock is already held at this point
917
+ const props = context.iModel.elements.getElementProps(elementId);
918
+ props.newProp = "added in postImport with schema lock held";
919
+ txn.updateElement(props);
920
+ },
906
921
  },
907
- },
922
+ });
908
923
  });
909
924
  assert.isTrue(postImportCalled, "Post-import callback should have been called");
910
925
  const finalProps = briefcaseDb.elements.getElementProps(elementId);