@itwin/core-backend 5.9.0-dev.4 → 5.9.0-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/lib/cjs/BriefcaseManager.js +3 -3
  2. package/lib/cjs/BriefcaseManager.js.map +1 -1
  3. package/lib/cjs/Category.d.ts +37 -7
  4. package/lib/cjs/Category.d.ts.map +1 -1
  5. package/lib/cjs/Category.js +33 -42
  6. package/lib/cjs/Category.js.map +1 -1
  7. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  8. package/lib/cjs/ChangesetECAdaptor.js +5 -2
  9. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  10. package/lib/cjs/ChannelControl.d.ts +29 -0
  11. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  12. package/lib/cjs/ChannelControl.js.map +1 -1
  13. package/lib/cjs/CheckpointManager.js +1 -1
  14. package/lib/cjs/CheckpointManager.js.map +1 -1
  15. package/lib/cjs/CodeSpecs.d.ts +32 -3
  16. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  17. package/lib/cjs/CodeSpecs.js +48 -20
  18. package/lib/cjs/CodeSpecs.js.map +1 -1
  19. package/lib/cjs/DisplayStyle.d.ts +18 -3
  20. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  21. package/lib/cjs/DisplayStyle.js +10 -21
  22. package/lib/cjs/DisplayStyle.js.map +1 -1
  23. package/lib/cjs/EditTxn.d.ts +262 -0
  24. package/lib/cjs/EditTxn.d.ts.map +1 -0
  25. package/lib/cjs/EditTxn.js +548 -0
  26. package/lib/cjs/EditTxn.js.map +1 -0
  27. package/lib/cjs/Element.d.ts +74 -5
  28. package/lib/cjs/Element.d.ts.map +1 -1
  29. package/lib/cjs/Element.js +63 -75
  30. package/lib/cjs/Element.js.map +1 -1
  31. package/lib/cjs/ElementAspect.d.ts +10 -0
  32. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  33. package/lib/cjs/ElementAspect.js +21 -12
  34. package/lib/cjs/ElementAspect.js.map +1 -1
  35. package/lib/cjs/ElementTreeWalker.d.ts +56 -3
  36. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  37. package/lib/cjs/ElementTreeWalker.js +53 -40
  38. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  39. package/lib/cjs/ExternalSource.d.ts +11 -2
  40. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  41. package/lib/cjs/ExternalSource.js +10 -8
  42. package/lib/cjs/ExternalSource.js.map +1 -1
  43. package/lib/cjs/IModelDb.d.ts +66 -22
  44. package/lib/cjs/IModelDb.d.ts.map +1 -1
  45. package/lib/cjs/IModelDb.js +174 -288
  46. package/lib/cjs/IModelDb.js.map +1 -1
  47. package/lib/cjs/IModelHost.d.ts +22 -0
  48. package/lib/cjs/IModelHost.d.ts.map +1 -1
  49. package/lib/cjs/IModelHost.js +9 -0
  50. package/lib/cjs/IModelHost.js.map +1 -1
  51. package/lib/cjs/IpcHost.js +2 -2
  52. package/lib/cjs/IpcHost.js.map +1 -1
  53. package/lib/cjs/LineStyle.d.ts +47 -7
  54. package/lib/cjs/LineStyle.d.ts.map +1 -1
  55. package/lib/cjs/LineStyle.js +38 -33
  56. package/lib/cjs/LineStyle.js.map +1 -1
  57. package/lib/cjs/Material.d.ts +8 -1
  58. package/lib/cjs/Material.d.ts.map +1 -1
  59. package/lib/cjs/Material.js +6 -12
  60. package/lib/cjs/Material.js.map +1 -1
  61. package/lib/cjs/Model.d.ts +59 -20
  62. package/lib/cjs/Model.d.ts.map +1 -1
  63. package/lib/cjs/Model.js +38 -80
  64. package/lib/cjs/Model.js.map +1 -1
  65. package/lib/cjs/Relationship.d.ts +72 -7
  66. package/lib/cjs/Relationship.d.ts.map +1 -1
  67. package/lib/cjs/Relationship.js +39 -21
  68. package/lib/cjs/Relationship.js.map +1 -1
  69. package/lib/cjs/SchemaSync.js +4 -4
  70. package/lib/cjs/SchemaSync.js.map +1 -1
  71. package/lib/cjs/SheetIndex.d.ts +9 -0
  72. package/lib/cjs/SheetIndex.d.ts.map +1 -1
  73. package/lib/cjs/SheetIndex.js +38 -35
  74. package/lib/cjs/SheetIndex.js.map +1 -1
  75. package/lib/cjs/StashManager.js +1 -1
  76. package/lib/cjs/StashManager.js.map +1 -1
  77. package/lib/cjs/Texture.d.ts +6 -0
  78. package/lib/cjs/Texture.d.ts.map +1 -1
  79. package/lib/cjs/Texture.js +6 -14
  80. package/lib/cjs/Texture.js.map +1 -1
  81. package/lib/cjs/TxnManager.d.ts +5 -5
  82. package/lib/cjs/TxnManager.d.ts.map +1 -1
  83. package/lib/cjs/TxnManager.js +23 -7
  84. package/lib/cjs/TxnManager.js.map +1 -1
  85. package/lib/cjs/ViewDefinition.d.ts +21 -1
  86. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  87. package/lib/cjs/ViewDefinition.js +27 -66
  88. package/lib/cjs/ViewDefinition.js.map +1 -1
  89. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  90. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  91. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
  92. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  93. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  94. package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
  95. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  96. package/lib/cjs/core-backend.d.ts +1 -0
  97. package/lib/cjs/core-backend.d.ts.map +1 -1
  98. package/lib/cjs/core-backend.js +1 -0
  99. package/lib/cjs/core-backend.js.map +1 -1
  100. package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
  101. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  102. package/lib/cjs/domains/FunctionalElements.js +8 -13
  103. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  104. package/lib/cjs/domains/GenericElements.d.ts +11 -4
  105. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  106. package/lib/cjs/domains/GenericElements.js +13 -24
  107. package/lib/cjs/domains/GenericElements.js.map +1 -1
  108. package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
  109. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  110. package/lib/cjs/internal/ChannelAdmin.js +5 -3
  111. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  112. package/lib/cjs/internal/Symbols.d.ts +4 -0
  113. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  114. package/lib/cjs/internal/Symbols.js +5 -1
  115. package/lib/cjs/internal/Symbols.js.map +1 -1
  116. package/lib/cjs/internal/annotations/fields.d.ts +3 -2
  117. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  118. package/lib/cjs/internal/annotations/fields.js +7 -6
  119. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  120. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  121. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  122. package/lib/esm/BriefcaseManager.js +3 -3
  123. package/lib/esm/BriefcaseManager.js.map +1 -1
  124. package/lib/esm/Category.d.ts +37 -7
  125. package/lib/esm/Category.d.ts.map +1 -1
  126. package/lib/esm/Category.js +33 -42
  127. package/lib/esm/Category.js.map +1 -1
  128. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  129. package/lib/esm/ChangesetECAdaptor.js +5 -2
  130. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  131. package/lib/esm/ChannelControl.d.ts +29 -0
  132. package/lib/esm/ChannelControl.d.ts.map +1 -1
  133. package/lib/esm/ChannelControl.js.map +1 -1
  134. package/lib/esm/CheckpointManager.js +1 -1
  135. package/lib/esm/CheckpointManager.js.map +1 -1
  136. package/lib/esm/CodeSpecs.d.ts +32 -3
  137. package/lib/esm/CodeSpecs.d.ts.map +1 -1
  138. package/lib/esm/CodeSpecs.js +49 -21
  139. package/lib/esm/CodeSpecs.js.map +1 -1
  140. package/lib/esm/DisplayStyle.d.ts +18 -3
  141. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  142. package/lib/esm/DisplayStyle.js +10 -21
  143. package/lib/esm/DisplayStyle.js.map +1 -1
  144. package/lib/esm/EditTxn.d.ts +262 -0
  145. package/lib/esm/EditTxn.d.ts.map +1 -0
  146. package/lib/esm/EditTxn.js +543 -0
  147. package/lib/esm/EditTxn.js.map +1 -0
  148. package/lib/esm/Element.d.ts +74 -5
  149. package/lib/esm/Element.d.ts.map +1 -1
  150. package/lib/esm/Element.js +64 -76
  151. package/lib/esm/Element.js.map +1 -1
  152. package/lib/esm/ElementAspect.d.ts +10 -0
  153. package/lib/esm/ElementAspect.d.ts.map +1 -1
  154. package/lib/esm/ElementAspect.js +22 -13
  155. package/lib/esm/ElementAspect.js.map +1 -1
  156. package/lib/esm/ElementTreeWalker.d.ts +56 -3
  157. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  158. package/lib/esm/ElementTreeWalker.js +53 -40
  159. package/lib/esm/ElementTreeWalker.js.map +1 -1
  160. package/lib/esm/ExternalSource.d.ts +11 -2
  161. package/lib/esm/ExternalSource.d.ts.map +1 -1
  162. package/lib/esm/ExternalSource.js +10 -8
  163. package/lib/esm/ExternalSource.js.map +1 -1
  164. package/lib/esm/IModelDb.d.ts +66 -22
  165. package/lib/esm/IModelDb.d.ts.map +1 -1
  166. package/lib/esm/IModelDb.js +176 -290
  167. package/lib/esm/IModelDb.js.map +1 -1
  168. package/lib/esm/IModelHost.d.ts +22 -0
  169. package/lib/esm/IModelHost.d.ts.map +1 -1
  170. package/lib/esm/IModelHost.js +9 -0
  171. package/lib/esm/IModelHost.js.map +1 -1
  172. package/lib/esm/IpcHost.js +3 -3
  173. package/lib/esm/IpcHost.js.map +1 -1
  174. package/lib/esm/LineStyle.d.ts +47 -7
  175. package/lib/esm/LineStyle.d.ts.map +1 -1
  176. package/lib/esm/LineStyle.js +38 -33
  177. package/lib/esm/LineStyle.js.map +1 -1
  178. package/lib/esm/Material.d.ts +8 -1
  179. package/lib/esm/Material.d.ts.map +1 -1
  180. package/lib/esm/Material.js +6 -12
  181. package/lib/esm/Material.js.map +1 -1
  182. package/lib/esm/Model.d.ts +59 -20
  183. package/lib/esm/Model.d.ts.map +1 -1
  184. package/lib/esm/Model.js +39 -81
  185. package/lib/esm/Model.js.map +1 -1
  186. package/lib/esm/Relationship.d.ts +72 -7
  187. package/lib/esm/Relationship.d.ts.map +1 -1
  188. package/lib/esm/Relationship.js +40 -22
  189. package/lib/esm/Relationship.js.map +1 -1
  190. package/lib/esm/SchemaSync.js +5 -5
  191. package/lib/esm/SchemaSync.js.map +1 -1
  192. package/lib/esm/SheetIndex.d.ts +9 -0
  193. package/lib/esm/SheetIndex.d.ts.map +1 -1
  194. package/lib/esm/SheetIndex.js +38 -35
  195. package/lib/esm/SheetIndex.js.map +1 -1
  196. package/lib/esm/StashManager.js +1 -1
  197. package/lib/esm/StashManager.js.map +1 -1
  198. package/lib/esm/Texture.d.ts +6 -0
  199. package/lib/esm/Texture.d.ts.map +1 -1
  200. package/lib/esm/Texture.js +6 -14
  201. package/lib/esm/Texture.js.map +1 -1
  202. package/lib/esm/TxnManager.d.ts +5 -5
  203. package/lib/esm/TxnManager.d.ts.map +1 -1
  204. package/lib/esm/TxnManager.js +23 -7
  205. package/lib/esm/TxnManager.js.map +1 -1
  206. package/lib/esm/ViewDefinition.d.ts +21 -1
  207. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  208. package/lib/esm/ViewDefinition.js +27 -66
  209. package/lib/esm/ViewDefinition.js.map +1 -1
  210. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  211. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  212. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
  213. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  214. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  215. package/lib/esm/annotations/TextAnnotationElement.js +6 -5
  216. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  217. package/lib/esm/core-backend.d.ts +1 -0
  218. package/lib/esm/core-backend.d.ts.map +1 -1
  219. package/lib/esm/core-backend.js +1 -0
  220. package/lib/esm/core-backend.js.map +1 -1
  221. package/lib/esm/domains/FunctionalElements.d.ts +6 -2
  222. package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
  223. package/lib/esm/domains/FunctionalElements.js +8 -13
  224. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  225. package/lib/esm/domains/GenericElements.d.ts +11 -4
  226. package/lib/esm/domains/GenericElements.d.ts.map +1 -1
  227. package/lib/esm/domains/GenericElements.js +13 -24
  228. package/lib/esm/domains/GenericElements.js.map +1 -1
  229. package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
  230. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  231. package/lib/esm/internal/ChannelAdmin.js +6 -4
  232. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  233. package/lib/esm/internal/Symbols.d.ts +4 -0
  234. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  235. package/lib/esm/internal/Symbols.js +4 -0
  236. package/lib/esm/internal/Symbols.js.map +1 -1
  237. package/lib/esm/internal/annotations/fields.d.ts +3 -2
  238. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  239. package/lib/esm/internal/annotations/fields.js +7 -6
  240. package/lib/esm/internal/annotations/fields.js.map +1 -1
  241. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  242. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  243. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  244. package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
  245. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
  246. package/lib/esm/test/ElementDrivesElement.test.js +111 -96
  247. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  248. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  249. package/lib/esm/test/IModelHost.test.js +56 -2
  250. package/lib/esm/test/IModelHost.test.js.map +1 -1
  251. package/lib/esm/test/IModelTestUtils.d.ts +23 -23
  252. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  253. package/lib/esm/test/IModelTestUtils.js +466 -449
  254. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  255. package/lib/esm/test/PropertyDb.test.js +2 -2
  256. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  257. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +27 -18
  258. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  259. package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
  260. package/lib/esm/test/TestChangeSetUtility.js +11 -7
  261. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  262. package/lib/esm/test/TestEditTxn.d.ts +8 -0
  263. package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
  264. package/lib/esm/test/TestEditTxn.js +34 -0
  265. package/lib/esm/test/TestEditTxn.js.map +1 -0
  266. package/lib/esm/test/TestUtils.d.ts +1 -0
  267. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  268. package/lib/esm/test/TestUtils.js +8 -1
  269. package/lib/esm/test/TestUtils.js.map +1 -1
  270. package/lib/esm/test/annotations/Fields.test.js +82 -90
  271. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  272. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  273. package/lib/esm/test/annotations/TextAnnotation.test.js +156 -99
  274. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  275. package/lib/esm/test/annotations/TextBlock.test.js +5 -3
  276. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  277. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  278. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  279. package/lib/esm/test/categories/Category.test.js +63 -3
  280. package/lib/esm/test/categories/Category.test.js.map +1 -1
  281. package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
  282. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  283. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  284. package/lib/esm/test/ecdb/ECSqlAst.test.js +3 -2
  285. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  286. package/lib/esm/test/ecdb/ECSqlQuery.test.js +2 -2
  287. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  288. package/lib/esm/test/ecdb/ECSqlStatement.test.js +0 -1
  289. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  290. package/lib/esm/test/ecdb/QueryReaders.test.js +17 -14
  291. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  292. package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
  293. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  294. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
  295. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
  296. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  297. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  298. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  299. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  300. package/lib/esm/test/element/DeleteDefinitionElements.test.js +159 -143
  301. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  302. package/lib/esm/test/element/ElementAspect.test.js +68 -60
  303. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  304. package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
  305. package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
  306. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  307. package/lib/esm/test/element/ElementRoundTrip.test.js +37 -38
  308. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  309. package/lib/esm/test/element/ExcludedElements.test.js +2 -2
  310. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  311. package/lib/esm/test/element/ExternalSource.test.js +40 -38
  312. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  313. package/lib/esm/test/element/NullStructArray.test.js +10 -9
  314. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  315. package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
  316. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  317. package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
  318. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  319. package/lib/esm/test/element/UrlLink.test.js +2 -2
  320. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  321. package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
  322. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  323. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +164 -125
  324. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  325. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
  326. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  327. package/lib/esm/test/hubaccess/Rebase.test.js +313 -247
  328. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  329. package/lib/esm/test/hubaccess/SemanticRebase.test.js +322 -247
  330. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  331. package/lib/esm/test/imodel/Code.test.js +31 -31
  332. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  333. package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
  334. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  335. package/lib/esm/test/imodel/IModel.test.js +419 -344
  336. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  337. package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
  338. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  339. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  340. package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
  341. package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
  342. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  343. package/lib/esm/test/index.d.ts +1 -0
  344. package/lib/esm/test/index.d.ts.map +1 -1
  345. package/lib/esm/test/index.js +1 -0
  346. package/lib/esm/test/index.js.map +1 -1
  347. package/lib/esm/test/schema/ClassRegistry.test.js +23 -22
  348. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  349. package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
  350. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  351. package/lib/esm/test/schema/GenericDomain.test.js +114 -94
  352. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  353. package/lib/esm/test/schema/IModelSchemaContext.test.js +2 -1
  354. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  355. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +207 -192
  356. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  357. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
  358. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
  359. package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
  360. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  361. package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
  362. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  363. package/lib/esm/test/standalone/ChangesetReader.test.js +114 -85
  364. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  365. package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
  366. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  367. package/lib/esm/test/standalone/Drawing.test.js +4 -3
  368. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  369. package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
  370. package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
  371. package/lib/esm/test/standalone/EditTxn.test.js +219 -0
  372. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
  373. package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
  374. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  375. package/lib/esm/test/standalone/ExportGraphics.test.js +26 -20
  376. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  377. package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
  378. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  379. package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
  380. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  381. package/lib/esm/test/standalone/HubMock.test.js +31 -25
  382. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  383. package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
  384. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  385. package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
  386. package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
  387. package/lib/esm/test/standalone/IModelWrite.test.js +184 -142
  388. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  389. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
  390. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  391. package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
  392. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  393. package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
  394. package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
  395. package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
  396. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  397. package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
  398. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  399. package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
  400. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  401. package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
  402. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  403. package/lib/esm/test/standalone/ServerBasedLocks.test.js +21 -19
  404. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  405. package/lib/esm/test/standalone/Settings.test.js +7 -4
  406. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  407. package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
  408. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  409. package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
  410. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  411. package/lib/esm/test/standalone/StandaloneDb.test.js +7 -6
  412. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  413. package/lib/esm/test/standalone/Texture.test.js +5 -4
  414. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  415. package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
  416. package/lib/esm/test/standalone/TileCache.test.js +5 -3
  417. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  418. package/lib/esm/test/standalone/TileTree.test.js +35 -31
  419. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  420. package/lib/esm/test/standalone/TxnManager.test.js +700 -653
  421. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  422. package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
  423. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  424. package/lib/esm/test/standalone/Workspace.test.js +25 -23
  425. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  426. package/package.json +12 -12
