@itwin/core-backend 5.10.0-dev.9 → 5.11.0-dev.2

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 (580) hide show
  1. package/CHANGELOG.md +23 -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.d.ts +8 -1
  7. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  8. package/lib/cjs/BriefcaseManager.js.map +1 -1
  9. package/lib/cjs/CatalogDb.js.map +1 -1
  10. package/lib/cjs/Category.d.ts +4 -4
  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 +6 -6
  16. package/lib/cjs/ChangesetECAdaptor.js +252 -252
  17. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  18. package/lib/cjs/ChangesetReader.d.ts +84 -1
  19. package/lib/cjs/ChangesetReader.d.ts.map +1 -1
  20. package/lib/cjs/ChangesetReader.js +108 -12
  21. package/lib/cjs/ChangesetReader.js.map +1 -1
  22. package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
  23. package/lib/cjs/ChannelControl.js.map +1 -1
  24. package/lib/cjs/CheckpointManager.js.map +1 -1
  25. package/lib/cjs/ClassRegistry.d.ts +3 -3
  26. package/lib/cjs/ClassRegistry.js +8 -8
  27. package/lib/cjs/ClassRegistry.js.map +1 -1
  28. package/lib/cjs/CloudSqlite.js.map +1 -1
  29. package/lib/cjs/CodeService.js.map +1 -1
  30. package/lib/cjs/CodeSpecs.d.ts +3 -3
  31. package/lib/cjs/CodeSpecs.js.map +1 -1
  32. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  33. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  34. package/lib/cjs/DevTools.js.map +1 -1
  35. package/lib/cjs/DisplayStyle.d.ts +2 -2
  36. package/lib/cjs/DisplayStyle.js.map +1 -1
  37. package/lib/cjs/ECDb.js.map +1 -1
  38. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  39. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  40. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  41. package/lib/cjs/ECSqlStatement.js +4 -0
  42. package/lib/cjs/ECSqlStatement.js.map +1 -1
  43. package/lib/cjs/ECSqlSyncReader.d.ts.map +1 -1
  44. package/lib/cjs/ECSqlSyncReader.js +1 -0
  45. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  46. package/lib/cjs/EditTxn.js.map +1 -1
  47. package/lib/cjs/Element.d.ts +16 -13
  48. package/lib/cjs/Element.d.ts.map +1 -1
  49. package/lib/cjs/Element.js +8 -5
  50. package/lib/cjs/Element.js.map +1 -1
  51. package/lib/cjs/ElementAspect.d.ts +1 -1
  52. package/lib/cjs/ElementAspect.js.map +1 -1
  53. package/lib/cjs/ElementGraphics.js.map +1 -1
  54. package/lib/cjs/ElementTreeWalker.d.ts +5 -5
  55. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  56. package/lib/cjs/Entity.d.ts +13 -5
  57. package/lib/cjs/Entity.d.ts.map +1 -1
  58. package/lib/cjs/Entity.js +13 -5
  59. package/lib/cjs/Entity.js.map +1 -1
  60. package/lib/cjs/EntityReferences.js.map +1 -1
  61. package/lib/cjs/ExportGraphics.js.map +1 -1
  62. package/lib/cjs/ExternalSource.d.ts +2 -2
  63. package/lib/cjs/ExternalSource.js.map +1 -1
  64. package/lib/cjs/FontFile.js.map +1 -1
  65. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  66. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  67. package/lib/cjs/GeometrySummary.js +47 -47
  68. package/lib/cjs/GeometrySummary.js.map +1 -1
  69. package/lib/cjs/IModelDb.d.ts +112 -40
  70. package/lib/cjs/IModelDb.d.ts.map +1 -1
  71. package/lib/cjs/IModelDb.js +223 -50
  72. package/lib/cjs/IModelDb.js.map +1 -1
  73. package/lib/cjs/IModelDbFonts.js.map +1 -1
  74. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  75. package/lib/cjs/IModelHost.js.map +1 -1
  76. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  77. package/lib/cjs/IModelJsFs.js.map +1 -1
  78. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  79. package/lib/cjs/IpcHost.js.map +1 -1
  80. package/lib/cjs/LineStyle.d.ts +6 -6
  81. package/lib/cjs/LineStyle.js.map +1 -1
  82. package/lib/cjs/LocalHub.d.ts +6 -0
  83. package/lib/cjs/LocalHub.d.ts.map +1 -1
  84. package/lib/cjs/LocalHub.js +24 -1
  85. package/lib/cjs/LocalHub.js.map +1 -1
  86. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  87. package/lib/cjs/LockControl.js.map +1 -1
  88. package/lib/cjs/Material.d.ts +1 -1
  89. package/lib/cjs/Material.js.map +1 -1
  90. package/lib/cjs/Model.d.ts +6 -6
  91. package/lib/cjs/Model.js.map +1 -1
  92. package/lib/cjs/NativeAppStorage.js.map +1 -1
  93. package/lib/cjs/NativeHost.js.map +1 -1
  94. package/lib/cjs/NavigationRelationship.js.map +1 -1
  95. package/lib/cjs/PartialChangeUnifier.js +7 -7
  96. package/lib/cjs/PartialChangeUnifier.js.map +1 -1
  97. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  98. package/lib/cjs/PropertyStore.js.map +1 -1
  99. package/lib/cjs/Relationship.d.ts +13 -11
  100. package/lib/cjs/Relationship.d.ts.map +1 -1
  101. package/lib/cjs/Relationship.js +9 -7
  102. package/lib/cjs/Relationship.js.map +1 -1
  103. package/lib/cjs/RpcBackend.js.map +1 -1
  104. package/lib/cjs/SQLiteDb.js.map +1 -1
  105. package/lib/cjs/Schema.js.map +1 -1
  106. package/lib/cjs/SchemaSync.js.map +1 -1
  107. package/lib/cjs/SchemaUtils.js.map +1 -1
  108. package/lib/cjs/SheetIndex.d.ts +4 -4
  109. package/lib/cjs/SheetIndex.js.map +1 -1
  110. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  111. package/lib/cjs/SqliteStatement.js.map +1 -1
  112. package/lib/cjs/StashManager.js.map +1 -1
  113. package/lib/cjs/Texture.d.ts +1 -1
  114. package/lib/cjs/Texture.js.map +1 -1
  115. package/lib/cjs/TileStorage.js.map +1 -1
  116. package/lib/cjs/TxnManager.d.ts.map +1 -1
  117. package/lib/cjs/TxnManager.js +7 -0
  118. package/lib/cjs/TxnManager.js.map +1 -1
  119. package/lib/cjs/ViewDefinition.d.ts +6 -6
  120. package/lib/cjs/ViewDefinition.js.map +1 -1
  121. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  122. package/lib/cjs/ViewStore.js.map +1 -1
  123. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +1 -1
  124. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  125. package/lib/cjs/annotations/FrameGeometry.d.ts.map +1 -1
  126. package/lib/cjs/annotations/FrameGeometry.js +2 -3
  127. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  128. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  129. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  130. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  131. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  132. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  133. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  134. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +36 -32
  135. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +28 -27
  136. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  137. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  138. package/lib/cjs/core-backend.js.map +1 -1
  139. package/lib/cjs/domains/FunctionalElements.d.ts +1 -1
  140. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  141. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  142. package/lib/cjs/domains/GenericElements.d.ts +2 -2
  143. package/lib/cjs/domains/GenericElements.js.map +1 -1
  144. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  145. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  146. package/lib/cjs/internal/ChannelAdmin.d.ts +2 -2
  147. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  148. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -1
  149. package/lib/cjs/internal/ElementLRUCache.js +23 -4
  150. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  151. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  152. package/lib/cjs/internal/HubMock.d.ts +24 -1
  153. package/lib/cjs/internal/HubMock.d.ts.map +1 -1
  154. package/lib/cjs/internal/HubMock.js +60 -39
  155. package/lib/cjs/internal/HubMock.js.map +1 -1
  156. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  157. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  158. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  159. package/lib/cjs/internal/NoLocks.js.map +1 -1
  160. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  161. package/lib/cjs/internal/ServerBasedLocks.d.ts +19 -1
  162. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
  163. package/lib/cjs/internal/ServerBasedLocks.js +88 -34
  164. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  165. package/lib/cjs/internal/Symbols.js.map +1 -1
  166. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  167. package/lib/cjs/internal/cross-package.d.ts +1 -1
  168. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  169. package/lib/cjs/internal/cross-package.js +1 -2
  170. package/lib/cjs/internal/cross-package.js.map +1 -1
  171. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  172. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  173. package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -1
  174. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +55 -9
  175. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  176. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  177. package/lib/cjs/internal/workspace/WorkspaceImpl.js +7 -11
  178. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  179. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  180. package/lib/cjs/rpc/multipart.js.map +1 -1
  181. package/lib/cjs/rpc/tracing.js.map +1 -1
  182. package/lib/cjs/rpc/web/logging.js.map +1 -1
  183. package/lib/cjs/rpc/web/request.js.map +1 -1
  184. package/lib/cjs/rpc/web/response.js.map +1 -1
  185. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  186. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  187. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  188. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  189. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  190. package/lib/cjs/workspace/Settings.js.map +1 -1
  191. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  192. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  193. package/lib/cjs/workspace/SettingsSchemas.d.ts +20 -3
  194. package/lib/cjs/workspace/SettingsSchemas.d.ts.map +1 -1
  195. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  196. package/lib/cjs/workspace/Workspace.d.ts +13 -1
  197. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  198. package/lib/cjs/workspace/Workspace.js.map +1 -1
  199. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  200. package/lib/esm/BackendHubAccess.js.map +1 -1
  201. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  202. package/lib/esm/BisCoreSchema.js.map +1 -1
  203. package/lib/esm/BlobContainerService.js.map +1 -1
  204. package/lib/esm/BriefcaseManager.d.ts +8 -1
  205. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  206. package/lib/esm/BriefcaseManager.js.map +1 -1
  207. package/lib/esm/CatalogDb.js.map +1 -1
  208. package/lib/esm/Category.d.ts +4 -4
  209. package/lib/esm/Category.js.map +1 -1
  210. package/lib/esm/ChangeSummaryManager.js +2 -2
  211. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  212. package/lib/esm/ChangedElementsDb.js.map +1 -1
  213. package/lib/esm/ChangesetECAdaptor.d.ts +6 -6
  214. package/lib/esm/ChangesetECAdaptor.js +252 -252
  215. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  216. package/lib/esm/ChangesetReader.d.ts +84 -1
  217. package/lib/esm/ChangesetReader.d.ts.map +1 -1
  218. package/lib/esm/ChangesetReader.js +108 -12
  219. package/lib/esm/ChangesetReader.js.map +1 -1
  220. package/lib/esm/ChangesetReaderTypes.js.map +1 -1
  221. package/lib/esm/ChannelControl.js.map +1 -1
  222. package/lib/esm/CheckpointManager.js.map +1 -1
  223. package/lib/esm/ClassRegistry.d.ts +3 -3
  224. package/lib/esm/ClassRegistry.js +8 -8
  225. package/lib/esm/ClassRegistry.js.map +1 -1
  226. package/lib/esm/CloudSqlite.js.map +1 -1
  227. package/lib/esm/CodeService.js.map +1 -1
  228. package/lib/esm/CodeSpecs.d.ts +3 -3
  229. package/lib/esm/CodeSpecs.js.map +1 -1
  230. package/lib/esm/ConcurrentQuery.js.map +1 -1
  231. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  232. package/lib/esm/DevTools.js.map +1 -1
  233. package/lib/esm/DisplayStyle.d.ts +2 -2
  234. package/lib/esm/DisplayStyle.js.map +1 -1
  235. package/lib/esm/ECDb.js.map +1 -1
  236. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  237. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  238. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  239. package/lib/esm/ECSqlStatement.js +4 -0
  240. package/lib/esm/ECSqlStatement.js.map +1 -1
  241. package/lib/esm/ECSqlSyncReader.d.ts.map +1 -1
  242. package/lib/esm/ECSqlSyncReader.js +1 -0
  243. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  244. package/lib/esm/EditTxn.js.map +1 -1
  245. package/lib/esm/Element.d.ts +16 -13
  246. package/lib/esm/Element.d.ts.map +1 -1
  247. package/lib/esm/Element.js +8 -5
  248. package/lib/esm/Element.js.map +1 -1
  249. package/lib/esm/ElementAspect.d.ts +1 -1
  250. package/lib/esm/ElementAspect.js.map +1 -1
  251. package/lib/esm/ElementGraphics.js.map +1 -1
  252. package/lib/esm/ElementTreeWalker.d.ts +5 -5
  253. package/lib/esm/ElementTreeWalker.js.map +1 -1
  254. package/lib/esm/Entity.d.ts +13 -5
  255. package/lib/esm/Entity.d.ts.map +1 -1
  256. package/lib/esm/Entity.js +13 -5
  257. package/lib/esm/Entity.js.map +1 -1
  258. package/lib/esm/EntityReferences.js.map +1 -1
  259. package/lib/esm/ExportGraphics.js.map +1 -1
  260. package/lib/esm/ExternalSource.d.ts +2 -2
  261. package/lib/esm/ExternalSource.js.map +1 -1
  262. package/lib/esm/FontFile.js.map +1 -1
  263. package/lib/esm/GeoCoordConfig.js.map +1 -1
  264. package/lib/esm/GeographicCRSServices.js.map +1 -1
  265. package/lib/esm/GeometrySummary.js +47 -47
  266. package/lib/esm/GeometrySummary.js.map +1 -1
  267. package/lib/esm/IModelDb.d.ts +112 -40
  268. package/lib/esm/IModelDb.d.ts.map +1 -1
  269. package/lib/esm/IModelDb.js +224 -51
  270. package/lib/esm/IModelDb.js.map +1 -1
  271. package/lib/esm/IModelDbFonts.js.map +1 -1
  272. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  273. package/lib/esm/IModelHost.js.map +1 -1
  274. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  275. package/lib/esm/IModelJsFs.js.map +1 -1
  276. package/lib/esm/ImageSourceConversion.js.map +1 -1
  277. package/lib/esm/IpcHost.js.map +1 -1
  278. package/lib/esm/LineStyle.d.ts +6 -6
  279. package/lib/esm/LineStyle.js.map +1 -1
  280. package/lib/esm/LocalHub.d.ts +6 -0
  281. package/lib/esm/LocalHub.d.ts.map +1 -1
  282. package/lib/esm/LocalHub.js +24 -1
  283. package/lib/esm/LocalHub.js.map +1 -1
  284. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  285. package/lib/esm/LockControl.js.map +1 -1
  286. package/lib/esm/Material.d.ts +1 -1
  287. package/lib/esm/Material.js.map +1 -1
  288. package/lib/esm/Model.d.ts +6 -6
  289. package/lib/esm/Model.js.map +1 -1
  290. package/lib/esm/NativeAppStorage.js.map +1 -1
  291. package/lib/esm/NativeHost.js.map +1 -1
  292. package/lib/esm/NavigationRelationship.js.map +1 -1
  293. package/lib/esm/PartialChangeUnifier.js +7 -7
  294. package/lib/esm/PartialChangeUnifier.js.map +1 -1
  295. package/lib/esm/PromiseMemoizer.js.map +1 -1
  296. package/lib/esm/PropertyStore.js.map +1 -1
  297. package/lib/esm/Relationship.d.ts +13 -11
  298. package/lib/esm/Relationship.d.ts.map +1 -1
  299. package/lib/esm/Relationship.js +9 -7
  300. package/lib/esm/Relationship.js.map +1 -1
  301. package/lib/esm/RpcBackend.js.map +1 -1
  302. package/lib/esm/SQLiteDb.js.map +1 -1
  303. package/lib/esm/Schema.js.map +1 -1
  304. package/lib/esm/SchemaSync.js.map +1 -1
  305. package/lib/esm/SchemaUtils.js.map +1 -1
  306. package/lib/esm/SheetIndex.d.ts +4 -4
  307. package/lib/esm/SheetIndex.js.map +1 -1
  308. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  309. package/lib/esm/SqliteStatement.js.map +1 -1
  310. package/lib/esm/StashManager.js.map +1 -1
  311. package/lib/esm/Texture.d.ts +1 -1
  312. package/lib/esm/Texture.js.map +1 -1
  313. package/lib/esm/TileStorage.js.map +1 -1
  314. package/lib/esm/TxnManager.d.ts.map +1 -1
  315. package/lib/esm/TxnManager.js +7 -0
  316. package/lib/esm/TxnManager.js.map +1 -1
  317. package/lib/esm/ViewDefinition.d.ts +6 -6
  318. package/lib/esm/ViewDefinition.js.map +1 -1
  319. package/lib/esm/ViewStateHydrator.js.map +1 -1
  320. package/lib/esm/ViewStore.js.map +1 -1
  321. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +1 -1
  322. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  323. package/lib/esm/annotations/FrameGeometry.d.ts.map +1 -1
  324. package/lib/esm/annotations/FrameGeometry.js +2 -3
  325. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  326. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  327. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  328. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  329. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  330. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  331. package/lib/esm/core-backend.js.map +1 -1
  332. package/lib/esm/domains/FunctionalElements.d.ts +1 -1
  333. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  334. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  335. package/lib/esm/domains/GenericElements.d.ts +2 -2
  336. package/lib/esm/domains/GenericElements.js.map +1 -1
  337. package/lib/esm/domains/GenericSchema.js.map +1 -1
  338. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  339. package/lib/esm/internal/ChannelAdmin.d.ts +2 -2
  340. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  341. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -1
  342. package/lib/esm/internal/ElementLRUCache.js +23 -4
  343. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  344. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  345. package/lib/esm/internal/HubMock.d.ts +24 -1
  346. package/lib/esm/internal/HubMock.d.ts.map +1 -1
  347. package/lib/esm/internal/HubMock.js +61 -40
  348. package/lib/esm/internal/HubMock.js.map +1 -1
  349. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  350. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  351. package/lib/esm/internal/NativePlatform.js.map +1 -1
  352. package/lib/esm/internal/NoLocks.js.map +1 -1
  353. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  354. package/lib/esm/internal/ServerBasedLocks.d.ts +19 -1
  355. package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
  356. package/lib/esm/internal/ServerBasedLocks.js +88 -34
  357. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  358. package/lib/esm/internal/Symbols.js.map +1 -1
  359. package/lib/esm/internal/annotations/fields.js.map +1 -1
  360. package/lib/esm/internal/cross-package.d.ts +1 -1
  361. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  362. package/lib/esm/internal/cross-package.js +1 -1
  363. package/lib/esm/internal/cross-package.js.map +1 -1
  364. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  365. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  366. package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -1
  367. package/lib/esm/internal/workspace/SettingsSchemasImpl.js +55 -9
  368. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  369. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  370. package/lib/esm/internal/workspace/WorkspaceImpl.js +7 -11
  371. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  372. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  373. package/lib/esm/rpc/multipart.js.map +1 -1
  374. package/lib/esm/rpc/tracing.js.map +1 -1
  375. package/lib/esm/rpc/web/logging.js.map +1 -1
  376. package/lib/esm/rpc/web/request.js.map +1 -1
  377. package/lib/esm/rpc/web/response.js.map +1 -1
  378. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  379. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  380. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  381. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  382. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  383. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  384. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  385. package/lib/esm/test/AttachDb.test.js +11 -11
  386. package/lib/esm/test/AttachDb.test.js.map +1 -1
  387. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  388. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  389. package/lib/esm/test/ElementLRUCache.test.js +60 -0
  390. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  391. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  392. package/lib/esm/test/IModelHost.test.js.map +1 -1
  393. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  394. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  395. package/lib/esm/test/IpcHost.test.js.map +1 -1
  396. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  397. package/lib/esm/test/PrintElementTree.js.map +1 -1
  398. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  399. package/lib/esm/test/RevisionUtility.js.map +1 -1
  400. package/lib/esm/test/SchemaChangesetCanBeReversed.test.d.ts +2 -0
  401. package/lib/esm/test/SchemaChangesetCanBeReversed.test.d.ts.map +1 -0
  402. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js +239 -0
  403. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js.map +1 -0
  404. package/lib/esm/test/SchemaUtils.test.js +25 -25
  405. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  406. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  407. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  408. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  409. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  410. package/lib/esm/test/TestEditTxn.js.map +1 -1
  411. package/lib/esm/test/TestUtils.js.map +1 -1
  412. package/lib/esm/test/annotations/Fields.test.js +53 -53
  413. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  414. package/lib/esm/test/annotations/FrameGeometry.test.js +2 -1
  415. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  416. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  417. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  418. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  419. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  420. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  421. package/lib/esm/test/categories/Category.test.js.map +1 -1
  422. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  423. package/lib/esm/test/ecdb/CTE.test.js +89 -88
  424. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  425. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  426. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  427. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  428. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  429. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  430. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  431. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  432. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  433. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  434. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  435. package/lib/esm/test/ecdb/ECSqlQuery.test.js +14 -6
  436. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  437. package/lib/esm/test/ecdb/ECSqlStatement.test.js +342 -332
  438. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  439. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js +1 -0
  440. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  441. package/lib/esm/test/ecdb/QueryReaders.test.js +44 -31
  442. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  443. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  444. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  445. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  446. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  447. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  448. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +1 -0
  449. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  450. package/lib/esm/test/element/DeleteDefinitionElements.test.js +6 -2
  451. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  452. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  453. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  454. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  455. package/lib/esm/test/element/ElementRoundTrip.test.js +144 -139
  456. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  457. package/lib/esm/test/element/ExcludedElements.test.js +1 -0
  458. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  459. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  460. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  461. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  462. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  463. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  464. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  465. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  466. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  467. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +42 -32
  468. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  469. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  470. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  471. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  472. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  473. package/lib/esm/test/hubaccess/SemanticRebase.test.js +346 -345
  474. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  475. package/lib/esm/test/imageData.js.map +1 -1
  476. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  477. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  478. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  479. package/lib/esm/test/imodel/IModel.test.js +75 -44
  480. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  481. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  482. package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
  483. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  484. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  485. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  486. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  487. package/lib/esm/test/index.js.map +1 -1
  488. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  489. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  490. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  491. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  492. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  493. package/lib/esm/test/rpc/response.test.js.map +1 -1
  494. package/lib/esm/test/schema/ClassRegistry.test.js +102 -99
  495. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  496. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  497. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  498. package/lib/esm/test/schema/IModelSchemaContext.test.js +11 -9
  499. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  500. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  501. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  502. package/lib/esm/test/schema/SchemaViewHidden.test.d.ts +2 -0
  503. package/lib/esm/test/schema/SchemaViewHidden.test.d.ts.map +1 -0
  504. package/lib/esm/test/schema/SchemaViewHidden.test.js +275 -0
  505. package/lib/esm/test/schema/SchemaViewHidden.test.js.map +1 -0
  506. package/lib/esm/test/schema/SchemaViewKoQ.test.d.ts +2 -0
  507. package/lib/esm/test/schema/SchemaViewKoQ.test.d.ts.map +1 -0
  508. package/lib/esm/test/schema/SchemaViewKoQ.test.js +184 -0
  509. package/lib/esm/test/schema/SchemaViewKoQ.test.js.map +1 -0
  510. package/lib/esm/test/schema/SchemaViewLifecycle.test.d.ts +2 -0
  511. package/lib/esm/test/schema/SchemaViewLifecycle.test.d.ts.map +1 -0
  512. package/lib/esm/test/schema/SchemaViewLifecycle.test.js +141 -0
  513. package/lib/esm/test/schema/SchemaViewLifecycle.test.js.map +1 -0
  514. package/lib/esm/test/schema/SchemaViewValidation.test.d.ts +2 -0
  515. package/lib/esm/test/schema/SchemaViewValidation.test.d.ts.map +1 -0
  516. package/lib/esm/test/schema/SchemaViewValidation.test.js +475 -0
  517. package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -0
  518. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  519. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  520. package/lib/esm/test/standalone/ChangesetReader.test.js +1191 -583
  521. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  522. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  523. package/lib/esm/test/standalone/DeleteElements.test.js +45 -0
  524. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
  525. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  526. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  527. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  528. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  529. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  530. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  531. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  532. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  533. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  534. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  535. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  536. package/lib/esm/test/standalone/IModelWrite.test.js +33 -27
  537. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  538. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  539. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  540. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  541. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  542. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  543. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  544. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  545. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  546. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
  547. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
  548. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  549. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  550. package/lib/esm/test/standalone/ServerBasedLocks.test.js +62 -0
  551. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  552. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  553. package/lib/esm/test/standalone/Settings.test.js +2 -0
  554. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  555. package/lib/esm/test/standalone/SettingsSchemas.test.js +397 -0
  556. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  557. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  558. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  559. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  560. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  561. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  562. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  563. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  564. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  565. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  566. package/lib/esm/test/standalone/Workspace.test.js +23 -0
  567. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  568. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  569. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  570. package/lib/esm/workspace/Settings.js.map +1 -1
  571. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  572. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  573. package/lib/esm/workspace/SettingsSchemas.d.ts +20 -3
  574. package/lib/esm/workspace/SettingsSchemas.d.ts.map +1 -1
  575. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  576. package/lib/esm/workspace/Workspace.d.ts +13 -1
  577. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  578. package/lib/esm/workspace/Workspace.js.map +1 -1
  579. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  580. package/package.json +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"ElementDependencyGraph.test.js","sourceRoot":"","sources":["../../../../src/test/element/ElementDependencyGraph.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/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { assert } from \"chai\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { Guid, Id64Array, Id64String, Logger, OpenMode } from \"@itwin/core-bentley\";\nimport { EditTxn, withEditTxn } from \"../../EditTxn\";\nimport {\n CodeScopeSpec, CodeSpec, ColorByName, DomainOptions, GeometryStreamBuilder, IModel, RelatedElementProps, RelationshipProps, SubCategoryAppearance,\n UpgradeOptions,\n} from \"@itwin/core-common\";\nimport { LineSegment3d, Point3d, YawPitchRollAngles } from \"@itwin/core-geometry\";\nimport { _nativeDb, ChannelControl, ElementDrivesElementProps, IModelJsFs, PhysicalModel, SpatialCategory, StandaloneDb } from \"../../core-backend\";\nimport { IModelTestUtils, TestElementDrivesElement, TestPhysicalObject, TestPhysicalObjectProps } from \"../IModelTestUtils\";\nimport { IModelNative } from \"../../internal/NativePlatform\";\n\nfunction saveTestChanges(txn: EditTxn, args?: string): void {\n txn.saveChanges(args);\n}\n\nexport function copyFile(newName: string, pathToCopy: string): string {\n const newPath = path.join(path.dirname(pathToCopy), newName);\n try {\n fs.unlinkSync(newPath);\n } catch {\n }\n fs.copyFileSync(pathToCopy, newPath);\n return newPath;\n}\n\nfunction assertRels(list: RelationshipProps[], rels: ElementDrivesElementProps[]) {\n assert.equal(list.length, rels.length);\n for (let i = 0; i < rels.length; ++i) {\n assert.equal(list[i].id, rels[i].id);\n }\n}\n\nclass DependencyCallbackResults {\n public beforeOutputs: Id64Array = [];\n public allInputsHandled: Id64Array = [];\n public rootChanged: RelationshipProps[] = [];\n public deletedDependency: RelationshipProps[] = [];\n}\n\ninterface DbInfo {\n seedFileName: string;\n codeSpecId: Id64String;\n physicalModelId: Id64String;\n spatialCategoryId: Id64String;\n}\n\nclass TestHelper {\n public db: StandaloneDb;\n public readonly txn: EditTxn;\n public dres = new DependencyCallbackResults();\n private removals: VoidFunction[] = [];\n private codeSpecId: Id64String = \"\";\n private physicalModelId: Id64String = \"\";\n private spatialCategoryid: Id64String = \"\";\n\n constructor(testName: string, dbInfo: DbInfo) {\n this.codeSpecId = dbInfo.codeSpecId;\n this.physicalModelId = dbInfo.physicalModelId;\n this.spatialCategoryid = dbInfo.spatialCategoryId;\n\n const writeDbFileName = copyFile(`${testName}.bim`, dbInfo.seedFileName);\n this.db = StandaloneDb.openFile(writeDbFileName, OpenMode.ReadWrite);\n assert.isTrue(this.db !== undefined);\n this.db.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n this.txn = new EditTxn(this.db, `${testName} element dependency graph`);\n this.txn.start();\n\n this.db[_nativeDb].enableTxnTesting();\n assert.equal(this.db[_nativeDb].addChildPropagatesChangesToParentRelationship(\"TestBim\", \"ChildPropagatesChangesToParent\"), 0);\n this.setElementDependencyGraphCallbacks();\n }\n\n public terminate() {\n if (this.txn.isActive)\n this.txn.end(\"abandon\");\n\n this.db.close();\n assert.isFalse(this.db.isOpen);\n this.removeElementDependencyGraphCallbacks();\n }\n\n public makeElement(codeValue: string, parent?: RelatedElementProps): TestPhysicalObjectProps {\n const builder = new GeometryStreamBuilder();\n builder.appendGeometry(LineSegment3d.create(Point3d.createZero(), Point3d.create(5, 0, 0)));\n\n return {\n classFullName: \"TestBim:TestPhysicalObject\",\n model: this.physicalModelId,\n category: this.spatialCategoryid,\n code: { spec: this.codeSpecId, scope: this.physicalModelId, value: codeValue },\n intProperty: 100,\n placement: {\n origin: new Point3d(0, 0, 0),\n angles: new YawPitchRollAngles(),\n },\n geom: builder.geometryStream,\n parent,\n };\n }\n\n public insertElement(codeValue: string, parent?: RelatedElementProps): Id64String {\n return this.txn.insertElement(this.makeElement(codeValue, parent));\n }\n\n public updateElement(elid: Id64String, newLabel: string) {\n const ed2 = this.db.elements.getElement({ id: elid });\n ed2.userLabel = newLabel;\n this.txn.updateElement(ed2.toJSON());\n }\n\n public fmtElem(elId: Id64String) { return this.db.elements.getElement(elId).code.value; }\n public fmtRel(props: RelationshipProps) { return `${props.classFullName} ${this.fmtElem(props.sourceId)} --> ${this.fmtElem(props.targetId)}`; }\n\n public resetDependencyResults() {\n this.dres = new DependencyCallbackResults();\n }\n\n public setElementDependencyGraphCallbacks() {\n this.removals.push(TestElementDrivesElement.deletedDependency.addListener((arg) => {\n Logger.logTrace(\"EDGTest\", `_onDeletedDependency ${this.fmtRel(arg.props)}`);\n this.dres.deletedDependency.push(arg.props);\n }));\n this.removals.push(TestElementDrivesElement.rootChanged.addListener((arg) => {\n Logger.logTrace(\"EDGTest\", `_onRootChanged ${this.fmtRel(arg.props)}`);\n this.dres.rootChanged.push(arg.props);\n }));\n this.removals.push(TestPhysicalObject.beforeOutputsHandled.addListener((arg) => {\n Logger.logTrace(\"EDGTest\", `_onBeforeOutputsHandled ${this.fmtElem(arg.elId)}`);\n this.dres.beforeOutputs.push(arg.elId);\n }));\n this.removals.push(TestPhysicalObject.allInputsHandled.addListener((arg) => {\n Logger.logTrace(\"EDGTest\", `_onAllInputsHandled ${this.fmtElem(arg.elId)}`);\n this.dres.allInputsHandled.push(arg.elId);\n }));\n }\n\n public removeElementDependencyGraphCallbacks() {\n this.removals.forEach((drop) => drop());\n }\n}\n\ndescribe(\"ElementDependencyGraph\", () => {\n let testFileName: string;\n let dbInfo: DbInfo;\n\n const performUpgrade = (pathname: string) => {\n const nativeDb = new IModelNative.platform.DgnDb();\n const upgradeOptions: UpgradeOptions = {\n domain: DomainOptions.Upgrade,\n schemaLockHeld: true,\n };\n nativeDb.openIModel(pathname, OpenMode.ReadWrite, upgradeOptions);\n nativeDb.deleteAllTxns();\n nativeDb.closeFile();\n };\n\n before(async () => {\n IModelTestUtils.registerTestBimSchema();\n // make a unique name for the output file so this test can be run in parallel\n testFileName = IModelTestUtils.prepareOutputFile(\"ElementDependencyGraph\", `${Guid.createValue()}.bim`);\n const seedFileName = IModelTestUtils.resolveAssetFile(\"test.bim\");\n const schemaFileName = IModelTestUtils.resolveAssetFile(\"TestBim.ecschema.xml\");\n IModelJsFs.copySync(seedFileName, testFileName);\n performUpgrade(testFileName);\n const imodel = StandaloneDb.openFile(testFileName, OpenMode.ReadWrite);\n await imodel.importSchemas([schemaFileName]); // will throw an exception if import fails\n imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n const physicalModelId = withEditTxn(imodel, (txn) => PhysicalModel.insert(txn, IModel.rootSubjectId, \"EDGTestModel\"));\n const codeSpecId = withEditTxn(imodel, (txn) => imodel.codeSpecs.insert(txn, CodeSpec.create(imodel, \"EDGTestCodeSpec\", CodeScopeSpec.Type.Model)));\n const spatialCategoryId = withEditTxn(imodel, (txn) => SpatialCategory.insert(txn, IModel.dictionaryId, \"EDGTestSpatialCategory\", new SubCategoryAppearance({ color: ColorByName.darkRed })));\n dbInfo = { physicalModelId, codeSpecId, spatialCategoryId, seedFileName: testFileName };\n imodel[_nativeDb].deleteAllTxns();\n imodel.close();\n });\n\n after(() => {\n IModelJsFs.removeSync(testFileName);\n });\n\n it(\"should invokeCallbacks EDE only\", () => {\n const helper = new TestHelper(\"EDE\", dbInfo);\n\n const e1id = helper.insertElement(\"e1\");\n const e2id = helper.insertElement(\"e2\");\n const e3id = helper.insertElement(\"e3\");\n saveTestChanges(helper.txn); // get the elements into the iModel\n\n const ede_1_2 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e1id, e2id);\n const ede_2_3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e2id, e3id);\n for (const ede of [ede_1_2, ede_2_3]) {\n ede.id = helper.txn.insertRelationship(ede.toJSON());\n }\n\n // The full graph:\n // e1 --> e2 --> e3\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn); // this will react to EDE inserts only.\n assert.deepEqual(helper.dres.beforeOutputs, []); // only roots get this callback, and only if they have been directly changed.\n assert.deepEqual(helper.dres.allInputsHandled, []); // No input elements have changed\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON()]); // we send out this callback even if only the relationship itself is new or changed.\n\n helper.updateElement(e1id, \"change e1\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, [e1id]); // only called on directly changed root elements.\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, e3id]);\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON()]);\n\n helper.terminate();\n });\n\n it(\"should invokeCallbacks through parents only\", () => {\n const helper = new TestHelper(\"Parents\", dbInfo);\n\n const p2id = helper.insertElement(\"p2\");\n const e1id = helper.insertElement(\"e1\", { id: p2id, relClassName: \"TestBim.ChildPropagatesChangesToParent\" });\n saveTestChanges(helper.txn); // get the elements into the iModel\n\n // The full graph:\n // .-parent-> p2\n // /\n // e1\n //\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n assert.deepEqual(helper.dres.beforeOutputs, []); // only roots get this callback, and only if they have been directly changed.\n assert.deepEqual(helper.dres.allInputsHandled, []); // No input elements have changed\n assertRels(helper.dres.rootChanged, []); // we send out this callback even if only the relationship itself is new or changed.\n\n helper.updateElement(e1id, \"change e1\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, [e1id]); // only called on directly changed root elements.\n assert.deepEqual(helper.dres.allInputsHandled, [p2id]);\n assertRels(helper.dres.rootChanged, []);\n\n helper.updateElement(p2id, \"change p2\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, []); // only called on directly changed root elements\n assert.deepEqual(helper.dres.allInputsHandled, []);\n assertRels(helper.dres.rootChanged, []);\n\n helper.terminate();\n });\n\n it(\"should invokeCallbacks through EDEs and parents\", () => {\n const helper = new TestHelper(\"EDEsAndParents\", dbInfo);\n\n const p2id = helper.insertElement(\"p2\");\n const p3id = helper.insertElement(\"p3\");\n const e1id = helper.insertElement(\"e1\", { id: p2id, relClassName: \"TestBim.ChildPropagatesChangesToParent\" });\n const e2id = helper.insertElement(\"e2\");\n const e3id = helper.insertElement(\"e3\");\n saveTestChanges(helper.txn); // get the elements into the iModel\n\n const ede_1_2 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e1id, e2id);\n const ede_2_3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e2id, e3id);\n const ede_p2_p3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, p2id, p3id);\n for (const ede of [ede_1_2, ede_2_3, ede_p2_p3]) {\n ede.id = helper.txn.insertRelationship(ede.toJSON());\n }\n\n // db[_nativeDb].writeFullElementDependencyGraphToFile(`${writeDbFileName}.dot`);\n\n // The full graph:\n // .-parent-> p2 -EDE-> p3\n // /\n // e1 -EDE-> e2 -EDE-> e3\n //\n helper.resetDependencyResults();\n saveTestChanges(helper.txn); // this will react to EDE inserts only.\n assert.deepEqual(helper.dres.beforeOutputs, []); // only roots get this callback, and only if they have been directly changed.\n assert.deepEqual(helper.dres.allInputsHandled, []); // No input elements have changed\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON(), ede_p2_p3.toJSON()]); // we send out this callback even if only the relationship itself is new or changed.\n\n helper.updateElement(e1id, \"change e1\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, [e1id]); // only called on directly changed root elements.\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, p2id, e3id, p3id]);\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON(), ede_p2_p3.toJSON()]);\n\n helper.updateElement(p2id, \"change p2\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, [p2id]); // only called on directly changed root elements.\n assert.deepEqual(helper.dres.allInputsHandled, [p3id]);\n assertRels(helper.dres.rootChanged, [ede_p2_p3.toJSON()]);\n\n helper.updateElement(e2id, \"change e2\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, [e2id]); // only called on directly changed root elements.\n assert.deepEqual(helper.dres.allInputsHandled, [e3id]);\n assertRels(helper.dres.rootChanged, [ede_2_3.toJSON()]);\n\n helper.terminate();\n });\n\n it(\"should invokeCallbacks through parents - geomodeler schema\", () => {\n const helper = new TestHelper(\"GeoModeler\", dbInfo);\n\n // The full graph:\n // BoreholeSource -EDE-> GroundGeneration\n // / parent\n // Borehole\n // / parent\n // Material -EDE-> MaterialDepthRange\n\n const boreholeSource = helper.insertElement(\"BoreholeSource\");\n const borehole = helper.insertElement(\"Borehole\", { id: boreholeSource, relClassName: \"TestBim.ChildPropagatesChangesToParent\" });\n const materialDepthRange = helper.insertElement(\"MaterialDepthRange\", { id: borehole, relClassName: \"TestBim.ChildPropagatesChangesToParent\" });\n const material = helper.insertElement(\"Material\");\n const groundGeneration = helper.insertElement(\"GroundGeneration\");\n saveTestChanges(helper.txn); // get the elements into the iModel\n\n const ede_material_materialDepthRange = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, material, materialDepthRange);\n const ede_boreholeSource_groundGeneration = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, boreholeSource, groundGeneration);\n for (const ede of [ede_material_materialDepthRange, ede_boreholeSource_groundGeneration]) {\n ede.id = helper.txn.insertRelationship(ede.toJSON());\n }\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n helper.updateElement(material, \"change material\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, [material]); // only called on directly changed root elements.\n assert.deepEqual(helper.dres.allInputsHandled, [materialDepthRange, borehole, boreholeSource, groundGeneration]);\n assertRels(helper.dres.rootChanged, [ede_material_materialDepthRange.toJSON(), ede_boreholeSource_groundGeneration.toJSON()]);\n\n helper.terminate();\n });\n\n it(\"should invokeCallbacks many:1\", () => {\n const helper = new TestHelper(\"ManyToOne\", dbInfo);\n\n const e1id = helper.insertElement(\"e1\");\n const e11id = helper.insertElement(\"e11\");\n const e2id = helper.insertElement(\"e2\");\n const e21id = helper.insertElement(\"e21\");\n const e3id = helper.insertElement(\"e3\");\n const e4id = helper.insertElement(\"e4\");\n\n const ede_1_2 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e1id, e2id);\n const ede_11_2 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e11id, e2id);\n const ede_2_3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e2id, e3id);\n const ede_21_3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e21id, e3id);\n const ede_3_4 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e3id, e4id);\n for (const ede of [ede_1_2, ede_11_2, ede_2_3, ede_21_3, ede_3_4]) {\n ede.id = helper.txn.insertRelationship(ede.toJSON());\n }\n\n // The full graph:\n // e21\n // \\\n // e1 --> e2 --> e3 --> e4\n // /\n // e11\n\n // On the very first validation, everything is new and is considered directly changed\n // resulting graph:\n // e21\n // \\\n // e1 --> e2 --> e3 --> e4\n // /\n // e11\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n assert.deepEqual(helper.dres.beforeOutputs, [e1id, e11id, e21id]); // only called on directly changed root elements.\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, e3id, e4id]);\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_11_2.toJSON(), ede_2_3.toJSON(), ede_21_3.toJSON(), ede_3_4.toJSON()]);\n\n // modify e4 directly. That is a leaf. None of its inputs are changed.\n // resulting subgraph:\n // *\n // e4\n //\n //\n helper.updateElement(e4id, \"change e4\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, []); // only called on directly changed root elements.\n assert.deepEqual(helper.dres.allInputsHandled, []);\n assertRels(helper.dres.rootChanged, []);\n\n // modify e3 directly.\n // resulting subgraph:\n //\n //\n // *\n // e3 --> e4\n //\n //\n helper.updateElement(e3id, \"change e3\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, [e3id]); // only called on directly changed root elements.\n assert.deepEqual(helper.dres.allInputsHandled, [e4id]);\n assertRels(helper.dres.rootChanged, [ede_3_4.toJSON()]);\n\n // modify e2 directly. That is a node in middle of the graph. None of its inputs is modified.\n // resulting subgraph:\n //\n // *\n // e2 --> e3 --> e4\n //\n //\n //\n helper.updateElement(e2id, \"change e2\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, [e2id]); // only called on directly changed root elements\n assert.deepEqual(helper.dres.allInputsHandled, [e3id, e4id]);\n assertRels(helper.dres.rootChanged, [ede_2_3.toJSON(), ede_3_4.toJSON()]);\n\n // Modify e1 directly. That should propagate to the rest of the nodes. Each should get an _onAllInputsHandled callback\n // resulting graph:\n //\n // *\n // e1 --> e2 --> e3 --> e4\n //\n helper.updateElement(e1id, \"change e1\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n assert.deepEqual(helper.dres.beforeOutputs, [e1id]); // only called on directly changed root elements\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, e3id, e4id]);\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON(), ede_3_4.toJSON()]);\n\n // Modify e11 directly. That should propagate to the rest of the nodes. Each should get an _onAllInputsHandled callback\n // resulting graph:\n //\n // > e2 --> e3 --> e4\n // /\n // e11\n // *\n //\n // Note that the e1 -> e2 and e21 -> e3 edges are NOT in the sub-graph. These edges should be validated, nevertheless -- TBD\n helper.updateElement(e11id, \"change e11\");\n\n helper.resetDependencyResults();\n saveTestChanges(helper.txn);\n\n // assert.deepEqual(helper.dres.directChange, []); // only called on directly changed non-root elements that have no directly changed inputs\n assert.deepEqual(helper.dres.beforeOutputs, [e11id]); // only called on directly changed root elements\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, e3id, e4id]);\n assertRels(helper.dres.rootChanged, [ede_11_2.toJSON(), ede_2_3.toJSON(), ede_3_4.toJSON()]);\n // assertRels(helper.dres.validateOutput, [ede_1_2, ede_21_3]); // this callback is made only on rels that not in the graph but share an output with another rel or have an output that was directly changed\n\n helper.terminate();\n });\n\n});\n\n"]}
