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

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 (658) hide show
  1. package/lib/cjs/BackendHubAccess.js.map +1 -1
  2. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  3. package/lib/cjs/BisCoreSchema.js.map +1 -1
  4. package/lib/cjs/BlobContainerService.js.map +1 -1
  5. package/lib/cjs/BriefcaseManager.js +3 -3
  6. package/lib/cjs/BriefcaseManager.js.map +1 -1
  7. package/lib/cjs/CatalogDb.js.map +1 -1
  8. package/lib/cjs/Category.d.ts +37 -7
  9. package/lib/cjs/Category.d.ts.map +1 -1
  10. package/lib/cjs/Category.js +33 -42
  11. package/lib/cjs/Category.js.map +1 -1
  12. package/lib/cjs/ChangeSummaryManager.js +2 -2
  13. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  14. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  15. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  16. package/lib/cjs/ChangesetECAdaptor.js +253 -250
  17. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  18. package/lib/cjs/ChannelControl.d.ts +29 -0
  19. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  20. package/lib/cjs/ChannelControl.js.map +1 -1
  21. package/lib/cjs/CheckpointManager.js +1 -1
  22. package/lib/cjs/CheckpointManager.js.map +1 -1
  23. package/lib/cjs/ClassRegistry.js +5 -5
  24. package/lib/cjs/ClassRegistry.js.map +1 -1
  25. package/lib/cjs/CloudSqlite.js.map +1 -1
  26. package/lib/cjs/CodeService.js.map +1 -1
  27. package/lib/cjs/CodeSpecs.d.ts +32 -3
  28. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  29. package/lib/cjs/CodeSpecs.js +48 -20
  30. package/lib/cjs/CodeSpecs.js.map +1 -1
  31. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  32. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  33. package/lib/cjs/DevTools.js.map +1 -1
  34. package/lib/cjs/DisplayStyle.d.ts +18 -3
  35. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  36. package/lib/cjs/DisplayStyle.js +10 -21
  37. package/lib/cjs/DisplayStyle.js.map +1 -1
  38. package/lib/cjs/ECDb.js.map +1 -1
  39. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  40. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  41. package/lib/cjs/ECSqlStatement.js.map +1 -1
  42. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  43. package/lib/cjs/EditTxn.d.ts +262 -0
  44. package/lib/cjs/EditTxn.d.ts.map +1 -0
  45. package/lib/cjs/EditTxn.js +548 -0
  46. package/lib/cjs/EditTxn.js.map +1 -0
  47. package/lib/cjs/Element.d.ts +74 -5
  48. package/lib/cjs/Element.d.ts.map +1 -1
  49. package/lib/cjs/Element.js +63 -75
  50. package/lib/cjs/Element.js.map +1 -1
  51. package/lib/cjs/ElementAspect.d.ts +10 -0
  52. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  53. package/lib/cjs/ElementAspect.js +21 -12
  54. package/lib/cjs/ElementAspect.js.map +1 -1
  55. package/lib/cjs/ElementGraphics.js.map +1 -1
  56. package/lib/cjs/ElementTreeWalker.d.ts +56 -3
  57. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  58. package/lib/cjs/ElementTreeWalker.js +53 -40
  59. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  60. package/lib/cjs/Entity.js.map +1 -1
  61. package/lib/cjs/EntityReferences.js.map +1 -1
  62. package/lib/cjs/ExportGraphics.js.map +1 -1
  63. package/lib/cjs/ExternalSource.d.ts +11 -2
  64. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  65. package/lib/cjs/ExternalSource.js +10 -8
  66. package/lib/cjs/ExternalSource.js.map +1 -1
  67. package/lib/cjs/FontFile.js.map +1 -1
  68. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  69. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  70. package/lib/cjs/GeometrySummary.js +47 -47
  71. package/lib/cjs/GeometrySummary.js.map +1 -1
  72. package/lib/cjs/IModelDb.d.ts +66 -22
  73. package/lib/cjs/IModelDb.d.ts.map +1 -1
  74. package/lib/cjs/IModelDb.js +182 -296
  75. package/lib/cjs/IModelDb.js.map +1 -1
  76. package/lib/cjs/IModelDbFonts.js.map +1 -1
  77. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  78. package/lib/cjs/IModelHost.d.ts +22 -0
  79. package/lib/cjs/IModelHost.d.ts.map +1 -1
  80. package/lib/cjs/IModelHost.js +9 -0
  81. package/lib/cjs/IModelHost.js.map +1 -1
  82. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  83. package/lib/cjs/IModelJsFs.js.map +1 -1
  84. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  85. package/lib/cjs/IpcHost.js +2 -2
  86. package/lib/cjs/IpcHost.js.map +1 -1
  87. package/lib/cjs/LineStyle.d.ts +47 -7
  88. package/lib/cjs/LineStyle.d.ts.map +1 -1
  89. package/lib/cjs/LineStyle.js +38 -33
  90. package/lib/cjs/LineStyle.js.map +1 -1
  91. package/lib/cjs/LocalHub.js +1 -1
  92. package/lib/cjs/LocalHub.js.map +1 -1
  93. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  94. package/lib/cjs/LockControl.js.map +1 -1
  95. package/lib/cjs/Material.d.ts +8 -1
  96. package/lib/cjs/Material.d.ts.map +1 -1
  97. package/lib/cjs/Material.js +6 -12
  98. package/lib/cjs/Material.js.map +1 -1
  99. package/lib/cjs/Model.d.ts +59 -20
  100. package/lib/cjs/Model.d.ts.map +1 -1
  101. package/lib/cjs/Model.js +38 -80
  102. package/lib/cjs/Model.js.map +1 -1
  103. package/lib/cjs/NativeAppStorage.js.map +1 -1
  104. package/lib/cjs/NativeHost.js.map +1 -1
  105. package/lib/cjs/NavigationRelationship.js.map +1 -1
  106. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  107. package/lib/cjs/PropertyStore.js.map +1 -1
  108. package/lib/cjs/Relationship.d.ts +72 -7
  109. package/lib/cjs/Relationship.d.ts.map +1 -1
  110. package/lib/cjs/Relationship.js +39 -21
  111. package/lib/cjs/Relationship.js.map +1 -1
  112. package/lib/cjs/RpcBackend.js.map +1 -1
  113. package/lib/cjs/SQLiteDb.js.map +1 -1
  114. package/lib/cjs/Schema.js.map +1 -1
  115. package/lib/cjs/SchemaSync.js +4 -4
  116. package/lib/cjs/SchemaSync.js.map +1 -1
  117. package/lib/cjs/SchemaUtils.js.map +1 -1
  118. package/lib/cjs/SheetIndex.d.ts +9 -0
  119. package/lib/cjs/SheetIndex.d.ts.map +1 -1
  120. package/lib/cjs/SheetIndex.js +38 -35
  121. package/lib/cjs/SheetIndex.js.map +1 -1
  122. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  123. package/lib/cjs/SqliteStatement.js.map +1 -1
  124. package/lib/cjs/StashManager.js +1 -1
  125. package/lib/cjs/StashManager.js.map +1 -1
  126. package/lib/cjs/Texture.d.ts +6 -0
  127. package/lib/cjs/Texture.d.ts.map +1 -1
  128. package/lib/cjs/Texture.js +6 -14
  129. package/lib/cjs/Texture.js.map +1 -1
  130. package/lib/cjs/TileStorage.js.map +1 -1
  131. package/lib/cjs/TxnManager.d.ts +5 -5
  132. package/lib/cjs/TxnManager.d.ts.map +1 -1
  133. package/lib/cjs/TxnManager.js +23 -7
  134. package/lib/cjs/TxnManager.js.map +1 -1
  135. package/lib/cjs/ViewDefinition.d.ts +21 -1
  136. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  137. package/lib/cjs/ViewDefinition.js +27 -66
  138. package/lib/cjs/ViewDefinition.js.map +1 -1
  139. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  140. package/lib/cjs/ViewStore.js.map +1 -1
  141. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  142. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  143. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
  144. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  145. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  146. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  147. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  148. package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
  149. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  150. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  151. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  152. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  153. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  154. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  155. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  156. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  157. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  158. package/lib/cjs/core-backend.d.ts +1 -0
  159. package/lib/cjs/core-backend.d.ts.map +1 -1
  160. package/lib/cjs/core-backend.js +1 -0
  161. package/lib/cjs/core-backend.js.map +1 -1
  162. package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
  163. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  164. package/lib/cjs/domains/FunctionalElements.js +8 -13
  165. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  166. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  167. package/lib/cjs/domains/GenericElements.d.ts +11 -4
  168. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  169. package/lib/cjs/domains/GenericElements.js +13 -24
  170. package/lib/cjs/domains/GenericElements.js.map +1 -1
  171. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  172. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  173. package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
  174. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  175. package/lib/cjs/internal/ChannelAdmin.js +5 -3
  176. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  177. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  178. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  179. package/lib/cjs/internal/HubMock.js.map +1 -1
  180. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  181. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  182. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  183. package/lib/cjs/internal/NoLocks.js.map +1 -1
  184. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  185. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  186. package/lib/cjs/internal/Symbols.d.ts +4 -0
  187. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  188. package/lib/cjs/internal/Symbols.js +5 -1
  189. package/lib/cjs/internal/Symbols.js.map +1 -1
  190. package/lib/cjs/internal/annotations/fields.d.ts +3 -2
  191. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  192. package/lib/cjs/internal/annotations/fields.js +7 -6
  193. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  194. package/lib/cjs/internal/cross-package.js.map +1 -1
  195. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  196. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  197. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  198. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  199. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  200. package/lib/cjs/rpc/multipart.js.map +1 -1
  201. package/lib/cjs/rpc/tracing.js.map +1 -1
  202. package/lib/cjs/rpc/web/logging.js.map +1 -1
  203. package/lib/cjs/rpc/web/request.js.map +1 -1
  204. package/lib/cjs/rpc/web/response.js.map +1 -1
  205. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  206. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  207. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  208. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  209. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  210. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  211. package/lib/cjs/workspace/Settings.js.map +1 -1
  212. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  213. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  214. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  215. package/lib/cjs/workspace/Workspace.js.map +1 -1
  216. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  217. package/lib/esm/BackendHubAccess.js.map +1 -1
  218. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  219. package/lib/esm/BisCoreSchema.js.map +1 -1
  220. package/lib/esm/BlobContainerService.js.map +1 -1
  221. package/lib/esm/BriefcaseManager.js +3 -3
  222. package/lib/esm/BriefcaseManager.js.map +1 -1
  223. package/lib/esm/CatalogDb.js.map +1 -1
  224. package/lib/esm/Category.d.ts +37 -7
  225. package/lib/esm/Category.d.ts.map +1 -1
  226. package/lib/esm/Category.js +33 -42
  227. package/lib/esm/Category.js.map +1 -1
  228. package/lib/esm/ChangeSummaryManager.js +2 -2
  229. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  230. package/lib/esm/ChangedElementsDb.js.map +1 -1
  231. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  232. package/lib/esm/ChangesetECAdaptor.js +253 -250
  233. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  234. package/lib/esm/ChannelControl.d.ts +29 -0
  235. package/lib/esm/ChannelControl.d.ts.map +1 -1
  236. package/lib/esm/ChannelControl.js.map +1 -1
  237. package/lib/esm/CheckpointManager.js +1 -1
  238. package/lib/esm/CheckpointManager.js.map +1 -1
  239. package/lib/esm/ClassRegistry.js +5 -5
  240. package/lib/esm/ClassRegistry.js.map +1 -1
  241. package/lib/esm/CloudSqlite.js.map +1 -1
  242. package/lib/esm/CodeService.js.map +1 -1
  243. package/lib/esm/CodeSpecs.d.ts +32 -3
  244. package/lib/esm/CodeSpecs.d.ts.map +1 -1
  245. package/lib/esm/CodeSpecs.js +49 -21
  246. package/lib/esm/CodeSpecs.js.map +1 -1
  247. package/lib/esm/ConcurrentQuery.js.map +1 -1
  248. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  249. package/lib/esm/DevTools.js.map +1 -1
  250. package/lib/esm/DisplayStyle.d.ts +18 -3
  251. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  252. package/lib/esm/DisplayStyle.js +10 -21
  253. package/lib/esm/DisplayStyle.js.map +1 -1
  254. package/lib/esm/ECDb.js.map +1 -1
  255. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  256. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  257. package/lib/esm/ECSqlStatement.js.map +1 -1
  258. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  259. package/lib/esm/EditTxn.d.ts +262 -0
  260. package/lib/esm/EditTxn.d.ts.map +1 -0
  261. package/lib/esm/EditTxn.js +543 -0
  262. package/lib/esm/EditTxn.js.map +1 -0
  263. package/lib/esm/Element.d.ts +74 -5
  264. package/lib/esm/Element.d.ts.map +1 -1
  265. package/lib/esm/Element.js +64 -76
  266. package/lib/esm/Element.js.map +1 -1
  267. package/lib/esm/ElementAspect.d.ts +10 -0
  268. package/lib/esm/ElementAspect.d.ts.map +1 -1
  269. package/lib/esm/ElementAspect.js +22 -13
  270. package/lib/esm/ElementAspect.js.map +1 -1
  271. package/lib/esm/ElementGraphics.js.map +1 -1
  272. package/lib/esm/ElementTreeWalker.d.ts +56 -3
  273. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  274. package/lib/esm/ElementTreeWalker.js +53 -40
  275. package/lib/esm/ElementTreeWalker.js.map +1 -1
  276. package/lib/esm/Entity.js.map +1 -1
  277. package/lib/esm/EntityReferences.js.map +1 -1
  278. package/lib/esm/ExportGraphics.js.map +1 -1
  279. package/lib/esm/ExternalSource.d.ts +11 -2
  280. package/lib/esm/ExternalSource.d.ts.map +1 -1
  281. package/lib/esm/ExternalSource.js +10 -8
  282. package/lib/esm/ExternalSource.js.map +1 -1
  283. package/lib/esm/FontFile.js.map +1 -1
  284. package/lib/esm/GeoCoordConfig.js.map +1 -1
  285. package/lib/esm/GeographicCRSServices.js.map +1 -1
  286. package/lib/esm/GeometrySummary.js +47 -47
  287. package/lib/esm/GeometrySummary.js.map +1 -1
  288. package/lib/esm/IModelDb.d.ts +66 -22
  289. package/lib/esm/IModelDb.d.ts.map +1 -1
  290. package/lib/esm/IModelDb.js +184 -298
  291. package/lib/esm/IModelDb.js.map +1 -1
  292. package/lib/esm/IModelDbFonts.js.map +1 -1
  293. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  294. package/lib/esm/IModelHost.d.ts +22 -0
  295. package/lib/esm/IModelHost.d.ts.map +1 -1
  296. package/lib/esm/IModelHost.js +9 -0
  297. package/lib/esm/IModelHost.js.map +1 -1
  298. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  299. package/lib/esm/IModelJsFs.js.map +1 -1
  300. package/lib/esm/ImageSourceConversion.js.map +1 -1
  301. package/lib/esm/IpcHost.js +3 -3
  302. package/lib/esm/IpcHost.js.map +1 -1
  303. package/lib/esm/LineStyle.d.ts +47 -7
  304. package/lib/esm/LineStyle.d.ts.map +1 -1
  305. package/lib/esm/LineStyle.js +38 -33
  306. package/lib/esm/LineStyle.js.map +1 -1
  307. package/lib/esm/LocalHub.js +1 -1
  308. package/lib/esm/LocalHub.js.map +1 -1
  309. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  310. package/lib/esm/LockControl.js.map +1 -1
  311. package/lib/esm/Material.d.ts +8 -1
  312. package/lib/esm/Material.d.ts.map +1 -1
  313. package/lib/esm/Material.js +6 -12
  314. package/lib/esm/Material.js.map +1 -1
  315. package/lib/esm/Model.d.ts +59 -20
  316. package/lib/esm/Model.d.ts.map +1 -1
  317. package/lib/esm/Model.js +39 -81
  318. package/lib/esm/Model.js.map +1 -1
  319. package/lib/esm/NativeAppStorage.js.map +1 -1
  320. package/lib/esm/NativeHost.js.map +1 -1
  321. package/lib/esm/NavigationRelationship.js.map +1 -1
  322. package/lib/esm/PromiseMemoizer.js.map +1 -1
  323. package/lib/esm/PropertyStore.js.map +1 -1
  324. package/lib/esm/Relationship.d.ts +72 -7
  325. package/lib/esm/Relationship.d.ts.map +1 -1
  326. package/lib/esm/Relationship.js +40 -22
  327. package/lib/esm/Relationship.js.map +1 -1
  328. package/lib/esm/RpcBackend.js.map +1 -1
  329. package/lib/esm/SQLiteDb.js.map +1 -1
  330. package/lib/esm/Schema.js.map +1 -1
  331. package/lib/esm/SchemaSync.js +5 -5
  332. package/lib/esm/SchemaSync.js.map +1 -1
  333. package/lib/esm/SchemaUtils.js.map +1 -1
  334. package/lib/esm/SheetIndex.d.ts +9 -0
  335. package/lib/esm/SheetIndex.d.ts.map +1 -1
  336. package/lib/esm/SheetIndex.js +38 -35
  337. package/lib/esm/SheetIndex.js.map +1 -1
  338. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  339. package/lib/esm/SqliteStatement.js.map +1 -1
  340. package/lib/esm/StashManager.js +1 -1
  341. package/lib/esm/StashManager.js.map +1 -1
  342. package/lib/esm/Texture.d.ts +6 -0
  343. package/lib/esm/Texture.d.ts.map +1 -1
  344. package/lib/esm/Texture.js +6 -14
  345. package/lib/esm/Texture.js.map +1 -1
  346. package/lib/esm/TileStorage.js.map +1 -1
  347. package/lib/esm/TxnManager.d.ts +5 -5
  348. package/lib/esm/TxnManager.d.ts.map +1 -1
  349. package/lib/esm/TxnManager.js +23 -7
  350. package/lib/esm/TxnManager.js.map +1 -1
  351. package/lib/esm/ViewDefinition.d.ts +21 -1
  352. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  353. package/lib/esm/ViewDefinition.js +27 -66
  354. package/lib/esm/ViewDefinition.js.map +1 -1
  355. package/lib/esm/ViewStateHydrator.js.map +1 -1
  356. package/lib/esm/ViewStore.js.map +1 -1
  357. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  358. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  359. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
  360. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  361. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  362. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  363. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  364. package/lib/esm/annotations/TextAnnotationElement.js +6 -5
  365. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  366. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  367. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  368. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  369. package/lib/esm/core-backend.d.ts +1 -0
  370. package/lib/esm/core-backend.d.ts.map +1 -1
  371. package/lib/esm/core-backend.js +1 -0
  372. package/lib/esm/core-backend.js.map +1 -1
  373. package/lib/esm/domains/FunctionalElements.d.ts +6 -2
  374. package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
  375. package/lib/esm/domains/FunctionalElements.js +8 -13
  376. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  377. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  378. package/lib/esm/domains/GenericElements.d.ts +11 -4
  379. package/lib/esm/domains/GenericElements.d.ts.map +1 -1
  380. package/lib/esm/domains/GenericElements.js +13 -24
  381. package/lib/esm/domains/GenericElements.js.map +1 -1
  382. package/lib/esm/domains/GenericSchema.js.map +1 -1
  383. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  384. package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
  385. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  386. package/lib/esm/internal/ChannelAdmin.js +6 -4
  387. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  388. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  389. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  390. package/lib/esm/internal/HubMock.js.map +1 -1
  391. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  392. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  393. package/lib/esm/internal/NativePlatform.js.map +1 -1
  394. package/lib/esm/internal/NoLocks.js.map +1 -1
  395. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  396. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  397. package/lib/esm/internal/Symbols.d.ts +4 -0
  398. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  399. package/lib/esm/internal/Symbols.js +4 -0
  400. package/lib/esm/internal/Symbols.js.map +1 -1
  401. package/lib/esm/internal/annotations/fields.d.ts +3 -2
  402. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  403. package/lib/esm/internal/annotations/fields.js +7 -6
  404. package/lib/esm/internal/annotations/fields.js.map +1 -1
  405. package/lib/esm/internal/cross-package.js.map +1 -1
  406. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  407. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  408. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  409. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  410. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  411. package/lib/esm/rpc/multipart.js.map +1 -1
  412. package/lib/esm/rpc/tracing.js.map +1 -1
  413. package/lib/esm/rpc/web/logging.js.map +1 -1
  414. package/lib/esm/rpc/web/request.js.map +1 -1
  415. package/lib/esm/rpc/web/response.js.map +1 -1
  416. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  417. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  418. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  419. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  420. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  421. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  422. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  423. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  424. package/lib/esm/test/AttachDb.test.js +11 -11
  425. package/lib/esm/test/AttachDb.test.js.map +1 -1
  426. package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
  427. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
  428. package/lib/esm/test/ElementDrivesElement.test.js +134 -119
  429. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  430. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  431. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  432. package/lib/esm/test/IModelHost.test.js +56 -2
  433. package/lib/esm/test/IModelHost.test.js.map +1 -1
  434. package/lib/esm/test/IModelTestUtils.d.ts +23 -23
  435. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  436. package/lib/esm/test/IModelTestUtils.js +466 -449
  437. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  438. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  439. package/lib/esm/test/IpcHost.test.js.map +1 -1
  440. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  441. package/lib/esm/test/PrintElementTree.js.map +1 -1
  442. package/lib/esm/test/PropertyDb.test.js +2 -2
  443. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  444. package/lib/esm/test/RevisionUtility.js.map +1 -1
  445. package/lib/esm/test/SchemaUtils.test.js +25 -25
  446. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  447. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  448. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +156 -147
  449. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  450. package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
  451. package/lib/esm/test/TestChangeSetUtility.js +11 -7
  452. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  453. package/lib/esm/test/TestEditTxn.d.ts +8 -0
  454. package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
  455. package/lib/esm/test/TestEditTxn.js +34 -0
  456. package/lib/esm/test/TestEditTxn.js.map +1 -0
  457. package/lib/esm/test/TestUtils.d.ts +1 -0
  458. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  459. package/lib/esm/test/TestUtils.js +8 -1
  460. package/lib/esm/test/TestUtils.js.map +1 -1
  461. package/lib/esm/test/annotations/Fields.test.js +135 -143
  462. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  463. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  464. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  465. package/lib/esm/test/annotations/TextAnnotation.test.js +156 -99
  466. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  467. package/lib/esm/test/annotations/TextBlock.test.js +5 -3
  468. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  469. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  470. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  471. package/lib/esm/test/categories/Category.test.js +63 -3
  472. package/lib/esm/test/categories/Category.test.js.map +1 -1
  473. package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
  474. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  475. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  476. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  477. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  478. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  479. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  480. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  481. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  482. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  483. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  484. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  485. package/lib/esm/test/ecdb/ECSqlAst.test.js +68 -67
  486. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  487. package/lib/esm/test/ecdb/ECSqlQuery.test.js +6 -6
  488. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  489. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -333
  490. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  491. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  492. package/lib/esm/test/ecdb/QueryReaders.test.js +47 -44
  493. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  494. package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
  495. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  496. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
  497. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
  498. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  499. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  500. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  501. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  502. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  503. package/lib/esm/test/element/DeleteDefinitionElements.test.js +159 -143
  504. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  505. package/lib/esm/test/element/ElementAspect.test.js +90 -82
  506. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  507. package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
  508. package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
  509. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  510. package/lib/esm/test/element/ElementRoundTrip.test.js +176 -177
  511. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  512. package/lib/esm/test/element/ExcludedElements.test.js +2 -2
  513. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  514. package/lib/esm/test/element/ExternalSource.test.js +40 -38
  515. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  516. package/lib/esm/test/element/NullStructArray.test.js +23 -22
  517. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  518. package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
  519. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  520. package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
  521. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  522. package/lib/esm/test/element/UrlLink.test.js +2 -2
  523. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  524. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  525. package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
  526. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  527. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +194 -155
  528. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  529. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
  530. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  531. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  532. package/lib/esm/test/hubaccess/Rebase.test.js +369 -303
  533. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  534. package/lib/esm/test/hubaccess/SemanticRebase.test.js +467 -392
  535. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  536. package/lib/esm/test/imageData.js.map +1 -1
  537. package/lib/esm/test/imodel/Code.test.js +31 -31
  538. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  539. package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
  540. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  541. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  542. package/lib/esm/test/imodel/IModel.test.js +463 -388
  543. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  544. package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
  545. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  546. package/lib/esm/test/imodel/SchemaXmlImport.test.js +13 -13
  547. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  548. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  549. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  550. package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
  551. package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
  552. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  553. package/lib/esm/test/index.d.ts +1 -0
  554. package/lib/esm/test/index.d.ts.map +1 -1
  555. package/lib/esm/test/index.js +1 -0
  556. package/lib/esm/test/index.js.map +1 -1
  557. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  558. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  559. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  560. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  561. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  562. package/lib/esm/test/rpc/response.test.js.map +1 -1
  563. package/lib/esm/test/schema/ClassRegistry.test.js +122 -121
  564. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  565. package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
  566. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  567. package/lib/esm/test/schema/GenericDomain.test.js +114 -94
  568. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  569. package/lib/esm/test/schema/IModelSchemaContext.test.js +11 -10
  570. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  571. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +226 -211
  572. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  573. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
  574. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
  575. package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
  576. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  577. package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
  578. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  579. package/lib/esm/test/standalone/ChangesetReader.test.js +242 -213
  580. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  581. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  582. package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
  583. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  584. package/lib/esm/test/standalone/Drawing.test.js +4 -3
  585. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  586. package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
  587. package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
  588. package/lib/esm/test/standalone/EditTxn.test.js +219 -0
  589. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
  590. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  591. package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
  592. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  593. package/lib/esm/test/standalone/ExportGraphics.test.js +40 -34
  594. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  595. package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
  596. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  597. package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
  598. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  599. package/lib/esm/test/standalone/HubMock.test.js +31 -25
  600. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  601. package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
  602. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  603. package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
  604. package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
  605. package/lib/esm/test/standalone/IModelWrite.test.js +211 -169
  606. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  607. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  608. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
  609. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  610. package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
  611. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  612. package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
  613. package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
  614. package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
  615. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  616. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  617. package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
  618. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  619. package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
  620. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  621. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  622. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  623. package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
  624. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  625. package/lib/esm/test/standalone/ServerBasedLocks.test.js +21 -19
  626. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  627. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  628. package/lib/esm/test/standalone/Settings.test.js +7 -4
  629. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  630. package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
  631. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  632. package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
  633. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  634. package/lib/esm/test/standalone/StandaloneDb.test.js +27 -26
  635. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  636. package/lib/esm/test/standalone/Texture.test.js +5 -4
  637. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  638. package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
  639. package/lib/esm/test/standalone/TileCache.test.js +5 -3
  640. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  641. package/lib/esm/test/standalone/TileTree.test.js +35 -31
  642. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  643. package/lib/esm/test/standalone/TxnManager.test.js +700 -653
  644. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  645. package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
  646. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  647. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  648. package/lib/esm/test/standalone/Workspace.test.js +25 -23
  649. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  650. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  651. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  652. package/lib/esm/workspace/Settings.js.map +1 -1
  653. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  654. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  655. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  656. package/lib/esm/workspace/Workspace.js.map +1 -1
  657. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  658. package/package.json +13 -13
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditTxn.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/EditTxn.test.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 { Logger, OpenMode } from \"@itwin/core-bentley\";\r\nimport { expect } from \"chai\";\r\nimport * as sinon from \"sinon\";\r\nimport { EditTxnError } from \"@itwin/core-common\";\r\nimport { EditTxn, type IModelDb, IModelJsFs, StandaloneDb } from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\n\r\nclass TestEditTxn extends EditTxn {\r\n public constructor(iModel: IModelDb) {\r\n super(iModel, \"test\");\r\n }\r\n\r\n public writeFileProperty(name: string, value: string | undefined): void {\r\n super.saveFileProperty({ name, namespace: \"EditTxnTest\" }, value);\r\n }\r\n}\r\n\r\nclass AbandonOnCloseEditTxn extends TestEditTxn {\r\n public override onClose(): void {\r\n if (this.isActive)\r\n this.abandonChanges();\r\n }\r\n}\r\n\r\nfunction expectEditTxnError(fn: () => void, key: EditTxnError.Key): void {\r\n expect(fn).to.throw().that.satisfies((error: unknown) => EditTxnError.isError(error, key));\r\n}\r\n\r\nfunction legacyWriteFileProperty(iModel: StandaloneDb, name: string, value: string): void {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n iModel.saveFileProperty({ name, namespace: \"EditTxnTest\" }, value);\r\n}\r\n\r\ndescribe(\"EditTxn\", () => {\r\n let iModel: StandaloneDb;\r\n let fileName: string;\r\n\r\n beforeEach(() => {\r\n EditTxn.implicitWriteEnforcement = \"allow\";\r\n fileName = IModelTestUtils.prepareOutputFile(\"EditTxn\", \"EditTxn.bim\");\r\n iModel = StandaloneDb.createEmpty(fileName, {\r\n rootSubject: { name: \"EditTxn\" },\r\n enableTransactions: true,\r\n });\r\n });\r\n\r\n afterEach(() => {\r\n EditTxn.implicitWriteEnforcement = \"allow\";\r\n sinon.restore();\r\n\r\n if (iModel.isOpen)\r\n iModel.close();\r\n\r\n IModelJsFs.removeSync(fileName);\r\n });\r\n\r\n it(\"allows implicit writes before and after explicit txn scopes\", () => {\r\n // Implicit IModelDb mutators should work before any explicit EditTxn starts.\r\n legacyWriteFileProperty(iModel, \"legacy-before-start\", \"value\");\r\n expect(iModel.queryFilePropertyString({ name: \"legacy-before-start\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n iModel.abandonChanges();\r\n\r\n const txn = new TestEditTxn(iModel);\r\n txn.start();\r\n expect(txn.isActive).to.be.true;\r\n\r\n txn.writeFileProperty(\"cancelled\", \"value\");\r\n txn.end(\"abandon\");\r\n // After canceling, implicit writes should still work.\r\n expect(txn.isActive).to.be.false;\r\n legacyWriteFileProperty(iModel, \"legacy-after-cancel\", \"value\");\r\n expect(iModel.queryFilePropertyString({ name: \"legacy-after-cancel\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n iModel.abandonChanges();\r\n expect(iModel.queryFilePropertyString({ name: \"cancelled\", namespace: \"EditTxnTest\" })).to.be.undefined;\r\n\r\n txn.start();\r\n txn.writeFileProperty(\"saved\", \"value\");\r\n txn.end();\r\n // Committing also leaves the iModel ready for later implicit writes.\r\n expect(txn.isActive).to.be.false;\r\n expect(iModel.queryFilePropertyString({ name: \"saved\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n legacyWriteFileProperty(iModel, \"legacy-after-end\", \"value\");\r\n expect(iModel.queryFilePropertyString({ name: \"legacy-after-end\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n });\r\n\r\n it(\"enforces identical explicit transaction behavior across allow, log, and throw settings\", () => {\r\n const settings: Array<\"allow\" | \"log\" | \"throw\"> = [\"allow\", \"log\", \"throw\"];\r\n\r\n for (const setting of settings) {\r\n EditTxn.implicitWriteEnforcement = setting;\r\n const txn = new TestEditTxn(iModel);\r\n const inactiveName = `inactive-${setting}`;\r\n const savedName = `saved-${setting}`;\r\n const inactiveAgainName = `inactive-again-${setting}`;\r\n\r\n // Inactive explicit txn writes must always fail, regardless of enforcement.\r\n expectEditTxnError(() => txn.writeFileProperty(inactiveName, \"value\"), \"not-active\");\r\n expectEditTxnError(() => txn.saveChanges(`save ${inactiveName}`), \"not-active\");\r\n expect(iModel.queryFilePropertyString({ name: inactiveName, namespace: \"EditTxnTest\" })).to.be.undefined;\r\n expectEditTxnError(() => txn.end(\"abandon\"), \"not-active\");\r\n\r\n txn.start();\r\n txn.writeFileProperty(savedName, \"value\");\r\n txn.saveChanges(`save ${savedName}`);\r\n expect(txn.isActive).to.be.true;\r\n\r\n txn.end();\r\n expect(iModel.queryFilePropertyString({ name: savedName, namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n\r\n expectEditTxnError(() => txn.writeFileProperty(inactiveAgainName, \"value\"), \"not-active\");\r\n expectEditTxnError(() => txn.saveChanges(`save ${inactiveAgainName}`), \"not-active\");\r\n expect(iModel.queryFilePropertyString({ name: inactiveAgainName, namespace: \"EditTxnTest\" })).to.be.undefined;\r\n expectEditTxnError(() => txn.end(\"abandon\"), \"not-active\");\r\n }\r\n });\r\n\r\n it(\"logs implicit writes in log mode but still rejects inactive explicit writes\", () => {\r\n EditTxn.implicitWriteEnforcement = \"log\";\r\n const logError = sinon.spy(Logger, \"logError\");\r\n const txn = new TestEditTxn(iModel);\r\n\r\n legacyWriteFileProperty(iModel, \"implicit-log\", \"value\");\r\n expect(iModel.queryFilePropertyString({ name: \"implicit-log\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n expect(logError.called).to.be.true;\r\n expect(logError.firstCall.args[0]).to.equal(\"core-backend.IModelDb\");\r\n expect(EditTxnError.isError(logError.firstCall.args[1], \"implicit-txn-write-disallowed\")).to.be.true;\r\n\r\n const callCount = logError.callCount;\r\n expectEditTxnError(() => txn.writeFileProperty(\"inactive-log\", \"value\"), \"not-active\");\r\n expectEditTxnError(() => txn.saveChanges(\"save inactive log\"), \"not-active\");\r\n expect(logError.callCount).to.equal(callCount);\r\n expectEditTxnError(() => txn.end(\"abandon\"), \"not-active\");\r\n });\r\n\r\n it(\"rejects implicit writes in throw mode and still allows active explicit writes\", () => {\r\n EditTxn.implicitWriteEnforcement = \"throw\";\r\n\r\n expectEditTxnError(() => legacyWriteFileProperty(iModel, \"implicit-throw\", \"value\"), \"implicit-txn-write-disallowed\");\r\n expect(iModel.queryFilePropertyString({ name: \"implicit-throw\", namespace: \"EditTxnTest\" })).to.be.undefined;\r\n\r\n const txn = new TestEditTxn(iModel);\r\n txn.start();\r\n txn.writeFileProperty(\"explicit-enforce\", \"value\");\r\n txn.end();\r\n\r\n expect(iModel.queryFilePropertyString({ name: \"explicit-enforce\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n });\r\n\r\n it(\"throws when started with unsaved changes\", () => {\r\n // Unsaved changes made through the implicit surface block a new explicit EditTxn.\r\n legacyWriteFileProperty(iModel, \"unsaved\", \"value\");\r\n\r\n const txn = new TestEditTxn(iModel);\r\n expectEditTxnError(() => txn.start(), \"unsaved-changes\");\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n iModel.abandonChanges();\r\n legacyWriteFileProperty(iModel, \"legacy-after-abandon\", \"value\");\r\n expect(iModel.queryFilePropertyString({ name: \"legacy-after-abandon\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n });\r\n\r\n it(\"rejects starting an explicit txn while another explicit txn is active\", () => {\r\n const first = new TestEditTxn(iModel);\r\n const second = new TestEditTxn(iModel);\r\n\r\n first.start();\r\n expect(first.isActive).to.be.true;\r\n\r\n // EditTxn.start() now requires the implicit txn to be active, so a second explicit txn cannot start yet.\r\n expectEditTxnError(() => second.start(), \"already-active\");\r\n expect(first.isActive).to.be.true;\r\n expect(second.isActive).to.be.false;\r\n\r\n first.end(\"abandon\");\r\n expect(first.isActive).to.be.false;\r\n });\r\n\r\n it(\"allows deprecated mutating APIs while an explicit txn is active when enforcement is none\", () => {\r\n const txn = new TestEditTxn(iModel);\r\n txn.start();\r\n\r\n // Deprecated IModelDb mutators route through the implicit txn and are allowed in compatibility mode.\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n iModel.saveFileProperty({ name: \"legacy\", namespace: \"EditTxnTest\" }, \"value\");\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n iModel.saveChanges(\"legacy save\");\r\n expect(iModel.queryFilePropertyString({ name: \"legacy\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n\r\n txn.writeFileProperty(\"explicit\", \"value\");\r\n txn.saveChanges(\"explicit save\");\r\n expect(iModel.queryFilePropertyString({ name: \"explicit\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n\r\n txn.end(\"abandon\");\r\n expect(txn.isActive).to.be.false;\r\n });\r\n\r\n it(\"allows starting a new explicit txn when only pending changes exist\", () => {\r\n const first = new TestEditTxn(iModel);\r\n const second = new TestEditTxn(iModel);\r\n\r\n first.start();\r\n first.writeFileProperty(\"pending\", \"value\");\r\n first.saveChanges(\"save pending\");\r\n\r\n // Saved-but-unpushed changes are allowed; only unsaved local changes block start().\r\n expect(iModel.txns.hasPendingTxns).to.be.true;\r\n expect(iModel.txns.hasUnsavedChanges).to.be.false;\r\n\r\n first.end(\"abandon\");\r\n expect(() => second.start()).to.not.throw();\r\n expect(first.isActive).to.be.false;\r\n expect(second.isActive).to.be.true;\r\n\r\n second.end(\"abandon\");\r\n expect(second.isActive).to.be.false;\r\n });\r\n\r\n it(\"uses the default description unless save is given an override\", () => {\r\n const txn = new EditTxn(iModel, \"default description\");\r\n\r\n txn.start();\r\n txn.saveFileProperty({ name: \"default-description\", namespace: \"EditTxnTest\" }, \"value\");\r\n txn.saveChanges();\r\n expect(iModel.txns.getLastSavedTxnProps()?.props.description).to.equal(\"default description\");\r\n\r\n txn.saveFileProperty({ name: \"override-description\", namespace: \"EditTxnTest\" }, \"value\");\r\n txn.end(\"save\", \"override description\");\r\n expect(iModel.txns.getLastSavedTxnProps()?.props.description).to.equal(\"override description\");\r\n });\r\n\r\n it(\"reverseTxns abandons unsaved changes from the active explicit txn\", () => {\r\n const txn = new TestEditTxn(iModel);\r\n txn.start();\r\n txn.writeFileProperty(\"reverse\", \"value\");\r\n\r\n // Reversing txns abandons the active explicit txn's local changes, but the explicit txn remains active.\r\n iModel.txns.reverseTxns(1);\r\n\r\n expect(txn.isActive).to.be.true;\r\n expect(iModel.txns.hasUnsavedChanges).to.be.false;\r\n expect(iModel.queryFilePropertyString({ name: \"reverse\", namespace: \"EditTxnTest\" })).to.be.undefined;\r\n\r\n txn.end(\"abandon\");\r\n expect(txn.isActive).to.be.false;\r\n });\r\n\r\n it(\"saves unsaved changes from the active explicit txn when the iModel closes\", () => {\r\n const txn = new TestEditTxn(iModel);\r\n txn.start();\r\n txn.writeFileProperty(\"unsaved-on-close\", \"value\");\r\n\r\n iModel.close();\r\n iModel = StandaloneDb.openFile(fileName, OpenMode.Readonly);\r\n\r\n expect(iModel.queryFilePropertyString({ name: \"unsaved-on-close\", namespace: \"EditTxnTest\" })).to.equal(\"value\");\r\n });\r\n\r\n it(\"allows subclasses to abandon unsaved changes when the iModel closes\", () => {\r\n const txn = new AbandonOnCloseEditTxn(iModel);\r\n txn.start();\r\n txn.writeFileProperty(\"saved-on-close\", \"value\");\r\n\r\n iModel.close();\r\n iModel = StandaloneDb.openFile(fileName, OpenMode.Readonly);\r\n\r\n expect(iModel.queryFilePropertyString({ name: \"saved-on-close\", namespace: \"EditTxnTest\" })).to.be.undefined;\r\n });\r\n});\r\n\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ElementGraphics.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/ElementGraphics.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { expect } from \"chai\";\nimport { assert, ByteStream, utf8ToString } from \"@itwin/core-bentley\";\nimport {\n CurrentImdlVersion, DynamicGraphicsRequest3dProps, ElementGeometry, ElementGeometryDataEntry, ElementGraphicsRequestProps, FeatureTableHeader, GeometryStreamIterator, GltfHeader, ImdlHeader,\n} from \"@itwin/core-common\";\nimport { ElementGraphicsStatus } from \"@bentley/imodeljs-native\";\nimport { _nativeDb, GeometricElement3d, SnapshotDb } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { LineSegment3d } from \"@itwin/core-geometry\";\n\ndescribe(\"ElementGraphics\", () => {\n let imodel: SnapshotDb;\n\n before(() => {\n imodel = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile(\"ElementGraphics\", \"mirukuru.ibim\"), IModelTestUtils.resolveAssetFile(\"mirukuru.ibim\"));\n });\n\n after(() => {\n if (imodel && imodel.isOpen)\n imodel.close();\n });\n\n it(\"obtains graphics for elements\", async () => {\n const elementId = \"0x29\";\n const element = imodel.elements.tryGetElement<GeometricElement3d>(elementId);\n expect(element).not.to.be.undefined;\n expect(element).instanceof(GeometricElement3d);\n\n const request: ElementGraphicsRequestProps = {\n id: \"test\",\n elementId,\n toleranceLog10: -2,\n formatVersion: CurrentImdlVersion.Major,\n };\n\n const result = await imodel[_nativeDb].generateElementGraphics(request);\n expect(result.status).to.equal(ElementGraphicsStatus.Success);\n assert(result.status === ElementGraphicsStatus.Success);\n\n const content = result.content;\n expect(content).not.to.be.undefined;\n expect(content instanceof Uint8Array).to.be.true;\n expect(content.length).least(40);\n });\n\n it(\"obtains graphics for dynamics from json format geometry stream\", async () => {\n const elementId = \"0x29\";\n const element = imodel.elements.tryGetElement<GeometricElement3d>({ id: elementId, wantGeometry: true });\n expect(element).not.to.be.undefined;\n expect(element).instanceof(GeometricElement3d);\n expect(element?.geom).not.to.be.undefined;\n expect(element?.placement).not.to.be.undefined;\n\n const request: DynamicGraphicsRequest3dProps = {\n id: \"test\",\n elementId,\n toleranceLog10: -2,\n formatVersion: CurrentImdlVersion.Major,\n type: \"3d\",\n placement: element!.placement,\n categoryId: element!.category,\n geometry: { format: \"json\", data: element!.geom! },\n };\n\n const result = await imodel[_nativeDb].generateElementGraphics(request);\n expect(result.status).to.equal(ElementGraphicsStatus.Success);\n assert(result.status === ElementGraphicsStatus.Success);\n\n const content = result.content;\n expect(content).not.to.be.undefined;\n expect(content instanceof Uint8Array).to.be.true;\n expect(content.length).least(40);\n });\n\n it(\"obtains graphics for dynamics from flatbuffers format geometry stream\", async () => {\n const elementId = \"0x29\";\n const element = imodel.elements.tryGetElement<GeometricElement3d>({ id: elementId, wantGeometry: true });\n expect(element).not.to.be.undefined;\n expect(element).instanceof(GeometricElement3d);\n expect(element?.geom).not.to.be.undefined;\n expect(element?.placement).not.to.be.undefined;\n\n const entries: ElementGeometryDataEntry[] = [];\n const it = new GeometryStreamIterator(element!.geom!, element!.category);\n for (const entry of it) {\n if (\"geometryQuery\" !== entry.primitive.type)\n continue;\n\n if (!ElementGeometry.appendGeometryParams(entry.geomParams, entries))\n continue;\n\n const geomEntry = ElementGeometry.fromGeometryQuery(entry.primitive.geometry);\n expect(geomEntry).not.to.be.undefined;\n entries.push(geomEntry!);\n }\n\n const request: DynamicGraphicsRequest3dProps = {\n id: \"test\",\n elementId,\n toleranceLog10: -2,\n formatVersion: CurrentImdlVersion.Major,\n type: \"3d\",\n placement: element!.placement,\n categoryId: element!.category,\n geometry: { format: \"flatbuffer\", data: entries },\n };\n\n const result = await imodel[_nativeDb].generateElementGraphics(request);\n expect(result.status).to.equal(ElementGraphicsStatus.Success);\n assert(result.status === ElementGraphicsStatus.Success);\n\n const content = result.content;\n expect(content).not.to.be.undefined;\n expect(content instanceof Uint8Array).to.be.true;\n expect(content.length).least(40);\n });\n\n it(\"supports an unlimited number of flatbuffer geometry stream entries\", async () => {\n async function getElementGraphics(numCopies: number): Promise<Uint8Array> {\n const elementId = \"0x29\";\n const element = imodel.elements.tryGetElement<GeometricElement3d>({ id: elementId, wantGeometry: true });\n expect(element).not.to.be.undefined;\n expect(element).instanceof(GeometricElement3d);\n expect(element?.geom).not.to.be.undefined;\n expect(element?.placement).not.to.be.undefined;\n\n const entries: ElementGeometryDataEntry[] = [];\n const it = new GeometryStreamIterator(element!.geom!, element!.category);\n for (const entry of it) {\n if (\"geometryQuery\" !== entry.primitive.type)\n continue;\n\n for (let i = 0; i < numCopies; i++) {\n const segment = LineSegment3d.createXYXY(i, i, i+1, i);\n const geomEntry = ElementGeometry.fromGeometryQuery(segment);\n expect(geomEntry).not.to.be.undefined;\n entries.push(geomEntry!);\n }\n\n break;\n }\n\n const request: DynamicGraphicsRequest3dProps = {\n id: \"test\",\n elementId,\n toleranceLog10: -2,\n formatVersion: CurrentImdlVersion.Major,\n type: \"3d\",\n placement: element!.placement,\n categoryId: element!.category,\n geometry: { format: \"flatbuffer\", data: entries },\n };\n\n const result = await imodel[_nativeDb].generateElementGraphics(request);\n expect(result.status).to.equal(ElementGraphicsStatus.Success);\n assert(result.status === ElementGraphicsStatus.Success);\n\n const content = result.content;\n expect(content).not.to.be.undefined;\n expect(content instanceof Uint8Array).to.be.true;\n expect(content.length).least(40);\n\n return content;\n }\n\n let prevGraphics: number[] = [];\n let prevRangeDiagonalMagnitude = 0;\n for (const numCopies of [1, 2, 3, 10, 100, 1000, 2000, 2047,2048, 2049, 2050, 2500, 2501, 2600, 3000, 10000]) {\n const tileBytes = await getElementGraphics(numCopies);\n const newGraphics = Array.from(tileBytes);\n\n expect(newGraphics).not.to.deep.equal(prevGraphics);\n\n // Extract metadata from the tile graphics.\n const stream = ByteStream.fromUint8Array(tileBytes);\n const header = new ImdlHeader(stream);\n\n const featureTableStartPos = stream.curPos;\n const featureTableHeader = FeatureTableHeader.readFrom(stream);\n expect(featureTableHeader).not.to.be.undefined;\n stream.curPos = featureTableStartPos + featureTableHeader!.length;\n const gltfHeader = new GltfHeader(stream);\n expect(gltfHeader.isValid).to.be.true;\n stream.curPos = gltfHeader.scenePosition;\n const sceneStrData = stream.nextBytes(gltfHeader.sceneStrLength);\n const sceneStr = utf8ToString(sceneStrData);\n expect(sceneStr).not.to.be.undefined;\n const json = JSON.parse(sceneStr!);\n\n // The tile should have two unique vertices per line segment in the input geometry stream.\n expect(json.meshes.Mesh_Root.primitives[0].vertices.count).to.equal(numCopies * 2);\n\n expect(header.contentRange.diagonal().magnitude()).greaterThan(prevRangeDiagonalMagnitude);\n prevRangeDiagonalMagnitude = header.contentRange.diagonal().magnitude();\n\n expect(newGraphics.length).greaterThan(prevGraphics.length);\n\n prevGraphics = newGraphics;\n }\n });\n\n it(\"produces expected errors\", async () => {\n type TestCase = [ElementGraphicsStatus, Partial<ElementGraphicsRequestProps>];\n const testCases: TestCase[] = [\n [ElementGraphicsStatus.ElementNotFound, { elementId: \"0\" }],\n [ElementGraphicsStatus.ElementNotFound, { elementId: \"0x12345678\" }],\n [ElementGraphicsStatus.ElementNotFound, { elementId: undefined }],\n\n [ElementGraphicsStatus.InvalidJson, { id: undefined }],\n [ElementGraphicsStatus.InvalidJson, { toleranceLog10: undefined }],\n\n [ElementGraphicsStatus.InvalidJson, { toleranceLog10: 12.5 }],\n [ElementGraphicsStatus.InvalidJson, { toleranceLog10: \"tol\" as any }],\n\n [ElementGraphicsStatus.Success, { formatVersion: undefined }],\n [ElementGraphicsStatus.UnknownMajorFormatVersion, { formatVersion: CurrentImdlVersion.Major + 1 }],\n [ElementGraphicsStatus.UnknownMajorFormatVersion, { formatVersion: \"latest\" as any }],\n ];\n\n for (const testCase of testCases) {\n const request: ElementGraphicsRequestProps = {\n id: \"test\",\n elementId: \"0x29\",\n toleranceLog10: -2,\n formatVersion: CurrentImdlVersion.Major,\n ...testCase[1],\n };\n\n const result = await imodel[_nativeDb].generateElementGraphics(request);\n expect(result.status).to.equal(testCase[0]);\n if (result.status === ElementGraphicsStatus.Success)\n expect(result.content).not.to.be.undefined;\n }\n });\n});\n"]}
1
+ {"version":3,"file":"ElementGraphics.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/ElementGraphics.test.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 { expect } from \"chai\";\r\nimport { assert, ByteStream, utf8ToString } from \"@itwin/core-bentley\";\r\nimport {\r\n CurrentImdlVersion, DynamicGraphicsRequest3dProps, ElementGeometry, ElementGeometryDataEntry, ElementGraphicsRequestProps, FeatureTableHeader, GeometryStreamIterator, GltfHeader, ImdlHeader,\r\n} from \"@itwin/core-common\";\r\nimport { ElementGraphicsStatus } from \"@bentley/imodeljs-native\";\r\nimport { _nativeDb, GeometricElement3d, SnapshotDb } from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { LineSegment3d } from \"@itwin/core-geometry\";\r\n\r\ndescribe(\"ElementGraphics\", () => {\r\n let imodel: SnapshotDb;\r\n\r\n before(() => {\r\n imodel = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile(\"ElementGraphics\", \"mirukuru.ibim\"), IModelTestUtils.resolveAssetFile(\"mirukuru.ibim\"));\r\n });\r\n\r\n after(() => {\r\n if (imodel && imodel.isOpen)\r\n imodel.close();\r\n });\r\n\r\n it(\"obtains graphics for elements\", async () => {\r\n const elementId = \"0x29\";\r\n const element = imodel.elements.tryGetElement<GeometricElement3d>(elementId);\r\n expect(element).not.to.be.undefined;\r\n expect(element).instanceof(GeometricElement3d);\r\n\r\n const request: ElementGraphicsRequestProps = {\r\n id: \"test\",\r\n elementId,\r\n toleranceLog10: -2,\r\n formatVersion: CurrentImdlVersion.Major,\r\n };\r\n\r\n const result = await imodel[_nativeDb].generateElementGraphics(request);\r\n expect(result.status).to.equal(ElementGraphicsStatus.Success);\r\n assert(result.status === ElementGraphicsStatus.Success);\r\n\r\n const content = result.content;\r\n expect(content).not.to.be.undefined;\r\n expect(content instanceof Uint8Array).to.be.true;\r\n expect(content.length).least(40);\r\n });\r\n\r\n it(\"obtains graphics for dynamics from json format geometry stream\", async () => {\r\n const elementId = \"0x29\";\r\n const element = imodel.elements.tryGetElement<GeometricElement3d>({ id: elementId, wantGeometry: true });\r\n expect(element).not.to.be.undefined;\r\n expect(element).instanceof(GeometricElement3d);\r\n expect(element?.geom).not.to.be.undefined;\r\n expect(element?.placement).not.to.be.undefined;\r\n\r\n const request: DynamicGraphicsRequest3dProps = {\r\n id: \"test\",\r\n elementId,\r\n toleranceLog10: -2,\r\n formatVersion: CurrentImdlVersion.Major,\r\n type: \"3d\",\r\n placement: element!.placement,\r\n categoryId: element!.category,\r\n geometry: { format: \"json\", data: element!.geom! },\r\n };\r\n\r\n const result = await imodel[_nativeDb].generateElementGraphics(request);\r\n expect(result.status).to.equal(ElementGraphicsStatus.Success);\r\n assert(result.status === ElementGraphicsStatus.Success);\r\n\r\n const content = result.content;\r\n expect(content).not.to.be.undefined;\r\n expect(content instanceof Uint8Array).to.be.true;\r\n expect(content.length).least(40);\r\n });\r\n\r\n it(\"obtains graphics for dynamics from flatbuffers format geometry stream\", async () => {\r\n const elementId = \"0x29\";\r\n const element = imodel.elements.tryGetElement<GeometricElement3d>({ id: elementId, wantGeometry: true });\r\n expect(element).not.to.be.undefined;\r\n expect(element).instanceof(GeometricElement3d);\r\n expect(element?.geom).not.to.be.undefined;\r\n expect(element?.placement).not.to.be.undefined;\r\n\r\n const entries: ElementGeometryDataEntry[] = [];\r\n const it = new GeometryStreamIterator(element!.geom!, element!.category);\r\n for (const entry of it) {\r\n if (\"geometryQuery\" !== entry.primitive.type)\r\n continue;\r\n\r\n if (!ElementGeometry.appendGeometryParams(entry.geomParams, entries))\r\n continue;\r\n\r\n const geomEntry = ElementGeometry.fromGeometryQuery(entry.primitive.geometry);\r\n expect(geomEntry).not.to.be.undefined;\r\n entries.push(geomEntry!);\r\n }\r\n\r\n const request: DynamicGraphicsRequest3dProps = {\r\n id: \"test\",\r\n elementId,\r\n toleranceLog10: -2,\r\n formatVersion: CurrentImdlVersion.Major,\r\n type: \"3d\",\r\n placement: element!.placement,\r\n categoryId: element!.category,\r\n geometry: { format: \"flatbuffer\", data: entries },\r\n };\r\n\r\n const result = await imodel[_nativeDb].generateElementGraphics(request);\r\n expect(result.status).to.equal(ElementGraphicsStatus.Success);\r\n assert(result.status === ElementGraphicsStatus.Success);\r\n\r\n const content = result.content;\r\n expect(content).not.to.be.undefined;\r\n expect(content instanceof Uint8Array).to.be.true;\r\n expect(content.length).least(40);\r\n });\r\n\r\n it(\"supports an unlimited number of flatbuffer geometry stream entries\", async () => {\r\n async function getElementGraphics(numCopies: number): Promise<Uint8Array> {\r\n const elementId = \"0x29\";\r\n const element = imodel.elements.tryGetElement<GeometricElement3d>({ id: elementId, wantGeometry: true });\r\n expect(element).not.to.be.undefined;\r\n expect(element).instanceof(GeometricElement3d);\r\n expect(element?.geom).not.to.be.undefined;\r\n expect(element?.placement).not.to.be.undefined;\r\n\r\n const entries: ElementGeometryDataEntry[] = [];\r\n const it = new GeometryStreamIterator(element!.geom!, element!.category);\r\n for (const entry of it) {\r\n if (\"geometryQuery\" !== entry.primitive.type)\r\n continue;\r\n\r\n for (let i = 0; i < numCopies; i++) {\r\n const segment = LineSegment3d.createXYXY(i, i, i+1, i);\r\n const geomEntry = ElementGeometry.fromGeometryQuery(segment);\r\n expect(geomEntry).not.to.be.undefined;\r\n entries.push(geomEntry!);\r\n }\r\n\r\n break;\r\n }\r\n\r\n const request: DynamicGraphicsRequest3dProps = {\r\n id: \"test\",\r\n elementId,\r\n toleranceLog10: -2,\r\n formatVersion: CurrentImdlVersion.Major,\r\n type: \"3d\",\r\n placement: element!.placement,\r\n categoryId: element!.category,\r\n geometry: { format: \"flatbuffer\", data: entries },\r\n };\r\n\r\n const result = await imodel[_nativeDb].generateElementGraphics(request);\r\n expect(result.status).to.equal(ElementGraphicsStatus.Success);\r\n assert(result.status === ElementGraphicsStatus.Success);\r\n\r\n const content = result.content;\r\n expect(content).not.to.be.undefined;\r\n expect(content instanceof Uint8Array).to.be.true;\r\n expect(content.length).least(40);\r\n\r\n return content;\r\n }\r\n\r\n let prevGraphics: number[] = [];\r\n let prevRangeDiagonalMagnitude = 0;\r\n for (const numCopies of [1, 2, 3, 10, 100, 1000, 2000, 2047,2048, 2049, 2050, 2500, 2501, 2600, 3000, 10000]) {\r\n const tileBytes = await getElementGraphics(numCopies);\r\n const newGraphics = Array.from(tileBytes);\r\n\r\n expect(newGraphics).not.to.deep.equal(prevGraphics);\r\n\r\n // Extract metadata from the tile graphics.\r\n const stream = ByteStream.fromUint8Array(tileBytes);\r\n const header = new ImdlHeader(stream);\r\n\r\n const featureTableStartPos = stream.curPos;\r\n const featureTableHeader = FeatureTableHeader.readFrom(stream);\r\n expect(featureTableHeader).not.to.be.undefined;\r\n stream.curPos = featureTableStartPos + featureTableHeader!.length;\r\n const gltfHeader = new GltfHeader(stream);\r\n expect(gltfHeader.isValid).to.be.true;\r\n stream.curPos = gltfHeader.scenePosition;\r\n const sceneStrData = stream.nextBytes(gltfHeader.sceneStrLength);\r\n const sceneStr = utf8ToString(sceneStrData);\r\n expect(sceneStr).not.to.be.undefined;\r\n const json = JSON.parse(sceneStr!);\r\n\r\n // The tile should have two unique vertices per line segment in the input geometry stream.\r\n expect(json.meshes.Mesh_Root.primitives[0].vertices.count).to.equal(numCopies * 2);\r\n\r\n expect(header.contentRange.diagonal().magnitude()).greaterThan(prevRangeDiagonalMagnitude);\r\n prevRangeDiagonalMagnitude = header.contentRange.diagonal().magnitude();\r\n\r\n expect(newGraphics.length).greaterThan(prevGraphics.length);\r\n\r\n prevGraphics = newGraphics;\r\n }\r\n });\r\n\r\n it(\"produces expected errors\", async () => {\r\n type TestCase = [ElementGraphicsStatus, Partial<ElementGraphicsRequestProps>];\r\n const testCases: TestCase[] = [\r\n [ElementGraphicsStatus.ElementNotFound, { elementId: \"0\" }],\r\n [ElementGraphicsStatus.ElementNotFound, { elementId: \"0x12345678\" }],\r\n [ElementGraphicsStatus.ElementNotFound, { elementId: undefined }],\r\n\r\n [ElementGraphicsStatus.InvalidJson, { id: undefined }],\r\n [ElementGraphicsStatus.InvalidJson, { toleranceLog10: undefined }],\r\n\r\n [ElementGraphicsStatus.InvalidJson, { toleranceLog10: 12.5 }],\r\n [ElementGraphicsStatus.InvalidJson, { toleranceLog10: \"tol\" as any }],\r\n\r\n [ElementGraphicsStatus.Success, { formatVersion: undefined }],\r\n [ElementGraphicsStatus.UnknownMajorFormatVersion, { formatVersion: CurrentImdlVersion.Major + 1 }],\r\n [ElementGraphicsStatus.UnknownMajorFormatVersion, { formatVersion: \"latest\" as any }],\r\n ];\r\n\r\n for (const testCase of testCases) {\r\n const request: ElementGraphicsRequestProps = {\r\n id: \"test\",\r\n elementId: \"0x29\",\r\n toleranceLog10: -2,\r\n formatVersion: CurrentImdlVersion.Major,\r\n ...testCase[1],\r\n };\r\n\r\n const result = await imodel[_nativeDb].generateElementGraphics(request);\r\n expect(result.status).to.equal(testCase[0]);\r\n if (result.status === ElementGraphicsStatus.Success)\r\n expect(result.content).not.to.be.undefined;\r\n }\r\n });\r\n});\r\n"]}
@@ -4,6 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { expect } from "chai";
6
6
  import { Guid, Id64 } from "@itwin/core-bentley";