@@ -15,13 +15,14 @@ import { ClassRegistry } from "../../ClassRegistry";
15
15
  import { PhysicalElement } from "../../Element";
16
16
  import { ElementOwnsUniqueAspect, ElementUniqueAspect, FontFile, IModelElementCloneContext, TextAnnotation3d } from "../../core-backend";
17
17
  import { ElementDrivesTextAnnotation, TextAnnotationUsesTextStyleByDefault } from "../../annotations/ElementDrivesTextAnnotation";
18
+ import { withEditTxn } from "../../EditTxn";
18
19
  function isIntlSupported() {
19
20
  // Node in the mobile add-on does not include Intl, so this test fails. Right now, mobile
20
21
  // users are not expected to do any editing, but long term we will attempt to find a better
21
22
  // solution.
22
23
  return !ProcessDetector.isMobileAppBackend;
23
24
  }
24
- function createTestElement(imodel, model, category, overrides, aspectProp = 999) {
25
+ function insertTestElement(txn, model, category, overrides, aspectProp = 999) {
25
26
  const props = {
26
27
  classFullName: "Fields:TestElement",
27
28
  model,
@@ -60,15 +61,14 @@ function createTestElement(imodel, model, category, overrides, aspectProp = 999)
60
61
  },
61
62
  ...overrides,
62
63
  };
63
- const id = imodel.elements.insertElement(props);
64
+ const elemId = txn.insertElement(props);
64
65
  const aspectProps = {
65
66
  classFullName: TestAspect.classFullName,
66
67
  aspectProp,
67
- element: new ElementOwnsUniqueAspect(id),
68
+ element: new ElementOwnsUniqueAspect(elemId),
68
69
  };
69
- imodel.elements.insertAspect(aspectProps);
70
- imodel.saveChanges();
71
- return id;
70
+ txn.insertAspect(aspectProps);
71
+ return elemId;
72
72
  }