1
+ {"version":3,"file":"ElementDependencyGraph.test.js","sourceRoot":"","sources":["../../../../src/test/element/ElementDependencyGraph.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/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\nimport { assert } from \"chai\";\r\nimport * as fs from \"fs\";\r\nimport * as path from \"path\";\r\nimport { Guid, Id64Array, Id64String, Logger, OpenMode } from \"@itwin/core-bentley\";\r\nimport { EditTxn, withEditTxn } from \"../../EditTxn\";\r\nimport {\r\n CodeScopeSpec, CodeSpec, ColorByName, DomainOptions, GeometryStreamBuilder, IModel, RelatedElementProps, RelationshipProps, SubCategoryAppearance,\r\n UpgradeOptions,\r\n} from \"@itwin/core-common\";\r\nimport { LineSegment3d, Point3d, YawPitchRollAngles } from \"@itwin/core-geometry\";\r\nimport { _nativeDb, ChannelControl, ElementDrivesElementProps, IModelJsFs, PhysicalModel, SpatialCategory, StandaloneDb } from \"../../core-backend\";\r\nimport { IModelTestUtils, TestElementDrivesElement, TestPhysicalObject, TestPhysicalObjectProps } from \"../IModelTestUtils\";\r\nimport { IModelNative } from \"../../internal/NativePlatform\";\r\n\r\nfunction saveTestChanges(txn: EditTxn, args?: string): void {\r\n txn.saveChanges(args);\r\n}\r\n\r\nexport function copyFile(newName: string, pathToCopy: string): string {\r\n const newPath = path.join(path.dirname(pathToCopy), newName);\r\n try {\r\n fs.unlinkSync(newPath);\r\n } catch {\r\n }\r\n fs.copyFileSync(pathToCopy, newPath);\r\n return newPath;\r\n}\r\n\r\nfunction assertRels(list: RelationshipProps[], rels: ElementDrivesElementProps[]) {\r\n assert.equal(list.length, rels.length);\r\n for (let i = 0; i < rels.length; ++i) {\r\n assert.equal(list[i].id, rels[i].id);\r\n }\r\n}\r\n\r\nclass DependencyCallbackResults {\r\n public beforeOutputs: Id64Array = [];\r\n public allInputsHandled: Id64Array = [];\r\n public rootChanged: RelationshipProps[] = [];\r\n public deletedDependency: RelationshipProps[] = [];\r\n}\r\n\r\ninterface DbInfo {\r\n seedFileName: string;\r\n codeSpecId: Id64String;\r\n physicalModelId: Id64String;\r\n spatialCategoryId: Id64String;\r\n}\r\n\r\nclass TestHelper {\r\n public db: StandaloneDb;\r\n public readonly txn: EditTxn;\r\n public dres = new DependencyCallbackResults();\r\n private removals: VoidFunction[] = [];\r\n private codeSpecId: Id64String = \"\";\r\n private physicalModelId: Id64String = \"\";\r\n private spatialCategoryid: Id64String = \"\";\r\n\r\n constructor(testName: string, dbInfo: DbInfo) {\r\n this.codeSpecId = dbInfo.codeSpecId;\r\n this.physicalModelId = dbInfo.physicalModelId;\r\n this.spatialCategoryid = dbInfo.spatialCategoryId;\r\n\r\n const writeDbFileName = copyFile(`${testName}.bim`, dbInfo.seedFileName);\r\n this.db = StandaloneDb.openFile(writeDbFileName, OpenMode.ReadWrite);\r\n assert.isTrue(this.db !== undefined);\r\n this.db.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n this.txn = new EditTxn(this.db, `${testName} element dependency graph`);\r\n this.txn.start();\r\n\r\n this.db[_nativeDb].enableTxnTesting();\r\n assert.equal(this.db[_nativeDb].addChildPropagatesChangesToParentRelationship(\"TestBim\", \"ChildPropagatesChangesToParent\"), 0);\r\n this.setElementDependencyGraphCallbacks();\r\n }\r\n\r\n public terminate() {\r\n if (this.txn.isActive)\r\n this.txn.end(\"abandon\");\r\n\r\n this.db.close();\r\n assert.isFalse(this.db.isOpen);\r\n this.removeElementDependencyGraphCallbacks();\r\n }\r\n\r\n public makeElement(codeValue: string, parent?: RelatedElementProps): TestPhysicalObjectProps {\r\n const builder = new GeometryStreamBuilder();\r\n builder.appendGeometry(LineSegment3d.create(Point3d.createZero(), Point3d.create(5, 0, 0)));\r\n\r\n return {\r\n classFullName: \"TestBim:TestPhysicalObject\",\r\n model: this.physicalModelId,\r\n category: this.spatialCategoryid,\r\n code: { spec: this.codeSpecId, scope: this.physicalModelId, value: codeValue },\r\n intProperty: 100,\r\n placement: {\r\n origin: new Point3d(0, 0, 0),\r\n angles: new YawPitchRollAngles(),\r\n },\r\n geom: builder.geometryStream,\r\n parent,\r\n };\r\n }\r\n\r\n public insertElement(codeValue: string, parent?: RelatedElementProps): Id64String {\r\n return this.txn.insertElement(this.makeElement(codeValue, parent));\r\n }\r\n\r\n public updateElement(elid: Id64String, newLabel: string) {\r\n const ed2 = this.db.elements.getElement({ id: elid });\r\n ed2.userLabel = newLabel;\r\n this.txn.updateElement(ed2.toJSON());\r\n }\r\n\r\n public fmtElem(elId: Id64String) { return this.db.elements.getElement(elId).code.value; }\r\n public fmtRel(props: RelationshipProps) { return `${props.classFullName} ${this.fmtElem(props.sourceId)} --> ${this.fmtElem(props.targetId)}`; }\r\n\r\n public resetDependencyResults() {\r\n this.dres = new DependencyCallbackResults();\r\n }\r\n\r\n public setElementDependencyGraphCallbacks() {\r\n this.removals.push(TestElementDrivesElement.deletedDependency.addListener((arg) => {\r\n Logger.logTrace(\"EDGTest\", `_onDeletedDependency ${this.fmtRel(arg.props)}`);\r\n this.dres.deletedDependency.push(arg.props);\r\n }));\r\n this.removals.push(TestElementDrivesElement.rootChanged.addListener((arg) => {\r\n Logger.logTrace(\"EDGTest\", `_onRootChanged ${this.fmtRel(arg.props)}`);\r\n this.dres.rootChanged.push(arg.props);\r\n }));\r\n this.removals.push(TestPhysicalObject.beforeOutputsHandled.addListener((arg) => {\r\n Logger.logTrace(\"EDGTest\", `_onBeforeOutputsHandled ${this.fmtElem(arg.elId)}`);\r\n this.dres.beforeOutputs.push(arg.elId);\r\n }));\r\n this.removals.push(TestPhysicalObject.allInputsHandled.addListener((arg) => {\r\n Logger.logTrace(\"EDGTest\", `_onAllInputsHandled ${this.fmtElem(arg.elId)}`);\r\n this.dres.allInputsHandled.push(arg.elId);\r\n }));\r\n }\r\n\r\n public removeElementDependencyGraphCallbacks() {\r\n this.removals.forEach((drop) => drop());\r\n }\r\n}\r\n\r\ndescribe(\"ElementDependencyGraph\", () => {\r\n let testFileName: string;\r\n let dbInfo: DbInfo;\r\n\r\n const performUpgrade = (pathname: string) => {\r\n const nativeDb = new IModelNative.platform.DgnDb();\r\n const upgradeOptions: UpgradeOptions = {\r\n domain: DomainOptions.Upgrade,\r\n schemaLockHeld: true,\r\n };\r\n nativeDb.openIModel(pathname, OpenMode.ReadWrite, upgradeOptions);\r\n nativeDb.deleteAllTxns();\r\n nativeDb.closeFile();\r\n };\r\n\r\n before(async () => {\r\n IModelTestUtils.registerTestBimSchema();\r\n // make a unique name for the output file so this test can be run in parallel\r\n testFileName = IModelTestUtils.prepareOutputFile(\"ElementDependencyGraph\", `${Guid.createValue()}.bim`);\r\n const seedFileName = IModelTestUtils.resolveAssetFile(\"test.bim\");\r\n const schemaFileName = IModelTestUtils.resolveAssetFile(\"TestBim.ecschema.xml\");\r\n IModelJsFs.copySync(seedFileName, testFileName);\r\n performUpgrade(testFileName);\r\n const imodel = StandaloneDb.openFile(testFileName, OpenMode.ReadWrite);\r\n await imodel.importSchemas([schemaFileName]); // will throw an exception if import fails\r\n imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n const physicalModelId = withEditTxn(imodel, (txn) => PhysicalModel.insert(txn, IModel.rootSubjectId, \"EDGTestModel\"));\r\n const codeSpecId = withEditTxn(imodel, (txn) => imodel.codeSpecs.insert(txn, CodeSpec.create(imodel, \"EDGTestCodeSpec\", CodeScopeSpec.Type.Model)));\r\n const spatialCategoryId = withEditTxn(imodel, (txn) => SpatialCategory.insert(txn, IModel.dictionaryId, \"EDGTestSpatialCategory\", new SubCategoryAppearance({ color: ColorByName.darkRed })));\r\n dbInfo = { physicalModelId, codeSpecId, spatialCategoryId, seedFileName: testFileName };\r\n imodel[_nativeDb].deleteAllTxns();\r\n imodel.close();\r\n });\r\n\r\n after(() => {\r\n IModelJsFs.removeSync(testFileName);\r\n });\r\n\r\n it(\"should invokeCallbacks EDE only\", () => {\r\n const helper = new TestHelper(\"EDE\", dbInfo);\r\n\r\n const e1id = helper.insertElement(\"e1\");\r\n const e2id = helper.insertElement(\"e2\");\r\n const e3id = helper.insertElement(\"e3\");\r\n saveTestChanges(helper.txn); // get the elements into the iModel\r\n\r\n const ede_1_2 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e1id, e2id);\r\n const ede_2_3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e2id, e3id);\r\n for (const ede of [ede_1_2, ede_2_3]) {\r\n ede.id = helper.txn.insertRelationship(ede.toJSON());\r\n }\r\n\r\n // The full graph:\r\n // e1 --> e2 --> e3\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn); // this will react to EDE inserts only.\r\n assert.deepEqual(helper.dres.beforeOutputs, []); // only roots get this callback, and only if they have been directly changed.\r\n assert.deepEqual(helper.dres.allInputsHandled, []); // No input elements have changed\r\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON()]); // we send out this callback even if only the relationship itself is new or changed.\r\n\r\n helper.updateElement(e1id, \"change e1\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, [e1id]); // only called on directly changed root elements.\r\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, e3id]);\r\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON()]);\r\n\r\n helper.terminate();\r\n });\r\n\r\n it(\"should invokeCallbacks through parents only\", () => {\r\n const helper = new TestHelper(\"Parents\", dbInfo);\r\n\r\n const p2id = helper.insertElement(\"p2\");\r\n const e1id = helper.insertElement(\"e1\", { id: p2id, relClassName: \"TestBim.ChildPropagatesChangesToParent\" });\r\n saveTestChanges(helper.txn); // get the elements into the iModel\r\n\r\n // The full graph:\r\n // .-parent-> p2\r\n // /\r\n // e1\r\n //\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n assert.deepEqual(helper.dres.beforeOutputs, []); // only roots get this callback, and only if they have been directly changed.\r\n assert.deepEqual(helper.dres.allInputsHandled, []); // No input elements have changed\r\n assertRels(helper.dres.rootChanged, []); // we send out this callback even if only the relationship itself is new or changed.\r\n\r\n helper.updateElement(e1id, \"change e1\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, [e1id]); // only called on directly changed root elements.\r\n assert.deepEqual(helper.dres.allInputsHandled, [p2id]);\r\n assertRels(helper.dres.rootChanged, []);\r\n\r\n helper.updateElement(p2id, \"change p2\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, []); // only called on directly changed root elements\r\n assert.deepEqual(helper.dres.allInputsHandled, []);\r\n assertRels(helper.dres.rootChanged, []);\r\n\r\n helper.terminate();\r\n });\r\n\r\n it(\"should invokeCallbacks through EDEs and parents\", () => {\r\n const helper = new TestHelper(\"EDEsAndParents\", dbInfo);\r\n\r\n const p2id = helper.insertElement(\"p2\");\r\n const p3id = helper.insertElement(\"p3\");\r\n const e1id = helper.insertElement(\"e1\", { id: p2id, relClassName: \"TestBim.ChildPropagatesChangesToParent\" });\r\n const e2id = helper.insertElement(\"e2\");\r\n const e3id = helper.insertElement(\"e3\");\r\n saveTestChanges(helper.txn); // get the elements into the iModel\r\n\r\n const ede_1_2 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e1id, e2id);\r\n const ede_2_3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e2id, e3id);\r\n const ede_p2_p3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, p2id, p3id);\r\n for (const ede of [ede_1_2, ede_2_3, ede_p2_p3]) {\r\n ede.id = helper.txn.insertRelationship(ede.toJSON());\r\n }\r\n\r\n // db[_nativeDb].writeFullElementDependencyGraphToFile(`${writeDbFileName}.dot`);\r\n\r\n // The full graph:\r\n // .-parent-> p2 -EDE-> p3\r\n // /\r\n // e1 -EDE-> e2 -EDE-> e3\r\n //\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn); // this will react to EDE inserts only.\r\n assert.deepEqual(helper.dres.beforeOutputs, []); // only roots get this callback, and only if they have been directly changed.\r\n assert.deepEqual(helper.dres.allInputsHandled, []); // No input elements have changed\r\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON(), ede_p2_p3.toJSON()]); // we send out this callback even if only the relationship itself is new or changed.\r\n\r\n helper.updateElement(e1id, \"change e1\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, [e1id]); // only called on directly changed root elements.\r\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, p2id, e3id, p3id]);\r\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON(), ede_p2_p3.toJSON()]);\r\n\r\n helper.updateElement(p2id, \"change p2\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, [p2id]); // only called on directly changed root elements.\r\n assert.deepEqual(helper.dres.allInputsHandled, [p3id]);\r\n assertRels(helper.dres.rootChanged, [ede_p2_p3.toJSON()]);\r\n\r\n helper.updateElement(e2id, \"change e2\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, [e2id]); // only called on directly changed root elements.\r\n assert.deepEqual(helper.dres.allInputsHandled, [e3id]);\r\n assertRels(helper.dres.rootChanged, [ede_2_3.toJSON()]);\r\n\r\n helper.terminate();\r\n });\r\n\r\n it(\"should invokeCallbacks through parents - geomodeler schema\", () => {\r\n const helper = new TestHelper(\"GeoModeler\", dbInfo);\r\n\r\n // The full graph:\r\n // BoreholeSource -EDE-> GroundGeneration\r\n // / parent\r\n // Borehole\r\n // / parent\r\n // Material -EDE-> MaterialDepthRange\r\n\r\n const boreholeSource = helper.insertElement(\"BoreholeSource\");\r\n const borehole = helper.insertElement(\"Borehole\", { id: boreholeSource, relClassName: \"TestBim.ChildPropagatesChangesToParent\" });\r\n const materialDepthRange = helper.insertElement(\"MaterialDepthRange\", { id: borehole, relClassName: \"TestBim.ChildPropagatesChangesToParent\" });\r\n const material = helper.insertElement(\"Material\");\r\n const groundGeneration = helper.insertElement(\"GroundGeneration\");\r\n saveTestChanges(helper.txn); // get the elements into the iModel\r\n\r\n const ede_material_materialDepthRange = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, material, materialDepthRange);\r\n const ede_boreholeSource_groundGeneration = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, boreholeSource, groundGeneration);\r\n for (const ede of [ede_material_materialDepthRange, ede_boreholeSource_groundGeneration]) {\r\n ede.id = helper.txn.insertRelationship(ede.toJSON());\r\n }\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n helper.updateElement(material, \"change material\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, [material]); // only called on directly changed root elements.\r\n assert.deepEqual(helper.dres.allInputsHandled, [materialDepthRange, borehole, boreholeSource, groundGeneration]);\r\n assertRels(helper.dres.rootChanged, [ede_material_materialDepthRange.toJSON(), ede_boreholeSource_groundGeneration.toJSON()]);\r\n\r\n helper.terminate();\r\n });\r\n\r\n it(\"should invokeCallbacks many:1\", () => {\r\n const helper = new TestHelper(\"ManyToOne\", dbInfo);\r\n\r\n const e1id = helper.insertElement(\"e1\");\r\n const e11id = helper.insertElement(\"e11\");\r\n const e2id = helper.insertElement(\"e2\");\r\n const e21id = helper.insertElement(\"e21\");\r\n const e3id = helper.insertElement(\"e3\");\r\n const e4id = helper.insertElement(\"e4\");\r\n\r\n const ede_1_2 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e1id, e2id);\r\n const ede_11_2 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e11id, e2id);\r\n const ede_2_3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e2id, e3id);\r\n const ede_21_3 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e21id, e3id);\r\n const ede_3_4 = TestElementDrivesElement.create<TestElementDrivesElement>(helper.db, e3id, e4id);\r\n for (const ede of [ede_1_2, ede_11_2, ede_2_3, ede_21_3, ede_3_4]) {\r\n ede.id = helper.txn.insertRelationship(ede.toJSON());\r\n }\r\n\r\n // The full graph:\r\n // e21\r\n // \\\r\n // e1 --> e2 --> e3 --> e4\r\n // /\r\n // e11\r\n\r\n // On the very first validation, everything is new and is considered directly changed\r\n // resulting graph:\r\n // e21\r\n // \\\r\n // e1 --> e2 --> e3 --> e4\r\n // /\r\n // e11\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n assert.deepEqual(helper.dres.beforeOutputs, [e1id, e11id, e21id]); // only called on directly changed root elements.\r\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, e3id, e4id]);\r\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_11_2.toJSON(), ede_2_3.toJSON(), ede_21_3.toJSON(), ede_3_4.toJSON()]);\r\n\r\n // modify e4 directly. That is a leaf. None of its inputs are changed.\r\n // resulting subgraph:\r\n // *\r\n // e4\r\n //\r\n //\r\n helper.updateElement(e4id, \"change e4\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, []); // only called on directly changed root elements.\r\n assert.deepEqual(helper.dres.allInputsHandled, []);\r\n assertRels(helper.dres.rootChanged, []);\r\n\r\n // modify e3 directly.\r\n // resulting subgraph:\r\n //\r\n //\r\n // *\r\n // e3 --> e4\r\n //\r\n //\r\n helper.updateElement(e3id, \"change e3\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, [e3id]); // only called on directly changed root elements.\r\n assert.deepEqual(helper.dres.allInputsHandled, [e4id]);\r\n assertRels(helper.dres.rootChanged, [ede_3_4.toJSON()]);\r\n\r\n // modify e2 directly. That is a node in middle of the graph. None of its inputs is modified.\r\n // resulting subgraph:\r\n //\r\n // *\r\n // e2 --> e3 --> e4\r\n //\r\n //\r\n //\r\n helper.updateElement(e2id, \"change e2\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, [e2id]); // only called on directly changed root elements\r\n assert.deepEqual(helper.dres.allInputsHandled, [e3id, e4id]);\r\n assertRels(helper.dres.rootChanged, [ede_2_3.toJSON(), ede_3_4.toJSON()]);\r\n\r\n // Modify e1 directly. That should propagate to the rest of the nodes. Each should get an _onAllInputsHandled callback\r\n // resulting graph:\r\n //\r\n // *\r\n // e1 --> e2 --> e3 --> e4\r\n //\r\n helper.updateElement(e1id, \"change e1\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n assert.deepEqual(helper.dres.beforeOutputs, [e1id]); // only called on directly changed root elements\r\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, e3id, e4id]);\r\n assertRels(helper.dres.rootChanged, [ede_1_2.toJSON(), ede_2_3.toJSON(), ede_3_4.toJSON()]);\r\n\r\n // Modify e11 directly. That should propagate to the rest of the nodes. Each should get an _onAllInputsHandled callback\r\n // resulting graph:\r\n //\r\n // > e2 --> e3 --> e4\r\n // /\r\n // e11\r\n // *\r\n //\r\n // Note that the e1 -> e2 and e21 -> e3 edges are NOT in the sub-graph. These edges should be validated, nevertheless -- TBD\r\n helper.updateElement(e11id, \"change e11\");\r\n\r\n helper.resetDependencyResults();\r\n saveTestChanges(helper.txn);\r\n\r\n // assert.deepEqual(helper.dres.directChange, []); // only called on directly changed non-root elements that have no directly changed inputs\r\n assert.deepEqual(helper.dres.beforeOutputs, [e11id]); // only called on directly changed root elements\r\n assert.deepEqual(helper.dres.allInputsHandled, [e2id, e3id, e4id]);\r\n assertRels(helper.dres.rootChanged, [ede_11_2.toJSON(), ede_2_3.toJSON(), ede_3_4.toJSON()]);\r\n // assertRels(helper.dres.validateOutput, [ede_1_2, ede_21_3]); // this callback is made only on rels that not in the graph but share an output with another rel or have an output that was directly changed\r\n\r\n helper.terminate();\r\n });\r\n\r\n});\r\n\r\n"]}
@@ -257,145 +257,145 @@ function initElementRefersToElementsProps(className, _iModelName, elId1, elId2,
257
257
  return result;
258
258
  }
