@itwin/core-backend 5.9.0-dev.1 → 5.9.0-dev.11

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 (752) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +38 -0
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  6. package/lib/cjs/BisCoreSchema.js.map +1 -1
  7. package/lib/cjs/BlobContainerService.js.map +1 -1
  8. package/lib/cjs/BriefcaseManager.js +3 -3
  9. package/lib/cjs/BriefcaseManager.js.map +1 -1
  10. package/lib/cjs/CatalogDb.js.map +1 -1
  11. package/lib/cjs/Category.d.ts +37 -7
  12. package/lib/cjs/Category.d.ts.map +1 -1
  13. package/lib/cjs/Category.js +33 -42
  14. package/lib/cjs/Category.js.map +1 -1
  15. package/lib/cjs/ChangeSummaryManager.js +2 -2
  16. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  17. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  18. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  19. package/lib/cjs/ChangesetECAdaptor.js +253 -250
  20. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  21. package/lib/cjs/ChannelControl.d.ts +29 -0
  22. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  23. package/lib/cjs/ChannelControl.js.map +1 -1
  24. package/lib/cjs/CheckpointManager.js +1 -1
  25. package/lib/cjs/CheckpointManager.js.map +1 -1
  26. package/lib/cjs/ClassRegistry.js +5 -5
  27. package/lib/cjs/ClassRegistry.js.map +1 -1
  28. package/lib/cjs/CloudSqlite.d.ts +1 -1
  29. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  30. package/lib/cjs/CloudSqlite.js +68 -13
  31. package/lib/cjs/CloudSqlite.js.map +1 -1
  32. package/lib/cjs/CodeService.js.map +1 -1
  33. package/lib/cjs/CodeSpecs.d.ts +32 -3
  34. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  35. package/lib/cjs/CodeSpecs.js +48 -20
  36. package/lib/cjs/CodeSpecs.js.map +1 -1
  37. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  38. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  39. package/lib/cjs/DevTools.js.map +1 -1
  40. package/lib/cjs/DisplayStyle.d.ts +18 -3
  41. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  42. package/lib/cjs/DisplayStyle.js +10 -21
  43. package/lib/cjs/DisplayStyle.js.map +1 -1
  44. package/lib/cjs/ECDb.js.map +1 -1
  45. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  46. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  47. package/lib/cjs/ECSqlStatement.js.map +1 -1
  48. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  49. package/lib/cjs/EditTxn.d.ts +262 -0
  50. package/lib/cjs/EditTxn.d.ts.map +1 -0
  51. package/lib/cjs/EditTxn.js +548 -0
  52. package/lib/cjs/EditTxn.js.map +1 -0
  53. package/lib/cjs/Element.d.ts +74 -5
  54. package/lib/cjs/Element.d.ts.map +1 -1
  55. package/lib/cjs/Element.js +63 -75
  56. package/lib/cjs/Element.js.map +1 -1
  57. package/lib/cjs/ElementAspect.d.ts +10 -0
  58. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  59. package/lib/cjs/ElementAspect.js +21 -12
  60. package/lib/cjs/ElementAspect.js.map +1 -1
  61. package/lib/cjs/ElementGraphics.js.map +1 -1
  62. package/lib/cjs/ElementTreeWalker.d.ts +56 -3
  63. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  64. package/lib/cjs/ElementTreeWalker.js +53 -40
  65. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  66. package/lib/cjs/Entity.js.map +1 -1
  67. package/lib/cjs/EntityReferences.js.map +1 -1
  68. package/lib/cjs/ExportGraphics.js.map +1 -1
  69. package/lib/cjs/ExternalSource.d.ts +11 -2
  70. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  71. package/lib/cjs/ExternalSource.js +10 -8
  72. package/lib/cjs/ExternalSource.js.map +1 -1
  73. package/lib/cjs/FontFile.js.map +1 -1
  74. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  75. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  76. package/lib/cjs/GeometrySummary.js +47 -47
  77. package/lib/cjs/GeometrySummary.js.map +1 -1
  78. package/lib/cjs/IModelDb.d.ts +74 -23
  79. package/lib/cjs/IModelDb.d.ts.map +1 -1
  80. package/lib/cjs/IModelDb.js +193 -297
  81. package/lib/cjs/IModelDb.js.map +1 -1
  82. package/lib/cjs/IModelDbFonts.js.map +1 -1
  83. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  84. package/lib/cjs/IModelHost.d.ts +58 -1
  85. package/lib/cjs/IModelHost.d.ts.map +1 -1
  86. package/lib/cjs/IModelHost.js +89 -0
  87. package/lib/cjs/IModelHost.js.map +1 -1
  88. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  89. package/lib/cjs/IModelJsFs.js.map +1 -1
  90. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  91. package/lib/cjs/IpcHost.d.ts.map +1 -1
  92. package/lib/cjs/IpcHost.js +35 -15
  93. package/lib/cjs/IpcHost.js.map +1 -1
  94. package/lib/cjs/LineStyle.d.ts +47 -7
  95. package/lib/cjs/LineStyle.d.ts.map +1 -1
  96. package/lib/cjs/LineStyle.js +38 -33
  97. package/lib/cjs/LineStyle.js.map +1 -1
  98. package/lib/cjs/LocalHub.js +1 -1
  99. package/lib/cjs/LocalHub.js.map +1 -1
  100. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  101. package/lib/cjs/LockControl.d.ts +85 -1
  102. package/lib/cjs/LockControl.d.ts.map +1 -1
  103. package/lib/cjs/LockControl.js.map +1 -1
  104. package/lib/cjs/Material.d.ts +8 -1
  105. package/lib/cjs/Material.d.ts.map +1 -1
  106. package/lib/cjs/Material.js +6 -12
  107. package/lib/cjs/Material.js.map +1 -1
  108. package/lib/cjs/Model.d.ts +59 -20
  109. package/lib/cjs/Model.d.ts.map +1 -1
  110. package/lib/cjs/Model.js +38 -80
  111. package/lib/cjs/Model.js.map +1 -1
  112. package/lib/cjs/NativeAppStorage.js.map +1 -1
  113. package/lib/cjs/NativeHost.js.map +1 -1
  114. package/lib/cjs/NavigationRelationship.js.map +1 -1
  115. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  116. package/lib/cjs/PropertyStore.js.map +1 -1
  117. package/lib/cjs/Relationship.d.ts +72 -7
  118. package/lib/cjs/Relationship.d.ts.map +1 -1
  119. package/lib/cjs/Relationship.js +39 -21
  120. package/lib/cjs/Relationship.js.map +1 -1
  121. package/lib/cjs/RpcBackend.js.map +1 -1
  122. package/lib/cjs/SQLiteDb.js.map +1 -1
  123. package/lib/cjs/Schema.js.map +1 -1
  124. package/lib/cjs/SchemaSync.js +4 -4
  125. package/lib/cjs/SchemaSync.js.map +1 -1
  126. package/lib/cjs/SchemaUtils.js.map +1 -1
  127. package/lib/cjs/SheetIndex.d.ts +9 -0
  128. package/lib/cjs/SheetIndex.d.ts.map +1 -1
  129. package/lib/cjs/SheetIndex.js +38 -35
  130. package/lib/cjs/SheetIndex.js.map +1 -1
  131. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  132. package/lib/cjs/SqliteStatement.js.map +1 -1
  133. package/lib/cjs/StashManager.js +1 -1
  134. package/lib/cjs/StashManager.js.map +1 -1
  135. package/lib/cjs/Texture.d.ts +6 -0
  136. package/lib/cjs/Texture.d.ts.map +1 -1
  137. package/lib/cjs/Texture.js +6 -14
  138. package/lib/cjs/Texture.js.map +1 -1
  139. package/lib/cjs/TileStorage.js.map +1 -1
  140. package/lib/cjs/TxnManager.d.ts +105 -9
  141. package/lib/cjs/TxnManager.d.ts.map +1 -1
  142. package/lib/cjs/TxnManager.js +194 -15
  143. package/lib/cjs/TxnManager.js.map +1 -1
  144. package/lib/cjs/ViewDefinition.d.ts +21 -1
  145. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  146. package/lib/cjs/ViewDefinition.js +27 -66
  147. package/lib/cjs/ViewDefinition.js.map +1 -1
  148. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  149. package/lib/cjs/ViewStore.js.map +1 -1
  150. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  151. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  152. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
  153. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  154. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  155. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  156. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  157. package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
  158. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  159. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  160. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  161. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  162. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  163. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  164. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  165. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  166. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  167. package/lib/cjs/core-backend.d.ts +1 -0
  168. package/lib/cjs/core-backend.d.ts.map +1 -1
  169. package/lib/cjs/core-backend.js +1 -0
  170. package/lib/cjs/core-backend.js.map +1 -1
  171. package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
  172. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  173. package/lib/cjs/domains/FunctionalElements.js +8 -13
  174. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  175. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  176. package/lib/cjs/domains/GenericElements.d.ts +11 -4
  177. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  178. package/lib/cjs/domains/GenericElements.js +13 -24
  179. package/lib/cjs/domains/GenericElements.js.map +1 -1
  180. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  181. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  182. package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
  183. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  184. package/lib/cjs/internal/ChannelAdmin.js +5 -3
  185. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  186. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  187. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  188. package/lib/cjs/internal/HubMock.d.ts +2 -0
  189. package/lib/cjs/internal/HubMock.d.ts.map +1 -1
  190. package/lib/cjs/internal/HubMock.js +7 -0
  191. package/lib/cjs/internal/HubMock.js.map +1 -1
  192. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  193. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  194. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  195. package/lib/cjs/internal/NoLocks.d.ts.map +1 -1
  196. package/lib/cjs/internal/NoLocks.js +6 -0
  197. package/lib/cjs/internal/NoLocks.js.map +1 -1
  198. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  199. package/lib/cjs/internal/ServerBasedLocks.d.ts +12 -0
  200. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
  201. package/lib/cjs/internal/ServerBasedLocks.js +285 -4
  202. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  203. package/lib/cjs/internal/Symbols.d.ts +4 -0
  204. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  205. package/lib/cjs/internal/Symbols.js +5 -1
  206. package/lib/cjs/internal/Symbols.js.map +1 -1
  207. package/lib/cjs/internal/annotations/fields.d.ts +3 -2
  208. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  209. package/lib/cjs/internal/annotations/fields.js +7 -6
  210. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  211. package/lib/cjs/internal/cross-package.js.map +1 -1
  212. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts +18 -3
  213. package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
  214. package/lib/cjs/internal/workspace/SettingsEditorImpl.js +49 -242
  215. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  216. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -1
  217. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  218. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  219. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +0 -1
  220. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  221. package/lib/cjs/internal/workspace/WorkspaceImpl.js +70 -41
  222. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  223. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  224. package/lib/cjs/rpc/multipart.js.map +1 -1
  225. package/lib/cjs/rpc/tracing.js.map +1 -1
  226. package/lib/cjs/rpc/web/logging.js.map +1 -1
  227. package/lib/cjs/rpc/web/request.js.map +1 -1
  228. package/lib/cjs/rpc/web/response.js.map +1 -1
  229. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  230. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  231. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  232. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  233. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  234. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  235. package/lib/cjs/workspace/Settings.d.ts +11 -5
  236. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  237. package/lib/cjs/workspace/Settings.js.map +1 -1
  238. package/lib/cjs/workspace/SettingsDb.d.ts +20 -99
  239. package/lib/cjs/workspace/SettingsDb.d.ts.map +1 -1
  240. package/lib/cjs/workspace/SettingsDb.js +23 -7
  241. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  242. package/lib/cjs/workspace/SettingsEditor.d.ts +40 -226
  243. package/lib/cjs/workspace/SettingsEditor.d.ts.map +1 -1
  244. package/lib/cjs/workspace/SettingsEditor.js +86 -25
  245. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  246. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  247. package/lib/cjs/workspace/Workspace.d.ts +7 -11
  248. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  249. package/lib/cjs/workspace/Workspace.js.map +1 -1
  250. package/lib/cjs/workspace/WorkspaceEditor.d.ts +14 -0
  251. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  252. package/lib/cjs/workspace/WorkspaceEditor.js +1 -1
  253. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  254. package/lib/esm/BackendHubAccess.d.ts +38 -0
  255. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  256. package/lib/esm/BackendHubAccess.js.map +1 -1
  257. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  258. package/lib/esm/BisCoreSchema.js.map +1 -1
  259. package/lib/esm/BlobContainerService.js.map +1 -1
  260. package/lib/esm/BriefcaseManager.js +3 -3
  261. package/lib/esm/BriefcaseManager.js.map +1 -1
  262. package/lib/esm/CatalogDb.js.map +1 -1
  263. package/lib/esm/Category.d.ts +37 -7
  264. package/lib/esm/Category.d.ts.map +1 -1
  265. package/lib/esm/Category.js +33 -42
  266. package/lib/esm/Category.js.map +1 -1
  267. package/lib/esm/ChangeSummaryManager.js +2 -2
  268. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  269. package/lib/esm/ChangedElementsDb.js.map +1 -1
  270. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  271. package/lib/esm/ChangesetECAdaptor.js +253 -250
  272. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  273. package/lib/esm/ChannelControl.d.ts +29 -0
  274. package/lib/esm/ChannelControl.d.ts.map +1 -1
  275. package/lib/esm/ChannelControl.js.map +1 -1
  276. package/lib/esm/CheckpointManager.js +1 -1
  277. package/lib/esm/CheckpointManager.js.map +1 -1
  278. package/lib/esm/ClassRegistry.js +5 -5
  279. package/lib/esm/ClassRegistry.js.map +1 -1
  280. package/lib/esm/CloudSqlite.d.ts +1 -1
  281. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  282. package/lib/esm/CloudSqlite.js +69 -14
  283. package/lib/esm/CloudSqlite.js.map +1 -1
  284. package/lib/esm/CodeService.js.map +1 -1
  285. package/lib/esm/CodeSpecs.d.ts +32 -3
  286. package/lib/esm/CodeSpecs.d.ts.map +1 -1
  287. package/lib/esm/CodeSpecs.js +49 -21
  288. package/lib/esm/CodeSpecs.js.map +1 -1
  289. package/lib/esm/ConcurrentQuery.js.map +1 -1
  290. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  291. package/lib/esm/DevTools.js.map +1 -1
  292. package/lib/esm/DisplayStyle.d.ts +18 -3
  293. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  294. package/lib/esm/DisplayStyle.js +10 -21
  295. package/lib/esm/DisplayStyle.js.map +1 -1
  296. package/lib/esm/ECDb.js.map +1 -1
  297. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  298. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  299. package/lib/esm/ECSqlStatement.js.map +1 -1
  300. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  301. package/lib/esm/EditTxn.d.ts +262 -0
  302. package/lib/esm/EditTxn.d.ts.map +1 -0
  303. package/lib/esm/EditTxn.js +543 -0
  304. package/lib/esm/EditTxn.js.map +1 -0
  305. package/lib/esm/Element.d.ts +74 -5
  306. package/lib/esm/Element.d.ts.map +1 -1
  307. package/lib/esm/Element.js +64 -76
  308. package/lib/esm/Element.js.map +1 -1
  309. package/lib/esm/ElementAspect.d.ts +10 -0
  310. package/lib/esm/ElementAspect.d.ts.map +1 -1
  311. package/lib/esm/ElementAspect.js +22 -13
  312. package/lib/esm/ElementAspect.js.map +1 -1
  313. package/lib/esm/ElementGraphics.js.map +1 -1
  314. package/lib/esm/ElementTreeWalker.d.ts +56 -3
  315. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  316. package/lib/esm/ElementTreeWalker.js +53 -40
  317. package/lib/esm/ElementTreeWalker.js.map +1 -1
  318. package/lib/esm/Entity.js.map +1 -1
  319. package/lib/esm/EntityReferences.js.map +1 -1
  320. package/lib/esm/ExportGraphics.js.map +1 -1
  321. package/lib/esm/ExternalSource.d.ts +11 -2
  322. package/lib/esm/ExternalSource.d.ts.map +1 -1
  323. package/lib/esm/ExternalSource.js +10 -8
  324. package/lib/esm/ExternalSource.js.map +1 -1
  325. package/lib/esm/FontFile.js.map +1 -1
  326. package/lib/esm/GeoCoordConfig.js.map +1 -1
  327. package/lib/esm/GeographicCRSServices.js.map +1 -1
  328. package/lib/esm/GeometrySummary.js +47 -47
  329. package/lib/esm/GeometrySummary.js.map +1 -1
  330. package/lib/esm/IModelDb.d.ts +74 -23
  331. package/lib/esm/IModelDb.d.ts.map +1 -1
  332. package/lib/esm/IModelDb.js +195 -299
  333. package/lib/esm/IModelDb.js.map +1 -1
  334. package/lib/esm/IModelDbFonts.js.map +1 -1
  335. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  336. package/lib/esm/IModelHost.d.ts +58 -1
  337. package/lib/esm/IModelHost.d.ts.map +1 -1
  338. package/lib/esm/IModelHost.js +91 -2
  339. package/lib/esm/IModelHost.js.map +1 -1
  340. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  341. package/lib/esm/IModelJsFs.js.map +1 -1
  342. package/lib/esm/ImageSourceConversion.js.map +1 -1
  343. package/lib/esm/IpcHost.d.ts.map +1 -1
  344. package/lib/esm/IpcHost.js +36 -16
  345. package/lib/esm/IpcHost.js.map +1 -1
  346. package/lib/esm/LineStyle.d.ts +47 -7
  347. package/lib/esm/LineStyle.d.ts.map +1 -1
  348. package/lib/esm/LineStyle.js +38 -33
  349. package/lib/esm/LineStyle.js.map +1 -1
  350. package/lib/esm/LocalHub.js +1 -1
  351. package/lib/esm/LocalHub.js.map +1 -1
  352. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  353. package/lib/esm/LockControl.d.ts +85 -1
  354. package/lib/esm/LockControl.d.ts.map +1 -1
  355. package/lib/esm/LockControl.js.map +1 -1
  356. package/lib/esm/Material.d.ts +8 -1
  357. package/lib/esm/Material.d.ts.map +1 -1
  358. package/lib/esm/Material.js +6 -12
  359. package/lib/esm/Material.js.map +1 -1
  360. package/lib/esm/Model.d.ts +59 -20
  361. package/lib/esm/Model.d.ts.map +1 -1
  362. package/lib/esm/Model.js +39 -81
  363. package/lib/esm/Model.js.map +1 -1
  364. package/lib/esm/NativeAppStorage.js.map +1 -1
  365. package/lib/esm/NativeHost.js.map +1 -1
  366. package/lib/esm/NavigationRelationship.js.map +1 -1
  367. package/lib/esm/PromiseMemoizer.js.map +1 -1
  368. package/lib/esm/PropertyStore.js.map +1 -1
  369. package/lib/esm/Relationship.d.ts +72 -7
  370. package/lib/esm/Relationship.d.ts.map +1 -1
  371. package/lib/esm/Relationship.js +40 -22
  372. package/lib/esm/Relationship.js.map +1 -1
  373. package/lib/esm/RpcBackend.js.map +1 -1
  374. package/lib/esm/SQLiteDb.js.map +1 -1
  375. package/lib/esm/Schema.js.map +1 -1
  376. package/lib/esm/SchemaSync.js +5 -5
  377. package/lib/esm/SchemaSync.js.map +1 -1
  378. package/lib/esm/SchemaUtils.js.map +1 -1
  379. package/lib/esm/SheetIndex.d.ts +9 -0
  380. package/lib/esm/SheetIndex.d.ts.map +1 -1
  381. package/lib/esm/SheetIndex.js +38 -35
  382. package/lib/esm/SheetIndex.js.map +1 -1
  383. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  384. package/lib/esm/SqliteStatement.js.map +1 -1
  385. package/lib/esm/StashManager.js +1 -1
  386. package/lib/esm/StashManager.js.map +1 -1
  387. package/lib/esm/Texture.d.ts +6 -0
  388. package/lib/esm/Texture.d.ts.map +1 -1
  389. package/lib/esm/Texture.js +6 -14
  390. package/lib/esm/Texture.js.map +1 -1
  391. package/lib/esm/TileStorage.js.map +1 -1
  392. package/lib/esm/TxnManager.d.ts +105 -9
  393. package/lib/esm/TxnManager.d.ts.map +1 -1
  394. package/lib/esm/TxnManager.js +194 -15
  395. package/lib/esm/TxnManager.js.map +1 -1
  396. package/lib/esm/ViewDefinition.d.ts +21 -1
  397. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  398. package/lib/esm/ViewDefinition.js +27 -66
  399. package/lib/esm/ViewDefinition.js.map +1 -1
  400. package/lib/esm/ViewStateHydrator.js.map +1 -1
  401. package/lib/esm/ViewStore.js.map +1 -1
  402. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  403. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  404. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
  405. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  406. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  407. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  408. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  409. package/lib/esm/annotations/TextAnnotationElement.js +6 -5
  410. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  411. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  412. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  413. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  414. package/lib/esm/core-backend.d.ts +1 -0
  415. package/lib/esm/core-backend.d.ts.map +1 -1
  416. package/lib/esm/core-backend.js +1 -0
  417. package/lib/esm/core-backend.js.map +1 -1
  418. package/lib/esm/domains/FunctionalElements.d.ts +6 -2
  419. package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
  420. package/lib/esm/domains/FunctionalElements.js +8 -13
  421. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  422. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  423. package/lib/esm/domains/GenericElements.d.ts +11 -4
  424. package/lib/esm/domains/GenericElements.d.ts.map +1 -1
  425. package/lib/esm/domains/GenericElements.js +13 -24
  426. package/lib/esm/domains/GenericElements.js.map +1 -1
  427. package/lib/esm/domains/GenericSchema.js.map +1 -1
  428. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  429. package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
  430. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  431. package/lib/esm/internal/ChannelAdmin.js +6 -4
  432. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  433. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  434. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  435. package/lib/esm/internal/HubMock.d.ts +2 -0
  436. package/lib/esm/internal/HubMock.d.ts.map +1 -1
  437. package/lib/esm/internal/HubMock.js +7 -0
  438. package/lib/esm/internal/HubMock.js.map +1 -1
  439. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  440. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  441. package/lib/esm/internal/NativePlatform.js.map +1 -1
  442. package/lib/esm/internal/NoLocks.d.ts.map +1 -1
  443. package/lib/esm/internal/NoLocks.js +6 -0
  444. package/lib/esm/internal/NoLocks.js.map +1 -1
  445. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  446. package/lib/esm/internal/ServerBasedLocks.d.ts +12 -0
  447. package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
  448. package/lib/esm/internal/ServerBasedLocks.js +286 -5
  449. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  450. package/lib/esm/internal/Symbols.d.ts +4 -0
  451. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  452. package/lib/esm/internal/Symbols.js +4 -0
  453. package/lib/esm/internal/Symbols.js.map +1 -1
  454. package/lib/esm/internal/annotations/fields.d.ts +3 -2
  455. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  456. package/lib/esm/internal/annotations/fields.js +7 -6
  457. package/lib/esm/internal/annotations/fields.js.map +1 -1
  458. package/lib/esm/internal/cross-package.js.map +1 -1
  459. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts +18 -3
  460. package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
  461. package/lib/esm/internal/workspace/SettingsEditorImpl.js +52 -246
  462. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  463. package/lib/esm/internal/workspace/SettingsImpl.d.ts.map +1 -1
  464. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  465. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  466. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +0 -1
  467. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  468. package/lib/esm/internal/workspace/WorkspaceImpl.js +71 -41
  469. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  470. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  471. package/lib/esm/rpc/multipart.js.map +1 -1
  472. package/lib/esm/rpc/tracing.js.map +1 -1
  473. package/lib/esm/rpc/web/logging.js.map +1 -1
  474. package/lib/esm/rpc/web/request.js.map +1 -1
  475. package/lib/esm/rpc/web/response.js.map +1 -1
  476. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  477. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  478. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  479. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  480. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  481. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  482. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  483. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  484. package/lib/esm/test/AttachDb.test.js +11 -11
  485. package/lib/esm/test/AttachDb.test.js.map +1 -1
  486. package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
  487. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
  488. package/lib/esm/test/ElementDrivesElement.test.js +134 -119
  489. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  490. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  491. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  492. package/lib/esm/test/IModelHost.test.js +56 -2
  493. package/lib/esm/test/IModelHost.test.js.map +1 -1
  494. package/lib/esm/test/IModelTestUtils.d.ts +23 -23
  495. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  496. package/lib/esm/test/IModelTestUtils.js +466 -449
  497. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  498. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  499. package/lib/esm/test/IpcHost.test.js +112 -0
  500. package/lib/esm/test/IpcHost.test.js.map +1 -1
  501. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  502. package/lib/esm/test/PrintElementTree.js.map +1 -1
  503. package/lib/esm/test/PropertyDb.test.js +2 -2
  504. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  505. package/lib/esm/test/RevisionUtility.js.map +1 -1
  506. package/lib/esm/test/SchemaUtils.test.js +25 -25
  507. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  508. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  509. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +156 -147
  510. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  511. package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
  512. package/lib/esm/test/TestChangeSetUtility.js +11 -7
  513. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  514. package/lib/esm/test/TestEditTxn.d.ts +8 -0
  515. package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
  516. package/lib/esm/test/TestEditTxn.js +34 -0
  517. package/lib/esm/test/TestEditTxn.js.map +1 -0
  518. package/lib/esm/test/TestUtils.d.ts +1 -0
  519. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  520. package/lib/esm/test/TestUtils.js +8 -1
  521. package/lib/esm/test/TestUtils.js.map +1 -1
  522. package/lib/esm/test/annotations/Fields.test.js +135 -143
  523. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  524. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  525. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  526. package/lib/esm/test/annotations/TextAnnotation.test.js +156 -99
  527. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  528. package/lib/esm/test/annotations/TextBlock.test.js +5 -3
  529. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  530. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  531. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  532. package/lib/esm/test/categories/Category.test.js +63 -3
  533. package/lib/esm/test/categories/Category.test.js.map +1 -1
  534. package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
  535. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  536. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  537. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  538. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  539. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  540. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  541. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  542. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  543. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  544. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  545. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  546. package/lib/esm/test/ecdb/ECSqlAst.test.js +68 -67
  547. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  548. package/lib/esm/test/ecdb/ECSqlQuery.test.js +6 -6
  549. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  550. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -333
  551. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  552. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  553. package/lib/esm/test/ecdb/QueryReaders.test.js +47 -44
  554. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  555. package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
  556. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  557. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
  558. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
  559. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  560. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  561. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  562. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  563. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  564. package/lib/esm/test/element/DeleteDefinitionElements.test.js +159 -143
  565. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  566. package/lib/esm/test/element/ElementAspect.test.js +90 -82
  567. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  568. package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
  569. package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
  570. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  571. package/lib/esm/test/element/ElementRoundTrip.test.js +176 -177
  572. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  573. package/lib/esm/test/element/ExcludedElements.test.js +2 -2
  574. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  575. package/lib/esm/test/element/ExternalSource.test.js +40 -38
  576. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  577. package/lib/esm/test/element/NullStructArray.test.js +23 -22
  578. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  579. package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
  580. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  581. package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
  582. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  583. package/lib/esm/test/element/UrlLink.test.js +2 -2
  584. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  585. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  586. package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
  587. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  588. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +194 -155
  589. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  590. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
  591. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  592. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  593. package/lib/esm/test/hubaccess/Rebase.test.js +369 -303
  594. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  595. package/lib/esm/test/hubaccess/SemanticRebase.test.js +467 -392
  596. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  597. package/lib/esm/test/imageData.js.map +1 -1
  598. package/lib/esm/test/imodel/Code.test.js +31 -31
  599. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  600. package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
  601. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  602. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  603. package/lib/esm/test/imodel/IModel.test.js +463 -388
  604. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  605. package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
  606. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  607. package/lib/esm/test/imodel/SchemaXmlImport.test.js +77 -13
  608. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  609. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  610. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  611. package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
  612. package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
  613. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  614. package/lib/esm/test/index.d.ts +1 -0
  615. package/lib/esm/test/index.d.ts.map +1 -1
  616. package/lib/esm/test/index.js +1 -0
  617. package/lib/esm/test/index.js.map +1 -1
  618. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  619. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  620. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  621. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  622. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  623. package/lib/esm/test/rpc/response.test.js.map +1 -1
  624. package/lib/esm/test/schema/ClassRegistry.test.js +122 -121
  625. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  626. package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
  627. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  628. package/lib/esm/test/schema/GenericDomain.test.js +114 -94
  629. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  630. package/lib/esm/test/schema/IModelSchemaContext.test.js +11 -10
  631. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  632. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +226 -211
  633. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  634. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
  635. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
  636. package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
  637. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  638. package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
  639. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  640. package/lib/esm/test/standalone/ChangesetReader.test.js +242 -213
  641. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  642. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  643. package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
  644. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  645. package/lib/esm/test/standalone/Drawing.test.js +4 -3
  646. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  647. package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
  648. package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
  649. package/lib/esm/test/standalone/EditTxn.test.js +219 -0
  650. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
  651. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  652. package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
  653. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  654. package/lib/esm/test/standalone/ExportGraphics.test.js +40 -34
  655. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  656. package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
  657. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  658. package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
  659. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  660. package/lib/esm/test/standalone/HubMock.test.js +31 -25
  661. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  662. package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
  663. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  664. package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
  665. package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
  666. package/lib/esm/test/standalone/IModelWrite.test.js +211 -169
  667. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  668. package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts +2 -0
  669. package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts.map +1 -0
  670. package/lib/esm/test/standalone/ITwinWorkspace.test.js +236 -0
  671. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -0
  672. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
  673. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  674. package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
  675. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  676. package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
  677. package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
  678. package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
  679. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  680. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  681. package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
  682. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  683. package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
  684. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  685. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  686. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  687. package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
  688. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  689. package/lib/esm/test/standalone/ServerBasedLocks.test.js +928 -22
  690. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  691. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  692. package/lib/esm/test/standalone/Settings.test.js +26 -4
  693. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  694. package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
  695. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  696. package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
  697. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  698. package/lib/esm/test/standalone/StandaloneDb.test.js +27 -26
  699. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  700. package/lib/esm/test/standalone/Texture.test.js +5 -4
  701. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  702. package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
  703. package/lib/esm/test/standalone/TileCache.test.js +5 -3
  704. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  705. package/lib/esm/test/standalone/TileTree.test.js +35 -31
  706. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  707. package/lib/esm/test/standalone/TxnManager.test.js +700 -653
  708. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  709. package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
  710. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  711. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  712. package/lib/esm/test/standalone/Workspace.test.js +72 -22
  713. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  714. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  715. package/lib/esm/test/workspace/SettingsDb.test.js +28 -456
  716. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  717. package/lib/esm/workspace/Settings.d.ts +11 -5
  718. package/lib/esm/workspace/Settings.d.ts.map +1 -1
  719. package/lib/esm/workspace/Settings.js.map +1 -1
  720. package/lib/esm/workspace/SettingsDb.d.ts +20 -99
  721. package/lib/esm/workspace/SettingsDb.d.ts.map +1 -1
  722. package/lib/esm/workspace/SettingsDb.js +20 -6
  723. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  724. package/lib/esm/workspace/SettingsEditor.d.ts +40 -226
  725. package/lib/esm/workspace/SettingsEditor.d.ts.map +1 -1
  726. package/lib/esm/workspace/SettingsEditor.js +85 -24
  727. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  728. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  729. package/lib/esm/workspace/Workspace.d.ts +7 -11
  730. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  731. package/lib/esm/workspace/Workspace.js.map +1 -1
  732. package/lib/esm/workspace/WorkspaceEditor.d.ts +14 -0
  733. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  734. package/lib/esm/workspace/WorkspaceEditor.js +1 -1
  735. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  736. package/package.json +14 -14
  737. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts +0 -38
  738. package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
  739. package/lib/cjs/internal/workspace/SettingsDbImpl.js +0 -108
  740. package/lib/cjs/internal/workspace/SettingsDbImpl.js.map +0 -1
  741. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts +0 -14
  742. package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
  743. package/lib/cjs/internal/workspace/SettingsSqliteDb.js +0 -40
  744. package/lib/cjs/internal/workspace/SettingsSqliteDb.js.map +0 -1
  745. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts +0 -38
  746. package/lib/esm/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
  747. package/lib/esm/internal/workspace/SettingsDbImpl.js +0 -104
  748. package/lib/esm/internal/workspace/SettingsDbImpl.js.map +0 -1
  749. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts +0 -14
  750. package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
  751. package/lib/esm/internal/workspace/SettingsSqliteDb.js +0 -36
  752. package/lib/esm/internal/workspace/SettingsSqliteDb.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ import { SaveChangesArgs } from "@itwin/core-common";