73
73
  describe("updateField", () => {
74
74
  const mockElementId = "0x1";
@@ -222,7 +222,6 @@ async function registerTestSchema(iModel) {
222
222
  ClassRegistry.register(TestAspect, FieldsSchema);
223
223
  }
224
224
  await iModel.importSchemaStrings([fieldsSchemaXml]);
225
- iModel.saveChanges();
226
225
  }
227
226
  describe("Field evaluation", () => {
228
227
  let imodel;
@@ -233,19 +232,18 @@ describe("Field evaluation", () => {
233
232
  const iModelPath = IModelTestUtils.prepareOutputFile("UpdateFieldsContext", "test.bim");
234
233
  imodel = StandaloneDb.createEmpty(iModelPath, { rootSubject: { name: "UpdateFieldsContext" }, enableTransactions: true });
235
234
  await registerTestSchema(imodel);
236
- model = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(imodel, Code.createEmpty(), true)[1];
237
- category = SpatialCategory.insert(imodel, StandaloneDb.dictionaryId, "UpdateFieldsContextCategory", new SubCategoryAppearance());
238
- sourceElementId = insertTestElement();
239
- await imodel.fonts.embedFontFile({
240
- file: FontFile.createFromTrueTypeFileName(IModelTestUtils.resolveFontFile("Karla-Regular.ttf"))
235
+ await withEditTxn(imodel, async (txn) => {
236
+ model = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(txn, Code.createEmpty(), true)[1];
237
+ category = SpatialCategory.insert(txn, StandaloneDb.dictionaryId, "UpdateFieldsContextCategory", new SubCategoryAppearance());
238
+ await imodel.fonts.embedFontFile({
239
+ file: FontFile.createFromTrueTypeFileName(IModelTestUtils.resolveFontFile("Karla-Regular.ttf"))
240
+ });
241
+ sourceElementId = insertTestElement(txn, model, category);
241
242
  });
242
243
  });
243
244
  after(() => {
244
245
  imodel.close();
245
246
  });
246
- function insertTestElement(overrides, aspectProp) {
247
- return createTestElement(imodel, model, category, overrides, aspectProp);
248
- }
249
247
  function evaluateField(propertyPath, propertyHost, deletedDependency = false) {
250
248
  if (typeof propertyHost === "string") {
251
249
  propertyHost = { schemaName: "Fields", className: "TestElement", elementId: propertyHost };
@@ -449,7 +447,7 @@ describe("Field evaluation", () => {
449
447
  }
450
448
  function insertAnnotationElement(textBlock) {
451
449
  const elem = createAnnotationElement(textBlock);
452
- return elem.insert();
450
+ return withEditTxn(imodel, (txn) => txn.insertElement(elem.toJSON()));
453
451
  }
454
452
  describe("ElementDrivesTextAnnotation", () => {
455
453
  function expectNumRelationships(expected, targetId) {
@@ -471,7 +469,7 @@ describe("Field evaluation", () => {
471
469
  const targetAnno = imodel.elements.getElement(targetId);
472
470
  expect(targetAnno).instanceof(TextAnnotation3d);
473
471
  const rel = ElementDrivesTextAnnotation.create(imodel, sourceElementId, targetId);
474
- const relId = rel.insert();
472
+ const relId = withEditTxn(imodel, (txn) => txn.insertRelationship(rel.toJSON()));
475
473
  expect(relId).not.to.equal(Id64.invalid);
476
474
  expectNumRelationships(1);
477
475
  const relationship = imodel.relationships.getInstance("BisCore:ElementDrivesTextAnnotation", relId);
@@ -491,40 +489,35 @@ describe("Field evaluation", () => {
491
489
  }
492
490
  describe("updateFieldDependencies", () => {
493
491
  it("creates exactly one relationship for each unique source element on insert and update", () => {
494
- const source1 = insertTestElement();
492
+ const source1 = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
495
493
  const block = TextBlock.create();
496
494
  block.appendRun(createField(source1, "1"));
497
495
  const targetId = insertAnnotationElement(block);
498
- imodel.saveChanges();
499
496
  expectNumRelationships(1, targetId);
500
- const source2 = insertTestElement();
497
+ const source2 = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
501
498
  const target = imodel.elements.getElement(targetId);
502
499
  const anno = target.getAnnotation();
503
500
  anno.textBlock.appendRun(createField(source2, "2a"));
504
501
  target.setAnnotation(anno);
505
- target.update();
506
- imodel.saveChanges();
502
+ withEditTxn(imodel, (txn) => target.update(txn));
507
503
  expectNumRelationships(2, targetId);
508
504
  anno.textBlock.appendRun(createField(source2, "2b"));
509
505
  target.setAnnotation(anno);
510
- target.update();
511
- imodel.saveChanges();
506
+ withEditTxn(imodel, (txn) => target.update(txn));
512
507
  expectNumRelationships(2, targetId);
513
- const source3 = insertTestElement();
508
+ const source3 = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
514
509
  anno.textBlock.appendRun(createField(source3, "3"));
515
510
  target.setAnnotation(anno);
516
- target.update();
517
- imodel.saveChanges();
511
+ withEditTxn(imodel, (txn) => target.update(txn));
518
512
  expectNumRelationships(3, targetId);
519
513
  });
520
514
  it("deletes stale relationships", () => {
521
- const sourceA = insertTestElement();
522
- const sourceB = insertTestElement();
515
+ const sourceA = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
516
+ const sourceB = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
523
517
  const block = TextBlock.create();
524
518
  block.appendRun(createField(sourceA, "A"));
525
519
  block.appendRun(createField(sourceB, "B"));
526
520
  const targetId = insertAnnotationElement(block);
527
- imodel.saveChanges();
528
521
  expectNumRelationships(2, targetId);
529
522
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceA })).not.to.be.undefined;
530
523
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceB })).not.to.be.undefined;
@@ -534,16 +527,14 @@ describe("Field evaluation", () => {
534
527
  const p1 = anno.textBlock.children[0];
535
528
  p1.children.shift();
536
529
  target.setAnnotation(anno);
537
- target.update();
538
- imodel.saveChanges();
530
+ withEditTxn(imodel, (txn) => target.update(txn));
539
531
  expectNumRelationships(1, targetId);
540
532
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceA })).to.be.undefined;
541
533
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceB })).not.to.be.undefined;
542
534
  anno.textBlock.children.length = 0;
543
535
  anno.textBlock.appendRun(createField(sourceA, "A2"));
544
536
  target.setAnnotation(anno);
545
- target.update();
546
- imodel.saveChanges();
537
+ withEditTxn(imodel, (txn) => target.update(txn));
547
538
  expectNumRelationships(1, targetId);
548
539
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceA })).not.to.be.undefined;
549
540
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceB })).to.be.undefined;
@@ -553,20 +544,18 @@ describe("Field evaluation", () => {
553
544
  content: "not a field",
554
545
  }));
555
546
  target.setAnnotation(anno);
556
- target.update();
557
- imodel.saveChanges();
547
+ withEditTxn(imodel, (txn) => target.update(txn));
558
548
  expectNumRelationships(0, targetId);
559
549
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceA })).to.be.undefined;
560
550
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceB })).to.be.undefined;
561
551
  });