259
259
  describe("Element and ElementAspect roundtrip test for all type of properties", () => {
260
- const testSchema = `<?xml version="1.0" encoding="UTF-8"?>
261
- <ECSchema schemaName="ElementRoundTripTest" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
262
- <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
263
- <ECSchemaReference name="CoreCustomAttributes" version="01.00.03" alias="CoreCA"/>
264
- <ECEntityClass typeName="TestElement" modifier="None">
265
- <BaseClass>bis:PhysicalElement</BaseClass>
266
- <BaseClass>IPrimitive</BaseClass>
267
- <BaseClass>IPrimitiveArray</BaseClass>
268
- </ECEntityClass>
269
- <ECEntityClass typeName="TestElementAspect" modifier="None">
270
- <BaseClass>bis:ElementUniqueAspect</BaseClass>
271
- <BaseClass>IPrimitiveAspect</BaseClass>
272
- <BaseClass>IPrimitiveArrayAspect</BaseClass>
273
- </ECEntityClass>
274
- <ECRelationshipClass typeName="TestElementRefersToElements" strength="referencing" modifier="Sealed">
275
- <BaseClass>bis:ElementRefersToElements</BaseClass>
276
- <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
277
- <Class class="TestElement"/>
278
- </Source>
279
- <Target multiplicity="(0..*)" roleLabel="is referenced by" polymorphic="true">
280
- <Class class="TestElement"/>
281
- </Target>
282
- <ECProperty propertyName="i" typeName="int"/>
283
- <ECProperty propertyName="l" typeName="long"/>
284
- <ECProperty propertyName="d" typeName="double"/>
285
- <ECProperty propertyName="b" typeName="boolean"/>
286
- <ECProperty propertyName="dt" typeName="dateTime"/>
287
- <ECProperty propertyName="s" typeName="string"/>
288
- <ECProperty propertyName="bin" typeName="binary"/>
289
- <ECProperty propertyName="p2d" typeName="point2d"/>
290
- <ECProperty propertyName="p3d" typeName="point3d"/>
291
- <ECProperty propertyName="g" typeName="Bentley.Geometry.Common.IGeometry"/>
292
- <!--<ECStructProperty propertyName="st" typeName="ComplexStruct"/>-->
293
- <ECArrayProperty propertyName="array_i" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
294
- <ECArrayProperty propertyName="array_l" typeName="long" minOccurs="0" maxOccurs="unbounded"/>
295
- <ECArrayProperty propertyName="array_d" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
296
- <ECArrayProperty propertyName="array_b" typeName="boolean" minOccurs="0" maxOccurs="unbounded"/>
297
- <ECArrayProperty propertyName="array_dt" typeName="dateTime" minOccurs="0" maxOccurs="unbounded"/>
298
- <ECArrayProperty propertyName="array_s" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
299
- <ECArrayProperty propertyName="array_bin" typeName="binary" minOccurs="0" maxOccurs="unbounded"/>
300
- <ECArrayProperty propertyName="array_p2d" typeName="point2d" minOccurs="0" maxOccurs="unbounded"/>
301
- <ECArrayProperty propertyName="array_p3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
302
- <ECArrayProperty propertyName="array_g" typeName="Bentley.Geometry.Common.IGeometry" minOccurs="0" maxOccurs="unbounded"/>
303
- <!--<ECStructArrayProperty propertyName="array_st" typeName="ComplexStruct" minOccurs="0" maxOccurs="unbounded"/>-->
304
- </ECRelationshipClass>
305
- <ECEntityClass typeName="IPrimitive" modifier="Abstract">
306
- <ECCustomAttributes>
307
- <IsMixin xmlns="CoreCustomAttributes.01.00.03">
308
- <AppliesToEntityClass>bis:PhysicalElement</AppliesToEntityClass>
309
- </IsMixin>
310
- </ECCustomAttributes>
311
- <ECProperty propertyName="i" typeName="int"/>
312
- <ECProperty propertyName="l" typeName="long"/>
313
- <ECProperty propertyName="d" typeName="double"/>
314
- <ECProperty propertyName="b" typeName="boolean"/>
315
- <ECProperty propertyName="dt" typeName="dateTime"/>
316
- <ECProperty propertyName="s" typeName="string"/>
317
- <ECProperty propertyName="bin" typeName="binary"/>
318
- <ECProperty propertyName="p2d" typeName="point2d"/>
319
- <ECProperty propertyName="p3d" typeName="point3d"/>
320
- <ECProperty propertyName="g" typeName="Bentley.Geometry.Common.IGeometry"/>
321
- <ECStructProperty propertyName="st" typeName="ComplexStruct"/>
322
- </ECEntityClass>
323
- <ECEntityClass typeName="IPrimitiveAspect" modifier="Abstract">
324
- <ECCustomAttributes>
325
- <IsMixin xmlns="CoreCustomAttributes.01.00.03">
326
- <AppliesToEntityClass>bis:ElementUniqueAspect</AppliesToEntityClass>
327
- </IsMixin>
328
- </ECCustomAttributes>
329
- <ECProperty propertyName="i" typeName="int"/>
330
- <ECProperty propertyName="l" typeName="long"/>
331
- <ECProperty propertyName="d" typeName="double"/>
332
- <ECProperty propertyName="b" typeName="boolean"/>
333
- <ECProperty propertyName="dt" typeName="dateTime"/>
334
- <ECProperty propertyName="s" typeName="string"/>
335
- <ECProperty propertyName="bin" typeName="binary"/>
336
- <ECProperty propertyName="p2d" typeName="point2d"/>
337
- <ECProperty propertyName="p3d" typeName="point3d"/>
338
- <ECProperty propertyName="g" typeName="Bentley.Geometry.Common.IGeometry"/>
339
- <ECStructProperty propertyName="st" typeName="ComplexStruct"/>
340
- </ECEntityClass>
341
- <ECEntityClass typeName="IPrimitiveArray" modifier="Abstract">
342
- <ECCustomAttributes>
343
- <IsMixin xmlns="CoreCustomAttributes.01.00.03">
344
- <AppliesToEntityClass>bis:PhysicalElement</AppliesToEntityClass>
345
- </IsMixin>
346
- </ECCustomAttributes>
347
- <ECArrayProperty propertyName="array_i" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
348
- <ECArrayProperty propertyName="array_l" typeName="long" minOccurs="0" maxOccurs="unbounded"/>
349
- <ECArrayProperty propertyName="array_d" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
350
- <ECArrayProperty propertyName="array_b" typeName="boolean" minOccurs="0" maxOccurs="unbounded"/>
351
- <ECArrayProperty propertyName="array_dt" typeName="dateTime" minOccurs="0" maxOccurs="unbounded"/>
352
- <ECArrayProperty propertyName="array_s" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
353
- <ECArrayProperty propertyName="array_bin" typeName="binary" minOccurs="0" maxOccurs="unbounded"/>
354
- <ECArrayProperty propertyName="array_p2d" typeName="point2d" minOccurs="0" maxOccurs="unbounded"/>
355
- <ECArrayProperty propertyName="array_p3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
356
- <ECArrayProperty propertyName="array_g" typeName="Bentley.Geometry.Common.IGeometry" minOccurs="0" maxOccurs="unbounded"/>
357
- <ECStructArrayProperty propertyName="array_st" typeName="ComplexStruct" minOccurs="0" maxOccurs="unbounded"/>
358
- </ECEntityClass>
359
- <ECEntityClass typeName="IPrimitiveArrayAspect" modifier="Abstract">
360
- <ECCustomAttributes>
361
- <IsMixin xmlns="CoreCustomAttributes.01.00.03">
362
- <AppliesToEntityClass>bis:ElementUniqueAspect</AppliesToEntityClass>
363
- </IsMixin>
364
- </ECCustomAttributes>
365
- <ECArrayProperty propertyName="array_i" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
366
- <ECArrayProperty propertyName="array_l" typeName="long" minOccurs="0" maxOccurs="unbounded"/>
367
- <ECArrayProperty propertyName="array_d" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
368
- <ECArrayProperty propertyName="array_b" typeName="boolean" minOccurs="0" maxOccurs="unbounded"/>
369
- <ECArrayProperty propertyName="array_dt" typeName="dateTime" minOccurs="0" maxOccurs="unbounded"/>
370
- <ECArrayProperty propertyName="array_s" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
371
- <ECArrayProperty propertyName="array_bin" typeName="binary" minOccurs="0" maxOccurs="unbounded"/>
372
- <ECArrayProperty propertyName="array_p2d" typeName="point2d" minOccurs="0" maxOccurs="unbounded"/>
373
- <ECArrayProperty propertyName="array_p3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
374
- <ECArrayProperty propertyName="array_g" typeName="Bentley.Geometry.Common.IGeometry" minOccurs="0" maxOccurs="unbounded"/>
375
- <ECStructArrayProperty propertyName="array_st" typeName="ComplexStruct" minOccurs="0" maxOccurs="unbounded"/>
376
- </ECEntityClass>
377
- <ECStructClass typeName="ComplexStruct" modifier="None">
378
- <ECProperty propertyName="i" typeName="int"/>
379
- <ECProperty propertyName="l" typeName="long"/>
380
- <ECProperty propertyName="d" typeName="double"/>
381
- <ECProperty propertyName="b" typeName="boolean"/>
382
- <ECProperty propertyName="dt" typeName="dateTime"/>
383
- <ECProperty propertyName="s" typeName="string"/>
384
- <ECProperty propertyName="bin" typeName="binary"/>
385
- <ECProperty propertyName="p2d" typeName="point2d"/>
386
- <ECProperty propertyName="p3d" typeName="point3d"/>
387
- <ECProperty propertyName="g" typeName="Bentley.Geometry.Common.IGeometry"/>
388
- <ECArrayProperty propertyName="array_i" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
389
- <ECArrayProperty propertyName="array_l" typeName="long" minOccurs="0" maxOccurs="unbounded"/>
390
- <ECArrayProperty propertyName="array_d" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
391
- <ECArrayProperty propertyName="array_b" typeName="boolean" minOccurs="0" maxOccurs="unbounded"/>
392
- <ECArrayProperty propertyName="array_dt" typeName="dateTime" minOccurs="0" maxOccurs="unbounded"/>
393
- <ECArrayProperty propertyName="array_s" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
394
- <ECArrayProperty propertyName="array_bin" typeName="binary" minOccurs="0" maxOccurs="unbounded"/>
395
- <ECArrayProperty propertyName="array_p2d" typeName="point2d" minOccurs="0" maxOccurs="unbounded"/>
396
- <ECArrayProperty propertyName="array_p3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
397
- <ECArrayProperty propertyName="array_g" typeName="Bentley.Geometry.Common.IGeometry" minOccurs="0" maxOccurs="unbounded"/>
398
- </ECStructClass>
260
+ const testSchema = `<?xml version="1.0" encoding="UTF-8"?>
261
+ <ECSchema schemaName="ElementRoundTripTest" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
262
+ <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
263
+ <ECSchemaReference name="CoreCustomAttributes" version="01.00.03" alias="CoreCA"/>
264
+ <ECEntityClass typeName="TestElement" modifier="None">
265
+ <BaseClass>bis:PhysicalElement</BaseClass>
266
+ <BaseClass>IPrimitive</BaseClass>
267
+ <BaseClass>IPrimitiveArray</BaseClass>
268
+ </ECEntityClass>
269
+ <ECEntityClass typeName="TestElementAspect" modifier="None">
270
+ <BaseClass>bis:ElementUniqueAspect</BaseClass>
271
+ <BaseClass>IPrimitiveAspect</BaseClass>
272
+ <BaseClass>IPrimitiveArrayAspect</BaseClass>
273
+ </ECEntityClass>
274
+ <ECRelationshipClass typeName="TestElementRefersToElements" strength="referencing" modifier="Sealed">
275
+ <BaseClass>bis:ElementRefersToElements</BaseClass>
276
+ <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
277
+ <Class class="TestElement"/>
278
+ </Source>
279
+ <Target multiplicity="(0..*)" roleLabel="is referenced by" polymorphic="true">
280
+ <Class class="TestElement"/>
281
+ </Target>
282
+ <ECProperty propertyName="i" typeName="int"/>
283
+ <ECProperty propertyName="l" typeName="long"/>
284
+ <ECProperty propertyName="d" typeName="double"/>
285
+ <ECProperty propertyName="b" typeName="boolean"/>
286
+ <ECProperty propertyName="dt" typeName="dateTime"/>
287
+ <ECProperty propertyName="s" typeName="string"/>
288
+ <ECProperty propertyName="bin" typeName="binary"/>
289
+ <ECProperty propertyName="p2d" typeName="point2d"/>
290
+ <ECProperty propertyName="p3d" typeName="point3d"/>
291
+ <ECProperty propertyName="g" typeName="Bentley.Geometry.Common.IGeometry"/>
292
+ <!--<ECStructProperty propertyName="st" typeName="ComplexStruct"/>-->
293
+ <ECArrayProperty propertyName="array_i" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
294
+ <ECArrayProperty propertyName="array_l" typeName="long" minOccurs="0" maxOccurs="unbounded"/>
295
+ <ECArrayProperty propertyName="array_d" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
296
+ <ECArrayProperty propertyName="array_b" typeName="boolean" minOccurs="0" maxOccurs="unbounded"/>
297
+ <ECArrayProperty propertyName="array_dt" typeName="dateTime" minOccurs="0" maxOccurs="unbounded"/>
298
+ <ECArrayProperty propertyName="array_s" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
299
+ <ECArrayProperty propertyName="array_bin" typeName="binary" minOccurs="0" maxOccurs="unbounded"/>
300
+ <ECArrayProperty propertyName="array_p2d" typeName="point2d" minOccurs="0" maxOccurs="unbounded"/>
301
+ <ECArrayProperty propertyName="array_p3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
302
+ <ECArrayProperty propertyName="array_g" typeName="Bentley.Geometry.Common.IGeometry" minOccurs="0" maxOccurs="unbounded"/>
303
+ <!--<ECStructArrayProperty propertyName="array_st" typeName="ComplexStruct" minOccurs="0" maxOccurs="unbounded"/>-->
304
+ </ECRelationshipClass>
305
+ <ECEntityClass typeName="IPrimitive" modifier="Abstract">
306
+ <ECCustomAttributes>
307
+ <IsMixin xmlns="CoreCustomAttributes.01.00.03">
308
+ <AppliesToEntityClass>bis:PhysicalElement</AppliesToEntityClass>
309
+ </IsMixin>
310
+ </ECCustomAttributes>
311
+ <ECProperty propertyName="i" typeName="int"/>
312
+ <ECProperty propertyName="l" typeName="long"/>
313
+ <ECProperty propertyName="d" typeName="double"/>
314
+ <ECProperty propertyName="b" typeName="boolean"/>
315
+ <ECProperty propertyName="dt" typeName="dateTime"/>
316
+ <ECProperty propertyName="s" typeName="string"/>
317
+ <ECProperty propertyName="bin" typeName="binary"/>
318
+ <ECProperty propertyName="p2d" typeName="point2d"/>
319
+ <ECProperty propertyName="p3d" typeName="point3d"/>
320
+ <ECProperty propertyName="g" typeName="Bentley.Geometry.Common.IGeometry"/>
321
+ <ECStructProperty propertyName="st" typeName="ComplexStruct"/>
322
+ </ECEntityClass>
323
+ <ECEntityClass typeName="IPrimitiveAspect" modifier="Abstract">
324
+ <ECCustomAttributes>
325
+ <IsMixin xmlns="CoreCustomAttributes.01.00.03">
326
+ <AppliesToEntityClass>bis:ElementUniqueAspect</AppliesToEntityClass>
327
+ </IsMixin>
328
+ </ECCustomAttributes>
329
+ <ECProperty propertyName="i" typeName="int"/>
330
+ <ECProperty propertyName="l" typeName="long"/>
331
+ <ECProperty propertyName="d" typeName="double"/>
332
+ <ECProperty propertyName="b" typeName="boolean"/>
333
+ <ECProperty propertyName="dt" typeName="dateTime"/>
334
+ <ECProperty propertyName="s" typeName="string"/>
335
+ <ECProperty propertyName="bin" typeName="binary"/>
336
+ <ECProperty propertyName="p2d" typeName="point2d"/>
337
+ <ECProperty propertyName="p3d" typeName="point3d"/>
338
+ <ECProperty propertyName="g" typeName="Bentley.Geometry.Common.IGeometry"/>
339
+ <ECStructProperty propertyName="st" typeName="ComplexStruct"/>
340
+ </ECEntityClass>
341
+ <ECEntityClass typeName="IPrimitiveArray" modifier="Abstract">
342
+ <ECCustomAttributes>
343
+ <IsMixin xmlns="CoreCustomAttributes.01.00.03">
344
+ <AppliesToEntityClass>bis:PhysicalElement</AppliesToEntityClass>
345
+ </IsMixin>
346
+ </ECCustomAttributes>
347
+ <ECArrayProperty propertyName="array_i" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
348
+ <ECArrayProperty propertyName="array_l" typeName="long" minOccurs="0" maxOccurs="unbounded"/>
349
+ <ECArrayProperty propertyName="array_d" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
350
+ <ECArrayProperty propertyName="array_b" typeName="boolean" minOccurs="0" maxOccurs="unbounded"/>
351
+ <ECArrayProperty propertyName="array_dt" typeName="dateTime" minOccurs="0" maxOccurs="unbounded"/>
352
+ <ECArrayProperty propertyName="array_s" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
353
+ <ECArrayProperty propertyName="array_bin" typeName="binary" minOccurs="0" maxOccurs="unbounded"/>
354
+ <ECArrayProperty propertyName="array_p2d" typeName="point2d" minOccurs="0" maxOccurs="unbounded"/>
355
+ <ECArrayProperty propertyName="array_p3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
356
+ <ECArrayProperty propertyName="array_g" typeName="Bentley.Geometry.Common.IGeometry" minOccurs="0" maxOccurs="unbounded"/>
357
+ <ECStructArrayProperty propertyName="array_st" typeName="ComplexStruct" minOccurs="0" maxOccurs="unbounded"/>
358
+ </ECEntityClass>
359
+ <ECEntityClass typeName="IPrimitiveArrayAspect" modifier="Abstract">
360
+ <ECCustomAttributes>
361
+ <IsMixin xmlns="CoreCustomAttributes.01.00.03">
362
+ <AppliesToEntityClass>bis:ElementUniqueAspect</AppliesToEntityClass>
363
+ </IsMixin>
364
+ </ECCustomAttributes>
365
+ <ECArrayProperty propertyName="array_i" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
366
+ <ECArrayProperty propertyName="array_l" typeName="long" minOccurs="0" maxOccurs="unbounded"/>
367
+ <ECArrayProperty propertyName="array_d" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
368
+ <ECArrayProperty propertyName="array_b" typeName="boolean" minOccurs="0" maxOccurs="unbounded"/>
369
+ <ECArrayProperty propertyName="array_dt" typeName="dateTime" minOccurs="0" maxOccurs="unbounded"/>
370
+ <ECArrayProperty propertyName="array_s" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
371
+ <ECArrayProperty propertyName="array_bin" typeName="binary" minOccurs="0" maxOccurs="unbounded"/>
372
+ <ECArrayProperty propertyName="array_p2d" typeName="point2d" minOccurs="0" maxOccurs="unbounded"/>
373
+ <ECArrayProperty propertyName="array_p3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
374
+ <ECArrayProperty propertyName="array_g" typeName="Bentley.Geometry.Common.IGeometry" minOccurs="0" maxOccurs="unbounded"/>
375
+ <ECStructArrayProperty propertyName="array_st" typeName="ComplexStruct" minOccurs="0" maxOccurs="unbounded"/>
376
+ </ECEntityClass>
377
+ <ECStructClass typeName="ComplexStruct" modifier="None">
378
+ <ECProperty propertyName="i" typeName="int"/>
379
+ <ECProperty propertyName="l" typeName="long"/>
380
+ <ECProperty propertyName="d" typeName="double"/>
381
+ <ECProperty propertyName="b" typeName="boolean"/>
382
+ <ECProperty propertyName="dt" typeName="dateTime"/>
383
+ <ECProperty propertyName="s" typeName="string"/>
384
+ <ECProperty propertyName="bin" typeName="binary"/>
385
+ <ECProperty propertyName="p2d" typeName="point2d"/>
386
+ <ECProperty propertyName="p3d" typeName="point3d"/>
387
+ <ECProperty propertyName="g" typeName="Bentley.Geometry.Common.IGeometry"/>
388
+ <ECArrayProperty propertyName="array_i" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
389
+ <ECArrayProperty propertyName="array_l" typeName="long" minOccurs="0" maxOccurs="unbounded"/>
390
+ <ECArrayProperty propertyName="array_d" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
391
+ <ECArrayProperty propertyName="array_b" typeName="boolean" minOccurs="0" maxOccurs="unbounded"/>
392
+ <ECArrayProperty propertyName="array_dt" typeName="dateTime" minOccurs="0" maxOccurs="unbounded"/>
393
+ <ECArrayProperty propertyName="array_s" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
394
+ <ECArrayProperty propertyName="array_bin" typeName="binary" minOccurs="0" maxOccurs="unbounded"/>
395
+ <ECArrayProperty propertyName="array_p2d" typeName="point2d" minOccurs="0" maxOccurs="unbounded"/>
396
+ <ECArrayProperty propertyName="array_p3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
397
+ <ECArrayProperty propertyName="array_g" typeName="Bentley.Geometry.Common.IGeometry" minOccurs="0" maxOccurs="unbounded"/>
398
+ </ECStructClass>
399
399
  </ECSchema>`;
400
400
  const schemaFileName = "ElementRoundTripTest.01.00.00.xml";
401
401
  const iModelFileName = "ElementRoundTripTest.bim";
@@ -498,6 +498,7 @@ describe("Element and ElementAspect roundtrip test for all type of properties",
498
498
  verifyTestElement(actualValue, expectedValue);
499
499
  // verify via concurrent query
500
500
  let rowCount = 0;
501
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
501
502
  for await (const row of imodel.createQueryReader("SELECT * FROM ts.TestElement", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
502
503
  verifyTestElement(row.toRow(), expectedValue);
503
504
  rowCount++;
@@ -542,6 +543,7 @@ describe("Element and ElementAspect roundtrip test for all type of properties",
542
543
  verifyTestElement(updatedValue, actualValue);
543
544
  // verify via concurrent query
544
545
  rowCount = 0;
546
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
545
547
  for await (const row of imodel.createQueryReader("SELECT * FROM ts.TestElement", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
546
548
  verifyTestElement(row.toRow(), actualValue);
547
549
  rowCount++;
@@ -577,6 +579,7 @@ describe("Element and ElementAspect roundtrip test for all type of properties",
577
579
  verifyTestElementAspect(updatedAspectValue[0], elementAspect);
578
580
  // Verify via a concurrent query
579
581
  let rowCount = 0;
582
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
580
583
  for await (const row of iModel.createQueryReader("SELECT * FROM ts.TestElementAspect", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
581
584
  verifyTestElementAspect(row.toRow(), elementAspect);
582
585
  rowCount++;
@@ -690,6 +693,7 @@ describe("Element and ElementAspect roundtrip test for all type of properties",
690
693
  verifyTestElementRefersToElements(actualRelationshipValue, expectedRelationshipValue);
691
694
  // verify via concurrent query
692
695
  let rowCount = 0;
696
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
693
697
  for await (const row of imodel.createQueryReader("SELECT * FROM ts.TestElementRefersToElements", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
694
698
  const val = row.toRow();
695
699
  verifyTestElementRefersToElements(val, expectedRelationshipValue);
@@ -746,6 +750,7 @@ describe("Element and ElementAspect roundtrip test for all type of properties",
746
750
  verifyTestElementRefersToElements(updatedValue, updatedExpectedValue);
747
751
  // verify via concurrent query
748
752
  rowCount = 0;
753
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
749
754
  for await (const row of imodel.createQueryReader("SELECT * FROM ts.TestElementRefersToElements", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
750
755
  verifyTestElementRefersToElements(row.toRow(), updatedExpectedValue);
751
756
  rowCount++;