2
+ import { EditTxn } from "../EditTxn";
3
+ import type { IModelDb } from "../IModelDb";
4
+ export declare function withEditTxn<T>(iModel: IModelDb, fn: (txn: EditTxn) => T): T;
5
+ export declare function withEditTxn<T>(iModel: IModelDb, saveArgs: string | SaveChangesArgs, fn: (txn: EditTxn) => T): T;
6
+ export declare function withEditTxn<T>(iModel: IModelDb, fn: (txn: EditTxn) => Promise<T>): Promise<T>;
7
+ export declare function withEditTxn<T>(iModel: IModelDb, saveArgs: string | SaveChangesArgs, fn: (txn: EditTxn) => Promise<T>): Promise<T>;
8
+ //# sourceMappingURL=TestEditTxn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestEditTxn.d.ts","sourceRoot":"","sources":["../../../src/test/TestEditTxn.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7E,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACjH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/F,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { EditTxn } from "../EditTxn";
6
+ export function withEditTxn(iModel, saveArgsOrFn, maybeFn) {
7
+ const saveArgs = "function" === typeof saveArgsOrFn ? undefined : saveArgsOrFn;
8
+ const fn = "function" === typeof saveArgsOrFn ? saveArgsOrFn : maybeFn;
9
+ if (undefined === fn)
10
+ throw new Error("withEditTxn requires a callback");
11
+ const txn = new EditTxn(iModel, "test");
12
+ txn.start();
13
+ try {
14
+ const result = fn(txn);
15
+ if (result instanceof Promise) {
16
+ return result.then((value) => {
17
+ txn.end("save", saveArgs);
18
+ return value;
19
+ }, (err) => {
20
+ if (txn.isActive)
21
+ txn.end("abandon");
22
+ throw err;
23
+ });
24
+ }
25
+ txn.end("save", saveArgs);
26
+ return result;
27
+ }
28
+ catch (err) {
29
+ if (txn.isActive)
30
+ txn.end("abandon");
31
+ throw err;
32
+ }
33
+ }
34
+ //# sourceMappingURL=TestEditTxn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestEditTxn.js","sourceRoot":"","sources":["../../../src/test/TestEditTxn.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAG/F,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAOrC,MAAM,UAAU,WAAW,CAAI,MAAgB,EAAE,YAA2E,EAAE,OAA0C;IACtK,MAAM,QAAQ,GAAG,UAAU,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/E,MAAM,EAAE,GAAG,UAAU,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;IAEvE,IAAI,SAAS,KAAK,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,GAAG,CAAC,KAAK,EAAE,CAAC;IAEZ,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC3B,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC1B,OAAO,KAAK,CAAC;YACf,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;gBACT,IAAI,GAAG,CAAC,QAAQ;oBACd,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAErB,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,CAAC,QAAQ;YACd,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAErB,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { SaveChangesArgs } from \"@itwin/core-common\";\r\nimport { EditTxn } from \"../EditTxn\";\r\nimport type { IModelDb } from \"../IModelDb\";\r\n\r\nexport function withEditTxn<T>(iModel: IModelDb, fn: (txn: EditTxn) => T): T;\r\nexport function withEditTxn<T>(iModel: IModelDb, saveArgs: string | SaveChangesArgs, fn: (txn: EditTxn) => T): T;\r\nexport function withEditTxn<T>(iModel: IModelDb, fn: (txn: EditTxn) => Promise<T>): Promise<T>;\r\nexport function withEditTxn<T>(iModel: IModelDb, saveArgs: string | SaveChangesArgs, fn: (txn: EditTxn) => Promise<T>): Promise<T>;\r\nexport function withEditTxn<T>(iModel: IModelDb, saveArgsOrFn: string | SaveChangesArgs | ((txn: EditTxn) => T | Promise<T>), maybeFn?: (txn: EditTxn) => T | Promise<T>): T | Promise<T> {\r\n const saveArgs = \"function\" === typeof saveArgsOrFn ? undefined : saveArgsOrFn;\r\n const fn = \"function\" === typeof saveArgsOrFn ? saveArgsOrFn : maybeFn;\r\n\r\n if (undefined === fn)\r\n throw new Error(\"withEditTxn requires a callback\");\r\n\r\n const txn = new EditTxn(iModel, \"test\");\r\n txn.start();\r\n\r\n try {\r\n const result = fn(txn);\r\n if (result instanceof Promise) {\r\n return result.then((value) => {\r\n txn.end(\"save\", saveArgs);\r\n return value;\r\n }, (err) => {\r\n if (txn.isActive)\r\n txn.end(\"abandon\");\r\n\r\n throw err;\r\n });\r\n }\r\n\r\n txn.end(\"save\", saveArgs);\r\n return result;\r\n } catch (err) {\r\n if (txn.isActive)\r\n txn.end(\"abandon\");\r\n\r\n throw err;\r\n }\r\n}\r\n\r\n"]}
@@ -20,6 +20,7 @@ export declare class DisableNativeAssertions implements Disposable {
20
20
  dispose(): void;
21
21
  }
