@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
@@ -20,6 +20,7 @@ import { TextAnnotationUsesTextStyleByDefault } from "../../annotations/ElementD
20
20
  import { layoutTextBlock, TextStyleResolver } from "../../annotations/TextBlockLayout";
21
21
  import { appendTextAnnotationGeometry } from "../../annotations/TextAnnotationGeometry";
22
22
  import { IModelElementCloneContext } from "../../IModelElementCloneContext";
23
+ import { EditTxn, withEditTxn } from "../../EditTxn";
23
24
  import * as fs from "fs";
24
25
  function mockIModel() {
25
26
  const iModel = {
@@ -51,23 +52,23 @@ const createJobSubjectElement = (iModel, name) => {
51
52
  subj.setJsonProperty("Subject", { Job: name }); // eslint-disable-line @typescript-eslint/naming-convention
52
53
  return subj;
53
54
  };
54
- const insertDrawingModel = (standaloneModel, parentId, definitionModel) => {
55
- const category = DrawingCategory.insert(standaloneModel, definitionModel, "DrawingCategory", new SubCategoryAppearance());
56
- const [_, model] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(standaloneModel, { spec: '0x1', scope: '0x1', value: 'Drawing' }, undefined, parentId);
57
- const displayStyle = DisplayStyle2d.insert(standaloneModel, definitionModel, "DisplayStyle2d");
58
- const categorySelector = CategorySelector.insert(standaloneModel, definitionModel, "DrawingCategories", [category]);
55
+ const insertDrawingModel = (txn, parentId, definitionModel) => {
56
+ const category = DrawingCategory.insert(txn, definitionModel, "DrawingCategory", new SubCategoryAppearance());
57
+ const [_, model] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, { spec: '0x1', scope: '0x1', value: 'Drawing' }, undefined, parentId);
58
+ const displayStyle = DisplayStyle2d.insert(txn, definitionModel, "DisplayStyle2d");
59
+ const categorySelector = CategorySelector.insert(txn, definitionModel, "DrawingCategories", [category]);
59
60
  const viewRange = new Range2d(0, 0, 500, 500);
60
- DrawingViewDefinition.insert(standaloneModel, definitionModel, "Drawing View", model, categorySelector, displayStyle, viewRange);
61
+ DrawingViewDefinition.insert(txn, definitionModel, "Drawing View", model, categorySelector, displayStyle, viewRange);
61
62
  return { category, model };
62
63
  };
63
- const insertSpatialModel = (standaloneModel, parentId, definitionModel) => {
64
- const category = SpatialCategory.insert(standaloneModel, definitionModel, "spatialCategory", new SubCategoryAppearance());
65
- const [_, model] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(standaloneModel, { spec: '0x1', scope: '0x1', value: 'Spatial' }, undefined, parentId);
66
- const modelSelector = ModelSelector.insert(standaloneModel, definitionModel, "SpatialModelSelector", [model]);
67
- const displayStyle = DisplayStyle3d.insert(standaloneModel, definitionModel, "DisplayStyle3d");
68
- const categorySelector = CategorySelector.insert(standaloneModel, definitionModel, "spatialCategories", [category]);
64
+ const insertSpatialModel = (txn, parentId, definitionModel) => {
65
+ const category = SpatialCategory.insert(txn, definitionModel, "spatialCategory", new SubCategoryAppearance());
66
+ const [_, model] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(txn, { spec: '0x1', scope: '0x1', value: 'Spatial' }, undefined, parentId);
67
+ const modelSelector = ModelSelector.insert(txn, definitionModel, "SpatialModelSelector", [model]);
68
+ const displayStyle = DisplayStyle3d.insert(txn, definitionModel, "DisplayStyle3d");
69
+ const categorySelector = CategorySelector.insert(txn, definitionModel, "spatialCategories", [category]);
69
70
  const viewRange = new Range3d(0, 0, 0, 500, 500, 500);
70
- SpatialViewDefinition.insertWithCamera(standaloneModel, definitionModel, "spatial View", modelSelector, categorySelector, displayStyle, viewRange);
71
+ SpatialViewDefinition.insertWithCamera(txn, definitionModel, "spatial View", modelSelector, categorySelector, displayStyle, viewRange);
71
72
  return { category, model };
72
73
  };
73
74
  const createIModel = async (name) => {
@@ -79,8 +80,10 @@ const createIModel = async (name) => {
79
80
  projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },
80
81
  guid: Guid.createValue(),
81
82
  });
82
- await iModel.fonts.embedFontFile({
83
- file: FontFile.createFromTrueTypeFileName(IModelTestUtils.resolveFontFile("Karla-Regular.ttf"))
83
+ await withEditTxn(iModel, async () => {
84
+ await iModel.fonts.embedFontFile({
85
+ file: FontFile.createFromTrueTypeFileName(IModelTestUtils.resolveFontFile("Karla-Regular.ttf"))
86
+ });
84
87
  });
85
88
  return iModel;
86
89
  };
@@ -271,10 +274,17 @@ describe("TextAnnotation element", () => {
271
274
  let createElement3dArgs;
272
275
  before(async () => {
273
276
  imodel = await createIModel("TextAnnotation3d");
274
- const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
275
- const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
276
- const { category, model } = insertSpatialModel(imodel, jobSubjectId, definitionModel);
277
- const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert();
277
+ let jobSubjectId;
278
+ let definitionModel;
279
+ let category;
280
+ let model;
281
+ let styleId;
282
+ withEditTxn(imodel, (txn) => {
283
+ jobSubjectId = createJobSubjectElement(imodel, "Job").insert(txn);
284
+ definitionModel = DefinitionModel.insert(txn, jobSubjectId, "Definition");
285
+ ({ category, model } = insertSpatialModel(txn, jobSubjectId, definitionModel));
286
+ styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert(txn);
287
+ });
278
288
  expect(jobSubjectId).not.to.be.undefined;
279
289
  expect(category).not.to.be.undefined;
280
290
  expect(model).not.to.be.undefined;
@@ -305,7 +315,7 @@ describe("TextAnnotation element", () => {
305
315
  el0.setAnnotation(annotation);
306
316
  }
307
317
  expectPlacement3d(el0, false);
308
- const elId = el0.insert();
318
+ const elId = withEditTxn(imodel, (txn) => el0.insert(txn));
309
319
  expect(Id64.isValidId64(elId)).to.be.true;
310
320
  const el1 = imodel.elements.getElement(elId);
311
321
  expect(el1).not.to.be.undefined;
@@ -331,18 +341,21 @@ describe("TextAnnotation element", () => {
331
341
  let createElement2dArgs;
332
342
  before(async () => {
333
343
  imodel = await createIModel("TextAnnotation2d");
334
- const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
335
- const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
336
- const { category, model } = insertDrawingModel(imodel, jobSubjectId, definitionModel);
344
+ let jobSubjectId;
345
+ let definitionModel;
346
+ let category;
347
+ let model;
348
+ withEditTxn(imodel, (txn) => {
349
+ jobSubjectId = createJobSubjectElement(imodel, "Job").insert(txn);
350
+ definitionModel = DefinitionModel.insert(txn, jobSubjectId, "Definition");
351
+ ({ category, model } = insertDrawingModel(txn, jobSubjectId, definitionModel));
352
+ });
337
353
  expect(jobSubjectId).not.to.be.undefined;
338
354
  expect(category).not.to.be.undefined;
339
355
  expect(model).not.to.be.undefined;
340
356
  createElement2dArgs = { category, model };
341
357
  });
342
- after(() => {
343
- imodel.saveChanges("tests");
344
- imodel.close();
345
- });
358
+ after(() => imodel.close());
346
359
  it("creating element does not automatically compute the geometry", () => {
347
360
  const annotation = createAnnotation();
348
361
  const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() };
@@ -363,7 +376,7 @@ describe("TextAnnotation element", () => {
363
376
  el0.setAnnotation(annotation);
364
377
  }
365
378
  expectPlacement2d(el0, false);
366
- const elId = el0.insert();
379
+ const elId = withEditTxn(imodel, (txn) => el0.insert(txn));
367
380
  expect(Id64.isValidId64(elId)).to.be.true;
368
381
  const el1 = imodel.elements.getElement(elId);
369
382
  expect(el1).not.to.be.undefined;
@@ -393,10 +406,16 @@ describe("TextAnnotation element", () => {
393
406
  let seedStyleId2;
394
407
  before(async () => {
395
408
  imodel = await createIModel("DefaultTextStyle");
396
- const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
397
- const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
398
- const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert();
399
- const differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", { font: { name: "Karla" }, textHeight: 0.5, isBold: true }).insert();
409
+ let jobSubjectId;
410
+ let definitionModel;
411
+ let styleId;
412
+ let differentStyleId;
413
+ withEditTxn(imodel, (txn) => {
414
+ jobSubjectId = createJobSubjectElement(imodel, "Job").insert(txn);
415
+ definitionModel = DefinitionModel.insert(txn, jobSubjectId, "Definition");
416
+ styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert(txn);
417
+ differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", { font: { name: "Karla" }, textHeight: 0.5, isBold: true }).insert(txn);
418
+ });
400
419
  expect(jobSubjectId).not.to.be.undefined;
401
420
  expect(definitionModel).not.to.be.undefined;
402
421
  expect(styleId).not.to.be.undefined;
@@ -406,14 +425,15 @@ describe("TextAnnotation element", () => {
406
425
  seedStyleId = styleId;
407
426
  seedStyleId2 = differentStyleId;
408
427
  });
409
- after(() => {
410
- imodel.saveChanges("tests");
411
- imodel.close();
412
- });
428
+ after(() => imodel.close());
413
429
  describe("TextAnnotation2d", () => {
414
430
  let createElement2dArgs;
415
431
  before(() => {
416
- const { category, model } = insertDrawingModel(imodel, seedSubjectId, seedDefinitionModelId);
432
+ let category;
433
+ let model;
434
+ withEditTxn(imodel, (txn) => {
435
+ ({ category, model } = insertDrawingModel(txn, seedSubjectId, seedDefinitionModelId));
436
+ });
417
437
  expect(category).not.to.be.undefined;
418
438
  expect(model).not.to.be.undefined;
419
439
  createElement2dArgs = { category, model };
@@ -424,7 +444,7 @@ describe("TextAnnotation element", () => {
424
444
  const el0 = createElement2d(imodel, args);
425
445
  expect(el0.defaultTextStyle).not.to.be.undefined;
426
446
  expect(el0.defaultTextStyle.id).to.equal(seedStyleId);
427
- el0.insert();
447
+ withEditTxn(imodel, (txn) => el0.insert(txn));
428
448
  const el1 = imodel.elements.getElement(el0.id);
429
449
  expect(el1).not.to.be.undefined;
430
450
  expect(el1.defaultTextStyle).not.to.be.undefined;
@@ -446,7 +466,7 @@ describe("TextAnnotation element", () => {
446
466
  const args = { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() };
447
467
  const el0 = createElement2d(imodel, args);
448
468
  el0.defaultTextStyle = undefined;
449
- const elId = el0.insert();
469
+ const elId = withEditTxn(imodel, (txn) => el0.insert(txn));
450
470
  expect(Id64.isValidId64(elId)).to.be.true;
451
471
  const el1 = imodel.elements.getElement(elId);
452
472
  expect(el1).not.to.be.undefined;
@@ -456,10 +476,11 @@ describe("TextAnnotation element", () => {
456
476
  describe("onCloned", () => {
457
477
  function insertStyledElement(styleId, db) {
458
478
  const args = { ...createElement2dArgs, defaultTextStyleId: styleId };
459
- const elem = createElement2d(db, args);
460
- elem.insert();
461
- imodel.saveChanges();
462
- return elem;
479
+ return withEditTxn(db, (txn) => {
480
+ const elem = createElement2d(db, args);
481
+ elem.insert(txn);
482
+ return elem;
483
+ });
463
484
  }
464
485
  describe("within a single iModel", () => {
465
486
  it("leaves property hosts intact", async () => {
@@ -487,8 +508,7 @@ describe("TextAnnotation element", () => {
487
508
  });
488
509
  const annotation = TextAnnotation.create({ textBlock, });
489
510
  const elem = createElement2d(imodel, { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() });
490
- elem.insert();
491
- imodel.saveChanges();
511
+ withEditTxn(imodel, (txn) => elem.insert(txn));
492
512
  const context = new IModelElementCloneContext(imodel);
493
513
  context.remapElement("0x123", "0x456");
494
514
  context.remapElement("0xabc", "0xdef");
@@ -527,9 +547,14 @@ describe("TextAnnotation element", () => {
527
547
  let dstElemArgs;
528
548
  before(async () => {
529
549
  dstDb = await createIModel("CloneTarget");
530
- const jobSubjectId = createJobSubjectElement(dstDb, "Job").insert();
531
- dstDefModel = DefinitionModel.insert(dstDb, jobSubjectId, "Definition");
532
- const { category, model } = insertDrawingModel(dstDb, jobSubjectId, dstDefModel);
550
+ let jobSubjectId;
551
+ let category;
552
+ let model;
553
+ withEditTxn(dstDb, (txn) => {
554
+ jobSubjectId = createJobSubjectElement(dstDb, "Job").insert(txn);
555
+ dstDefModel = DefinitionModel.insert(txn, jobSubjectId, "Definition");
556
+ ({ category, model } = insertDrawingModel(txn, jobSubjectId, dstDefModel));
557
+ });
533
558
  expect(category).not.to.equal(createElement2dArgs.category);
534
559
  expect(model).not.to.equal(createElement2dArgs.model);
535
560
  dstElemArgs = { category, model };
@@ -560,8 +585,7 @@ describe("TextAnnotation element", () => {
560
585
  });
561
586
  const annotation = TextAnnotation.create({ textBlock });
562
587
  const elem = createElement2d(imodel, { ...createElement2dArgs, textAnnotationProps: annotation.toJSON() });
563
- elem.insert();
564
- imodel.saveChanges();
588
+ withEditTxn(imodel, (txn) => elem.insert(txn));
565
589
  const context = new IModelElementCloneContext(imodel, dstDb);
566
590
  context.remapElement("0x123", "0x456");
567
591
  context.remapElement("0xabc", "0xdef");
@@ -581,7 +605,7 @@ describe("TextAnnotation element", () => {
581
605
  expect(props.defaultTextStyle).to.be.undefined;
582
606
  });
583
607
  it("remaps to an existing text style with the same code if present", async () => {
584
- const dstStyleId = createAnnotationTextStyle(dstDb, dstDefModel, "test", { font: { name: "Karla" } }).insert();
608
+ const dstStyleId = withEditTxn(dstDb, (txn) => createAnnotationTextStyle(dstDb, dstDefModel, "test", { font: { name: "Karla" } }).insert(txn));
585
609
  expect(dstStyleId).not.to.equal(seedStyleId);
586
610
  const srcElem = insertStyledElement(seedStyleId, imodel);
587
611
  const context = new IModelElementCloneContext(imodel, dstDb);
@@ -600,29 +624,35 @@ describe("TextAnnotation element", () => {
600
624
  const context = new IModelElementCloneContext(imodel, dstDb);
601
625
  context.remapElement(createElement2dArgs.model, dstElemArgs.model);
602
626
  context.remapElement(seedDefinitionModelId, dstDefModel);
627
+ const txn = new EditTxn(dstDb, "import default text style if necessary");
628
+ txn.start();
603
629
  const props = await context.cloneElement(srcElem);
630
+ txn.end();
604
631
  const dstStyleId = props.defaultTextStyle.id;
605
632
  expect(dstStyleId).not.to.be.undefined;
606
633
  expect(dstStyleId).not.to.equal(seedStyleId2);
607
634
  expect(dstDb.elements.tryGetElement(dstStyleId)).not.to.be.undefined;
608
635
  });
609
636
  it("remaps multiple occurrences of same style to same Id", async () => {
610
- const srcStyleId = createAnnotationTextStyle(imodel, seedDefinitionModelId, "styyyle", { font: { name: "Karla" } }).insert();
637
+ const srcStyleId = withEditTxn(imodel, (editTxn) => createAnnotationTextStyle(imodel, seedDefinitionModelId, "styyyle", { font: { name: "Karla" } }).insert(editTxn));
611
638
  const srcElem1 = insertStyledElement(srcStyleId, imodel);
612
639
  const srcElem2 = insertStyledElement(srcStyleId, imodel);
613
640
  const srcElem3 = insertStyledElement(srcStyleId, imodel);
614
641
  const context = new IModelElementCloneContext(imodel, dstDb);
615
642
  context.remapElement(createElement2dArgs.model, dstElemArgs.model);
616
643
  context.remapElement(seedDefinitionModelId, dstDefModel);
644
+ const context2 = new IModelElementCloneContext(imodel, dstDb);
645
+ context2.remapElement(createElement2dArgs.model, dstElemArgs.model);
646
+ context2.remapElement(seedDefinitionModelId, dstDefModel);
647
+ const txn = new EditTxn(dstDb, "remap repeated text styles");
648
+ txn.start();
617
649
  const props1 = await context.cloneElement(srcElem1);
618
650
  const props2 = await context.cloneElement(srcElem2);
651
+ const props3 = await context2.cloneElement(srcElem3);
652
+ txn.end();
619
653
  expect(props1.defaultTextStyle).not.to.be.undefined;
620
654
  expect(props1.defaultTextStyle?.id).not.to.equal(srcStyleId);
621
655
  expect(props2.defaultTextStyle?.id).to.equal(props1.defaultTextStyle?.id);
622
- const context2 = new IModelElementCloneContext(imodel, dstDb);
623
- context2.remapElement(createElement2dArgs.model, dstElemArgs.model);
624
- context2.remapElement(seedDefinitionModelId, dstDefModel);
625
- const props3 = await context2.cloneElement(srcElem3);
626
656
  expect(props3.defaultTextStyle?.id).to.equal(props1.defaultTextStyle?.id);
627
657
  });
628
658
  });
@@ -631,7 +661,11 @@ describe("TextAnnotation element", () => {
631
661
  describe("TextAnnotation3d", () => {
632
662
  let createElement3dArgs;
633
663
  before(() => {
634
- const { category, model } = insertSpatialModel(imodel, seedSubjectId, seedDefinitionModelId);
664
+ let category;
665
+ let model;
666
+ withEditTxn(imodel, (txn) => {
667
+ ({ category, model } = insertSpatialModel(txn, seedSubjectId, seedDefinitionModelId));
668
+ });
635
669
  expect(category).not.to.be.undefined;
636
670
  expect(model).not.to.be.undefined;
637
671
  createElement3dArgs = { category, model };
@@ -642,7 +676,7 @@ describe("TextAnnotation element", () => {
642
676
  const el0 = createElement3d(imodel, args);
643
677
  expect(el0.defaultTextStyle).not.to.be.undefined;
644
678
  expect(el0.defaultTextStyle.id).to.equal(seedStyleId);
645
- el0.insert();
679
+ withEditTxn(imodel, (txn) => el0.insert(txn));
646
680
  const el1 = imodel.elements.getElement(el0.id);
647
681
  expect(el1).not.to.be.undefined;
648
682
  expect(el1.defaultTextStyle).not.to.be.undefined;
@@ -664,7 +698,7 @@ describe("TextAnnotation element", () => {
664
698
  const args = { ...createElement3dArgs, textAnnotationProps: annotation.toJSON() };
665
699
  const el0 = createElement3d(imodel, args);
666
700
  el0.defaultTextStyle = undefined;
667
- const elId = el0.insert();
701
+ const elId = withEditTxn(imodel, (txn) => el0.insert(txn));
668
702
  expect(Id64.isValidId64(elId)).to.be.true;
669
703
  const el1 = imodel.elements.getElement(elId);
670
704
  expect(el1).not.to.be.undefined;
@@ -680,8 +714,12 @@ describe("AnnotationTextStyle", () => {
680
714
  let seedDefinitionModel;
681
715
  before(async () => {
682
716
  imodel = await createIModel("AnnotationTextStyle");
683
- const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
684
- const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
717
+ let jobSubjectId;
718
+ let definitionModel;
719
+ withEditTxn(imodel, (txn) => {
720
+ jobSubjectId = createJobSubjectElement(imodel, "Job").insert(txn);
721
+ definitionModel = DefinitionModel.insert(txn, jobSubjectId, "Definition");
722
+ });
685
723
  expect(jobSubjectId).not.to.be.undefined;
686
724
  expect(definitionModel).not.to.be.undefined;
687
725
  seedSubjectId = jobSubjectId;
@@ -697,7 +735,7 @@ describe("AnnotationTextStyle", () => {
697
735
  textHeight: 0.5
698
736
  });
699
737
  const el0 = createAnnotationTextStyle(imodel, seedDefinitionModel, "round-trip", textStyle.toJSON());
700
- const elId = el0.insert();
738
+ const elId = withEditTxn(imodel, (txn) => el0.insert(txn));
701
739
  expect(Id64.isValidId64(elId)).to.be.true;
702
740
  const el1 = imodel.elements.getElement(elId);
703
741
  expect(el1).not.to.be.undefined;
@@ -707,36 +745,40 @@ describe("AnnotationTextStyle", () => {
707
745
  expect(style.toJSON()).to.deep.equal(textStyle.toJSON());
708
746
  });
709
747
  it("does not allow elements with invalid styles to be inserted", async () => {
710
- // Default style should fail since it has no font
711
- let annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "default");
712
- expect(() => annotationTextStyle.insert()).to.throw();
713
- // font is required
714
- annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "no font", { font: { name: "" } });
715
- expect(() => annotationTextStyle.insert()).to.throw();
716
- // textHeight should be positive
717
- annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid textHeight", { font: { name: "Totally Real Font" }, textHeight: 0 });
718
- expect(() => annotationTextStyle.insert()).to.throw();
719
- // stackedFractionScale should be positive
720
- annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid stackedFractionScale", { font: { name: "Totally Real Font" }, stackedFractionScale: 0 });
721
- expect(() => annotationTextStyle.insert()).to.throw();
748
+ withEditTxn(imodel, (txn) => {
749
+ // Default style should fail since it has no font
750
+ let annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "default");
751
+ expect(() => annotationTextStyle.insert(txn)).to.throw();
752
+ // font is required
753
+ annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "no font", { font: { name: "" } });
754
+ expect(() => annotationTextStyle.insert(txn)).to.throw();
755
+ // textHeight should be positive
756
+ annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid textHeight", { font: { name: "Totally Real Font" }, textHeight: 0 });
757
+ expect(() => annotationTextStyle.insert(txn)).to.throw();
758
+ // stackedFractionScale should be positive
759
+ annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "invalid stackedFractionScale", { font: { name: "Totally Real Font" }, stackedFractionScale: 0 });
760
+ expect(() => annotationTextStyle.insert(txn)).to.throw();
761
+ });
722
762
  });
723
763
  it("does not allow updating of elements to invalid styles", async () => {
724
764
  const annotationTextStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "valid style", { font: { name: "Totally Real Font" } });
725
- const elId = annotationTextStyle.insert();
765
+ const elId = withEditTxn(imodel, (txn) => annotationTextStyle.insert(txn));
726
766
  expect(Id64.isValidId64(elId)).to.be.true;
727
- const el1 = imodel.elements.getElement(elId);
728
- expect(el1).not.to.be.undefined;
729
- expect(el1 instanceof AnnotationTextStyle).to.be.true;
730
- el1.settings = el1.settings.clone({ font: { name: "" } });
731
- expect(() => el1.update()).to.throw();
732
- el1.settings = el1.settings.clone({ font: { name: "Totally Real Font" }, textHeight: 0 });
733
- expect(() => el1.update()).to.throw();
734
- el1.settings = el1.settings.clone({ textHeight: 2, stackedFractionScale: 0 });
735
- expect(() => el1.update()).to.throw();
736
- el1.settings = el1.settings.clone({ stackedFractionScale: 0.45 });
737
- el1.update();
767
+ withEditTxn(imodel, (txn) => {
768
+ const el1 = imodel.elements.getElement(elId);
769
+ expect(el1).not.to.be.undefined;
770
+ expect(el1 instanceof AnnotationTextStyle).to.be.true;
771
+ el1.settings = el1.settings.clone({ font: { name: "" } });
772
+ expect(() => el1.update(txn)).to.throw();
773
+ el1.settings = el1.settings.clone({ font: { name: "Totally Real Font" }, textHeight: 0 });
774
+ expect(() => el1.update(txn)).to.throw();
775
+ el1.settings = el1.settings.clone({ textHeight: 2, stackedFractionScale: 0 });
776
+ expect(() => el1.update(txn)).to.throw();
777
+ el1.settings = el1.settings.clone({ stackedFractionScale: 0.45 });
778
+ el1.update(txn);
779
+ });
738
780
  const updatedElement = imodel.elements.getElement(elId);
739
- expect(updatedElement.settings.toJSON()).to.deep.equal(el1.settings.toJSON());
781
+ expect(updatedElement.settings.stackedFractionScale).to.equal(0.45);
740
782
  });
741
783
  it("uses default style if none specified", async () => {
742
784
  const el0 = AnnotationTextStyle.fromJSON({
@@ -870,13 +912,17 @@ describe("AnnotationTextStyle", () => {
870
912
  before(async () => {
871
913
  // The source and target iModel will both contain the Karla font family.
872
914
  targetDb = await createIModel("AnnotationTextStyleTargetDb");
873
- const jobSubjectId = createJobSubjectElement(targetDb, "Job").insert();
874
- targetDefModel = DefinitionModel.insert(targetDb, jobSubjectId, "Definition");
915
+ withEditTxn(targetDb, (txn) => {
916
+ const jobSubjectId = createJobSubjectElement(targetDb, "Job").insert(txn);
917
+ targetDefModel = DefinitionModel.insert(txn, jobSubjectId, "Definition");
918
+ });
875
919
  // Embed a font into the source iModel that doesn't exist in the target iModel.
876
920
  const shxName = IModelTestUtils.resolveFontFile("Cdm.shx");
877
921
  const shxBlob = fs.readFileSync(shxName);
878
922
  const shxFile = FontFile.createFromShxFontBlob({ blob: shxBlob, familyName: "Cdm" });
879
- await imodel.fonts.embedFontFile({ file: shxFile });
923
+ await withEditTxn(imodel, async () => {
924
+ await imodel.fonts.embedFontFile({ file: shxFile });
925
+ });
880
926
  });
881
927
  after(() => targetDb.close());
882
928
  it("embeds font into target Db if not already embedded", async () => {
@@ -893,9 +939,11 @@ describe("AnnotationTextStyle", () => {
893
939
  };
894
940
  const initialCounts = getFontCounts();
895
941
  const karlaStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "karla-style", TextStyleSettings.fromJSON({ font: { name: "Karla" } }));
896
- karlaStyle.insert();
897
942
  const cdmStyle = createAnnotationTextStyle(imodel, seedDefinitionModel, "cdm-style", TextStyleSettings.fromJSON({ font: { name: "Cdm", type: FontType.Shx } }));
898
- cdmStyle.insert();
943
+ withEditTxn(imodel, (txn) => {
944
+ karlaStyle.insert(txn);
945
+ cdmStyle.insert(txn);
946
+ });
899
947
  const context = new IModelElementCloneContext(imodel, targetDb);
900
948
  context.remapElement(seedDefinitionModel, targetDefModel);
901
949
  expect(targetDb.fonts.findId({ name: "Karla" })).not.to.be.undefined;
@@ -919,11 +967,19 @@ describe("appendTextAnnotationGeometry", () => {
919
967
  let annotationRenderPriority;
920
968
  before(async () => {
921
969
  imodel = await createIModel("DefaultTextStyle");
922
- const jobSubjectId = createJobSubjectElement(imodel, "Job").insert();
923
- const definitionModel = DefinitionModel.insert(imodel, jobSubjectId, "Definition");
924
- const { category, model } = insertDrawingModel(imodel, jobSubjectId, definitionModel);
925
- const styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert();
926
- const differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", { font: { name: "Karla" }, textHeight: 0.5, isBold: true }).insert();
970
+ let jobSubjectId;
971
+ let definitionModel;
972
+ let category;
973
+ let model;
974
+ let styleId;
975
+ let differentStyleId;
976
+ withEditTxn(imodel, (txn) => {
977
+ jobSubjectId = createJobSubjectElement(imodel, "Job").insert(txn);
978
+ definitionModel = DefinitionModel.insert(txn, jobSubjectId, "Definition");
979
+ ({ category, model } = insertDrawingModel(txn, jobSubjectId, definitionModel));
980
+ styleId = createAnnotationTextStyle(imodel, definitionModel, "test", { font: { name: "Totally Real Font" }, textHeight: 0.25, isItalic: true }).insert(txn);
981
+ differentStyleId = createAnnotationTextStyle(imodel, definitionModel, "alt", { font: { name: "Karla" }, textHeight: 0.5, isBold: true }).insert(txn);
982
+ });
927
983
  expect(jobSubjectId).not.to.be.undefined;
928
984
  expect(definitionModel).not.to.be.undefined;
929
985
  expect(category).not.to.be.undefined;
@@ -978,12 +1034,13 @@ describe("appendTextAnnotationGeometry", () => {
978
1034
  it("produces geometry when given an empty annotation with frame styling", () => {
979
1035
  const block = TextBlock.create();
980
1036
  const annotation = TextAnnotation.fromJSON({ textBlock: block.toJSON() });
981
- const styleId = createAnnotationTextStyle(imodel, seedDefinitionModelId, "empty anno style", {
1037
+ const style = createAnnotationTextStyle(imodel, seedDefinitionModelId, "empty anno style", {
982
1038
  font: { name: "Totally Real Font" },
983
1039
  frame: {
984
1040
  shape: "rectangle",
985
1041
  }
986
- }).insert();
1042
+ });
1043
+ const styleId = withEditTxn(imodel, (txn) => style.insert(txn));
987
1044
  const builder = runAppendTextAnnotationGeometry(annotation, styleId);
988
1045
  expect(builder.geometries).not.to.be.empty;
989
1046
  expect(builder.params).not.to.be.empty;