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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/BlobContainerService.js.map +1 -1
  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 +4 -4
  9. package/lib/cjs/Category.js.map +1 -1
  10. package/lib/cjs/ChangeSummaryManager.js +2 -2
  11. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  12. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  13. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  14. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  15. package/lib/cjs/ChangesetReader.js +3 -3
  16. package/lib/cjs/ChangesetReader.js.map +1 -1
  17. package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
  18. package/lib/cjs/ChannelControl.js.map +1 -1
  19. package/lib/cjs/CheckpointManager.d.ts +3 -0
  20. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  21. package/lib/cjs/CheckpointManager.js +8 -2
  22. package/lib/cjs/CheckpointManager.js.map +1 -1
  23. package/lib/cjs/ClassRegistry.js +10 -10
  24. package/lib/cjs/ClassRegistry.js.map +1 -1
  25. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  26. package/lib/cjs/CloudSqlite.js +19 -8
  27. package/lib/cjs/CloudSqlite.js.map +1 -1
  28. package/lib/cjs/CodeService.js.map +1 -1
  29. package/lib/cjs/CodeSpecs.d.ts +3 -3
  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 +2 -2
  35. package/lib/cjs/DisplayStyle.js.map +1 -1
  36. package/lib/cjs/ECDb.js.map +1 -1
  37. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  38. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  39. package/lib/cjs/ECSqlStatement.js.map +1 -1
  40. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  41. package/lib/cjs/EditTxn.js.map +1 -1
  42. package/lib/cjs/Element.d.ts +33 -9
  43. package/lib/cjs/Element.d.ts.map +1 -1
  44. package/lib/cjs/Element.js +47 -2
  45. package/lib/cjs/Element.js.map +1 -1
  46. package/lib/cjs/ElementAspect.js.map +1 -1
  47. package/lib/cjs/ElementGraphics.js.map +1 -1
  48. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  49. package/lib/cjs/Entity.js.map +1 -1
  50. package/lib/cjs/EntityReferences.js +2 -2
  51. package/lib/cjs/EntityReferences.js.map +1 -1
  52. package/lib/cjs/ExportGraphics.js.map +1 -1
  53. package/lib/cjs/ExternalSource.js.map +1 -1
  54. package/lib/cjs/FontFile.js.map +1 -1
  55. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  56. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  57. package/lib/cjs/GeometrySummary.js +47 -47
  58. package/lib/cjs/GeometrySummary.js.map +1 -1
  59. package/lib/cjs/IModelDb.d.ts +60 -22
  60. package/lib/cjs/IModelDb.d.ts.map +1 -1
  61. package/lib/cjs/IModelDb.js +113 -40
  62. package/lib/cjs/IModelDb.js.map +1 -1
  63. package/lib/cjs/IModelDbFonts.js.map +1 -1
  64. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  65. package/lib/cjs/IModelHost.d.ts.map +1 -1
  66. package/lib/cjs/IModelHost.js +3 -0
  67. package/lib/cjs/IModelHost.js.map +1 -1
  68. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  69. package/lib/cjs/IModelJsFs.js.map +1 -1
  70. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  71. package/lib/cjs/IpcHost.js.map +1 -1
  72. package/lib/cjs/LineStyle.js.map +1 -1
  73. package/lib/cjs/LocalHub.js +1 -1
  74. package/lib/cjs/LocalHub.js.map +1 -1
  75. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  76. package/lib/cjs/LockControl.js.map +1 -1
  77. package/lib/cjs/Material.js.map +1 -1
  78. package/lib/cjs/Model.d.ts +5 -5
  79. package/lib/cjs/Model.d.ts.map +1 -1
  80. package/lib/cjs/Model.js.map +1 -1
  81. package/lib/cjs/NativeAppStorage.js.map +1 -1
  82. package/lib/cjs/NativeHost.js.map +1 -1
  83. package/lib/cjs/NavigationRelationship.js.map +1 -1
  84. package/lib/cjs/PartialChangeUnifier.js +7 -7
  85. package/lib/cjs/PartialChangeUnifier.js.map +1 -1
  86. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  87. package/lib/cjs/PropertyStore.js.map +1 -1
  88. package/lib/cjs/Relationship.js.map +1 -1
  89. package/lib/cjs/RpcBackend.js.map +1 -1
  90. package/lib/cjs/SQLiteDb.js.map +1 -1
  91. package/lib/cjs/Schema.js.map +1 -1
  92. package/lib/cjs/SchemaSync.js.map +1 -1
  93. package/lib/cjs/SchemaUtils.js.map +1 -1
  94. package/lib/cjs/SheetIndex.js.map +1 -1
  95. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  96. package/lib/cjs/SqliteStatement.js.map +1 -1
  97. package/lib/cjs/StashManager.js.map +1 -1
  98. package/lib/cjs/Texture.d.ts +1 -1
  99. package/lib/cjs/Texture.js.map +1 -1
  100. package/lib/cjs/TileStorage.js.map +1 -1
  101. package/lib/cjs/TxnManager.js.map +1 -1
  102. package/lib/cjs/ViewDefinition.d.ts +6 -6
  103. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  104. package/lib/cjs/ViewDefinition.js.map +1 -1
  105. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  106. package/lib/cjs/ViewStore.js.map +1 -1
  107. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  108. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  109. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  110. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  111. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  112. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  113. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  114. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  115. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +36 -36
  116. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +28 -28
  117. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  118. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  119. package/lib/cjs/core-backend.js.map +1 -1
  120. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  121. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  122. package/lib/cjs/domains/GenericElements.js.map +1 -1
  123. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  124. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  125. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  126. package/lib/cjs/internal/ECSqlInstanceReshaper.js.map +1 -1
  127. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  128. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  129. package/lib/cjs/internal/HubMock.js.map +1 -1
  130. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  131. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  132. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  133. package/lib/cjs/internal/NoLocks.js.map +1 -1
  134. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  135. package/lib/cjs/internal/ServerBasedLocks.js +33 -33
  136. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  137. package/lib/cjs/internal/Symbols.js.map +1 -1
  138. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  139. package/lib/cjs/internal/cross-package.js.map +1 -1
  140. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  141. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  142. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  143. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  144. package/lib/cjs/internal/workspace/WorkspaceImpl.js +19 -3
  145. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  146. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  147. package/lib/cjs/rpc/multipart.js.map +1 -1
  148. package/lib/cjs/rpc/tracing.js.map +1 -1
  149. package/lib/cjs/rpc/web/logging.js.map +1 -1
  150. package/lib/cjs/rpc/web/request.js.map +1 -1
  151. package/lib/cjs/rpc/web/response.js.map +1 -1
  152. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  153. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  154. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  155. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  156. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  157. package/lib/cjs/workspace/Settings.js.map +1 -1
  158. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  159. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  160. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  161. package/lib/cjs/workspace/Workspace.d.ts +2 -0
  162. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  163. package/lib/cjs/workspace/Workspace.js.map +1 -1
  164. package/lib/cjs/workspace/WorkspaceEditor.d.ts +3 -0
  165. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  166. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  167. package/lib/esm/BackendHubAccess.js.map +1 -1
  168. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  169. package/lib/esm/BisCoreSchema.js.map +1 -1
  170. package/lib/esm/BlobContainerService.js.map +1 -1
  171. package/lib/esm/BriefcaseManager.js.map +1 -1
  172. package/lib/esm/CatalogDb.js.map +1 -1
  173. package/lib/esm/Category.d.ts +4 -4
  174. package/lib/esm/Category.js.map +1 -1
  175. package/lib/esm/ChangeSummaryManager.js +2 -2
  176. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  177. package/lib/esm/ChangedElementsDb.js.map +1 -1
  178. package/lib/esm/ChangesetECAdaptor.js +248 -248
  179. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  180. package/lib/esm/ChangesetReader.js +3 -3
  181. package/lib/esm/ChangesetReader.js.map +1 -1
  182. package/lib/esm/ChangesetReaderTypes.js.map +1 -1
  183. package/lib/esm/ChannelControl.js.map +1 -1
  184. package/lib/esm/CheckpointManager.d.ts +3 -0
  185. package/lib/esm/CheckpointManager.d.ts.map +1 -1
  186. package/lib/esm/CheckpointManager.js +8 -2
  187. package/lib/esm/CheckpointManager.js.map +1 -1
  188. package/lib/esm/ClassRegistry.js +6 -6
  189. package/lib/esm/ClassRegistry.js.map +1 -1
  190. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  191. package/lib/esm/CloudSqlite.js +19 -8
  192. package/lib/esm/CloudSqlite.js.map +1 -1
  193. package/lib/esm/CodeService.js.map +1 -1
  194. package/lib/esm/CodeSpecs.d.ts +3 -3
  195. package/lib/esm/CodeSpecs.js.map +1 -1
  196. package/lib/esm/ConcurrentQuery.js.map +1 -1
  197. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  198. package/lib/esm/DevTools.js.map +1 -1
  199. package/lib/esm/DisplayStyle.d.ts +2 -2
  200. package/lib/esm/DisplayStyle.js.map +1 -1
  201. package/lib/esm/ECDb.js.map +1 -1
  202. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  203. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  204. package/lib/esm/ECSqlStatement.js.map +1 -1
  205. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  206. package/lib/esm/EditTxn.js.map +1 -1
  207. package/lib/esm/Element.d.ts +33 -9
  208. package/lib/esm/Element.d.ts.map +1 -1
  209. package/lib/esm/Element.js +47 -2
  210. package/lib/esm/Element.js.map +1 -1
  211. package/lib/esm/ElementAspect.js.map +1 -1
  212. package/lib/esm/ElementGraphics.js.map +1 -1
  213. package/lib/esm/ElementTreeWalker.js.map +1 -1
  214. package/lib/esm/Entity.js.map +1 -1
  215. package/lib/esm/EntityReferences.js +1 -1
  216. package/lib/esm/EntityReferences.js.map +1 -1
  217. package/lib/esm/ExportGraphics.js.map +1 -1
  218. package/lib/esm/ExternalSource.js.map +1 -1
  219. package/lib/esm/FontFile.js.map +1 -1
  220. package/lib/esm/GeoCoordConfig.js.map +1 -1
  221. package/lib/esm/GeographicCRSServices.js.map +1 -1
  222. package/lib/esm/GeometrySummary.js +47 -47
  223. package/lib/esm/GeometrySummary.js.map +1 -1
  224. package/lib/esm/IModelDb.d.ts +60 -22
  225. package/lib/esm/IModelDb.d.ts.map +1 -1
  226. package/lib/esm/IModelDb.js +114 -41
  227. package/lib/esm/IModelDb.js.map +1 -1
  228. package/lib/esm/IModelDbFonts.js.map +1 -1
  229. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  230. package/lib/esm/IModelHost.d.ts.map +1 -1
  231. package/lib/esm/IModelHost.js +3 -0
  232. package/lib/esm/IModelHost.js.map +1 -1
  233. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  234. package/lib/esm/IModelJsFs.js.map +1 -1
  235. package/lib/esm/ImageSourceConversion.js.map +1 -1
  236. package/lib/esm/IpcHost.js.map +1 -1
  237. package/lib/esm/LineStyle.js.map +1 -1
  238. package/lib/esm/LocalHub.js +1 -1
  239. package/lib/esm/LocalHub.js.map +1 -1
  240. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  241. package/lib/esm/LockControl.js.map +1 -1
  242. package/lib/esm/Material.js.map +1 -1
  243. package/lib/esm/Model.d.ts +5 -5
  244. package/lib/esm/Model.d.ts.map +1 -1
  245. package/lib/esm/Model.js.map +1 -1
  246. package/lib/esm/NativeAppStorage.js.map +1 -1
  247. package/lib/esm/NativeHost.js.map +1 -1
  248. package/lib/esm/NavigationRelationship.js.map +1 -1
  249. package/lib/esm/PartialChangeUnifier.js +7 -7
  250. package/lib/esm/PartialChangeUnifier.js.map +1 -1
  251. package/lib/esm/PromiseMemoizer.js.map +1 -1
  252. package/lib/esm/PropertyStore.js.map +1 -1
  253. package/lib/esm/Relationship.js.map +1 -1
  254. package/lib/esm/RpcBackend.js.map +1 -1
  255. package/lib/esm/SQLiteDb.js.map +1 -1
  256. package/lib/esm/Schema.js.map +1 -1
  257. package/lib/esm/SchemaSync.js.map +1 -1
  258. package/lib/esm/SchemaUtils.js.map +1 -1
  259. package/lib/esm/SheetIndex.js.map +1 -1
  260. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  261. package/lib/esm/SqliteStatement.js.map +1 -1
  262. package/lib/esm/StashManager.js.map +1 -1
  263. package/lib/esm/Texture.d.ts +1 -1
  264. package/lib/esm/Texture.js.map +1 -1
  265. package/lib/esm/TileStorage.js.map +1 -1
  266. package/lib/esm/TxnManager.js.map +1 -1
  267. package/lib/esm/ViewDefinition.d.ts +6 -6
  268. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  269. package/lib/esm/ViewDefinition.js.map +1 -1
  270. package/lib/esm/ViewStateHydrator.js.map +1 -1
  271. package/lib/esm/ViewStore.js.map +1 -1
  272. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  273. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  274. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  275. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  276. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  277. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  278. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  279. package/lib/esm/core-backend.js.map +1 -1
  280. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  281. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  282. package/lib/esm/domains/GenericElements.js.map +1 -1
  283. package/lib/esm/domains/GenericSchema.js.map +1 -1
  284. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  285. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  286. package/lib/esm/internal/ECSqlInstanceReshaper.js.map +1 -1
  287. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  288. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  289. package/lib/esm/internal/HubMock.js.map +1 -1
  290. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  291. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  292. package/lib/esm/internal/NativePlatform.js.map +1 -1
  293. package/lib/esm/internal/NoLocks.js.map +1 -1
  294. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  295. package/lib/esm/internal/ServerBasedLocks.js +33 -33
  296. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  297. package/lib/esm/internal/Symbols.js.map +1 -1
  298. package/lib/esm/internal/annotations/fields.js.map +1 -1
  299. package/lib/esm/internal/cross-package.js.map +1 -1
  300. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  301. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  302. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  303. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  304. package/lib/esm/internal/workspace/WorkspaceImpl.js +19 -3
  305. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  306. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  307. package/lib/esm/rpc/multipart.js.map +1 -1
  308. package/lib/esm/rpc/tracing.js.map +1 -1
  309. package/lib/esm/rpc/web/logging.js.map +1 -1
  310. package/lib/esm/rpc/web/request.js.map +1 -1
  311. package/lib/esm/rpc/web/response.js.map +1 -1
  312. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  313. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  314. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  315. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  316. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  317. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  318. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  319. package/lib/esm/test/AttachDb.test.js +11 -11
  320. package/lib/esm/test/AttachDb.test.js.map +1 -1
  321. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  322. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  323. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  324. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  325. package/lib/esm/test/IModelHost.test.js.map +1 -1
  326. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  327. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  328. package/lib/esm/test/IpcHost.test.js.map +1 -1
  329. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  330. package/lib/esm/test/PrintElementTree.js.map +1 -1
  331. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  332. package/lib/esm/test/RevisionUtility.js.map +1 -1
  333. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js +51 -51
  334. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js.map +1 -1
  335. package/lib/esm/test/SchemaUtils.test.js +25 -25
  336. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  337. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  338. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  339. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  340. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  341. package/lib/esm/test/TestEditTxn.js.map +1 -1
  342. package/lib/esm/test/TestUtils.js.map +1 -1
  343. package/lib/esm/test/annotations/Fields.test.js +53 -53
  344. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  345. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  346. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  347. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  348. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  349. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  350. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  351. package/lib/esm/test/categories/Category.test.js.map +1 -1
  352. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  353. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  354. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  355. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  356. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  357. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  358. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  359. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  360. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  361. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  362. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  363. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  364. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  365. package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
  366. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  367. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  368. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  369. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js +4 -4
  370. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  371. package/lib/esm/test/ecdb/QueryReaders.test.js +33 -47
  372. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  373. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  374. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  375. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  376. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  377. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  378. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +2 -2
  379. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  380. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  381. package/lib/esm/test/element/ElementAspect.test.js +176 -24
  382. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  383. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  384. package/lib/esm/test/element/ElementRoundTrip.test.js +144 -139
  385. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  386. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  387. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  388. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  389. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  390. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  391. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  392. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  393. package/lib/esm/test/example-code/EditTxn.test.d.ts +2 -0
  394. package/lib/esm/test/example-code/EditTxn.test.d.ts.map +1 -0
  395. package/lib/esm/test/example-code/EditTxn.test.js +47 -0
  396. package/lib/esm/test/example-code/EditTxn.test.js.map +1 -0
  397. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  398. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  399. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  400. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  401. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  402. package/lib/esm/test/hubaccess/CheckpointManager.test.js +43 -1
  403. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  404. package/lib/esm/test/hubaccess/CodeSwap.test.js.map +1 -1
  405. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  406. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  407. package/lib/esm/test/hubaccess/SemanticRebase.test.js +345 -345
  408. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  409. package/lib/esm/test/imageData.js.map +1 -1
  410. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  411. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  412. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  413. package/lib/esm/test/imodel/IModel.test.js +353 -294
  414. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  415. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  416. package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
  417. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  418. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  419. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  420. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  421. package/lib/esm/test/index.js.map +1 -1
  422. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js +32 -32
  423. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js.map +1 -1
  424. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  425. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  426. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  427. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  428. package/lib/esm/test/rpc/response.test.js.map +1 -1
  429. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  430. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  431. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  432. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  433. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  434. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  435. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  436. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  437. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js +21 -21
  438. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js.map +1 -1
  439. package/lib/esm/test/schema/SchemaViewHidden.test.js +109 -109
  440. package/lib/esm/test/schema/SchemaViewHidden.test.js.map +1 -1
  441. package/lib/esm/test/schema/SchemaViewKoQ.test.js +13 -13
  442. package/lib/esm/test/schema/SchemaViewKoQ.test.js.map +1 -1
  443. package/lib/esm/test/schema/SchemaViewLifecycle.test.js +15 -15
  444. package/lib/esm/test/schema/SchemaViewLifecycle.test.js.map +1 -1
  445. package/lib/esm/test/schema/SchemaViewValidation.test.js +8 -8
  446. package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -1
  447. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  448. package/lib/esm/test/standalone/ChangeElementParentModel.test.js.map +1 -1
  449. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  450. package/lib/esm/test/standalone/ChangesetReader.test.js +313 -313
  451. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  452. package/lib/esm/test/standalone/CloudSqlite.test.js +73 -0
  453. package/lib/esm/test/standalone/CloudSqlite.test.js.map +1 -1
  454. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  455. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
  456. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  457. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  458. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  459. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  460. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  461. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  462. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  463. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  464. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  465. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  466. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  467. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  468. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  469. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  470. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  471. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  472. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  473. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  474. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  475. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  476. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  477. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
  478. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
  479. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  480. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  481. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  482. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  483. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  484. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  485. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  486. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  487. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  488. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  489. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  490. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  491. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  492. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  493. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  494. package/lib/esm/test/standalone/Workspace.test.js +115 -1
  495. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  496. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  497. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  498. package/lib/esm/workspace/Settings.js.map +1 -1
  499. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  500. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  501. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  502. package/lib/esm/workspace/Workspace.d.ts +2 -0
  503. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  504. package/lib/esm/workspace/Workspace.js.map +1 -1
  505. package/lib/esm/workspace/WorkspaceEditor.d.ts +3 -0
  506. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  507. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  508. package/package.json +18 -20