22
22
  export declare class TestUtils {
23
+ private static shouldLogToConsole;
23
24
  static getCacheDir(fallback?: string | undefined): string | undefined;
24
25
  /** Handles the startup of IModelHost.
25
26
  * The provided config is used and will override any of the default values used in this method.
@@ -1 +1 @@
1
- {"version":3,"file":"TestUtils.d.ts","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"AASA,OAAO,EAAc,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG9D,mCAAmC;AACnC,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAO;gBACT,KAAK,EAAE,MAAM;IAKlB,GAAG;CAMX;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,OAAO,CAAqD;;IAM7D,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAQ/B,qGAAqG;IAC9F,OAAO,IAAI,IAAI;CAGvB;AAED,qBAAa,SAAS;WACN,WAAW,CAAC,QAAQ,GAAE,MAAM,GAAG,SAAqB;IAOlE;;;;;;OAMG;WACiB,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;WAOvD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;WAItC,YAAY;IAK1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAUnB,mBAAmB;WAInB,mBAAmB;CAGlC"}
1
+ {"version":3,"file":"TestUtils.d.ts","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"AASA,OAAO,EAAc,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG9D,mCAAmC;AACnC,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAO;gBACT,KAAK,EAAE,MAAM;IAKlB,GAAG;CAMX;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,OAAO,CAAqD;;IAM7D,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAQ/B,qGAAqG;IAC9F,OAAO,IAAI,IAAI;CAGvB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAInB,WAAW,CAAC,QAAQ,GAAE,MAAM,GAAG,SAAqB;IAOlE;;;;;;OAMG;WACiB,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;WAQvD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;WAItC,YAAY;IAQ1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAUnB,mBAAmB;WAInB,mBAAmB;CAGlC"}
@@ -46,6 +46,9 @@ export class DisableNativeAssertions {
46
46
  }
47
47
  }
48
48
  export class TestUtils {
49
+ static shouldLogToConsole() {
50
+ return process.env.ITWINJS_CORE_BACKEND_TEST_LOG_TO_CONSOLE === "1";
51
+ }
49
52
  static getCacheDir(fallback = undefined) {
50
53
  if (ProcessDetector.isMobileAppBackend) {
51
54
  return undefined; // Let the native side handle the cache.
@@ -63,13 +66,17 @@ export class TestUtils {
63
66
  const cfg = config ?? {};
64
67
  cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);
65
68
  cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.
69
+ cfg.implicitWriteEnforcement ??= "throw";
66
70
  await IModelHost.startup(cfg);
67
71
  }
68
72
  static async shutdownBackend() {
69
73
  return IModelHost.shutdown();
70
74
  }
71
75
  static setupLogging() {
72
- Logger.initializeToConsole();
76
+ if (TestUtils.shouldLogToConsole())
77
+ Logger.initializeToConsole();
78
+ else
79
+ Logger.initialize();
73
80
  Logger.setLevelDefault(LogLevel.Error);
74
81
  }
75
82
  static initDebugLogLevels(reset) {
@@ -1 +1 @@
1
- {"version":3,"file":"TestUtils.js","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport * as path from \"path\";\nimport { IModelJsNative, NativeLoggerCategory } from \"@bentley/imodeljs-native\";\nimport { BentleyLoggerCategory, Logger, LogLevel, ProcessDetector } from \"@itwin/core-bentley\";\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\nimport { IModelHost, IModelHostOptions } from \"../IModelHost\";\nimport { IModelNative } from \"../internal/NativePlatform\";\n\n/** Class for simple test timing */\nexport class Timer {\n private _label: string;\n private _start: Date;\n constructor(label: string) {\n this._label = `\\t${label}`;\n this._start = new Date();\n }\n\n public end() {\n const stop = new Date();\n const elapsed = stop.getTime() - this._start.getTime();\n // eslint-disable-next-line no-console\n console.log(`${this._label}: ${elapsed}ms`);\n }\n}\n\n/**\n * Disables native code assertions from firing. This can be used by tests that intentionally\n * test failing operations. If those failing operations raise assertions in native code, the test\n * would fail unexpectedly in a debug build. In that case the native code assertions can be disabled with\n * this class.\n */\nexport class DisableNativeAssertions implements Disposable {\n private _native: IModelJsNative.DisableNativeAssertions | undefined;\n\n constructor() {\n this._native = new IModelNative.platform.DisableNativeAssertions();\n }\n\n public [Symbol.dispose](): void {\n if (!this._native)\n return;\n\n this._native.dispose();\n this._native = undefined;\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose(): void {\n this[Symbol.dispose]();\n }\n}\n\nexport class TestUtils {\n public static getCacheDir(fallback: string | undefined = undefined) {\n if (ProcessDetector.isMobileAppBackend) {\n return undefined; // Let the native side handle the cache.\n }\n return fallback ?? path.join(__dirname, \".cache\"); // Set the cache dir to be under the lib directory.\n }\n\n /** Handles the startup of IModelHost.\n * The provided config is used and will override any of the default values used in this method.\n *\n * The default includes:\n * - cacheDir = path.join(__dirname, \".cache\")\n * - allowSharedChannel = false;\n */\n public static async startBackend(config?: IModelHostOptions): Promise<void> {\n const cfg = config ?? {};\n cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);\n cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.\n await IModelHost.startup(cfg);\n }\n\n public static async shutdownBackend(): Promise<void> {\n return IModelHost.shutdown();\n }\n\n public static setupLogging() {\n Logger.initializeToConsole();\n Logger.setLevelDefault(LogLevel.Error);\n }\n\n private static initDebugLogLevels(reset?: boolean) {\n Logger.setLevelDefault(reset ? LogLevel.Error : LogLevel.Warning);\n Logger.setLevel(BentleyLoggerCategory.Performance, reset ? LogLevel.Error : LogLevel.Info);\n Logger.setLevel(BackendLoggerCategory.IModelDb, reset ? LogLevel.Error : LogLevel.Trace);\n Logger.setLevel(NativeLoggerCategory.DgnCore, reset ? LogLevel.Error : LogLevel.Trace);\n Logger.setLevel(NativeLoggerCategory.BeSQLite, reset ? LogLevel.Error : LogLevel.Trace);\n }\n\n // Setup typical programmatic log level overrides here\n // Convenience method used to debug specific tests/fixtures\n public static setupDebugLogLevels() {\n TestUtils.initDebugLogLevels(false);\n }\n\n public static resetDebugLogLevels() {\n TestUtils.initDebugLogLevels(true);\n }\n}\n\n// The very first \"before\" run to initially setup the logging and initial backend.\nbefore(async () => {\n TestUtils.setupLogging();\n await TestUtils.startBackend();\n});\n\nafter(async () => {\n await TestUtils.shutdownBackend();\n});\n\n"]}
1
+ {"version":3,"file":"TestUtils.js","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as path from \"path\";\r\nimport { IModelJsNative, NativeLoggerCategory } from \"@bentley/imodeljs-native\";\r\nimport { BentleyLoggerCategory, Logger, LogLevel, ProcessDetector } from \"@itwin/core-bentley\";\r\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\r\nimport { IModelHost, IModelHostOptions } from \"../IModelHost\";\r\nimport { IModelNative } from \"../internal/NativePlatform\";\r\n\r\n/** Class for simple test timing */\r\nexport class Timer {\r\n private _label: string;\r\n private _start: Date;\r\n constructor(label: string) {\r\n this._label = `\\t${label}`;\r\n this._start = new Date();\r\n }\r\n\r\n public end() {\r\n const stop = new Date();\r\n const elapsed = stop.getTime() - this._start.getTime();\r\n // eslint-disable-next-line no-console\r\n console.log(`${this._label}: ${elapsed}ms`);\r\n }\r\n}\r\n\r\n/**\r\n * Disables native code assertions from firing. This can be used by tests that intentionally\r\n * test failing operations. If those failing operations raise assertions in native code, the test\r\n * would fail unexpectedly in a debug build. In that case the native code assertions can be disabled with\r\n * this class.\r\n */\r\nexport class DisableNativeAssertions implements Disposable {\r\n private _native: IModelJsNative.DisableNativeAssertions | undefined;\r\n\r\n constructor() {\r\n this._native = new IModelNative.platform.DisableNativeAssertions();\r\n }\r\n\r\n public [Symbol.dispose](): void {\r\n if (!this._native)\r\n return;\r\n\r\n this._native.dispose();\r\n this._native = undefined;\r\n }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose(): void {\r\n this[Symbol.dispose]();\r\n }\r\n}\r\n\r\nexport class TestUtils {\r\n private static shouldLogToConsole(): boolean {\r\n return process.env.ITWINJS_CORE_BACKEND_TEST_LOG_TO_CONSOLE === \"1\";\r\n }\r\n\r\n public static getCacheDir(fallback: string | undefined = undefined) {\r\n if (ProcessDetector.isMobileAppBackend) {\r\n return undefined; // Let the native side handle the cache.\r\n }\r\n return fallback ?? path.join(__dirname, \".cache\"); // Set the cache dir to be under the lib directory.\r\n }\r\n\r\n /** Handles the startup of IModelHost.\r\n * The provided config is used and will override any of the default values used in this method.\r\n *\r\n * The default includes:\r\n * - cacheDir = path.join(__dirname, \".cache\")\r\n * - allowSharedChannel = false;\r\n */\r\n public static async startBackend(config?: IModelHostOptions): Promise<void> {\r\n const cfg = config ?? {};\r\n cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);\r\n cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.\r\n cfg.implicitWriteEnforcement ??= \"throw\";\r\n await IModelHost.startup(cfg);\r\n }\r\n\r\n public static async shutdownBackend(): Promise<void> {\r\n return IModelHost.shutdown();\r\n }\r\n\r\n public static setupLogging() {\r\n if (TestUtils.shouldLogToConsole())\r\n Logger.initializeToConsole();\r\n else\r\n Logger.initialize();\r\n Logger.setLevelDefault(LogLevel.Error);\r\n }\r\n\r\n private static initDebugLogLevels(reset?: boolean) {\r\n Logger.setLevelDefault(reset ? LogLevel.Error : LogLevel.Warning);\r\n Logger.setLevel(BentleyLoggerCategory.Performance, reset ? LogLevel.Error : LogLevel.Info);\r\n Logger.setLevel(BackendLoggerCategory.IModelDb, reset ? LogLevel.Error : LogLevel.Trace);\r\n Logger.setLevel(NativeLoggerCategory.DgnCore, reset ? LogLevel.Error : LogLevel.Trace);\r\n Logger.setLevel(NativeLoggerCategory.BeSQLite, reset ? LogLevel.Error : LogLevel.Trace);\r\n }\r\n\r\n // Setup typical programmatic log level overrides here\r\n // Convenience method used to debug specific tests/fixtures\r\n public static setupDebugLogLevels() {\r\n TestUtils.initDebugLogLevels(false);\r\n }\r\n\r\n public static resetDebugLogLevels() {\r\n TestUtils.initDebugLogLevels(true);\r\n }\r\n}\r\n\r\n// The very first \"before\" run to initially setup the logging and initial backend.\r\nbefore(async () => {\r\n TestUtils.setupLogging();\r\n await TestUtils.startBackend();\r\n});\r\n\r\nafter(async () => {\r\n await TestUtils.shutdownBackend();\r\n});\r\n\r\n"]}
@@ -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";
@@ -152,59 +152,59 @@ describe("updateField", () => {
152
152
  expect(fieldRun.cachedContent).to.equal(FieldRun.invalidContentIndicator);
153
153
  });
154
154
  });