7
+ import { withEditTxn } from "../../EditTxn";
7
8
  import { Loop, Path, Point3d, PolyfaceBuilder, Range3d, StrokeOptions, } from "@itwin/core-geometry";
8
9
  import { Code, ColorDef, GeometryParams, GeometryStreamBuilder, IModel, readElementMeshes, } from "@itwin/core-common";
9
10
  import { _nativeDb, GenericSchema, GeometryPart, PhysicalModel, PhysicalObject, PhysicalPartition, SnapshotDb, SpatialCategory, SubjectOwnsPartitionElements, } from "../../core-backend";
@@ -17,18 +18,20 @@ describe("generateElementMeshes", () => {
17
18
  rootSubject: { name: "generateElementMeshes", description: "generateElementMeshes" },
18
19
  });
19
20
  GenericSchema.registerSchema();
20
- const partitionId = imodel.elements.insertElement({
21
- classFullName: PhysicalPartition.classFullName,
22
- model: IModel.repositoryModelId,
23
- parent: new SubjectOwnsPartitionElements(IModel.rootSubjectId),
24
- code: PhysicalPartition.createCode(imodel, IModel.rootSubjectId, `PhysicalPartition_${Guid.createValue()}`),
21
+ withEditTxn(imodel, (txn) => {
22
+ const partitionId = txn.insertElement({
23
+ classFullName: PhysicalPartition.classFullName,
24
+ model: IModel.repositoryModelId,
25
+ parent: new SubjectOwnsPartitionElements(IModel.rootSubjectId),
26
+ code: PhysicalPartition.createCode(imodel, IModel.rootSubjectId, `PhysicalPartition_${Guid.createValue()}`),
27
+ });
28
+ const model = imodel.models.createModel({
29
+ classFullName: PhysicalModel.classFullName,
30
+ modeledElement: { id: partitionId },
31
+ });
32
+ modelId = txn.insertModel(model.toJSON());
33
+ categoryId = SpatialCategory.insert(txn, IModel.dictionaryId, "cat", { color: ColorDef.blue.toJSON() });
25
34
  });
26
- const model = imodel.models.createModel({
27
- classFullName: PhysicalModel.classFullName,
28
- modeledElement: { id: partitionId },
29
- });
30
- modelId = imodel.models.insertModel(model.toJSON());
31
- categoryId = SpatialCategory.insert(imodel, IModel.dictionaryId, "cat", { color: ColorDef.blue.toJSON() });
32
35
  });