@@ -3,10 +3,11 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { assert, expect } from "chai";
6
+ import * as sinon from "sinon";
6
7
  import { Id64 } from "@itwin/core-bentley";
7
8
  import { IModel, SubCategoryAppearance } from "@itwin/core-common";
8
- import { withEditTxn } from "../../EditTxn";
9
- import { ElementAspect, ElementMultiAspect, ElementUniqueAspect, ExternalSourceAspect, PhysicalElement, SnapshotDb, SpatialCategory, } from "../../core-backend";
9
+ import { EditTxn, withEditTxn } from "../../EditTxn";
10
+ import { ElementAspect, ElementMultiAspect, ElementUniqueAspect, ExternalSourceAspect, PhysicalElement, SnapshotDb, SpatialCategory, Subject, } from "../../core-backend";
10
11
  import { IModelTestUtils } from "../IModelTestUtils";
11
12
  describe("ElementAspect", () => {
12
13
  let iModel;
@@ -79,7 +80,7 @@ describe("ElementAspect", () => {
79
80
  assert.equal(aspectX.schemaName, aspect.schemaName);
80
81
  assert.equal(aspectX.className, aspect.className);
81
82
  });
82
- assert.equal(JSON.stringify(uniqueAspects), `[{"classFullName":"DgnPlatformTest:TestUniqueAspect","id":"0x1","testUniqueAspectProperty":"Aspect2-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsUniqueAspect"}},
83
+ assert.equal(JSON.stringify(uniqueAspects), `[{"classFullName":"DgnPlatformTest:TestUniqueAspect","id":"0x1","testUniqueAspectProperty":"Aspect2-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsUniqueAspect"}},
83
84
  {"classFullName":"DgnPlatformTest:TestUniqueAspectNoHandler","id":"0x6","testUniqueAspectProperty":"Aspect1-Updated","length":1,"element":{"id":"0x17","relClassName":"BisCore.ElementOwnsUniqueAspect"}}]`.replace(/\s+/g, ""));
84
85
  const multiAspectsA = iModel.elements.getAspects(element.id, "DgnPlatformTest:TestMultiAspectNoHandler");
85
86
  assert.exists(multiAspectsA);
@@ -98,7 +99,7 @@ describe("ElementAspect", () => {
98
99
  assert.exists(aspectX.asAny.testMultiAspectProperty);
99
100
  assert.equal(aspectX.asAny.testMultiAspectProperty, aspect.asAny.testMultiAspectProperty);
100
101
  });
101
- assert.equal(JSON.stringify(multiAspectsA), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
102
+ assert.equal(JSON.stringify(multiAspectsA), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
102
103
  {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}}]`.replace(/\s+/g, ""));
103
104
  // Test getAspects with dot separator
104
105
  const multiAspectsADotSeparator = iModel.elements.getAspects(element.id, "DgnPlatformTest.TestMultiAspectNoHandler");
@@ -118,7 +119,7 @@ describe("ElementAspect", () => {
118
119
  assert.exists(aspectX.asAny.testMultiAspectProperty);
119
120
  assert.equal(aspectX.asAny.testMultiAspectProperty, aspect.asAny.testMultiAspectProperty);
120
121
  });
121
- assert.equal(JSON.stringify(multiAspectsADotSeparator), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
122
+ assert.equal(JSON.stringify(multiAspectsADotSeparator), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
122
123
  {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}}]`.replace(/\s+/g, ""));
123
124
  const multiAspectsB = iModel.elements.getAspects(element.id, "DgnPlatformTest:TestMultiAspect");
124
125
  assert.exists(multiAspectsB);
@@ -136,7 +137,7 @@ describe("ElementAspect", () => {
136
137
  assert.equal(aspectX.className, "TestMultiAspect");
137
138
  assert.exists(aspectX.asAny.testMultiAspectProperty);
138
139
  });
139
- assert.equal(JSON.stringify(multiAspectsB), `[{"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x2","testMultiAspectProperty":"Aspect5-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
140
+ assert.equal(JSON.stringify(multiAspectsB), `[{"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x2","testMultiAspectProperty":"Aspect5-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
140
141
  {"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x3","testMultiAspectProperty":"Aspect6-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}}]`.replace(/\s+/g, ""));
141
142
  const multiAspects = iModel.elements.getAspects(element.id, ElementMultiAspect.classFullName);
142
143
  assert.equal(multiAspects.length, 4);
@@ -148,9 +149,9 @@ describe("ElementAspect", () => {
148
149
  assert.equal(aspectX.schemaName, aspect.schemaName);
149
150
  assert.equal(aspectX.className, aspect.className);
150
151
  });
151
- assert.equal(JSON.stringify(multiAspects), `[{"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x2","testMultiAspectProperty":"Aspect5-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
152
- {"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x3","testMultiAspectProperty":"Aspect6-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
153
- {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
152
+ assert.equal(JSON.stringify(multiAspects), `[{"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x2","testMultiAspectProperty":"Aspect5-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
153
+ {"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x3","testMultiAspectProperty":"Aspect6-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
154
+ {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
154
155
  {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}}]`.replace(/\s+/g, ""));
155
156
  const rootSubject = iModel.elements.getRootSubject();
156
157
  assert.equal(0, iModel.elements.getAspects(rootSubject.id, "DgnPlatformTest:TestUniqueAspect").length, "Don't expect DgnPlatformTest:TestUniqueAspect aspects on the root Subject");
@@ -158,11 +159,11 @@ describe("ElementAspect", () => {
158
159
  assert.equal(0, iModel.elements.getAspects(rootSubject.id).length, "Don't expect any aspects on the root Subject");
159
160
  // The 'Element' property is introduced by ElementUniqueAspect and ElementMultiAspect, but is not available at the ElementAspect base class.
160
161
  // Since we're now using instance queries to query ElementUniqueAspect and ElementMultiAspect directly in getAspects(), we can provide ElementAspect to the function as well.
161
- const aspectList = `[{"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x2","testMultiAspectProperty":"Aspect5-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
162
- {"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x3","testMultiAspectProperty":"Aspect6-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
163
- {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
164
- {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
165
- {"classFullName":"DgnPlatformTest:TestUniqueAspect","id":"0x1","testUniqueAspectProperty":"Aspect2-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsUniqueAspect"}},
162
+ const aspectList = `[{"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x2","testMultiAspectProperty":"Aspect5-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
163
+ {"classFullName":"DgnPlatformTest:TestMultiAspect","id":"0x3","testMultiAspectProperty":"Aspect6-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}},
164
+ {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
165
+ {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
166
+ {"classFullName":"DgnPlatformTest:TestUniqueAspect","id":"0x1","testUniqueAspectProperty":"Aspect2-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsUniqueAspect"}},
166
167
  {"classFullName":"DgnPlatformTest:TestUniqueAspectNoHandler","id":"0x6","testUniqueAspectProperty":"Aspect1-Updated","length":1,"element":{"id":"0x17","relClassName":"BisCore.ElementOwnsUniqueAspect"}}]`.replace(/\s+/g, "");
167
168
  const aspects = iModel.elements.getAspects(element.id, ElementAspect.classFullName);
168
169
  assert.equal(aspects.length, 6);
@@ -171,6 +172,157 @@ describe("ElementAspect", () => {
171
172
  assert.equal(allAspects.length, 6);
172
173
  assert.equal(JSON.stringify(allAspects), aspectList);
173
174
  });
175
+ it("should use the aspect owner indexes", async () => {
176
+ const getPlanDetails = async (filtered, grouped) => {
177
+ const createQueryReader = sinon.spy(iModel, "createQueryReader");
178
+ try {
179
+ for await (const _aspect of iModel.elements.queryAspects({
180
+ elementIds: "0x17",
181
+ aspectClassFullName: filtered ? ElementAspect.classFullName : undefined,
182
+ groupByOwner: grouped,
183
+ })) { }
184
+ }
185
+ finally {
186
+ createQueryReader.restore();
187
+ }
188
+ assert.equal(createQueryReader.callCount, 1);
189
+ const query = String(createQueryReader.firstCall.args[0])
190
+ .replace("IdSet(:elementIds)", `IdSet('["0x17"]')`)
191
+ .replace(":aspectClassFullName", `'${ElementAspect.classFullName}'`);
192
+ const pragma = `PRAGMA explain_query('${query.replaceAll("'", "''")}')`;
193
+ return iModel.withQueryReader(pragma, (reader) => {
194
+ const details = [];
195
+ for (const row of reader)
196
+ details.push(row.toRow().detail);
197
+ return details;
198
+ });
199
+ };
200
+ for (const filtered of [false, true]) {
201
+ for (const grouped of [false, true]) {
202
+ const plan = await getPlanDetails(filtered, grouped);
203
+ assert.isTrue(plan.some((detail) => /^SCAN (?:owners|IdSet) VIRTUAL TABLE INDEX/.test(detail)), plan.join("\n"));
204
+ for (const aspectClass of ["ElementMultiAspect", "ElementUniqueAspect"])
205
+ assert.isTrue(plan.some((detail) => new RegExp(`^SEARCH main\\.bis_${aspectClass} USING .*INDEX .*_target \\(ElementId=\\?\\)$`).test(detail)), plan.join("\n"));
206
+ if (!grouped)
207
+ assert.isFalse(plan.some((detail) => detail.startsWith("USE TEMP B-TREE FOR ORDER BY")), plan.join("\n"));
208
+ }
209
+ }
210
+ });
211
+ it("should query aspects for multiple elements", async () => {
212
+ const seedFileName = IModelTestUtils.resolveAssetFile("ElementAspectTest.bim");
213
+ const testFileName = IModelTestUtils.prepareOutputFile("ElementAspect", "QueryAspects.bim");
214
+ const testDb = IModelTestUtils.createSnapshotFromSeed(testFileName, seedFileName);
215
+ try {
216
+ const secondOwnerId = withEditTxn(testDb, (txn) => {
217
+ const ownerId = Subject.insert(txn, IModel.rootSubjectId, "Second aspect owner");
218
+ txn.insertAspect({
219
+ classFullName: "DgnPlatformTest:TestUniqueAspectNoHandler",
220
+ element: { id: ownerId },
221
+ testUniqueAspectProperty: "Second owner unique aspect",
222
+ });
223
+ txn.insertAspect({
224
+ classFullName: "DgnPlatformTest:TestMultiAspectNoHandler",
225
+ element: { id: ownerId },
226
+ testMultiAspectProperty: "Second owner multi-aspect",
227
+ });
228
+ return ownerId;
229
+ });
230
+ const collect = async (aspects) => {
231
+ const result = [];
232
+ for await (const aspect of aspects)
233
+ result.push(aspect);
234
+ return result;
235
+ };
236
+ const allAspects = await collect(testDb.elements.queryAspects({
237
+ elementIds: [secondOwnerId, "0x17", secondOwnerId, IModel.rootSubjectId],
238
+ groupByOwner: true,
239
+ usePrimaryConn: true,
240
+ }));
241
+ assert.equal(allAspects.length, 8);
242
+ assert.deepEqual([...new Set(allAspects.map((aspect) => aspect.element.id))], ["0x17", secondOwnerId]);
243
+ const ownerRuns = allAspects.reduce((runs, aspect) => {
244
+ if (runs.at(-1) !== aspect.element.id)
245
+ runs.push(aspect.element.id);
246
+ return runs;
247
+ }, []);
248
+ assert.deepEqual(ownerRuns, ["0x17", secondOwnerId]);
249
+ const firstOwnerAspects = allAspects.filter((aspect) => aspect.element.id === "0x17");
250
+ assert.equal(firstOwnerAspects.length, 6);
251
+ assert.equal(allAspects.filter((aspect) => aspect.element.id === secondOwnerId).length, 2);
252
+ assert.isTrue(allAspects.every((aspect) => aspect instanceof ElementAspect));
253
+ assert.equal(JSON.stringify(firstOwnerAspects), JSON.stringify(testDb.elements.getAspects("0x17")));
254
+ const multiAspects = await collect(testDb.elements.queryAspects({
255
+ elementIds: ["0x17", secondOwnerId],
256
+ aspectClassFullName: ElementMultiAspect.classFullName,
257
+ }));
258
+ assert.equal(multiAspects.length, 5);
259
+ assert.isTrue(multiAspects.every((aspect) => aspect instanceof ElementMultiAspect));
260
+ const uniqueAspects = await collect(testDb.elements.queryAspects({
261
+ elementIds: ["0x17", secondOwnerId],
262
+ aspectClassFullName: ElementUniqueAspect.classFullName,
263
+ }));
264
+ assert.equal(uniqueAspects.length, 3);
265
+ assert.isTrue(uniqueAspects.every((aspect) => aspect instanceof ElementUniqueAspect));
266
+ const noHandlerMultiAspects = await collect(testDb.elements.queryAspects({
267
+ elementIds: new Set(["0x17", secondOwnerId]),
268
+ aspectClassFullName: "DgnPlatformTest.TestMultiAspectNoHandler",
269
+ }));
270
+ assert.equal(noHandlerMultiAspects.length, 3);
271
+ assert.isTrue(noHandlerMultiAspects.every((aspect) => aspect.classFullName === "DgnPlatformTest:TestMultiAspectNoHandler"));
272
+ const withoutNoHandlerMultiAspects = await collect(testDb.elements.queryAspects({
273
+ elementIds: ["0x17", secondOwnerId],
274
+ excludedAspectClassFullNames: new Set(["DgnPlatformTest:TestMultiAspectNoHandler"]),
275
+ }));
276
+ assert.equal(withoutNoHandlerMultiAspects.length, 5);
277
+ assert.isFalse(withoutNoHandlerMultiAspects.some((aspect) => aspect.classFullName === "DgnPlatformTest:TestMultiAspectNoHandler"));
278
+ const withUnknownExclusion = await collect(testDb.elements.queryAspects({
279
+ elementIds: ["0x17", secondOwnerId],
280
+ excludedAspectClassFullNames: new Set(["UnknownSchema:UnknownAspect"]),
281
+ }));
282
+ assert.equal(withUnknownExclusion.length, 8);
283
+ const includedMultiWithoutNoHandler = await collect(testDb.elements.queryAspects({
284
+ elementIds: ["0x17", secondOwnerId],
285
+ aspectClassFullName: ElementMultiAspect.classFullName,
286
+ excludedAspectClassFullNames: new Set(["DgnPlatformTest:TestMultiAspectNoHandler"]),
287
+ }));
288
+ assert.equal(includedMultiWithoutNoHandler.length, 2);
289
+ assert.isTrue(includedMultiWithoutNoHandler.every((aspect) => aspect.classFullName === "DgnPlatformTest:TestMultiAspect"));
290
+ const withMultipleExclusions = await collect(testDb.elements.queryAspects({
291
+ elementIds: ["0x17", secondOwnerId],
292
+ excludedAspectClassFullNames: new Set([
293
+ "DgnPlatformTest:TestMultiAspectNoHandler",
294
+ "DgnPlatformTest:TestUniqueAspectNoHandler",
295
+ "UnknownSchema:UnknownAspect",
296
+ ]),
297
+ }));
298
+ assert.equal(withMultipleExclusions.length, 3);
299
+ assert.isFalse(withMultipleExclusions.some((aspect) => aspect.classFullName.endsWith("NoHandler")));
300
+ const noAspects = await collect(testDb.elements.queryAspects({ elementIds: [] }));
301
+ assert.deepEqual(noAspects, []);
302
+ const unsavedEditTxn = new EditTxn(testDb, "query unsaved aspect");
303
+ unsavedEditTxn.start();
304
+ try {
305
+ const unsavedAspectId = unsavedEditTxn.insertAspect({
306
+ classFullName: "DgnPlatformTest:TestMultiAspectNoHandler",
307
+ element: { id: secondOwnerId },
308
+ testMultiAspectProperty: "Unsaved multi-aspect",
309
+ });
310
+ const primaryConnectionAspects = await collect(testDb.elements.queryAspects({
311
+ elementIds: secondOwnerId,
312
+ usePrimaryConn: true,
313
+ }));
314
+ assert.isTrue(primaryConnectionAspects.some((aspect) => aspect.id === unsavedAspectId));
315
+ const concurrentQueryAspects = await collect(testDb.elements.queryAspects({ elementIds: secondOwnerId }));
316
+ assert.isFalse(concurrentQueryAspects.some((aspect) => aspect.id === unsavedAspectId));
317
+ }
318
+ finally {
319
+ unsavedEditTxn.end("abandon");
320
+ }
321
+ }
322
+ finally {
323
+ testDb.close();
324
+ }
325
+ });
174
326
  it("should be able to insert, update, and delete MultiAspects", () => {
175
327
  const element = iModel.elements.getElement("0x17");
176
328
  assert.exists(element);
@@ -183,8 +335,8 @@ describe("ElementAspect", () => {
183
335
  withEditTxn(iModel, (txn) => txn.insertAspect(aspectProps));
184
336
  let aspects = iModel.elements.getAspects(element.id, aspectProps.classFullName);
185
337
  assert.isAtLeast(aspects.length, 1);
186
- assert.equal(JSON.stringify(aspects), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
187
- {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
338
+ assert.equal(JSON.stringify(aspects), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
339
+ {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
188
340
  {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x21","testMultiAspectProperty":"MultiAspectInsertTest1","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}}]`.replace(/\s+/g, ""));
189
341
  const numAspects = aspects.length;
190
342
  let found = false;
@@ -203,14 +355,14 @@ describe("ElementAspect", () => {
203
355
  assert.equal(aspectsUpdated.length, aspects.length);
204
356
  assert.equal(aspectsUpdated[foundIndex].asAny.testMultiAspectProperty, "MultiAspectInsertTest1-Updated");
205
357
  // Check if aspect was updated
206
- assert.equal(JSON.stringify(aspectsUpdated), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
207
- {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
358
+ assert.equal(JSON.stringify(aspectsUpdated), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
359
+ {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
208
360
  {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x21","testMultiAspectProperty":"MultiAspectInsertTest1-Updated","element":{"id":"0x17","relClassName":"BisCore.ElementOwnsMultiAspects"}}]`.replace(/\s+/g, ""));
209
361
  withEditTxn(iModel, (txn) => txn.deleteAspect(aspects[foundIndex].id));
210
362
  aspects = iModel.elements.getAspects(element.id, aspectProps.classFullName);
211
363
  assert.equal(numAspects, aspects.length + 1);
212
364
  // Check if aspect was deleted
213
- assert.equal(JSON.stringify(aspects), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
365
+ assert.equal(JSON.stringify(aspects), `[{"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x4","testMultiAspectProperty":"Aspect3-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}},
214
366
  {"classFullName":"DgnPlatformTest:TestMultiAspectNoHandler","id":"0x5","testMultiAspectProperty":"Aspect4-Updated","element":{"id":"0x17","relClassName":"DgnPlatformTest.TestElement"}}]`.replace(/\s+/g, ""));
215
367
  });
216
368
  it("should be able to insert, update, and delete UniqueAspects", () => {
@@ -337,17 +489,17 @@ describe("ElementAspect", () => {
337
489
  e1Aspects.forEach((x) => {
338
490
  assert.isTrue(findInProps(x, e1AspectProps));
339
491
  });
340
- assert.equal(JSON.stringify(e1Aspects), `[{"classFullName":"BisCore:ExternalSourceAspect","id":"0x21","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"A","kind":"Letter","element":{"id":"0x11","relClassName":"BisCore.ElementOwnsMultiAspects"}},
341
- {"classFullName":"BisCore:ExternalSourceAspect","id":"0x22","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"A","kind":"Letter","element":{"id":"0x11","relClassName":"BisCore.ElementOwnsMultiAspects"}},
342
- {"classFullName":"BisCore:ExternalSourceAspect","id":"0x23","scope":{"id":"0x11","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"A","kind":"Letter","element":{"id":"0x11","relClassName":"BisCore.ElementOwnsMultiAspects"}},
343
- {"classFullName":"BisCore:ExternalSourceAspect","id":"0x24","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"B","kind":"Letter","element":{"id":"0x11","relClassName":"BisCore.ElementOwnsMultiAspects"}},
492
+ assert.equal(JSON.stringify(e1Aspects), `[{"classFullName":"BisCore:ExternalSourceAspect","id":"0x21","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"A","kind":"Letter","element":{"id":"0x11","relClassName":"BisCore.ElementOwnsMultiAspects"}},
493
+ {"classFullName":"BisCore:ExternalSourceAspect","id":"0x22","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"A","kind":"Letter","element":{"id":"0x11","relClassName":"BisCore.ElementOwnsMultiAspects"}},
494
+ {"classFullName":"BisCore:ExternalSourceAspect","id":"0x23","scope":{"id":"0x11","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"A","kind":"Letter","element":{"id":"0x11","relClassName":"BisCore.ElementOwnsMultiAspects"}},
495
+ {"classFullName":"BisCore:ExternalSourceAspect","id":"0x24","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"B","kind":"Letter","element":{"id":"0x11","relClassName":"BisCore.ElementOwnsMultiAspects"}},
344
496
  {"classFullName":"BisCore:ExternalSourceAspect","id":"0x25","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"C","kind":"Kind2","element":{"id":"0x11","relClassName":"BisCore.ElementOwnsMultiAspects"}}]`.replace(/\s+/g, ""));
345
497
  const e2Aspects = iModelDb.elements.getAspects(e2, ExternalSourceAspect.classFullName);
346
498
  assert.equal(e2Aspects.length, e2AspectProps.length);
347
499
  e2Aspects.forEach((x) => {
348
500
  assert.isTrue(findInProps(x, e2AspectProps));
349
501
  });
350
- assert.equal(JSON.stringify(e2Aspects), `[{"classFullName":"BisCore:ExternalSourceAspect","id":"0x26","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"A","kind":"Letter","element":{"id":"0x13","relClassName":"BisCore.ElementOwnsMultiAspects"}},
502
+ assert.equal(JSON.stringify(e2Aspects), `[{"classFullName":"BisCore:ExternalSourceAspect","id":"0x26","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"A","kind":"Letter","element":{"id":"0x13","relClassName":"BisCore.ElementOwnsMultiAspects"}},
351
503
  {"classFullName":"BisCore:ExternalSourceAspect","id":"0x27","scope":{"id":"0x1","relClassName":"BisCore.ElementScopesExternalSourceIdentifier"},"identifier":"C","kind":"Letter","element":{"id":"0x13","relClassName":"BisCore.ElementOwnsMultiAspects"}}]`.replace(/\s+/g, ""));
352
504
  const allA = ExternalSourceAspect.findAllBySource(iModelDb, scopeId1, kind, "A");
353
505
  assert.equal(allA.filter((x) => x.elementId === e1).length, 2, "there are two A's in scope 1 on e1");