155
- const fieldsSchemaXml = `
156
- <?xml version="1.0" encoding="UTF-8"?>
157
- <ECSchema schemaName="Fields" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
158
- <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
159
- <ECSchemaReference name='ECDbMap' version='02.00.04' alias='ecdbmap' />
160
-
161
- <ECEnumeration typeName="IntEnum" backingTypeName="int">
162
- <ECEnumerator name="one" displayLabel="One" value="1" />
163
- <ECEnumerator name="two" displayLabel="Two" value="2"/>
164
- </ECEnumeration>
165
-
166
- <ECStructClass typeName="InnerStruct" modifier="None">
167
- <ECProperty propertyName="bool" typeName="boolean"/>
168
- <ECArrayProperty propertyName="doubles" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
169
- </ECStructClass>
170
-
171
- <ECStructClass typeName="OuterStruct" modifier="None">
172
- <ECStructProperty propertyName="innerStruct" typeName="InnerStruct"/>
173
- <ECStructArrayProperty propertyName="innerStructs" typeName="InnerStruct" minOccurs="0" maxOccurs="unbounded"/>
174
- </ECStructClass>
175
-
176
- <ECEntityClass typeName="TestElement" modifier="None">
177
- <BaseClass>bis:PhysicalElement</BaseClass>
178
- <ECProperty propertyName="intProp" typeName="int"/>
179
- <ECProperty propertyName="point" typeName="point3d"/>
180
- <ECProperty propertyName="maybeNull" typeName="int"/>
181
- <ECProperty propertyName="datetime" typeName="dateTime"/>
182
- <ECArrayProperty propertyName="strings" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
183
- <ECStructProperty propertyName="outerStruct" typeName="OuterStruct"/>
184
- <ECStructArrayProperty propertyName="outerStructs" typeName="OuterStruct" minOccurs="0" maxOccurs="unbounded"/>
185
- <ECProperty propertyName="intEnum" typeName="IntEnum"/>
186
- </ECEntityClass>
187
-
188
- <ECEntityClass typeName="TestAspect" modifier="None">
189
- <BaseClass>bis:ElementUniqueAspect</BaseClass>
190
- <ECProperty propertyName="aspectProp" typeName="int"/>
191
- </ECEntityClass>
192
-
193
- <ECEntityClass typeName="TestElementStringProp" modifier="Abstract">
194
- <ECCustomAttributes>
195
- <QueryView xmlns="ECDbMap.02.00.04">
196
- <Query>
197
- SELECT
198
- jo.ECInstanceId,
199
- ec_classid('Fields', 'TestElementStringProp') [ECClassId],
200
- json_extract(jo.jsonProperties, '$.stringProp') [StringProp]
201
- FROM Fields.TestElement jo
202
- </Query>
203
- </QueryView>
204
- </ECCustomAttributes>
205
- <ECProperty propertyName="StringProp" typeName="string" />
206
- </ECEntityClass>
207
- </ECSchema>
155
+ const fieldsSchemaXml = `
156
+ <?xml version="1.0" encoding="UTF-8"?>
157
+ <ECSchema schemaName="Fields" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
158
+ <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
159
+ <ECSchemaReference name='ECDbMap' version='02.00.04' alias='ecdbmap' />
160
+
161
+ <ECEnumeration typeName="IntEnum" backingTypeName="int">
162
+ <ECEnumerator name="one" displayLabel="One" value="1" />
163
+ <ECEnumerator name="two" displayLabel="Two" value="2"/>
164
+ </ECEnumeration>
165
+
166
+ <ECStructClass typeName="InnerStruct" modifier="None">
167
+ <ECProperty propertyName="bool" typeName="boolean"/>
168
+ <ECArrayProperty propertyName="doubles" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
169
+ </ECStructClass>
170
+
171
+ <ECStructClass typeName="OuterStruct" modifier="None">
172
+ <ECStructProperty propertyName="innerStruct" typeName="InnerStruct"/>
173
+ <ECStructArrayProperty propertyName="innerStructs" typeName="InnerStruct" minOccurs="0" maxOccurs="unbounded"/>
174
+ </ECStructClass>
175
+
176
+ <ECEntityClass typeName="TestElement" modifier="None">
177
+ <BaseClass>bis:PhysicalElement</BaseClass>
178
+ <ECProperty propertyName="intProp" typeName="int"/>
179
+ <ECProperty propertyName="point" typeName="point3d"/>
180
+ <ECProperty propertyName="maybeNull" typeName="int"/>
181
+ <ECProperty propertyName="datetime" typeName="dateTime"/>
182
+ <ECArrayProperty propertyName="strings" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
183
+ <ECStructProperty propertyName="outerStruct" typeName="OuterStruct"/>
184
+ <ECStructArrayProperty propertyName="outerStructs" typeName="OuterStruct" minOccurs="0" maxOccurs="unbounded"/>
185
+ <ECProperty propertyName="intEnum" typeName="IntEnum"/>
186
+ </ECEntityClass>
187
+
188
+ <ECEntityClass typeName="TestAspect" modifier="None">
189
+ <BaseClass>bis:ElementUniqueAspect</BaseClass>
190
+ <ECProperty propertyName="aspectProp" typeName="int"/>
191
+ </ECEntityClass>
192
+
193
+ <ECEntityClass typeName="TestElementStringProp" modifier="Abstract">
194
+ <ECCustomAttributes>
195
+ <QueryView xmlns="ECDbMap.02.00.04">
196
+ <Query>
197
+ SELECT
198
+ jo.ECInstanceId,
199
+ ec_classid('Fields', 'TestElementStringProp') [ECClassId],
200
+ json_extract(jo.jsonProperties, '$.stringProp') [StringProp]
201
+ FROM Fields.TestElement jo
202
+ </Query>
203
+ </QueryView>
204
+ </ECCustomAttributes>
205
+ <ECProperty propertyName="StringProp" typeName="string" />
206
+ </ECEntityClass>
207
+ </ECSchema>
208
208
  `;
209
209
  class TestElement extends PhysicalElement {
210
210
  static get className() { return "TestElement"; }
@@ -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);