33
36
  after(() => {
34
37
  imodel.close();
@@ -54,7 +57,7 @@ describe("generateElementMeshes", () => {
54
57
  angles: {},
55
58
  },
56
59
  };
57
- const elemId = imodel.elements.insertElement(props);
60
+ const elemId = withEditTxn(imodel, (txn) => txn.insertElement(props));
58
61
  expect(Id64.isValidId64(elemId)).to.be.true;
59
62
  return elemId;
60
63
  }
@@ -81,7 +84,7 @@ describe("generateElementMeshes", () => {
81
84
  code: GeometryPart.createCode(imodel, IModel.dictionaryId, Guid.createValue()),
82
85
  geom: ptBldr.geometryStream,
83
86
  };
84
- const partId = imodel.elements.insertElement(partProps);
87
+ const partId = withEditTxn(imodel, (txn) => txn.insertElement(partProps));
85
88
  expect(Id64.isValidId64(partId)).to.be.true;
86
89
  const elBldr = new GeometryStreamBuilder();
87
90
  elBldr.appendGeometryParamsChange(new GeometryParams(categoryId));
@@ -1 +1 @@
1
- {"version":3,"file":"ElementMesh.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/ElementMesh.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { expect } from \"chai\";\nimport { Guid, Id64 } from \"@itwin/core-bentley\";\nimport {\n Loop, Path, Point3d, PolyfaceBuilder, Range3d, StrokeOptions,\n} from \"@itwin/core-geometry\";\nimport {\n Code, ColorDef, GeometricElement3dProps, GeometryParams, GeometryPartProps, GeometryStreamBuilder, GeometryStreamEntryProps, IModel, readElementMeshes,\n} from \"@itwin/core-common\";\nimport {\n _nativeDb, GenericSchema, GeometryPart, PhysicalModel, PhysicalObject, PhysicalPartition, SnapshotDb, SpatialCategory, SubjectOwnsPartitionElements,\n} from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\ndescribe(\"generateElementMeshes\", () => {\n let imodel: SnapshotDb;\n let modelId: string;\n let categoryId: string;\n\n before(() => {\n imodel = SnapshotDb.createEmpty(IModelTestUtils.prepareOutputFile(\"generateElementMeshes\", `${Guid.createValue()}.bim`), {\n rootSubject: { name: \"generateElementMeshes\", description: \"generateElementMeshes\" },\n });\n\n GenericSchema.registerSchema();\n const partitionId = imodel.elements.insertElement({\n classFullName: PhysicalPartition.classFullName,\n model: IModel.repositoryModelId,\n parent: new SubjectOwnsPartitionElements(IModel.rootSubjectId),\n code: PhysicalPartition.createCode(imodel, IModel.rootSubjectId, `PhysicalPartition_${Guid.createValue()}`),\n });\n\n const model = imodel.models.createModel({\n classFullName: PhysicalModel.classFullName,\n modeledElement: { id: partitionId },\n });\n\n modelId = imodel.models.insertModel(model.toJSON());\n categoryId = SpatialCategory.insert(imodel, IModel.dictionaryId, \"cat\", { color: ColorDef.blue.toJSON() });\n });\n\n after(() => {\n imodel.close();\n });\n\n it(\"throws if source is not a geometric element\", async () => {\n await expect(imodel[_nativeDb].generateElementMeshes({source: \"NotAnId\"})).rejectedWith(\"Geometric element required\");\n });\n\n function insertTriangleElement(origin = [0, 0, 0]): string {\n const bldr = new GeometryStreamBuilder();\n bldr.appendGeometryParamsChange(new GeometryParams(categoryId));\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0), new Point3d(0, 0, 0)]));\n return insertElement(bldr.geometryStream, origin);\n }\n\n function insertElement(geom: GeometryStreamEntryProps[], origin = [0, 0, 0]): string {\n const props: GeometricElement3dProps = {\n classFullName: PhysicalObject.classFullName,\n model: modelId,\n code: Code.createEmpty(),\n category: categoryId,\n geom,\n placement: {\n origin,\n angles: { },\n },\n };\n\n const elemId = imodel.elements.insertElement(props);\n expect(Id64.isValidId64(elemId)).to.be.true;\n return elemId;\n }\n\n it(\"produces a polyface\", async () => {\n const source = insertTriangleElement();\n const bytes = await imodel[_nativeDb].generateElementMeshes({source});\n const meshes = readElementMeshes(bytes);\n expect(meshes.length).to.equal(1);\n expect(meshes[0].range().isAlmostEqual(new Range3d(0, 0, 0, 1, 1, 0))).to.be.true;\n });\n\n it(\"applies element placement transform\", async () => {\n const source = insertTriangleElement([5, 0, -2]);\n const bytes = await imodel[_nativeDb].generateElementMeshes({source});\n const meshes = readElementMeshes(bytes);\n expect(meshes.length).to.equal(1);\n expect(meshes[0].range().isAlmostEqual(new Range3d(5, 0, -2, 6, 1, -2))).to.be.true;\n });\n\n it(\"applies part reference transform\", async () => {\n const ptBldr = new GeometryStreamBuilder();\n ptBldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0), new Point3d(0, 0, 0)]));\n const partProps: GeometryPartProps = {\n classFullName: GeometryPart.classFullName,\n model: IModel.dictionaryId,\n code: GeometryPart.createCode(imodel, IModel.dictionaryId, Guid.createValue()),\n geom: ptBldr.geometryStream,\n };\n\n const partId = imodel.elements.insertElement(partProps);\n expect(Id64.isValidId64(partId)).to.be.true;\n\n const elBldr = new GeometryStreamBuilder();\n elBldr.appendGeometryParamsChange(new GeometryParams(categoryId));\n elBldr.appendGeometryPart3d(partId, new Point3d(0, 0, 1));\n elBldr.appendGeometryPart3d(partId, new Point3d(0, 0, -1));\n const source = insertElement(elBldr.geometryStream, [2, -4, 0]);\n\n const bytes = await imodel[_nativeDb].generateElementMeshes({source});\n const meshes = readElementMeshes(bytes);\n expect(meshes.length).to.equal(2);\n expect(meshes[0].range().isAlmostEqual(new Range3d(2, -4, 1, 3, -3, 1))).to.be.true;\n expect(meshes[1].range().isAlmostEqual(new Range3d(2, -4, -1, 3, -3, -1))).to.be.true;\n });\n\n it(\"produces multiple polyfaces\", async () => {\n const bldr = new GeometryStreamBuilder();\n bldr.appendGeometryParamsChange(new GeometryParams(categoryId));\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0), new Point3d(0, 0, 0)]));\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 5), new Point3d(1, 0, 5), new Point3d(0, 1, 5), new Point3d(0, 0, 5)]));\n const source = insertElement(bldr.geometryStream);\n\n const meshes = readElementMeshes(await imodel[_nativeDb].generateElementMeshes({source}));\n expect(meshes.length).to.equal(2);\n expect(meshes[0].range().isAlmostEqual(new Range3d(0, 0, 0, 1, 1, 0))).to.be.true;\n expect(meshes[1].range().isAlmostEqual(new Range3d(0, 0, 5, 1, 1, 5))).to.be.true;\n });\n\n it(\"ignores open curves\", async () => {\n const bldr = new GeometryStreamBuilder();\n bldr.appendGeometryParamsChange(new GeometryParams(categoryId));\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0), new Point3d(0, 0, 0)]));\n bldr.appendGeometry(Path.create([new Point3d(0, 0, 0), new Point3d(1, 1, 1)]));\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 5), new Point3d(1, 0, 5), new Point3d(0, 1, 5), new Point3d(0, 0, 5)]));\n const source = insertElement(bldr.geometryStream);\n\n const meshes = readElementMeshes(await imodel[_nativeDb].generateElementMeshes({source}));\n expect(meshes.length).to.equal(2);\n expect(meshes[0].range().isAlmostEqual(new Range3d(0, 0, 0, 1, 1, 0))).to.be.true;\n expect(meshes[1].range().isAlmostEqual(new Range3d(0, 0, 5, 1, 1, 5))).to.be.true;\n });\n\n it(\"omits normals and UVs\", async () => {\n const opts = new StrokeOptions();\n opts.needNormals = opts.needParams = true;\n const pfBldr = PolyfaceBuilder.create(opts);\n pfBldr.addTriangleFacet([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0)]);\n const pf = pfBldr.claimPolyface();\n expect(pf.pointCount).to.equal(3);\n expect(pf.normalCount).least(1);\n expect(pf.paramCount).least(1);\n\n const bldr = new GeometryStreamBuilder();\n bldr.appendGeometryParamsChange(new GeometryParams(categoryId));\n bldr.appendGeometry(pf);\n const source = insertElement(bldr.geometryStream, [10, 0, 0]);\n\n const bytes = await imodel[_nativeDb].generateElementMeshes({source});\n const meshes = readElementMeshes(bytes);\n expect(meshes.length).to.equal(1);\n expect(meshes[0].pointCount).to.equal(3);\n expect(meshes[0].paramCount).to.equal(0);\n expect(meshes[0].normalCount).to.equal(0);\n expect(meshes[0].range().isAlmostEqual(new Range3d(10, 0, 0, 11, 1, 0))).to.be.true;\n });\n});\n"]}
1
+ {"version":3,"file":"ElementMesh.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/ElementMesh.test.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\nimport { expect } from \"chai\";\r\nimport { Guid, Id64 } from \"@itwin/core-bentley\";\r\nimport { withEditTxn } from \"../../EditTxn\";\r\nimport {\r\n Loop, Path, Point3d, PolyfaceBuilder, Range3d, StrokeOptions,\r\n} from \"@itwin/core-geometry\";\r\nimport {\r\n Code, ColorDef, GeometricElement3dProps, GeometryParams, GeometryPartProps, GeometryStreamBuilder, GeometryStreamEntryProps, IModel, readElementMeshes,\r\n} from \"@itwin/core-common\";\r\nimport {\r\n _nativeDb, GenericSchema, GeometryPart, PhysicalModel, PhysicalObject, PhysicalPartition, SnapshotDb, SpatialCategory, SubjectOwnsPartitionElements,\r\n} from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\n\r\ndescribe(\"generateElementMeshes\", () => {\r\n let imodel: SnapshotDb;\r\n let modelId: string;\r\n let categoryId: string;\r\n\r\n before(() => {\r\n imodel = SnapshotDb.createEmpty(IModelTestUtils.prepareOutputFile(\"generateElementMeshes\", `${Guid.createValue()}.bim`), {\r\n rootSubject: { name: \"generateElementMeshes\", description: \"generateElementMeshes\" },\r\n });\r\n\r\n GenericSchema.registerSchema();\r\n withEditTxn(imodel, (txn) => {\r\n const partitionId = txn.insertElement({\r\n classFullName: PhysicalPartition.classFullName,\r\n model: IModel.repositoryModelId,\r\n parent: new SubjectOwnsPartitionElements(IModel.rootSubjectId),\r\n code: PhysicalPartition.createCode(imodel, IModel.rootSubjectId, `PhysicalPartition_${Guid.createValue()}`),\r\n });\r\n\r\n const model = imodel.models.createModel({\r\n classFullName: PhysicalModel.classFullName,\r\n modeledElement: { id: partitionId },\r\n });\r\n\r\n modelId = txn.insertModel(model.toJSON());\r\n categoryId = SpatialCategory.insert(txn, IModel.dictionaryId, \"cat\", { color: ColorDef.blue.toJSON() });\r\n });\r\n });\r\n\r\n after(() => {\r\n imodel.close();\r\n });\r\n\r\n it(\"throws if source is not a geometric element\", async () => {\r\n await expect(imodel[_nativeDb].generateElementMeshes({ source: \"NotAnId\" })).rejectedWith(\"Geometric element required\");\r\n });\r\n\r\n function insertTriangleElement(origin = [0, 0, 0]): string {\r\n const bldr = new GeometryStreamBuilder();\r\n bldr.appendGeometryParamsChange(new GeometryParams(categoryId));\r\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0), new Point3d(0, 0, 0)]));\r\n return insertElement(bldr.geometryStream, origin);\r\n }\r\n\r\n function insertElement(geom: GeometryStreamEntryProps[], origin = [0, 0, 0]): string {\r\n const props: GeometricElement3dProps = {\r\n classFullName: PhysicalObject.classFullName,\r\n model: modelId,\r\n code: Code.createEmpty(),\r\n category: categoryId,\r\n geom,\r\n placement: {\r\n origin,\r\n angles: {},\r\n },\r\n };\r\n\r\n const elemId = withEditTxn(imodel, (txn) => txn.insertElement(props));\r\n expect(Id64.isValidId64(elemId)).to.be.true;\r\n return elemId;\r\n }\r\n\r\n it(\"produces a polyface\", async () => {\r\n const source = insertTriangleElement();\r\n const bytes = await imodel[_nativeDb].generateElementMeshes({ source });\r\n const meshes = readElementMeshes(bytes);\r\n expect(meshes.length).to.equal(1);\r\n expect(meshes[0].range().isAlmostEqual(new Range3d(0, 0, 0, 1, 1, 0))).to.be.true;\r\n });\r\n\r\n it(\"applies element placement transform\", async () => {\r\n const source = insertTriangleElement([5, 0, -2]);\r\n const bytes = await imodel[_nativeDb].generateElementMeshes({ source });\r\n const meshes = readElementMeshes(bytes);\r\n expect(meshes.length).to.equal(1);\r\n expect(meshes[0].range().isAlmostEqual(new Range3d(5, 0, -2, 6, 1, -2))).to.be.true;\r\n });\r\n\r\n it(\"applies part reference transform\", async () => {\r\n const ptBldr = new GeometryStreamBuilder();\r\n ptBldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0), new Point3d(0, 0, 0)]));\r\n const partProps: GeometryPartProps = {\r\n classFullName: GeometryPart.classFullName,\r\n model: IModel.dictionaryId,\r\n code: GeometryPart.createCode(imodel, IModel.dictionaryId, Guid.createValue()),\r\n geom: ptBldr.geometryStream,\r\n };\r\n\r\n const partId = withEditTxn(imodel, (txn) => txn.insertElement(partProps));\r\n expect(Id64.isValidId64(partId)).to.be.true;\r\n\r\n const elBldr = new GeometryStreamBuilder();\r\n elBldr.appendGeometryParamsChange(new GeometryParams(categoryId));\r\n elBldr.appendGeometryPart3d(partId, new Point3d(0, 0, 1));\r\n elBldr.appendGeometryPart3d(partId, new Point3d(0, 0, -1));\r\n const source = insertElement(elBldr.geometryStream, [2, -4, 0]);\r\n\r\n const bytes = await imodel[_nativeDb].generateElementMeshes({ source });\r\n const meshes = readElementMeshes(bytes);\r\n expect(meshes.length).to.equal(2);\r\n expect(meshes[0].range().isAlmostEqual(new Range3d(2, -4, 1, 3, -3, 1))).to.be.true;\r\n expect(meshes[1].range().isAlmostEqual(new Range3d(2, -4, -1, 3, -3, -1))).to.be.true;\r\n });\r\n\r\n it(\"produces multiple polyfaces\", async () => {\r\n const bldr = new GeometryStreamBuilder();\r\n bldr.appendGeometryParamsChange(new GeometryParams(categoryId));\r\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0), new Point3d(0, 0, 0)]));\r\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 5), new Point3d(1, 0, 5), new Point3d(0, 1, 5), new Point3d(0, 0, 5)]));\r\n const source = insertElement(bldr.geometryStream);\r\n\r\n const meshes = readElementMeshes(await imodel[_nativeDb].generateElementMeshes({ source }));\r\n expect(meshes.length).to.equal(2);\r\n expect(meshes[0].range().isAlmostEqual(new Range3d(0, 0, 0, 1, 1, 0))).to.be.true;\r\n expect(meshes[1].range().isAlmostEqual(new Range3d(0, 0, 5, 1, 1, 5))).to.be.true;\r\n });\r\n\r\n it(\"ignores open curves\", async () => {\r\n const bldr = new GeometryStreamBuilder();\r\n bldr.appendGeometryParamsChange(new GeometryParams(categoryId));\r\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0), new Point3d(0, 0, 0)]));\r\n bldr.appendGeometry(Path.create([new Point3d(0, 0, 0), new Point3d(1, 1, 1)]));\r\n bldr.appendGeometry(Loop.createPolygon([new Point3d(0, 0, 5), new Point3d(1, 0, 5), new Point3d(0, 1, 5), new Point3d(0, 0, 5)]));\r\n const source = insertElement(bldr.geometryStream);\r\n\r\n const meshes = readElementMeshes(await imodel[_nativeDb].generateElementMeshes({ source }));\r\n expect(meshes.length).to.equal(2);\r\n expect(meshes[0].range().isAlmostEqual(new Range3d(0, 0, 0, 1, 1, 0))).to.be.true;\r\n expect(meshes[1].range().isAlmostEqual(new Range3d(0, 0, 5, 1, 1, 5))).to.be.true;\r\n });\r\n\r\n it(\"omits normals and UVs\", async () => {\r\n const opts = new StrokeOptions();\r\n opts.needNormals = opts.needParams = true;\r\n const pfBldr = PolyfaceBuilder.create(opts);\r\n pfBldr.addTriangleFacet([new Point3d(0, 0, 0), new Point3d(1, 0, 0), new Point3d(0, 1, 0)]);\r\n const pf = pfBldr.claimPolyface();\r\n expect(pf.pointCount).to.equal(3);\r\n expect(pf.normalCount).least(1);\r\n expect(pf.paramCount).least(1);\r\n\r\n const bldr = new GeometryStreamBuilder();\r\n bldr.appendGeometryParamsChange(new GeometryParams(categoryId));\r\n bldr.appendGeometry(pf);\r\n const source = insertElement(bldr.geometryStream, [10, 0, 0]);\r\n\r\n const bytes = await imodel[_nativeDb].generateElementMeshes({ source });\r\n const meshes = readElementMeshes(bytes);\r\n expect(meshes.length).to.equal(1);\r\n expect(meshes[0].pointCount).to.equal(3);\r\n expect(meshes[0].paramCount).to.equal(0);\r\n expect(meshes[0].normalCount).to.equal(0);\r\n expect(meshes[0].range().isAlmostEqual(new Range3d(10, 0, 0, 11, 1, 0))).to.be.true;\r\n });\r\n});\r\n"]}
@@ -5,6 +5,7 @@
5
5
  import { assert } from "chai";
