@itwin/core-backend 5.9.0-dev.1 → 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 (551) hide show
  1. package/CHANGELOG.md +30 -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/BriefcaseManager.js +3 -3
  6. package/lib/cjs/BriefcaseManager.js.map +1 -1
  7. package/lib/cjs/Category.d.ts +37 -7
  8. package/lib/cjs/Category.d.ts.map +1 -1
  9. package/lib/cjs/Category.js +33 -42
  10. package/lib/cjs/Category.js.map +1 -1
  11. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  12. package/lib/cjs/ChangesetECAdaptor.js +5 -2
  13. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  14. package/lib/cjs/ChannelControl.d.ts +29 -0
  15. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  16. package/lib/cjs/ChannelControl.js.map +1 -1
  17. package/lib/cjs/CheckpointManager.js +1 -1
  18. package/lib/cjs/CheckpointManager.js.map +1 -1
  19. package/lib/cjs/CloudSqlite.d.ts +1 -1
  20. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  21. package/lib/cjs/CloudSqlite.js +68 -13
  22. package/lib/cjs/CloudSqlite.js.map +1 -1
  23. package/lib/cjs/CodeSpecs.d.ts +32 -3
  24. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  25. package/lib/cjs/CodeSpecs.js +48 -20
  26. package/lib/cjs/CodeSpecs.js.map +1 -1
  27. package/lib/cjs/DisplayStyle.d.ts +18 -3
  28. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  29. package/lib/cjs/DisplayStyle.js +10 -21
  30. package/lib/cjs/DisplayStyle.js.map +1 -1
  31. package/lib/cjs/EditTxn.d.ts +262 -0
  32. package/lib/cjs/EditTxn.d.ts.map +1 -0
  33. package/lib/cjs/EditTxn.js +548 -0
  34. package/lib/cjs/EditTxn.js.map +1 -0
  35. package/lib/cjs/Element.d.ts +74 -5
  36. package/lib/cjs/Element.d.ts.map +1 -1
  37. package/lib/cjs/Element.js +63 -75
  38. package/lib/cjs/Element.js.map +1 -1
  39. package/lib/cjs/ElementAspect.d.ts +10 -0
  40. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  41. package/lib/cjs/ElementAspect.js +21 -12
  42. package/lib/cjs/ElementAspect.js.map +1 -1
  43. package/lib/cjs/ElementTreeWalker.d.ts +56 -3
  44. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  45. package/lib/cjs/ElementTreeWalker.js +53 -40
  46. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  47. package/lib/cjs/ExternalSource.d.ts +11 -2
  48. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  49. package/lib/cjs/ExternalSource.js +10 -8
  50. package/lib/cjs/ExternalSource.js.map +1 -1
  51. package/lib/cjs/IModelDb.d.ts +66 -22
  52. package/lib/cjs/IModelDb.d.ts.map +1 -1
  53. package/lib/cjs/IModelDb.js +175 -289
  54. package/lib/cjs/IModelDb.js.map +1 -1
  55. package/lib/cjs/IModelHost.d.ts +58 -1
  56. package/lib/cjs/IModelHost.d.ts.map +1 -1
  57. package/lib/cjs/IModelHost.js +89 -0
  58. package/lib/cjs/IModelHost.js.map +1 -1
  59. package/lib/cjs/IpcHost.d.ts.map +1 -1
  60. package/lib/cjs/IpcHost.js +35 -15
  61. package/lib/cjs/IpcHost.js.map +1 -1
  62. package/lib/cjs/LineStyle.d.ts +47 -7
  63. package/lib/cjs/LineStyle.d.ts.map +1 -1
  64. package/lib/cjs/LineStyle.js +38 -33
  65. package/lib/cjs/LineStyle.js.map +1 -1
  66. package/lib/cjs/LockControl.d.ts +85 -1
  67. package/lib/cjs/LockControl.d.ts.map +1 -1
  68. package/lib/cjs/LockControl.js.map +1 -1
  69. package/lib/cjs/Material.d.ts +8 -1
  70. package/lib/cjs/Material.d.ts.map +1 -1
  71. package/lib/cjs/Material.js +6 -12
  72. package/lib/cjs/Material.js.map +1 -1
  73. package/lib/cjs/Model.d.ts +59 -20
  74. package/lib/cjs/Model.d.ts.map +1 -1
  75. package/lib/cjs/Model.js +38 -80
  76. package/lib/cjs/Model.js.map +1 -1
  77. package/lib/cjs/Relationship.d.ts +72 -7
  78. package/lib/cjs/Relationship.d.ts.map +1 -1
  79. package/lib/cjs/Relationship.js +39 -21
  80. package/lib/cjs/Relationship.js.map +1 -1
  81. package/lib/cjs/SchemaSync.js +4 -4
  82. package/lib/cjs/SchemaSync.js.map +1 -1
  83. package/lib/cjs/SheetIndex.d.ts +9 -0
  84. package/lib/cjs/SheetIndex.d.ts.map +1 -1
  85. package/lib/cjs/SheetIndex.js +38 -35
  86. package/lib/cjs/SheetIndex.js.map +1 -1
  87. package/lib/cjs/StashManager.js +1 -1
  88. package/lib/cjs/StashManager.js.map +1 -1
  89. package/lib/cjs/Texture.d.ts +6 -0
  90. package/lib/cjs/Texture.d.ts.map +1 -1
  91. package/lib/cjs/Texture.js +6 -14
  92. package/lib/cjs/Texture.js.map +1 -1
  93. package/lib/cjs/TxnManager.d.ts +105 -9
  94. package/lib/cjs/TxnManager.d.ts.map +1 -1
  95. package/lib/cjs/TxnManager.js +194 -15
  96. package/lib/cjs/TxnManager.js.map +1 -1
  97. package/lib/cjs/ViewDefinition.d.ts +21 -1
  98. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  99. package/lib/cjs/ViewDefinition.js +27 -66
  100. package/lib/cjs/ViewDefinition.js.map +1 -1
  101. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  102. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  103. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
  104. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  105. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  106. package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
  107. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  108. package/lib/cjs/core-backend.d.ts +1 -0
  109. package/lib/cjs/core-backend.d.ts.map +1 -1
  110. package/lib/cjs/core-backend.js +1 -0
  111. package/lib/cjs/core-backend.js.map +1 -1
  112. package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
  113. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  114. package/lib/cjs/domains/FunctionalElements.js +8 -13
  115. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  116. package/lib/cjs/domains/GenericElements.d.ts +11 -4
  117. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  118. package/lib/cjs/domains/GenericElements.js +13 -24
  119. package/lib/cjs/domains/GenericElements.js.map +1 -1
  120. package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
  121. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  122. package/lib/cjs/internal/ChannelAdmin.js +5 -3
  123. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  124. package/lib/cjs/internal/HubMock.d.ts +2 -0
  125. package/lib/cjs/internal/HubMock.d.ts.map +1 -1
  126. package/lib/cjs/internal/HubMock.js +7 -0
  127. package/lib/cjs/internal/HubMock.js.map +1 -1
  128. package/lib/cjs/internal/NoLocks.d.ts.map +1 -1
  129. package/lib/cjs/internal/NoLocks.js +6 -0
  130. package/lib/cjs/internal/NoLocks.js.map +1 -1
  131. package/lib/cjs/internal/ServerBasedLocks.d.ts +12 -0
  132. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
  133. package/lib/cjs/internal/ServerBasedLocks.js +285 -4
  134. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  135. package/lib/cjs/internal/Symbols.d.ts +4 -0
  136. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  137. package/lib/cjs/internal/Symbols.js +5 -1
  138. package/lib/cjs/internal/Symbols.js.map +1 -1
  139. package/lib/cjs/internal/annotations/fields.d.ts +3 -2
  140. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  141. package/lib/cjs/internal/annotations/fields.js +7 -6
  142. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  143. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts +18 -3
  144. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
  145. package/lib/cjs/internal/workspace/SettingsEditorImpl.js +49 -242
  146. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  147. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -1
  148. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  149. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +0 -1
  150. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  151. package/lib/cjs/internal/workspace/WorkspaceImpl.js +70 -41
  152. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  153. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  154. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  155. package/lib/cjs/workspace/Settings.d.ts +11 -5
  156. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  157. package/lib/cjs/workspace/Settings.js.map +1 -1
  158. package/lib/cjs/workspace/SettingsDb.d.ts +20 -99
  159. package/lib/cjs/workspace/SettingsDb.d.ts.map +1 -1
  160. package/lib/cjs/workspace/SettingsDb.js +23 -7
  161. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  162. package/lib/cjs/workspace/SettingsEditor.d.ts +40 -226
  163. package/lib/cjs/workspace/SettingsEditor.d.ts.map +1 -1
  164. package/lib/cjs/workspace/SettingsEditor.js +86 -25
  165. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  166. package/lib/cjs/workspace/Workspace.d.ts +7 -11
  167. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  168. package/lib/cjs/workspace/Workspace.js.map +1 -1
  169. package/lib/cjs/workspace/WorkspaceEditor.d.ts +14 -0
  170. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  171. package/lib/cjs/workspace/WorkspaceEditor.js +1 -1
  172. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  173. package/lib/esm/BackendHubAccess.d.ts +38 -0
  174. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  175. package/lib/esm/BackendHubAccess.js.map +1 -1
  176. package/lib/esm/BriefcaseManager.js +3 -3
  177. package/lib/esm/BriefcaseManager.js.map +1 -1
  178. package/lib/esm/Category.d.ts +37 -7
  179. package/lib/esm/Category.d.ts.map +1 -1
  180. package/lib/esm/Category.js +33 -42
  181. package/lib/esm/Category.js.map +1 -1
  182. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  183. package/lib/esm/ChangesetECAdaptor.js +5 -2
  184. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  185. package/lib/esm/ChannelControl.d.ts +29 -0
  186. package/lib/esm/ChannelControl.d.ts.map +1 -1
  187. package/lib/esm/ChannelControl.js.map +1 -1
  188. package/lib/esm/CheckpointManager.js +1 -1
  189. package/lib/esm/CheckpointManager.js.map +1 -1
  190. package/lib/esm/CloudSqlite.d.ts +1 -1
  191. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  192. package/lib/esm/CloudSqlite.js +69 -14
  193. package/lib/esm/CloudSqlite.js.map +1 -1
  194. package/lib/esm/CodeSpecs.d.ts +32 -3
  195. package/lib/esm/CodeSpecs.d.ts.map +1 -1
  196. package/lib/esm/CodeSpecs.js +49 -21
  197. package/lib/esm/CodeSpecs.js.map +1 -1
  198. package/lib/esm/DisplayStyle.d.ts +18 -3
  199. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  200. package/lib/esm/DisplayStyle.js +10 -21
  201. package/lib/esm/DisplayStyle.js.map +1 -1
  202. package/lib/esm/EditTxn.d.ts +262 -0
  203. package/lib/esm/EditTxn.d.ts.map +1 -0
  204. package/lib/esm/EditTxn.js +543 -0
  205. package/lib/esm/EditTxn.js.map +1 -0
  206. package/lib/esm/Element.d.ts +74 -5
  207. package/lib/esm/Element.d.ts.map +1 -1
  208. package/lib/esm/Element.js +64 -76
  209. package/lib/esm/Element.js.map +1 -1
  210. package/lib/esm/ElementAspect.d.ts +10 -0
  211. package/lib/esm/ElementAspect.d.ts.map +1 -1
  212. package/lib/esm/ElementAspect.js +22 -13
  213. package/lib/esm/ElementAspect.js.map +1 -1
  214. package/lib/esm/ElementTreeWalker.d.ts +56 -3
  215. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  216. package/lib/esm/ElementTreeWalker.js +53 -40
  217. package/lib/esm/ElementTreeWalker.js.map +1 -1
  218. package/lib/esm/ExternalSource.d.ts +11 -2
  219. package/lib/esm/ExternalSource.d.ts.map +1 -1
  220. package/lib/esm/ExternalSource.js +10 -8
  221. package/lib/esm/ExternalSource.js.map +1 -1
  222. package/lib/esm/IModelDb.d.ts +66 -22
  223. package/lib/esm/IModelDb.d.ts.map +1 -1
  224. package/lib/esm/IModelDb.js +177 -291
  225. package/lib/esm/IModelDb.js.map +1 -1
  226. package/lib/esm/IModelHost.d.ts +58 -1
  227. package/lib/esm/IModelHost.d.ts.map +1 -1
  228. package/lib/esm/IModelHost.js +91 -2
  229. package/lib/esm/IModelHost.js.map +1 -1
  230. package/lib/esm/IpcHost.d.ts.map +1 -1
  231. package/lib/esm/IpcHost.js +36 -16
  232. package/lib/esm/IpcHost.js.map +1 -1
  233. package/lib/esm/LineStyle.d.ts +47 -7
  234. package/lib/esm/LineStyle.d.ts.map +1 -1
  235. package/lib/esm/LineStyle.js +38 -33
  236. package/lib/esm/LineStyle.js.map +1 -1
  237. package/lib/esm/LockControl.d.ts +85 -1
  238. package/lib/esm/LockControl.d.ts.map +1 -1
  239. package/lib/esm/LockControl.js.map +1 -1
  240. package/lib/esm/Material.d.ts +8 -1
  241. package/lib/esm/Material.d.ts.map +1 -1
  242. package/lib/esm/Material.js +6 -12
  243. package/lib/esm/Material.js.map +1 -1
  244. package/lib/esm/Model.d.ts +59 -20
  245. package/lib/esm/Model.d.ts.map +1 -1
  246. package/lib/esm/Model.js +39 -81
  247. package/lib/esm/Model.js.map +1 -1
  248. package/lib/esm/Relationship.d.ts +72 -7
  249. package/lib/esm/Relationship.d.ts.map +1 -1
  250. package/lib/esm/Relationship.js +40 -22
  251. package/lib/esm/Relationship.js.map +1 -1
  252. package/lib/esm/SchemaSync.js +5 -5
  253. package/lib/esm/SchemaSync.js.map +1 -1
  254. package/lib/esm/SheetIndex.d.ts +9 -0
  255. package/lib/esm/SheetIndex.d.ts.map +1 -1
  256. package/lib/esm/SheetIndex.js +38 -35
  257. package/lib/esm/SheetIndex.js.map +1 -1
  258. package/lib/esm/StashManager.js +1 -1
  259. package/lib/esm/StashManager.js.map +1 -1
  260. package/lib/esm/Texture.d.ts +6 -0
  261. package/lib/esm/Texture.d.ts.map +1 -1
  262. package/lib/esm/Texture.js +6 -14
  263. package/lib/esm/Texture.js.map +1 -1
  264. package/lib/esm/TxnManager.d.ts +105 -9
  265. package/lib/esm/TxnManager.d.ts.map +1 -1
  266. package/lib/esm/TxnManager.js +194 -15
  267. package/lib/esm/TxnManager.js.map +1 -1
  268. package/lib/esm/ViewDefinition.d.ts +21 -1
  269. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  270. package/lib/esm/ViewDefinition.js +27 -66
  271. package/lib/esm/ViewDefinition.js.map +1 -1
  272. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  273. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  274. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
  275. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  276. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  277. package/lib/esm/annotations/TextAnnotationElement.js +6 -5
  278. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  279. package/lib/esm/core-backend.d.ts +1 -0
  280. package/lib/esm/core-backend.d.ts.map +1 -1
  281. package/lib/esm/core-backend.js +1 -0
  282. package/lib/esm/core-backend.js.map +1 -1
  283. package/lib/esm/domains/FunctionalElements.d.ts +6 -2
  284. package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
  285. package/lib/esm/domains/FunctionalElements.js +8 -13
  286. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  287. package/lib/esm/domains/GenericElements.d.ts +11 -4
  288. package/lib/esm/domains/GenericElements.d.ts.map +1 -1
  289. package/lib/esm/domains/GenericElements.js +13 -24
  290. package/lib/esm/domains/GenericElements.js.map +1 -1
  291. package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
  292. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  293. package/lib/esm/internal/ChannelAdmin.js +6 -4
  294. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  295. package/lib/esm/internal/HubMock.d.ts +2 -0
  296. package/lib/esm/internal/HubMock.d.ts.map +1 -1
  297. package/lib/esm/internal/HubMock.js +7 -0
  298. package/lib/esm/internal/HubMock.js.map +1 -1
  299. package/lib/esm/internal/NoLocks.d.ts.map +1 -1
  300. package/lib/esm/internal/NoLocks.js +6 -0
  301. package/lib/esm/internal/NoLocks.js.map +1 -1
  302. package/lib/esm/internal/ServerBasedLocks.d.ts +12 -0
  303. package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
  304. package/lib/esm/internal/ServerBasedLocks.js +286 -5
  305. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  306. package/lib/esm/internal/Symbols.d.ts +4 -0
  307. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  308. package/lib/esm/internal/Symbols.js +4 -0
  309. package/lib/esm/internal/Symbols.js.map +1 -1
  310. package/lib/esm/internal/annotations/fields.d.ts +3 -2
  311. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  312. package/lib/esm/internal/annotations/fields.js +7 -6
  313. package/lib/esm/internal/annotations/fields.js.map +1 -1
  314. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts +18 -3
  315. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
  316. package/lib/esm/internal/workspace/SettingsEditorImpl.js +52 -246
  317. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  318. package/lib/esm/internal/workspace/SettingsImpl.d.ts.map +1 -1
  319. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  320. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +0 -1
  321. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  322. package/lib/esm/internal/workspace/WorkspaceImpl.js +71 -41
  323. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  324. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  325. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  326. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  327. package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
  328. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
  329. package/lib/esm/test/ElementDrivesElement.test.js +111 -96
  330. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  331. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  332. package/lib/esm/test/IModelHost.test.js +56 -2
  333. package/lib/esm/test/IModelHost.test.js.map +1 -1
  334. package/lib/esm/test/IModelTestUtils.d.ts +23 -23
  335. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  336. package/lib/esm/test/IModelTestUtils.js +466 -449
  337. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  338. package/lib/esm/test/IpcHost.test.js +112 -0
  339. package/lib/esm/test/IpcHost.test.js.map +1 -1
  340. package/lib/esm/test/PropertyDb.test.js +2 -2
  341. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  342. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +27 -18
  343. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  344. package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
  345. package/lib/esm/test/TestChangeSetUtility.js +11 -7
  346. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  347. package/lib/esm/test/TestEditTxn.d.ts +8 -0
  348. package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
  349. package/lib/esm/test/TestEditTxn.js +34 -0
  350. package/lib/esm/test/TestEditTxn.js.map +1 -0
  351. package/lib/esm/test/TestUtils.d.ts +1 -0
  352. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  353. package/lib/esm/test/TestUtils.js +8 -1
  354. package/lib/esm/test/TestUtils.js.map +1 -1
  355. package/lib/esm/test/annotations/Fields.test.js +82 -90
  356. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  357. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  358. package/lib/esm/test/annotations/TextAnnotation.test.js +156 -99
  359. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  360. package/lib/esm/test/annotations/TextBlock.test.js +5 -3
  361. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  362. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  363. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  364. package/lib/esm/test/categories/Category.test.js +63 -3
  365. package/lib/esm/test/categories/Category.test.js.map +1 -1
  366. package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
  367. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  368. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  369. package/lib/esm/test/ecdb/ECSqlAst.test.js +3 -2
  370. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  371. package/lib/esm/test/ecdb/ECSqlQuery.test.js +2 -2
  372. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  373. package/lib/esm/test/ecdb/ECSqlStatement.test.js +0 -1
  374. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  375. package/lib/esm/test/ecdb/QueryReaders.test.js +17 -14
  376. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  377. package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
  378. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  379. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
  380. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
  381. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  382. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  383. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  384. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  385. package/lib/esm/test/element/DeleteDefinitionElements.test.js +159 -143
  386. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  387. package/lib/esm/test/element/ElementAspect.test.js +68 -60
  388. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  389. package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
  390. package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
  391. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  392. package/lib/esm/test/element/ElementRoundTrip.test.js +37 -38
  393. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  394. package/lib/esm/test/element/ExcludedElements.test.js +2 -2
  395. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  396. package/lib/esm/test/element/ExternalSource.test.js +40 -38
  397. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  398. package/lib/esm/test/element/NullStructArray.test.js +10 -9
  399. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  400. package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
  401. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  402. package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
  403. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  404. package/lib/esm/test/element/UrlLink.test.js +2 -2
  405. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  406. package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
  407. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  408. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +164 -125
  409. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  410. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
  411. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  412. package/lib/esm/test/hubaccess/Rebase.test.js +313 -247
  413. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  414. package/lib/esm/test/hubaccess/SemanticRebase.test.js +322 -247
  415. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  416. package/lib/esm/test/imodel/Code.test.js +31 -31
  417. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  418. package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
  419. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  420. package/lib/esm/test/imodel/IModel.test.js +419 -344
  421. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  422. package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
  423. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  424. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  425. package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
  426. package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
  427. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  428. package/lib/esm/test/index.d.ts +1 -0
  429. package/lib/esm/test/index.d.ts.map +1 -1
  430. package/lib/esm/test/index.js +1 -0
  431. package/lib/esm/test/index.js.map +1 -1
  432. package/lib/esm/test/schema/ClassRegistry.test.js +23 -22
  433. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  434. package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
  435. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  436. package/lib/esm/test/schema/GenericDomain.test.js +114 -94
  437. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  438. package/lib/esm/test/schema/IModelSchemaContext.test.js +2 -1
  439. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  440. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +207 -192
  441. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  442. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
  443. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
  444. package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
  445. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  446. package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
  447. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  448. package/lib/esm/test/standalone/ChangesetReader.test.js +114 -85
  449. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  450. package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
  451. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  452. package/lib/esm/test/standalone/Drawing.test.js +4 -3
  453. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  454. package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
  455. package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
  456. package/lib/esm/test/standalone/EditTxn.test.js +219 -0
  457. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
  458. package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
  459. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  460. package/lib/esm/test/standalone/ExportGraphics.test.js +26 -20
  461. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  462. package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
  463. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  464. package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
  465. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  466. package/lib/esm/test/standalone/HubMock.test.js +31 -25
  467. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  468. package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
  469. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  470. package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
  471. package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
  472. package/lib/esm/test/standalone/IModelWrite.test.js +184 -142
  473. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  474. package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts +2 -0
  475. package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts.map +1 -0
  476. package/lib/esm/test/standalone/ITwinWorkspace.test.js +236 -0
  477. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -0
  478. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
  479. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  480. package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
  481. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  482. package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
  483. package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
  484. package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
  485. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  486. package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
  487. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  488. package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
  489. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  490. package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
  491. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  492. package/lib/esm/test/standalone/ServerBasedLocks.test.js +928 -22
  493. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  494. package/lib/esm/test/standalone/Settings.test.js +26 -4
  495. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  496. package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
  497. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  498. package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
  499. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  500. package/lib/esm/test/standalone/StandaloneDb.test.js +7 -6
  501. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  502. package/lib/esm/test/standalone/Texture.test.js +5 -4
  503. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  504. package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
  505. package/lib/esm/test/standalone/TileCache.test.js +5 -3
  506. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  507. package/lib/esm/test/standalone/TileTree.test.js +35 -31
  508. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  509. package/lib/esm/test/standalone/TxnManager.test.js +700 -653
  510. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  511. package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
  512. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  513. package/lib/esm/test/standalone/Workspace.test.js +72 -22
  514. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  515. package/lib/esm/test/workspace/SettingsDb.test.js +28 -456
  516. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  517. package/lib/esm/workspace/Settings.d.ts +11 -5
  518. package/lib/esm/workspace/Settings.d.ts.map +1 -1
  519. package/lib/esm/workspace/Settings.js.map +1 -1
  520. package/lib/esm/workspace/SettingsDb.d.ts +20 -99
  521. package/lib/esm/workspace/SettingsDb.d.ts.map +1 -1
  522. package/lib/esm/workspace/SettingsDb.js +20 -6
  523. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  524. package/lib/esm/workspace/SettingsEditor.d.ts +40 -226
  525. package/lib/esm/workspace/SettingsEditor.d.ts.map +1 -1
  526. package/lib/esm/workspace/SettingsEditor.js +85 -24
  527. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  528. package/lib/esm/workspace/Workspace.d.ts +7 -11
  529. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  530. package/lib/esm/workspace/Workspace.js.map +1 -1
  531. package/lib/esm/workspace/WorkspaceEditor.d.ts +14 -0
  532. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  533. package/lib/esm/workspace/WorkspaceEditor.js +1 -1
  534. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  535. package/package.json +14 -14
  536. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts +0 -38
  537. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
  538. package/lib/cjs/internal/workspace/SettingsDbImpl.js +0 -108
  539. package/lib/cjs/internal/workspace/SettingsDbImpl.js.map +0 -1
  540. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts +0 -14
  541. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
  542. package/lib/cjs/internal/workspace/SettingsSqliteDb.js +0 -40
  543. package/lib/cjs/internal/workspace/SettingsSqliteDb.js.map +0 -1
  544. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts +0 -38
  545. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
  546. package/lib/esm/internal/workspace/SettingsDbImpl.js +0 -104
  547. package/lib/esm/internal/workspace/SettingsDbImpl.js.map +0 -1
  548. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts +0 -14
  549. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
  550. package/lib/esm/internal/workspace/SettingsSqliteDb.js +0 -36
  551. package/lib/esm/internal/workspace/SettingsSqliteDb.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SheetIndex.test.js","sourceRoot":"","sources":["../../../../src/test/sheetindex/SheetIndex.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\nimport { BisCodeSpec, CodeScopeSpec, CodeSpec, GeometricModel2dProps, RelatedElement, SheetProps } from \"@itwin/core-common\";\n\nimport { IModelDb, SnapshotDb } from \"../../IModelDb\";\nimport { ExtensiveTestScenario, IModelTestUtils } from \"../IModelTestUtils\";\nimport { DocumentPartition, Sheet } from \"../../Element\";\nimport { expect } from \"chai\";\nimport { DocumentListModel, SheetIndexModel, SheetModel } from \"../../Model\";\nimport { ElementOwnsChildElements, SheetIndexFolderOwnsEntries, SheetIndexOwnsEntries, SheetIndexReferenceRefersToSheetIndex, SheetReferenceRefersToSheet } from \"../../NavigationRelationship\";\nimport { SheetIndex, SheetIndexFolder, SheetIndexReference, SheetReference } from \"../../SheetIndex\";\n\nexport const getOrCreateDocumentList = async (iModel: IModelDb): Promise<Id64String> => {\n const documentListName = \"SheetList\";\n let documentListModelId: string | undefined;\n\n // Attempt to find an existing document partition and document list model\n const ids = iModel.queryEntityIds({ from: DocumentPartition.classFullName, where: `CodeValue = '${documentListName}'`});\n if (ids.size === 1) {\n documentListModelId = ids.values().next().value;\n }\n\n // If they do not exist, create the document partition and document list model\n if (documentListModelId === undefined) {\n const subjectId = iModel.elements.getRootSubject().id;\n await iModel.locks.acquireLocks({\n shared: subjectId,\n });\n documentListModelId = DocumentListModel.insert(iModel, subjectId, documentListName);\n }\n\n return documentListModelId;\n};\n\nconst insertSheet = async (iModel: IModelDb, sheetName: string): Promise<Id64String> => {\n const createSheetProps = {\n height: 42,\n width: 42,\n scale: 42,\n };\n // Get or make documentListModelId\n const modelId = await getOrCreateDocumentList(iModel);\n\n // Acquire locks and create sheet\n await iModel.locks.acquireLocks({ shared: modelId });\n const sheetElementProps: SheetProps = {\n ...createSheetProps,\n classFullName: Sheet.classFullName,\n code: Sheet.createCode(iModel, modelId, sheetName),\n model: modelId,\n };\n const sheetElementId = iModel.elements.insertElement(sheetElementProps);\n\n const sheetModelProps: GeometricModel2dProps = {\n classFullName: SheetModel.classFullName,\n modeledElement: { id: sheetElementId, relClassName: \"BisCore:ModelModelsElement\" } as RelatedElement,\n };\n const sheetModelId = iModel.models.insertModel(sheetModelProps);\n\n return sheetModelId;\n};\n\nconst insertCodeSpec = async (iModel: IModelDb) => {\n const indexSpec = CodeSpec.create(iModel, BisCodeSpec.sheetIndex, CodeScopeSpec.Type.Model);\n iModel.codeSpecs.insert(indexSpec);\n\n const entrySpec = CodeSpec.create(iModel, BisCodeSpec.sheetIndexEntry, CodeScopeSpec.Type.ParentElement);\n iModel.codeSpecs.insert(entrySpec);\n};\n\ndescribe(\"SheetIndex\", () => {\n let iModel: SnapshotDb;\n\n beforeEach(async () => {\n const iModelFile: string = IModelTestUtils.prepareOutputFile(\"IModel\", \"TestSheetIndex.bim\");\n\n const iModelDb = SnapshotDb.createEmpty(iModelFile, { rootSubject: { name: \"SheetIndex\" } });\n await ExtensiveTestScenario.prepareDb(iModelDb);\n await ExtensiveTestScenario.populateDb(iModelDb);\n iModel = iModelDb;\n\n await insertCodeSpec(iModel);\n });\n\n afterEach(() => {\n iModel.abandonChanges();\n iModel.close();\n });\n\n it(\"SheetIndexModel Should insert\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"testSheetIndex\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n });\n\n it(\"SheetIndex Should insert\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n });\n\n describe(\"Update\", () => {\n it(\"Priority\", () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const folderId = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folderId)).to.be.true;\n\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folder).to.not.be.undefined;\n expect(folder?.entryPriority).equals(1);\n\n folder!.entryPriority = 0;\n folder!.update();\n\n const folderPostUpdate = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folderPostUpdate?.entryPriority).equals(0);\n });\n\n it(\"Parent\", () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndex2Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\n\n const folderId = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folderId)).to.be.true;\n\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folder).to.not.be.undefined;\n\n const parentRel11 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });\n expect(parentRel11).to.not.be.undefined;\n\n folder!.parent = new SheetIndexOwnsEntries(sheetIndex2Id);\n folder!.update();\n\n const parentRel12 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });\n expect(parentRel12).to.be.undefined;\n\n const parentRel22 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex2Id, targetId: folderId });\n expect(parentRel22).to.not.be.undefined;\n });\n\n it(\"Sheet Reference\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndexId = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const sheet1Id = await insertSheet(iModel, \"sheet-1\");\n const sheet2Id = await insertSheet(iModel, \"sheet-2\");\n\n const sheetRefId = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestSheetReference\", priority: 1 });\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\n\n const sheetRef = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\n expect(sheetRef).to.not.be.undefined;\n expect(sheetRef!.sheet).to.be.undefined;\n\n sheetRef!.sheet = new SheetReferenceRefersToSheet(sheet1Id);\n sheetRef!.update();\n\n const refersRel11 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });\n expect(refersRel11).to.not.be.undefined;\n\n const parentRel12 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });\n expect(parentRel12).to.be.undefined;\n\n sheetRef!.sheet = new SheetReferenceRefersToSheet(sheet2Id);\n sheetRef!.update();\n\n const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });\n expect(refersRel21).to.be.undefined;\n\n const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });\n expect(parentRel22).to.not.be.undefined;\n });\n\n it(\"Sheet Index Reference\", () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndex2Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\n const sheetIndex3Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-3\");\n expect(Id64.isValidId64(sheetIndex3Id)).to.be.true;\n\n const sheetIndexRefId = SheetIndexReference.insert({iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetReference\", priority: 1});\n expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;\n\n const sheetIndexRef = iModel.elements.tryGetElement<SheetIndexReference>(sheetIndexRefId);\n expect(sheetIndexRef).to.not.be.undefined;\n expect(sheetIndexRef!.sheetIndex).to.be.undefined;\n\n sheetIndexRef!.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex2Id);\n sheetIndexRef!.update();\n\n const parentRel11 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\n expect(parentRel11).to.not.be.undefined;\n\n sheetIndexRef!.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex3Id);\n sheetIndexRef!.update();\n\n const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\n expect(refersRel21).to.be.undefined;\n\n const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex3Id });\n expect(parentRel22).to.not.be.undefined;\n });\n });\n\n describe(\"SheetIndexFolder\", () => {\n it(\"Should insert\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndexId = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const folderId = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestFolder-1\", priority: 1});\n expect(Id64.isValidId64(folderId)).to.be.true;\n\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folder).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndexId, targetId: folderId });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetIndexOwnsEntries.classFullName);\n\n expect(folder?.parent?.id).equals(sheetIndexId);\n });\n\n it(\"Should not insert SheetIndexFolder with the same name\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const folder = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folder)).to.be.true;\n\n const failInsert = () => SheetIndexFolder.insert({iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 0 });\n\n expect(failInsert).throws();\n });\n\n it(\"Should have children\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndexId = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const folder1Id = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestFolder-1\", priority: 1 });\n expect(Id64.isValidId64(folder1Id)).to.be.true;\n\n const folder2Id = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: folder1Id, name: \"TestFolder-2\", priority: 1 });\n expect(Id64.isValidId64(folder2Id)).to.be.true;\n const folder2 = iModel.elements.tryGetElement<SheetIndexFolder>(folder2Id);\n expect(folder2).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: folder1Id, targetId: folder2Id });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetIndexFolderOwnsEntries.classFullName);\n\n expect(folder2?.parent?.id).equals(folder1Id);\n });\n });\n\n describe(\"SheetReferences\", () => {\n it(\"Should not insert SheetReferences with the same name\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRef1 = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef1)).to.be.true;\n\n const failInsert = () => SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 0 });\n\n expect(failInsert).throws();\n });\n\n it(\"Should insert SheetReferences without a Sheet\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRef = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef)).to.be.true;\n });\n\n it(\"Should insert and with a Sheet\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n const sheetId = await insertSheet(iModel, \"sheet-1\");\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRefId = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1, sheetId });\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\n\n const ref = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\n expect(ref).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheetId });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetReferenceRefersToSheet.classFullName);\n\n expect(ref?.sheet?.id).equals(sheetId);\n });\n\n it.skip(\"Should not insert with the same Sheet twice\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n const sheetId = await insertSheet(iModel, \"sheet-1\");\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n\n SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-1\", priority: 1, sheetId });\n\n const sameIndex = () => SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-2\", priority: 2, sheetId });\n\n expect(sameIndex).throws();\n });\n });\n\n describe(\"SheetIndexReferences\", () => {\n it(\"Should not insert SheetIndexReferences with the same name\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetIndexRef = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 1 });\n expect(Id64.isValidId64(sheetIndexRef)).to.be.true;\n\n const failInsert = () => SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 0 });\n\n expect(failInsert).throws();\n });\n\n it(\"Should insert SheetIndexReferences without a SheetIndexRef\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetRef = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetIndexRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef)).to.be.true;\n });\n\n it(\"Should insert and with a SheetIndexRef\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n const sheetIndex2Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndexRefId = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetRef\", priority: 1, sheetIndexId: sheetIndex2Id });\n expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;\n\n const ref = iModel.elements.tryGetElement<SheetIndexReference>(sheetIndexRefId);\n expect(ref).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetIndexReferenceRefersToSheetIndex.classFullName);\n\n expect(ref?.sheetIndex?.id).equals(sheetIndex2Id);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"SheetIndex.test.js","sourceRoot":"","sources":["../../../../src/test/sheetindex/SheetIndex.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\nimport { BisCodeSpec, CodeScopeSpec, CodeSpec, EditTxnError, RelatedElement, SheetProps } from \"@itwin/core-common\";\nimport { EditTxn, withEditTxn } from \"../../EditTxn\";\n\nimport { SnapshotDb } from \"../../IModelDb\";\nimport { ExtensiveTestScenario, IModelTestUtils } from \"../IModelTestUtils\";\nimport { DocumentPartition, Sheet } from \"../../Element\";\nimport { expect } from \"chai\";\nimport { DocumentListModel, SheetIndexModel, SheetModel } from \"../../Model\";\nimport { ElementOwnsChildElements, SheetIndexFolderOwnsEntries, SheetIndexOwnsEntries, SheetIndexReferenceRefersToSheetIndex, SheetReferenceRefersToSheet } from \"../../NavigationRelationship\";\nimport { SheetIndex, SheetIndexFolder, SheetIndexReference, SheetReference } from \"../../SheetIndex\";\n\nconst getOrCreateDocumentList = (txn: EditTxn): Id64String => {\n const documentListName = \"SheetList\";\n const ids = txn.iModel.queryEntityIds({ from: DocumentPartition.classFullName, where: `CodeValue = '${documentListName}'` });\n if (ids.size === 1)\n return ids.values().next().value!;\n\n const subjectId = txn.iModel.elements.getRootSubject().id;\n return DocumentListModel.insert(txn, subjectId, documentListName);\n};\n\nconst insertSheet = (txn: EditTxn, sheetName: string): Id64String => {\n const modelId = getOrCreateDocumentList(txn);\n const sheetElementProps: SheetProps = {\n height: 42,\n width: 42,\n scale: 42,\n classFullName: Sheet.classFullName,\n code: Sheet.createCode(txn.iModel, modelId, sheetName),\n model: modelId,\n };\n const sheetElementId = txn.insertElement(sheetElementProps);\n return txn.insertModel({\n classFullName: SheetModel.classFullName,\n modeledElement: { id: sheetElementId, relClassName: \"BisCore:ModelModelsElement\" } as RelatedElement,\n });\n};\n\nconst insertCodeSpec = (txn: EditTxn) => {\n const indexSpec = CodeSpec.create(txn.iModel, BisCodeSpec.sheetIndex, CodeScopeSpec.Type.Model);\n txn.iModel.codeSpecs.insert(txn, indexSpec);\n\n const entrySpec = CodeSpec.create(txn.iModel, BisCodeSpec.sheetIndexEntry, CodeScopeSpec.Type.ParentElement);\n txn.iModel.codeSpecs.insert(txn, entrySpec);\n};\n\ndescribe(\"SheetIndex\", () => {\n let iModel: SnapshotDb;\n\n beforeEach(async () => {\n const iModelFile: string = IModelTestUtils.prepareOutputFile(\"IModel\", \"TestSheetIndex.bim\");\n\n const iModelDb = SnapshotDb.createEmpty(iModelFile, { rootSubject: { name: \"SheetIndex\" } });\n await ExtensiveTestScenario.prepareDb(iModelDb);\n await ExtensiveTestScenario.populateDb(iModelDb);\n iModel = iModelDb;\n\n withEditTxn(iModel, (txn) => insertCodeSpec(txn));\n });\n\n afterEach(() => {\n iModel.close();\n });\n\n it(\"SheetIndexModel Should insert\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"testSheetIndex\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n });\n });\n\n it(\"SheetIndex Should insert\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n });\n });\n\n describe(\"Update\", () => {\n it(\"Priority\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const folderId = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folderId)).to.be.true;\n\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folder).to.not.be.undefined;\n expect(folder?.entryPriority).equals(1);\n\n folder!.entryPriority = 0;\n folder!.update(txn);\n\n const folderPostUpdate = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folderPostUpdate?.entryPriority).equals(0);\n });\n });\n\n it(\"Parent\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndex2Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\n\n const folderId = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folderId)).to.be.true;\n\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folder).to.not.be.undefined;\n\n const parentRel11 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });\n expect(parentRel11).to.not.be.undefined;\n\n folder!.parent = new SheetIndexOwnsEntries(sheetIndex2Id);\n folder!.update(txn);\n\n const parentRel12 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });\n expect(parentRel12).to.be.undefined;\n\n const parentRel22 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex2Id, targetId: folderId });\n expect(parentRel22).to.not.be.undefined;\n });\n });\n\n it(\"Sheet Reference\", () => {\n withEditTxn(iModel, (txn) => {\n const sheet1Id = insertSheet(txn, \"sheet-1\");\n const sheet2Id = insertSheet(txn, \"sheet-2\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndexId = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const sheetRefId = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestSheetReference\", priority: 1 });\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\n\n const sheetRef = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\n expect(sheetRef).to.not.be.undefined;\n expect(sheetRef!.sheet).to.be.undefined;\n\n sheetRef!.sheet = new SheetReferenceRefersToSheet(sheet1Id);\n sheetRef!.update(txn);\n\n const refersRel11 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });\n expect(refersRel11).to.not.be.undefined;\n\n const parentRel12 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });\n expect(parentRel12).to.be.undefined;\n\n sheetRef!.sheet = new SheetReferenceRefersToSheet(sheet2Id);\n sheetRef!.update(txn);\n\n const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });\n expect(refersRel21).to.be.undefined;\n\n const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });\n expect(parentRel22).to.not.be.undefined;\n });\n });\n\n it(\"Sheet Index Reference\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndex2Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\n const sheetIndex3Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-3\");\n expect(Id64.isValidId64(sheetIndex3Id)).to.be.true;\n\n const sheetIndexRefId = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetReference\", priority: 1 });\n expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;\n\n const sheetIndexRef = iModel.elements.tryGetElement<SheetIndexReference>(sheetIndexRefId);\n expect(sheetIndexRef).to.not.be.undefined;\n expect(sheetIndexRef!.sheetIndex).to.be.undefined;\n\n sheetIndexRef!.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex2Id);\n sheetIndexRef!.update(txn);\n\n const parentRel11 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\n expect(parentRel11).to.not.be.undefined;\n\n sheetIndexRef!.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex3Id);\n sheetIndexRef!.update(txn);\n\n const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\n expect(refersRel21).to.be.undefined;\n\n const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex3Id });\n expect(parentRel22).to.not.be.undefined;\n });\n });\n });\n\n describe(\"SheetIndexFolder\", () => {\n it(\"Should insert\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndexId = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const folderId = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestFolder-1\", priority: 1 });\n expect(Id64.isValidId64(folderId)).to.be.true;\n\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folder).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndexId, targetId: folderId });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetIndexOwnsEntries.classFullName);\n\n expect(folder?.parent?.id).equals(sheetIndexId);\n });\n });\n\n it(\"Should not insert SheetIndexFolder with the same name\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const folder = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folder)).to.be.true;\n\n const failInsert = () => SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 0 });\n\n expect(failInsert).throws();\n });\n });\n\n it(\"Should have children\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndexId = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const folder1Id = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestFolder-1\", priority: 1 });\n expect(Id64.isValidId64(folder1Id)).to.be.true;\n\n const folder2Id = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: folder1Id, name: \"TestFolder-2\", priority: 1 });\n expect(Id64.isValidId64(folder2Id)).to.be.true;\n const folder2 = iModel.elements.tryGetElement<SheetIndexFolder>(folder2Id);\n expect(folder2).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: folder1Id, targetId: folder2Id });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetIndexFolderOwnsEntries.classFullName);\n\n expect(folder2?.parent?.id).equals(folder1Id);\n });\n });\n });\n\n describe(\"SheetReferences\", () => {\n it(\"Should not insert SheetReferences with the same name\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRef1 = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef1)).to.be.true;\n\n const failInsert = () => SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 0 });\n\n expect(failInsert).throws();\n });\n });\n\n it(\"Should insert SheetReferences without a Sheet\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRef = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef)).to.be.true;\n });\n });\n\n it(\"Should insert and with a Sheet\", () => {\n withEditTxn(iModel, (txn) => {\n const sheetId = insertSheet(txn, \"sheet-1\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRefId = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1, sheetId });\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\n\n const ref = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\n expect(ref).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheetId });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetReferenceRefersToSheet.classFullName);\n\n expect(ref?.sheet?.id).equals(sheetId);\n });\n });\n\n it(\"supports deprecated SheetReference.insert overload when implicit writes are allowed\", () => {\n const previousEnforcement = EditTxn.implicitWriteEnforcement;\n EditTxn.implicitWriteEnforcement = \"allow\";\n\n try {\n withEditTxn(iModel, (txn) => {\n const sheetId = insertSheet(txn, \"legacy-sheet\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"LegacySheetRefModel\");\n const sheetIndex = SheetIndex.insert(txn, modelId, \"LegacySheetIndex\");\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const sheetRefId = SheetReference.insert({\n iModelDb: iModel,\n sheetIndexModelId: modelId,\n parentId: sheetIndex,\n name: \"LegacySheetRef\",\n priority: 1,\n sheetId,\n });\n\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\n const ref = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\n expect(ref?.sheet?.id).to.equal(sheetId);\n });\n } finally {\n EditTxn.implicitWriteEnforcement = previousEnforcement;\n }\n });\n\n it(\"rejects deprecated SheetReference.insert overload when implicit writes are disallowed\", () => {\n const previousEnforcement = EditTxn.implicitWriteEnforcement;\n EditTxn.implicitWriteEnforcement = \"throw\";\n\n try {\n withEditTxn(iModel, (txn) => {\n const sheetId = insertSheet(txn, \"legacy-throw-sheet\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"LegacyThrowSheetRefModel\");\n const sheetIndex = SheetIndex.insert(txn, modelId, \"LegacyThrowSheetIndex\");\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => SheetReference.insert({\n iModelDb: iModel,\n sheetIndexModelId: modelId,\n parentId: sheetIndex,\n name: \"LegacyThrowSheetRef\",\n priority: 1,\n sheetId,\n })).to.throw().that.satisfies((error: unknown) => EditTxnError.isError(error, \"implicit-txn-write-disallowed\"));\n });\n } finally {\n EditTxn.implicitWriteEnforcement = previousEnforcement;\n }\n });\n\n it.skip(\"Should not insert with the same Sheet twice\", () => {\n withEditTxn(iModel, (txn) => {\n const sheetId = insertSheet(txn, \"sheet-1\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n\n SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-1\", priority: 1, sheetId });\n\n const sameIndex = () => SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-2\", priority: 2, sheetId });\n\n expect(sameIndex).throws();\n });\n });\n });\n\n describe(\"SheetIndexReferences\", () => {\n it(\"Should not insert SheetIndexReferences with the same name\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetIndexRef = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 1 });\n expect(Id64.isValidId64(sheetIndexRef)).to.be.true;\n\n const failInsert = () => SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 0 });\n\n expect(failInsert).throws();\n });\n });\n\n it(\"Should insert SheetIndexReferences without a SheetIndexRef\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetRef = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetIndexRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef)).to.be.true;\n });\n });\n\n it(\"Should insert and with a SheetIndexRef\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n const sheetIndex2Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndexRefId = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetRef\", priority: 1, sheetIndexId: sheetIndex2Id });\n expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;\n\n const ref = iModel.elements.tryGetElement<SheetIndexReference>(sheetIndexRefId);\n expect(ref).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetIndexReferenceRefersToSheetIndex.classFullName);\n\n expect(ref?.sheetIndex?.id).equals(sheetIndex2Id);\n });\n });\n });\n});\n\n\n\n\n"]}