562
552
  it("ignores invalid source element Ids", () => {
563
- const source = insertTestElement();
553
+ const source = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
564
554
  const block = TextBlock.create();
565
555
  block.appendRun(createField(Id64.invalid, "invalid"));
566
556
  block.appendRun(createField("0xbaadf00d", "non-existent"));
567
557
  block.appendRun(createField(source, "valid"));
568
558
  const targetId = insertAnnotationElement(block);
569
- imodel.saveChanges();
570
559
  expectNumRelationships(1, targetId);
571
560
  });
572
561
  });
@@ -578,116 +567,114 @@ describe("Field evaluation", () => {
578
567
  expect(actual).to.equal(expected);
579
568
  }
580
569
  it("evaluates cachedContent when annotation element is inserted", () => {
581
- const sourceId = insertTestElement();
570
+ const sourceId = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
582
571
  const block = TextBlock.create();
583
572
  block.appendRun(createField(sourceId, "initial cached content"));
584
573
  expect(block.stringify()).to.equal("initial cached content");
585
574
  const targetId = insertAnnotationElement(block);
586
- imodel.saveChanges();
587
575
  const target = imodel.elements.getElement(targetId);
588
576
  expect(target.getAnnotation().textBlock.stringify()).to.equal("100");
589
577
  });
590
578
  it("updates fields when source element is modified or deleted", () => {
591
- const sourceId = insertTestElement();
579
+ const sourceId = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
592
580
  const block = TextBlock.create();
593
581
  block.appendRun(createField(sourceId, "old value"));
594
582
  ;
595
583
  const targetId = insertAnnotationElement(block);
596
- imodel.saveChanges();
597
584
  const target = imodel.elements.getElement(targetId);
598
585
  expect(target.getAnnotation()).not.to.be.undefined;
599
586
  expectText("100", targetId);
600
587
  let source = imodel.elements.getElement(sourceId);
601
588
  source.intProp = 50;
602
- source.update();
603
589
  expectText("100", targetId);
604
- imodel.saveChanges();
605
- source = imodel.elements.getElement(sourceId);
606
- expect(source.intProp).to.equal(50);
607
- expectText("50", targetId);
608
- imodel.elements.deleteElement(sourceId);
609
- expectText("50", targetId);
610
- imodel.saveChanges();
590
+ withEditTxn(imodel, "delete source element fields", (txn) => {
591
+ source.update(txn);
592
+ expectText("100", targetId);
593
+ txn.saveChanges("update source element fields");
594
+ source = imodel.elements.getElement(sourceId);
595
+ expect(source.intProp).to.equal(50);
596
+ expectText("50", targetId);
597
+ source.delete(txn);
598
+ expectText("50", targetId);
599
+ });
611
600
  expectText(FieldRun.invalidContentIndicator, targetId);
612
601
  });
613
602
  it("updates fields when source element aspect is modified, deleted, or recreated", () => {
614
- const sourceId = insertTestElement();
603
+ const sourceId = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
615
604
  const block = TextBlock.create();
616
605
  block.appendRun(createField({ elementId: sourceId, schemaName: "Fields", className: "TestAspect" }, "", "aspectProp"));
617
606
  const targetId = insertAnnotationElement(block);
618
- imodel.saveChanges();
619
607
  expectText("999", targetId);
620
608
  const aspects = imodel.elements.getAspects(sourceId, "Fields:TestAspect");
621
609
  expect(aspects.length).to.equal(1);
622
610
  const aspect = aspects[0];
623
611
  expect(aspect.aspectProp).to.equal(999);
624
612
  aspect.aspectProp = 12345;
625
- imodel.elements.updateAspect(aspect.toJSON());
626
- imodel.saveChanges();
627
- expectText("12345", targetId);
628
- imodel.elements.deleteAspect([aspect.id]);
629
- imodel.saveChanges();
630
- expectText(FieldRun.invalidContentIndicator, targetId);
631
613
  const newAspect = {
632
614
  element: new ElementOwnsUniqueAspect(sourceId),
633
615
  classFullName: TestAspect.classFullName,
634
616
  aspectProp: 42,
635
617
  };
636
- imodel.elements.insertAspect(newAspect);
637
- imodel.saveChanges();
638
- expectText("42", targetId);
618
+ withEditTxn(imodel, "recreate source aspect fields", (txn) => {
619
+ txn.updateAspect(aspect.toJSON());
620
+ txn.saveChanges("update source aspect fields");
621
+ expectText("12345", targetId);
622
+ txn.deleteAspect([aspect.id]);
623
+ txn.saveChanges("delete source aspect fields");
624
+ expectText(FieldRun.invalidContentIndicator, targetId);
625
+ txn.insertAspect(newAspect);
626
+ txn.saveChanges("recreate source aspect fields");
627
+ expectText("42", targetId);
628
+ });
639
629
  });
640
630
  it("updates only fields for specific modified element", () => {
641
- const sourceA = insertTestElement();
642
- const sourceB = insertTestElement();
631
+ const sourceA = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
632
+ const sourceB = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
643
633
  const block = TextBlock.create();
644
634
  block.appendRun(createField(sourceA, "A"));
645
635
  block.appendRun(createField(sourceB, "B"));
646
636
  const targetId = insertAnnotationElement(block);
647
- imodel.saveChanges();
648
637
  expectText("100100", targetId);
649
638
  const sourceElem = imodel.elements.getElement(sourceB);
650
639
  sourceElem.intProp = 123;
651
- sourceElem.update();
652
- imodel.saveChanges();
640
+ withEditTxn(imodel, (txn) => sourceElem.update(txn));
653
641
  expectText("100123", targetId);
654
642
  });
655
643
  it("supports complex property paths", () => {
656
- const sourceId = insertTestElement();
644
+ const sourceId = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
657
645
  const block = TextBlock.create();
658
646
  block.appendRun(createField(sourceId, "", "outerStruct", ["innerStructs", 1, "doubles", -2]));
659
647
  const targetId = insertAnnotationElement(block);
660
- imodel.saveChanges();
661
648
  expectText("2", targetId);
662
649
  const source = imodel.elements.getElement(sourceId);
663
650
  source.outerStruct.innerStructs[1].doubles[3] = 12.5;
664
- source.update();
665
- imodel.saveChanges();
651
+ withEditTxn(imodel, (txn) => source.update(txn));
666
652
  expectText("12.5", targetId);
667
653
  });
668
654
  it("updates EC view fields when the element changes if the EC view queries the element directly", () => {
669
- const sourceId = insertTestElement();
655
+ const sourceId = withEditTxn(imodel, (editTxn) => insertTestElement(editTxn, model, category));
670
656
  const block = TextBlock.create();
671
657
  block.appendRun(createField({
672
658
  elementId: sourceId, schemaName: "Fields", className: "TestElementStringProp",
673
659
  }, "cached-content", "StringProp"));
674
660
  const targetId = insertAnnotationElement(block);
675
- imodel.saveChanges();
676
661
  const target = imodel.elements.getElement(targetId);
677
662
  expect(target.getAnnotation()).not.to.be.undefined;
678
663
  expectText("abc", targetId);
679
664
  let source = imodel.elements.getElement(sourceId);
680
665
  source.jsonProperties.stringProp = "zyx";
681
- source.update();
682
666
  expectText("abc", targetId);
683
- imodel.saveChanges();
684
- expectText("zyx", targetId);
685
- source = imodel.elements.getElement(sourceId);
686
- expect(source.jsonProperties.stringProp).to.equal("zyx");
687
- expectText("zyx", targetId);
688
- imodel.elements.deleteElement(sourceId);
689
- expectText("zyx", targetId);
690
- imodel.saveChanges();
667
+ withEditTxn(imodel, "delete EC view fields", (txn) => {
668
+ source.update(txn);
669
+ expectText("abc", targetId);
670
+ txn.saveChanges("update EC view fields");
671
+ expectText("zyx", targetId);
672
+ source = imodel.elements.getElement(sourceId);
673
+ expect(source.jsonProperties.stringProp).to.equal("zyx");
674
+ expectText("zyx", targetId);
675
+ source.delete(txn);
676
+ expectText("zyx", targetId);
677
+ });
691
678
  expectText(FieldRun.invalidContentIndicator, targetId);
692
679
  });
693
680
  describe("remapFields", () => {
@@ -700,21 +687,26 @@ describe("Field evaluation", () => {
700
687
  dstIModel = StandaloneDb.createEmpty(path, { rootSubject: { name: `RemapFields-dst` }, enableTransactions: true });
701
688
  await registerTestSchema(dstIModel);
702
689
  // Insert additional unused elements to ensure element Ids differ between src and dst iModels
703
- for (let i = 0; i < 3; i++) {
704
- IModelTestUtils.createAndInsertPhysicalPartitionAndModel(dstIModel, Code.createEmpty(), true);
705
- }
706
- const modelAndElement = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(dstIModel, Code.createEmpty(), true);
690
+ const modelAndElement = withEditTxn(dstIModel, (txn) => {
691
+ for (let i = 0; i < 3; i++) {
692
+ IModelTestUtils.createAndInsertPhysicalPartitionAndModel(txn, Code.createEmpty(), true);
693
+ }
694
+ const ids = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(txn, Code.createEmpty(), true);
695
+ dstCategory = SpatialCategory.insert(txn, StandaloneDb.dictionaryId, `dstCat`, new SubCategoryAppearance());
696
+ return ids;
697
+ });
707
698
  expect(modelAndElement[0]).to.equal(modelAndElement[1]);
708
699
  dstModel = modelAndElement[1];
709
- dstCategory = SpatialCategory.insert(dstIModel, StandaloneDb.dictionaryId, `dstCat`, new SubCategoryAppearance());
710
- dstSourceElementId = createTestElement(dstIModel, dstModel, dstCategory, {
700
+ dstSourceElementId = withEditTxn(dstIModel, (txn) => insertTestElement(txn, dstModel, dstCategory, {
711
701
  intProp: 200,
712
702
  point: { x: -1, y: -2, z: -3 },
713
703
  strings: ["x", "y", "z"],
714
704
  intEnum: 2,
715
- }, 1234);
716
- await dstIModel.fonts.embedFontFile({
717
- file: FontFile.createFromTrueTypeFileName(IModelTestUtils.resolveFontFile("Karla-Regular.ttf"))
705
+ }, 1234));
706
+ await withEditTxn(dstIModel, async () => {
707
+ await dstIModel.fonts.embedFontFile({
708
+ file: FontFile.createFromTrueTypeFileName(IModelTestUtils.resolveFontFile("Karla-Regular.ttf"))
709
+ });
718
710
  });
719
711
  expect(dstCategory).not.to.equal(category);
720
712
  expect(dstModel).not.to.equal(model);