6
6
  import * as fs from "fs";
7
7
  import { DbResult, Id64 } from "@itwin/core-bentley";
8
+ import { withEditTxn } from "../../EditTxn";
8
9
  import { Code, ColorDef, FillDisplay, GeometryClass, GeometryParams, GeometryStreamBuilder, ImageSourceFormat, IModel, LineStyle, TextureMapUnits, } from "@itwin/core-common";
9
10
  import { Angle, Box, Geometry, GrowableXYArray, GrowableXYZArray, LineSegment3d, LineString3d, Loop, NumberArray, Point2dArray, Point3d, Point3dArray, PolyfaceBuilder, Range3d, Sphere, StrokeOptions, Vector3d, Vector3dArray, } from "@itwin/core-geometry";
10
11
  import { ExportGraphics, ExportGraphicsMeshVisitor, LineStyleDefinition, PhysicalObject, RenderMaterialElement, SnapshotDb, Texture, } from "../../core-backend";
@@ -22,7 +23,10 @@ describe("exportGraphics", () => {
22
23
  code: Code.createEmpty(),
23
24
  geom: geometryStream,
24
25
  };
25
- return iModel.elements.insertElement(elementProps);
26
+ return withEditTxn(iModel, (txn) => txn.insertElement(elementProps));
27
+ }
28
+ function insertGeometryPart(partProps) {
29
+ return withEditTxn(iModel, (txn) => txn.insertElement(partProps));
26
30
  }