@@ -3,15 +3,22 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { DbConflictResolution, Guid } from "@itwin/core-bentley";
6
+ import { EditTxn } from "../../EditTxn";
6
7
  import { IModel, SubCategoryAppearance } from "@itwin/core-common";
7
8
  import * as chai from "chai";
8
9
  import { assert } from "chai";
9
10
  import * as chaiAsPromised from "chai-as-promised";
10
11
  import { HubWrappers, KnownTestLocations } from "..";
11
- import { ChannelControl, IModelHost, SpatialCategory, SqliteChangesetReader, } from "../../core-backend";
12
+ import { ChannelControl, SpatialCategory, SqliteChangesetReader, } from "../../core-backend";
12
13
  import { HubMock } from "../../internal/HubMock";
13
14
  import { IModelTestUtils, TestUserType } from "../IModelTestUtils";
15
+ import { TestUtils } from "../TestUtils";
14
16
  import { Point3d } from "@itwin/core-geometry";
17
+ function startTestTxn(briefcase) {
18
+ const txn = new EditTxn(briefcase, "change merge");
19
+ txn.start();
20
+ return txn;
21
+ }
15
22
  chai.use(chaiAsPromised);
16
23
  async function assertThrowsAsync(test, msg) {
17
24
  try {
@@ -25,11 +32,12 @@ async function assertThrowsAsync(test, msg) {
25
32
  }
26
33
  throw new Error(`Failed to throw error with message: "${msg}"`);
27
34
  }
28
- async function updatePhysicalObject(b, el1, federationGuid) {
29
- await b.locks.acquireLocks({ exclusive: el1 });
30
- const props = b.elements.getElement(el1);
35
+ async function updatePhysicalObject(txn, el1, federationGuid) {
36
+ const briefcase = txn.iModel;
37
+ await briefcase.locks.acquireLocks({ exclusive: el1 });
38
+ const props = briefcase.elements.getElement(el1);
31
39
  props.federationGuid = federationGuid;
32
- b.elements.updateElement(props.toJSON());
40
+ txn.updateElement(props.toJSON());
33
41
  }
34
42
  describe("Change merge method", () => {
35
43
  const ctx = {
@@ -53,17 +61,17 @@ describe("Change merge method", () => {
53
61
  openB2: async (noLock) => { return ctx.openBriefcase("user2", noLock); },
54
62
  openB3: async (noLock) => { return ctx.openBriefcase("user3", noLock); },
55
63
  };
56
- async function insertPhysicalObject(b) {
57
- await b.locks.acquireLocks({ shared: ctx.modelId });
58
- return b.elements.insertElement(IModelTestUtils.createPhysicalObject(b, ctx.modelId, ctx.spatialCategoryId).toJSON());
64
+ async function insertPhysicalObject(txn) {
65
+ const briefcase = txn.iModel;
66
+ await briefcase.locks.acquireLocks({ shared: ctx.modelId });
67
+ return txn.insertElement(IModelTestUtils.createPhysicalObject(briefcase, ctx.modelId, ctx.spatialCategoryId).toJSON());
59
68
  }
60
69
  before(async () => {
61
- await IModelHost.startup();
70
+ await TestUtils.startBackend();
62
71
  HubMock.startup("PullMergeMethod", KnownTestLocations.outputDir);
63
72
  });
64
73
  after(async () => {
65
74
  HubMock.shutdown();
66
- //await IModelHost.shutdown();
67
75
  });
68
76
  beforeEach(async () => {
69
77
  ctx.iTwinId = HubMock.iTwinId;
@@ -73,12 +81,13 @@ describe("Change merge method", () => {
73
81
  ctx.iModelId = await HubMock.createNewIModel({ accessToken: ctx.accessTokens.user1, iTwinId: ctx.iTwinId, iModelName: ctx.iModelName, description: ctx.rootSubject });
74
82
  assert.isNotEmpty(ctx.iModelId);
75
83
  const b1 = await ctx.openB1();
84
+ const b1Txn = startTestTxn(b1);
76
85
  await b1.locks.acquireLocks({ shared: IModel.dictionaryId });
77
- [, ctx.modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(b1, IModelTestUtils.getUniqueModelCode(b1, "newPhysicalModel"), true);
86
+ [, ctx.modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(b1Txn, IModelTestUtils.getUniqueModelCode(b1, "newPhysicalModel"), true);
78
87
  const dictionary = b1.models.getModel(IModel.dictionaryId);
79
88
  const newCategoryCode = IModelTestUtils.getUniqueSpatialCategoryCode(dictionary, "ThisTestSpatialCategory");
80
- ctx.spatialCategoryId = SpatialCategory.insert(dictionary.iModel, dictionary.id, newCategoryCode.value, new SubCategoryAppearance({ color: 0xff0000 }));
81
- b1.saveChanges();
89
+ ctx.spatialCategoryId = SpatialCategory.insert(b1Txn, dictionary.id, newCategoryCode.value, new SubCategoryAppearance({ color: 0xff0000 }));
90
+ b1Txn.saveChanges();
82
91
  await b1.pushChanges({ description: "" });
83
92
  b1.close();
84
93
  });
@@ -89,6 +98,7 @@ describe("Change merge method", () => {
89
98
  */
90
99
  const events = new Map();
91
100
  const b1 = await ctx.openB1();
101
+ const b1Txn = startTestTxn(b1);
92
102
  events.set(b1.briefcaseId, []);
93
103
  b1.txns.rebaser.onRebaseTxnBegin.addListener((args) => {
94
104
  events.get(b1.briefcaseId)?.push({ args, event: "onRebaseTxnBegin" });
@@ -97,6 +107,7 @@ describe("Change merge method", () => {
97
107
  events.get(b1.briefcaseId)?.push({ args, event: "onRebaseTxnEnd" });
98
108
  });
99
109
  const b2 = await ctx.openB2();
110
+ const b2Txn = startTestTxn(b2);
100
111
  events.set(b2.briefcaseId, []);
101
112
  b2.txns.rebaser.onRebaseTxnBegin.addListener((args) => {
102
113
  events.get(b2.briefcaseId)?.push({ args, event: "onRebaseTxnBegin" });
@@ -104,22 +115,22 @@ describe("Change merge method", () => {
104
115
  b2.txns.rebaser.onRebaseTxnEnd.addListener((args) => {
105
116
  events.get(b2.briefcaseId)?.push({ args, event: "onRebaseTxnEnd" });
106
117
  });
107
- const e1 = await insertPhysicalObject(b1);
108
- b1.saveChanges(`inserted physical object [id=${e1}]`);
118
+ const e1 = await insertPhysicalObject(b1Txn);
119
+ b1Txn.saveChanges(`inserted physical object [id=${e1}]`);
109
120
  events.set(b1.briefcaseId, []);
110
121
  await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });
111
122
  assert.isDefined(b1.elements.getElement(e1));
112
123
  assert.equal(events.get(b1.briefcaseId)?.length, 0);
113
- const e2 = await insertPhysicalObject(b1);
114
- b1.saveChanges();
124
+ const e2 = await insertPhysicalObject(b1Txn);
125
+ b1Txn.saveChanges();
115
126
  events.set(b1.briefcaseId, []);
116
127
  await b1.pushChanges({ description: `inserted physical object [id=${e2}]` });
117
128
  assert.equal(events.get(b1.briefcaseId)?.length, 0);
118
129
  assert.isDefined(b1.elements.getElement(e2));
119
- const e3 = await insertPhysicalObject(b2);
120
- b2.saveChanges(`inserted physical object [id=${e3}]`);
121
- const e4 = await insertPhysicalObject(b2);
122
- b2.saveChanges(`inserted physical object [id=${e4}]`);
130
+ const e3 = await insertPhysicalObject(b2Txn);
131
+ b2Txn.saveChanges(`inserted physical object [id=${e3}]`);
132
+ const e4 = await insertPhysicalObject(b2Txn);
133
+ b2Txn.saveChanges(`inserted physical object [id=${e4}]`);
123
134
  events.set(b2.briefcaseId, []);
124
135
  // fast-forward has no effect its a deprecated flag
125
136
  await b2.pushChanges({ description: `inserted physical object [id=${e3},${e4}]`, noFastForward: true });
@@ -136,10 +147,10 @@ describe("Change merge method", () => {
136
147
  assert.isDefined(b2.elements.getElement(e2));
137
148
  assert.isDefined(b2.elements.getElement(e3));
138
149
  assert.isDefined(b2.elements.getElement(e4));
139
- const e5 = await insertPhysicalObject(b1);
140
- b1.saveChanges(`inserted physical object [id=${e5}]`);
141
- const e6 = await insertPhysicalObject(b1);
142
- b1.saveChanges(`inserted physical object [id=${e6}]`);
150
+ const e5 = await insertPhysicalObject(b1Txn);
151
+ b1Txn.saveChanges(`inserted physical object [id=${e5}]`);
152
+ const e6 = await insertPhysicalObject(b1Txn);
153
+ b1Txn.saveChanges(`inserted physical object [id=${e6}]`);
143
154
  events.set(b1.briefcaseId, []);
144
155
  await b1.pushChanges({ description: `inserted physical object [id=${e5}, ${e6}]` });
145
156
  assert.equal(events.get(b1.briefcaseId)?.length, 4);
@@ -166,21 +177,21 @@ describe("Change merge method", () => {
166
177
  assert.isDefined(b2.elements.getElement(e4));
167
178
  assert.isDefined(b2.elements.getElement(e5));
168
179
  assert.isDefined(b2.elements.getElement(e6));
169
- await updatePhysicalObject(b1, e3, Guid.createValue());
170
- b1.saveChanges(`update physical object [id=${e3}]`);
171
- await updatePhysicalObject(b1, e4, Guid.createValue());
172
- b1.saveChanges(`update physical object [id=${e4}]`);
180
+ await updatePhysicalObject(b1Txn, e3, Guid.createValue());
181
+ b1Txn.saveChanges(`update physical object [id=${e3}]`);
182
+ await updatePhysicalObject(b1Txn, e4, Guid.createValue());
183
+ b1Txn.saveChanges(`update physical object [id=${e4}]`);
173
184
  events.set(b1.briefcaseId, []);
174
185
  await b1.pushChanges({ description: `update physical object [id=${e3},${e4}]` });
175
186
  assert.equal(events.get(b1.briefcaseId)?.length, 0);
176
- await updatePhysicalObject(b2, e1, Guid.createValue());
177
- b2.saveChanges(`update physical object [id=${e1}]`);
178
- await updatePhysicalObject(b2, e2, Guid.createValue());
179
- b2.saveChanges(`update physical object [id=${e2}]`);
180
- await updatePhysicalObject(b2, e5, Guid.createValue());
181
- b2.saveChanges(`update physical object [id=${e5}]`);
182
- await updatePhysicalObject(b2, e6, Guid.createValue());
183
- b2.saveChanges(`update physical object [id=${e6}]`);
187
+ await updatePhysicalObject(b2Txn, e1, Guid.createValue());
188
+ b2Txn.saveChanges(`update physical object [id=${e1}]`);
189
+ await updatePhysicalObject(b2Txn, e2, Guid.createValue());
190
+ b2Txn.saveChanges(`update physical object [id=${e2}]`);
191
+ await updatePhysicalObject(b2Txn, e5, Guid.createValue());
192
+ b2Txn.saveChanges(`update physical object [id=${e5}]`);
193
+ await updatePhysicalObject(b2Txn, e6, Guid.createValue());
194
+ b2Txn.saveChanges(`update physical object [id=${e6}]`);
184
195
  events.set(b2.briefcaseId, []);
185
196
  await b2.pushChanges({ description: `update physical object [id=${e1},${e2},${e5}]`, noFastForward: true });
186
197
  assert.equal(events.get(b2.briefcaseId)?.length, 8);
@@ -218,6 +229,7 @@ describe("Change merge method", () => {
218
229
  it("rebase events (noFastForward:false/default)", async () => {
219
230
  const events = new Map();
220
231
  const b1 = await ctx.openB1();
232
+ const b1Txn = startTestTxn(b1);
221
233
  events.set(b1.briefcaseId, []);
222
234
  b1.txns.rebaser.onRebaseTxnBegin.addListener((args) => {
223
235
  events.get(b1.briefcaseId)?.push({ args, event: "onRebaseTxnBegin" });
@@ -226,6 +238,7 @@ describe("Change merge method", () => {
226
238
  events.get(b1.briefcaseId)?.push({ args, event: "onRebaseTxnEnd" });
227
239
  });
228
240
  const b2 = await ctx.openB2();
241
+ const b2Txn = startTestTxn(b2);
229
242
  events.set(b2.briefcaseId, []);
230
243
  b2.txns.rebaser.onRebaseTxnBegin.addListener((args) => {
231
244
  events.get(b2.briefcaseId)?.push({ args, event: "onRebaseTxnBegin" });
@@ -233,22 +246,22 @@ describe("Change merge method", () => {
233
246
  b2.txns.rebaser.onRebaseTxnEnd.addListener((args) => {
234
247
  events.get(b2.briefcaseId)?.push({ args, event: "onRebaseTxnEnd" });
235
248
  });
236
- const e1 = await insertPhysicalObject(b1);
237
- b1.saveChanges(`inserted physical object [id=${e1}]`);
249
+ const e1 = await insertPhysicalObject(b1Txn);
250
+ b1Txn.saveChanges(`inserted physical object [id=${e1}]`);
238
251
  events.set(b1.briefcaseId, []);
239
252
  await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });
240
253
  assert.isDefined(b1.elements.getElement(e1));
241
254
  assert.equal(events.get(b1.briefcaseId)?.length, 0);
242
- const e2 = await insertPhysicalObject(b1);
243
- b1.saveChanges();
255
+ const e2 = await insertPhysicalObject(b1Txn);
256
+ b1Txn.saveChanges();
244
257
  events.set(b1.briefcaseId, []);
245
258
  await b1.pushChanges({ description: `inserted physical object [id=${e2}]` });
246
259
  assert.equal(events.get(b1.briefcaseId)?.length, 0);
247
260
  assert.isDefined(b1.elements.getElement(e2));
248
- const e3 = await insertPhysicalObject(b2);
249
- b2.saveChanges(`inserted physical object [id=${e3}]`);
250
- const e4 = await insertPhysicalObject(b2);
251
- b2.saveChanges(`inserted physical object [id=${e4}]`);
261
+ const e3 = await insertPhysicalObject(b2Txn);
262
+ b2Txn.saveChanges(`inserted physical object [id=${e3}]`);
263
+ const e4 = await insertPhysicalObject(b2Txn);
264
+ b2Txn.saveChanges(`inserted physical object [id=${e4}]`);
252
265
  events.set(b2.briefcaseId, []);
253
266
  // fast-forward
254
267
  await b2.pushChanges({ description: `inserted physical object [id=${e3},${e4}]` });
@@ -257,10 +270,10 @@ describe("Change merge method", () => {
257
270
  assert.isDefined(b2.elements.getElement(e2));
258
271
  assert.isDefined(b2.elements.getElement(e3));
259
272
  assert.isDefined(b2.elements.getElement(e4));
260
- const e5 = await insertPhysicalObject(b1);
261
- b1.saveChanges(`inserted physical object [id=${e5}]`);
262
- const e6 = await insertPhysicalObject(b1);
263
- b1.saveChanges(`inserted physical object [id=${e6}]`);
273
+ const e5 = await insertPhysicalObject(b1Txn);
274
+ b1Txn.saveChanges(`inserted physical object [id=${e5}]`);
275
+ const e6 = await insertPhysicalObject(b1Txn);
276
+ b1Txn.saveChanges(`inserted physical object [id=${e6}]`);
264
277
  events.set(b1.briefcaseId, []);
265
278
  await b1.pushChanges({ description: `inserted physical object [id=${e5}, ${e6}]` });
266
279
  assert.equal(events.get(b1.briefcaseId)?.length, 4);
@@ -279,21 +292,21 @@ describe("Change merge method", () => {
279
292
  assert.isDefined(b2.elements.getElement(e4));
280
293
  assert.isDefined(b2.elements.getElement(e5));
281
294
  assert.isDefined(b2.elements.getElement(e6));
282
- await updatePhysicalObject(b1, e3, Guid.createValue());
283
- b1.saveChanges(`update physical object [id=${e3}]`);
284
- await updatePhysicalObject(b1, e4, Guid.createValue());
285
- b1.saveChanges(`update physical object [id=${e4}]`);
295
+ await updatePhysicalObject(b1Txn, e3, Guid.createValue());
296
+ b1Txn.saveChanges(`update physical object [id=${e3}]`);
297
+ await updatePhysicalObject(b1Txn, e4, Guid.createValue());
298
+ b1Txn.saveChanges(`update physical object [id=${e4}]`);
286
299
  events.set(b1.briefcaseId, []);
287
300
  await b1.pushChanges({ description: `update physical object [id=${e3},${e4}]` });
288
301
  assert.equal(events.get(b1.briefcaseId)?.length, 0);
289
- await updatePhysicalObject(b2, e1, Guid.createValue());
290
- b2.saveChanges(`update physical object [id=${e1}]`);
291
- await updatePhysicalObject(b2, e2, Guid.createValue());
292
- b2.saveChanges(`update physical object [id=${e2}]`);
293
- await updatePhysicalObject(b2, e5, Guid.createValue());
294
- b2.saveChanges(`update physical object [id=${e5}]`);
295
- await updatePhysicalObject(b2, e6, Guid.createValue());
296
- b2.saveChanges(`update physical object [id=${e6}]`);
302
+ await updatePhysicalObject(b2Txn, e1, Guid.createValue());
303
+ b2Txn.saveChanges(`update physical object [id=${e1}]`);
304
+ await updatePhysicalObject(b2Txn, e2, Guid.createValue());
305
+ b2Txn.saveChanges(`update physical object [id=${e2}]`);
306
+ await updatePhysicalObject(b2Txn, e5, Guid.createValue());
307
+ b2Txn.saveChanges(`update physical object [id=${e5}]`);
308
+ await updatePhysicalObject(b2Txn, e6, Guid.createValue());
309
+ b2Txn.saveChanges(`update physical object [id=${e6}]`);
297
310
  events.set(b2.briefcaseId, []);
298
311
  await b2.pushChanges({ description: `update physical object [id=${e1},${e2},${e5}]` });
299
312
  assert.isDefined(b1.elements.getElement(e1).federationGuid);
@@ -313,17 +326,19 @@ describe("Change merge method", () => {
313
326
  });
314
327
  it("rebase with be_props (insert conflict)", async () => {
315
328
  const b1 = await ctx.openB1();
329
+ const b1Txn = startTestTxn(b1);
316
330
  const b2 = await ctx.openB2();
317
- b1.saveFileProperty({ namespace: "test", name: "test" }, "test1");
318
- b1.saveChanges("test");
331
+ const b2Txn = startTestTxn(b2);
332
+ b1Txn.saveFileProperty({ namespace: "test", name: "test" }, "test1");
333
+ b1Txn.saveChanges("test");
319
334
  await b1.pushChanges({ description: "test" });
320
- b2.saveFileProperty({ namespace: "test", name: "test" }, "test2");
321
- b2.saveChanges("test2");
335
+ b2Txn.saveFileProperty({ namespace: "test", name: "test" }, "test2");
336
+ b2Txn.saveChanges("test2");
322
337
  await assertThrowsAsync(async () => b2.pushChanges({ description: "test2" }), "PRIMARY KEY insert conflict. Aborting rebase.");
323
338
  assert.equal(b2.queryFilePropertyString({ namespace: "test", name: "test" }), "test1");
324
- b2.saveFileProperty({ namespace: "test", name: "test" }, "test3");
325
- chai.expect(() => b2.saveChanges("test1")).throws("Could not save changes (test1)");
326
- b2.abandonChanges();
339
+ b2Txn.saveFileProperty({ namespace: "test", name: "test" }, "test3");
340
+ chai.expect(() => b2Txn.saveChanges("test1")).throws("Could not save changes (test1)");
341
+ b2Txn.abandonChanges();
327
342
  // set handler to resolve conflict
328
343
  b2.txns.rebaser.addConflictHandler({
329
344
  id: "my", handler: (args) => {
@@ -336,7 +351,7 @@ describe("Change merge method", () => {
336
351
  chai.expect(args.txn.type).to.be.equal("Data");
337
352
  const localChangedVal = args.getValueText(5, "New");
338
353
  const tipValue = b2.queryFilePropertyString({ namespace: "test", name: "test" });
339
- b2.saveFileProperty({ namespace: "test", name: "test" }, `${tipValue} + ${localChangedVal}`);
354
+ b2Txn.saveFileProperty({ namespace: "test", name: "test" }, `${tipValue} + ${localChangedVal}`);
340
355
  return DbConflictResolution.Skip; // skip incoming value and continue
341
356
  }
342
357
  }
@@ -368,15 +383,17 @@ describe("Change merge method", () => {
368
383
  });
369
384
  it("rebase with be_props (data conflict) ", async () => {
370
385
  const b1 = await ctx.openB1();
386
+ const b1Txn = startTestTxn(b1);
371
387
  const b2 = await ctx.openB2();
372
- b1.saveFileProperty({ namespace: "test", name: "test" }, "test1");
373
- b1.saveChanges("test");
388
+ const b2Txn = startTestTxn(b2);
389
+ b1Txn.saveFileProperty({ namespace: "test", name: "test" }, "test1");
390
+ b1Txn.saveChanges("test");
374
391
  await b1.pushChanges({ description: "test" });
375
392
  await b2.pullChanges();
376
- b2.saveFileProperty({ namespace: "test", name: "test" }, "test2");
377
- b2.saveChanges("test2");
378
- b1.saveFileProperty({ namespace: "test", name: "test" }, "test3");
379
- b1.saveChanges("test");
393
+ b2Txn.saveFileProperty({ namespace: "test", name: "test" }, "test2");
394
+ b2Txn.saveChanges("test2");
395
+ b1Txn.saveFileProperty({ namespace: "test", name: "test" }, "test3");
396
+ b1Txn.saveChanges("test");
380
397
  await b1.pushChanges({ description: "test" });
381
398
  // set handler to resolve conflict
382
399
  b2.txns.rebaser.addConflictHandler({
@@ -386,7 +403,7 @@ describe("Change merge method", () => {
386
403
  if (args.opcode === "Updated") {
387
404
  const localChangedVal = args.getValueText(5, "New");
388
405
  const tipValue = b2.queryFilePropertyString({ namespace: "test", name: "test" });
389
- b2.saveFileProperty({ namespace: "test", name: "test" }, `${tipValue} + ${localChangedVal}`);
406
+ b2Txn.saveFileProperty({ namespace: "test", name: "test" }, `${tipValue} + ${localChangedVal}`);
390
407
  return DbConflictResolution.Skip; // skip incomming value and continue
391
408
  }
392
409
  }
@@ -404,20 +421,22 @@ describe("Change merge method", () => {
404
421
  });
405
422
  it("should keep element deleted when local delete conflicts with remote update", async () => {
406
423
  const b1 = await ctx.openB1(true /* = noLock */);
424
+ const b1Txn = startTestTxn(b1);
407
425
  const b2 = await ctx.openB2(true /* = noLock */);
408
- const e1 = await insertPhysicalObject(b1);
409
- b1.saveChanges();
426
+ const b2Txn = startTestTxn(b2);
427
+ const e1 = await insertPhysicalObject(b1Txn);
428
+ b1Txn.saveChanges();
410
429
  await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });
411
430
  await b2.pullChanges();
412
431
  const eb1 = b1.elements.getElementProps(e1);
413
432
  eb1.userLabel = "test1";
414
433
  eb1.placement = { origin: { x: 1, y: 1, z: 1 }, angles: { yaw: 1, pitch: 1, roll: 1 } };
415
434
  eb1.geom = IModelTestUtils.createBox(Point3d.create(3, 3, 3));
416
- b1.elements.updateElement(eb1);
417
- b1.saveChanges();
435
+ b1Txn.updateElement(eb1);
436
+ b1Txn.saveChanges();
418
437
  await b1.pushChanges({ description: `update physical object [id=${e1}]` });
419
- b2.elements.deleteElement(e1);
420
- b2.saveChanges();
438
+ b2Txn.deleteElement(e1);
439
+ b2Txn.saveChanges();
421
440
  await b2.pullChanges();
422
441
  const eb2 = b2.elements.tryGetElementProps(e1);
423
442
  // when placement is changed the element is not deleted after pullChanges();