27
31
  function insertRenderMaterialWithTexture(name, textureId, patternScale, patternScaleMode) {
28
32
  // eslint-disable-next-line @typescript-eslint/naming-convention
@@ -31,15 +35,15 @@ describe("exportGraphics", () => {
31
35
  props.pattern_scale = patternScale;
32
36
  if (patternScaleMode)
33
37
  props.pattern_scalemode = patternScaleMode;
34
- return RenderMaterialElement.insert(iModel, IModel.dictionaryId, name, { paletteName: "test-palette", patternMap: props });
38
+ return withEditTxn(iModel, (txn) => RenderMaterialElement.insert(txn, IModel.dictionaryId, name, { paletteName: "test-palette", patternMap: props }));
35
39
  }
36
40
  function insertRenderMaterial(name, colorDef) {
37
41
  const colors = colorDef.colors;
38
- return RenderMaterialElement.insert(iModel, IModel.dictionaryId, name, {
42
+ return withEditTxn(iModel, (txn) => RenderMaterialElement.insert(txn, IModel.dictionaryId, name, {
39
43
  paletteName: "test-palette",
40
44
  color: [colors.r / 255, colors.g / 255, colors.b / 255],
41
45
  transmit: colors.t / 255,
42
- });
46
+ }));
43
47
  }
44
48
  before(() => {
45
49
  const seedFileName = IModelTestUtils.resolveAssetFile("CompatibilityTestSeed.bim");
@@ -180,7 +184,7 @@ describe("exportGraphics", () => {
180
184
  84, 24, 87, 99, 248, 15, 4, 12, 12, 64, 4, 198, 64, 46, 132, 5, 162, 254, 51, 0, 0, 195, 90, 10, 246, 127, 175, 154, 145, 0,
181
185
  0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130,
182
186
  ]);
183
- return textureIdString = Texture.insertTexture(iModel, IModel.dictionaryId, "test-texture", ImageSourceFormat.Png, pngData);
187
+ return textureIdString = withEditTxn(iModel, (txn) => Texture.insertTexture(txn, IModel.dictionaryId, "test-texture", ImageSourceFormat.Png, pngData));
184
188
  }
185
189
  it("handles materials with textures", () => {
186
190
  const textureId = getTextureId();
@@ -574,14 +578,16 @@ describe("exportGraphics", () => {
574
578
  code: Code.createEmpty(),
575
579
  geom: partBuilder.geometryStream,
576
580
  };
577
- const geomPartId = iModel.elements.insertElement(partProps);
578
- const pointSymbolData = LineStyleDefinition.Utils.createPointSymbolComponent(iModel, { geomPartId }); // base and size will be set automatically...
579
- assert.isTrue(undefined !== pointSymbolData);
580
- const strokePointData = LineStyleDefinition.Utils.createStrokePointComponent(iModel, { descr: "TestArrowHead", lcId: 0, lcType: LineStyleDefinition.ComponentType.Internal, symbols: [{ symId: pointSymbolData.compId, strokeNum: -1, mod1: LineStyleDefinition.SymbolOptions.CurveEnd }] });
581
- assert.isTrue(undefined !== strokePointData);
582
- const compoundData = LineStyleDefinition.Utils.createCompoundComponent(iModel, { comps: [{ id: strokePointData.compId, type: strokePointData.compType }, { id: 0, type: LineStyleDefinition.ComponentType.Internal }] });
583
- assert.isTrue(undefined !== compoundData);
584
- const styleId = LineStyleDefinition.Utils.createStyle(iModel, IModel.dictionaryId, "TestArrowStyle", compoundData);
581
+ const geomPartId = insertGeometryPart(partProps);
582
+ const styleId = withEditTxn(iModel, (txn) => {
583
+ const pointSymbolData = LineStyleDefinition.Utils.createPointSymbolComponent(txn, { geomPartId }); // base and size will be set automatically...
584
+ assert.isTrue(undefined !== pointSymbolData);
585
+ const strokePointData = LineStyleDefinition.Utils.createStrokePointComponent(txn, { descr: "TestArrowHead", lcId: 0, lcType: LineStyleDefinition.ComponentType.Internal, symbols: [{ symId: pointSymbolData.compId, strokeNum: -1, mod1: LineStyleDefinition.SymbolOptions.CurveEnd }] });
586
+ assert.isTrue(undefined !== strokePointData);
587
+ const compoundData = LineStyleDefinition.Utils.createCompoundComponent(txn, { comps: [{ id: strokePointData.compId, type: strokePointData.compType }, { id: 0, type: LineStyleDefinition.ComponentType.Internal }] });
588
+ assert.isTrue(undefined !== compoundData);
589
+ return LineStyleDefinition.Utils.createStyle(txn, IModel.dictionaryId, "TestArrowStyle", compoundData);
590
+ });
585
591
  assert.isTrue(Id64.isValidId64(styleId));
586
592
  const builder = new GeometryStreamBuilder();
587
593
  const geometryParams = new GeometryParams(seedCategory);
@@ -639,7 +645,7 @@ describe("exportGraphics", () => {
639
645
  code: Code.createEmpty(),
640
646
  geom: partBuilder.geometryStream,
641
647
  };
642
- const partId = iModel.elements.insertElement(partProps);
648
+ const partId = insertGeometryPart(partProps);
643
649
  const partInstanceBuilder = new GeometryStreamBuilder();
644
650
  partInstanceBuilder.appendGeometryPart3d(partId, Point3d.create(7, 8, 9));
645
651
  const partInstanceId = insertPhysicalElement(partInstanceBuilder.geometryStream);
@@ -673,7 +679,7 @@ describe("exportGraphics", () => {
673
679
  code: Code.createEmpty(),
674
680
  geom: partBuilder.geometryStream,
675
681
  };
676
- const partId = iModel.elements.insertElement(partProps);
682
+ const partId = insertGeometryPart(partProps);
677
683
  const partInstanceBuilder = new GeometryStreamBuilder();
678
684
  partInstanceBuilder.appendGeometryPart3d(partId, Point3d.create(7, 8, 9));
679
685
  const partInstanceId = insertPhysicalElement(partInstanceBuilder.geometryStream);
@@ -723,8 +729,8 @@ describe("exportGraphics", () => {
723
729
  geom: partBuilder.geometryStream,
724
730
  };
725
731
  // Add two parts
726
- const partId1 = iModel.elements.insertElement(partProps);
727
- const partId2 = iModel.elements.insertElement(partProps);
732
+ const partId1 = insertGeometryPart(partProps);
733
+ const partId2 = insertGeometryPart(partProps);
728
734
  const partInstanceBuilder = new GeometryStreamBuilder();
729
735
  partInstanceBuilder.appendGeometryPart3d(partId1, Point3d.create(7, 8, 9));
730
736
  partInstanceBuilder.appendGeometryPart3d(partId2, Point3d.create(10, 11, 12));
@@ -860,7 +866,7 @@ describe("exportGraphics", () => {
860
866
  code: Code.createEmpty(),
861
867
  geom: partBuilder.geometryStream,
862
868
  };
863
- const partId = iModel.elements.insertElement(partProps);
869
+ const partId = insertGeometryPart(partProps);
864
870
  const partInstanceBuilder = new GeometryStreamBuilder();
865
871
  partInstanceBuilder.appendGeometryPart3d(partId);
866
872
  const partInstanceId = insertPhysicalElement(partInstanceBuilder.geometryStream);
@@ -894,7 +900,7 @@ describe("exportGraphics", () => {
894
900
  code: Code.createEmpty(),
895
901
  geom: partBuilder.geometryStream,
896
902
  };
897
- const partId = iModel.elements.insertElement(partProps);
903
+ const partId = insertGeometryPart(partProps);
898
904
  const partInstanceBuilder = new GeometryStreamBuilder();
899
905
  const partInstanceGeometryParams = new GeometryParams(seedCategory);
900
906
  partInstanceGeometryParams.geometryClass = GeometryClass.Construction;
@@ -935,7 +941,7 @@ describe("exportGraphics", () => {
935
941
  code: Code.createEmpty(),
936
942
  geom: partBuilder.geometryStream,
937
943
  };
938
- const partId = iModel.elements.insertElement(partProps);
944
+ const partId = insertGeometryPart(partProps);
939
945
  const partInstanceBuilder = new GeometryStreamBuilder();
940
946
  partInstanceBuilder.appendGeometryPart3d(partId);
941
947
  const partInstanceId = insertPhysicalElement(partInstanceBuilder.geometryStream);
@@ -1063,20 +1069,20 @@ describe("exportGraphics", () => {
1063
1069
  assert.isTrue(numFacetsA === numFacets, "facet count");
1064
1070
  });
1065
1071
  it("creates output for mesh without zero blocking", () => {
1066
- const meshWithoutBlocking = JSON.parse(`[{
1067
- "indexedMesh": {
1068
- "numPerFace": 3,
1069
- "expectedClosure": 0,
1070
- "point": [
1071
- [0, 0, 0],
1072
- [1, 0, 0],
1073
- [1, 1, 0],
1074
- [0, 1, 0]
1075
- ],
1076
- "pointIndex": [1, 2, 3, 1, 3, 4],
1077
- "normal": [[0, 0, 1]],
1078
- "normalIndex": [1, 1, 1, 1, 1, 1]
1079
- }
1072
+ const meshWithoutBlocking = JSON.parse(`[{
1073
+ "indexedMesh": {
1074
+ "numPerFace": 3,
1075
+ "expectedClosure": 0,
1076
+ "point": [
1077
+ [0, 0, 0],
1078
+ [1, 0, 0],
1079
+ [1, 1, 0],
1080
+ [0, 1, 0]
1081
+ ],
1082
+ "pointIndex": [1, 2, 3, 1, 3, 4],
1083
+ "normal": [[0, 0, 1]],
1084
+ "normalIndex": [1, 1, 1, 1, 1, 1]
1085
+ }
1080
1086
  }]`);
1081
1087
  const newId = insertPhysicalElement(meshWithoutBlocking);
1082
1088
  const infos = [];