@itwin/core-backend 5.3.0-dev.6 → 5.3.0-dev.8

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 (394) hide show
  1. package/CHANGELOG.md +16 -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 +2 -2
  7. package/lib/cjs/BriefcaseManager.js.map +1 -1
  8. package/lib/cjs/CatalogDb.js.map +1 -1
  9. package/lib/cjs/Category.js.map +1 -1
  10. package/lib/cjs/ChangeSummaryManager.js +2 -2
  11. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  12. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  13. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  14. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  15. package/lib/cjs/ChannelControl.js.map +1 -1
  16. package/lib/cjs/CheckpointManager.js.map +1 -1
  17. package/lib/cjs/ClassRegistry.js +5 -5
  18. package/lib/cjs/ClassRegistry.js.map +1 -1
  19. package/lib/cjs/CloudSqlite.js.map +1 -1
  20. package/lib/cjs/CodeService.js.map +1 -1
  21. package/lib/cjs/CodeSpecs.js.map +1 -1
  22. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  23. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  24. package/lib/cjs/DevTools.js.map +1 -1
  25. package/lib/cjs/DisplayStyle.js.map +1 -1
  26. package/lib/cjs/ECDb.js.map +1 -1
  27. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  28. package/lib/cjs/ECSqlStatement.js.map +1 -1
  29. package/lib/cjs/Element.js.map +1 -1
  30. package/lib/cjs/ElementAspect.js.map +1 -1
  31. package/lib/cjs/ElementGraphics.js.map +1 -1
  32. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  33. package/lib/cjs/Entity.js.map +1 -1
  34. package/lib/cjs/EntityReferences.js.map +1 -1
  35. package/lib/cjs/ExportGraphics.js.map +1 -1
  36. package/lib/cjs/ExternalSource.js.map +1 -1
  37. package/lib/cjs/FontFile.js.map +1 -1
  38. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  39. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  40. package/lib/cjs/GeometrySummary.js +47 -47
  41. package/lib/cjs/GeometrySummary.js.map +1 -1
  42. package/lib/cjs/IModelDb.js +8 -8
  43. package/lib/cjs/IModelDb.js.map +1 -1
  44. package/lib/cjs/IModelDbFonts.js.map +1 -1
  45. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  46. package/lib/cjs/IModelHost.js.map +1 -1
  47. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  48. package/lib/cjs/IModelJsFs.js.map +1 -1
  49. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  50. package/lib/cjs/IpcHost.js.map +1 -1
  51. package/lib/cjs/LineStyle.js.map +1 -1
  52. package/lib/cjs/LocalHub.js +1 -1
  53. package/lib/cjs/LocalHub.js.map +1 -1
  54. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  55. package/lib/cjs/LockControl.js.map +1 -1
  56. package/lib/cjs/Material.js.map +1 -1
  57. package/lib/cjs/Model.js.map +1 -1
  58. package/lib/cjs/NativeAppStorage.js.map +1 -1
  59. package/lib/cjs/NativeHost.js.map +1 -1
  60. package/lib/cjs/NavigationRelationship.js.map +1 -1
  61. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  62. package/lib/cjs/PropertyStore.js.map +1 -1
  63. package/lib/cjs/Relationship.js.map +1 -1
  64. package/lib/cjs/RpcBackend.js.map +1 -1
  65. package/lib/cjs/SQLiteDb.js.map +1 -1
  66. package/lib/cjs/Schema.js.map +1 -1
  67. package/lib/cjs/SchemaSync.js.map +1 -1
  68. package/lib/cjs/SchemaUtils.js.map +1 -1
  69. package/lib/cjs/SheetIndex.js.map +1 -1
  70. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  71. package/lib/cjs/SqliteStatement.js.map +1 -1
  72. package/lib/cjs/StashManager.js.map +1 -1
  73. package/lib/cjs/Texture.js.map +1 -1
  74. package/lib/cjs/TileStorage.js.map +1 -1
  75. package/lib/cjs/TxnManager.js.map +1 -1
  76. package/lib/cjs/ViewDefinition.js.map +1 -1
  77. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  78. package/lib/cjs/ViewStore.js.map +1 -1
  79. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +7 -1
  80. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  81. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +25 -0
  82. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  83. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  84. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  85. package/lib/cjs/annotations/TextAnnotationElement.d.ts +20 -1
  86. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  87. package/lib/cjs/annotations/TextAnnotationElement.js +84 -2
  88. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  89. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  90. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  91. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  92. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  93. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  94. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  95. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  96. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  97. package/lib/cjs/core-backend.js.map +1 -1
  98. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  99. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  100. package/lib/cjs/domains/GenericElements.js.map +1 -1
  101. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  102. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  103. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  104. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  105. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  106. package/lib/cjs/internal/HubMock.js.map +1 -1
  107. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  108. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  109. package/lib/cjs/internal/NoLocks.js.map +1 -1
  110. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  111. package/lib/cjs/internal/Symbols.js.map +1 -1
  112. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  113. package/lib/cjs/internal/annotations/fields.js +1 -0
  114. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  115. package/lib/cjs/internal/cross-package.js.map +1 -1
  116. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  117. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  118. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  119. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  120. package/lib/cjs/rpc/multipart.js.map +1 -1
  121. package/lib/cjs/rpc/tracing.js.map +1 -1
  122. package/lib/cjs/rpc/web/logging.js.map +1 -1
  123. package/lib/cjs/rpc/web/request.js.map +1 -1
  124. package/lib/cjs/rpc/web/response.js.map +1 -1
  125. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  126. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  127. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  128. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  129. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  130. package/lib/cjs/workspace/Settings.js.map +1 -1
  131. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  132. package/lib/cjs/workspace/Workspace.js.map +1 -1
  133. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  134. package/lib/esm/BackendHubAccess.js.map +1 -1
  135. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  136. package/lib/esm/BisCoreSchema.js.map +1 -1
  137. package/lib/esm/BlobContainerService.js.map +1 -1
  138. package/lib/esm/BriefcaseManager.d.ts +2 -2
  139. package/lib/esm/BriefcaseManager.js.map +1 -1
  140. package/lib/esm/CatalogDb.js.map +1 -1
  141. package/lib/esm/Category.js.map +1 -1
  142. package/lib/esm/ChangeSummaryManager.js +2 -2
  143. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  144. package/lib/esm/ChangedElementsDb.js.map +1 -1
  145. package/lib/esm/ChangesetECAdaptor.js +248 -248
  146. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  147. package/lib/esm/ChannelControl.js.map +1 -1
  148. package/lib/esm/CheckpointManager.js.map +1 -1
  149. package/lib/esm/ClassRegistry.js +5 -5
  150. package/lib/esm/ClassRegistry.js.map +1 -1
  151. package/lib/esm/CloudSqlite.js.map +1 -1
  152. package/lib/esm/CodeService.js.map +1 -1
  153. package/lib/esm/CodeSpecs.js.map +1 -1
  154. package/lib/esm/ConcurrentQuery.js.map +1 -1
  155. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  156. package/lib/esm/DevTools.js.map +1 -1
  157. package/lib/esm/DisplayStyle.js.map +1 -1
  158. package/lib/esm/ECDb.js.map +1 -1
  159. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  160. package/lib/esm/ECSqlStatement.js.map +1 -1
  161. package/lib/esm/Element.js.map +1 -1
  162. package/lib/esm/ElementAspect.js.map +1 -1
  163. package/lib/esm/ElementGraphics.js.map +1 -1
  164. package/lib/esm/ElementTreeWalker.js.map +1 -1
  165. package/lib/esm/Entity.js.map +1 -1
  166. package/lib/esm/EntityReferences.js.map +1 -1
  167. package/lib/esm/ExportGraphics.js.map +1 -1
  168. package/lib/esm/ExternalSource.js.map +1 -1
  169. package/lib/esm/FontFile.js.map +1 -1
  170. package/lib/esm/GeoCoordConfig.js.map +1 -1
  171. package/lib/esm/GeographicCRSServices.js.map +1 -1
  172. package/lib/esm/GeometrySummary.js +47 -47
  173. package/lib/esm/GeometrySummary.js.map +1 -1
  174. package/lib/esm/IModelDb.js +8 -8
  175. package/lib/esm/IModelDb.js.map +1 -1
  176. package/lib/esm/IModelDbFonts.js.map +1 -1
  177. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  178. package/lib/esm/IModelHost.js.map +1 -1
  179. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  180. package/lib/esm/IModelJsFs.js.map +1 -1
  181. package/lib/esm/ImageSourceConversion.js.map +1 -1
  182. package/lib/esm/IpcHost.js.map +1 -1
  183. package/lib/esm/LineStyle.js.map +1 -1
  184. package/lib/esm/LocalHub.js +1 -1
  185. package/lib/esm/LocalHub.js.map +1 -1
  186. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  187. package/lib/esm/LockControl.js.map +1 -1
  188. package/lib/esm/Material.js.map +1 -1
  189. package/lib/esm/Model.js.map +1 -1
  190. package/lib/esm/NativeAppStorage.js.map +1 -1
  191. package/lib/esm/NativeHost.js.map +1 -1
  192. package/lib/esm/NavigationRelationship.js.map +1 -1
  193. package/lib/esm/PromiseMemoizer.js.map +1 -1
  194. package/lib/esm/PropertyStore.js.map +1 -1
  195. package/lib/esm/Relationship.js.map +1 -1
  196. package/lib/esm/RpcBackend.js.map +1 -1
  197. package/lib/esm/SQLiteDb.js.map +1 -1
  198. package/lib/esm/Schema.js.map +1 -1
  199. package/lib/esm/SchemaSync.js.map +1 -1
  200. package/lib/esm/SchemaUtils.js.map +1 -1
  201. package/lib/esm/SheetIndex.js.map +1 -1
  202. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  203. package/lib/esm/SqliteStatement.js.map +1 -1
  204. package/lib/esm/StashManager.js.map +1 -1
  205. package/lib/esm/Texture.js.map +1 -1
  206. package/lib/esm/TileStorage.js.map +1 -1
  207. package/lib/esm/TxnManager.js.map +1 -1
  208. package/lib/esm/ViewDefinition.js.map +1 -1
  209. package/lib/esm/ViewStateHydrator.js.map +1 -1
  210. package/lib/esm/ViewStore.js.map +1 -1
  211. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +7 -1
  212. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  213. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +25 -0
  214. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  215. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  216. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  217. package/lib/esm/annotations/TextAnnotationElement.d.ts +20 -1
  218. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  219. package/lib/esm/annotations/TextAnnotationElement.js +86 -5
  220. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  221. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  222. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  223. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  224. package/lib/esm/core-backend.js.map +1 -1
  225. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  226. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  227. package/lib/esm/domains/GenericElements.js.map +1 -1
  228. package/lib/esm/domains/GenericSchema.js.map +1 -1
  229. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  230. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  231. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  232. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  233. package/lib/esm/internal/HubMock.js.map +1 -1
  234. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  235. package/lib/esm/internal/NativePlatform.js.map +1 -1
  236. package/lib/esm/internal/NoLocks.js.map +1 -1
  237. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  238. package/lib/esm/internal/Symbols.js.map +1 -1
  239. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  240. package/lib/esm/internal/annotations/fields.js +1 -0
  241. package/lib/esm/internal/annotations/fields.js.map +1 -1
  242. package/lib/esm/internal/cross-package.js.map +1 -1
  243. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  244. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  245. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  246. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  247. package/lib/esm/rpc/multipart.js.map +1 -1
  248. package/lib/esm/rpc/tracing.js.map +1 -1
  249. package/lib/esm/rpc/web/logging.js.map +1 -1
  250. package/lib/esm/rpc/web/request.js.map +1 -1
  251. package/lib/esm/rpc/web/response.js.map +1 -1
  252. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  253. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  254. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  255. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  256. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  257. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  258. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  259. package/lib/esm/test/AttachDb.test.js +11 -11
  260. package/lib/esm/test/AttachDb.test.js.map +1 -1
  261. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  262. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  263. package/lib/esm/test/IModelHost.test.js.map +1 -1
  264. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  265. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  266. package/lib/esm/test/IpcHost.test.js.map +1 -1
  267. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  268. package/lib/esm/test/PrintElementTree.js.map +1 -1
  269. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  270. package/lib/esm/test/RevisionUtility.js.map +1 -1
  271. package/lib/esm/test/SchemaUtils.test.js +25 -25
  272. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  273. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  274. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  275. package/lib/esm/test/TestUtils.js.map +1 -1
  276. package/lib/esm/test/annotations/Fields.test.js +183 -88
  277. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  278. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  279. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  280. package/lib/esm/test/annotations/TextAnnotation.test.js +227 -2
  281. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  282. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  283. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  284. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  285. package/lib/esm/test/categories/Category.test.js.map +1 -1
  286. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  287. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  288. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  289. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +15 -15
  290. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  291. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  292. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  293. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  294. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  295. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  296. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  297. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  298. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  299. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  300. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  301. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  302. package/lib/esm/test/ecdb/ECSqlStatement.test.js +326 -326
  303. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  304. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  305. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  306. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  307. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  308. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  309. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  310. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  311. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  312. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  313. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  314. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  315. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  316. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  317. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  318. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  319. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  320. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  321. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  322. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  323. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  324. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  325. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  326. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  327. package/lib/esm/test/hubaccess/Rebase.test.js +33 -33
  328. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  329. package/lib/esm/test/imageData.js.map +1 -1
  330. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  331. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  332. package/lib/esm/test/imodel/IModel.test.js +44 -44
  333. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  334. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  335. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  336. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  337. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  338. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -1
  339. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
  340. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
  341. package/lib/esm/test/index.js.map +1 -1
  342. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  343. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  344. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  345. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  346. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  347. package/lib/esm/test/rpc/response.test.js.map +1 -1
  348. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  349. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  350. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  351. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  352. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  353. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  354. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  355. package/lib/esm/test/standalone/ChangesetReader.test.js +124 -124
  356. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  357. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  358. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  359. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  360. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  361. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  362. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  363. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  364. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  365. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  366. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  367. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  368. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  369. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  370. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  371. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  372. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  373. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  374. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  375. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  376. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  377. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  378. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  379. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  380. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  381. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  382. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  383. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  384. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  385. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  386. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  387. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  388. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  389. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  390. package/lib/esm/workspace/Settings.js.map +1 -1
  391. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  392. package/lib/esm/workspace/Workspace.js.map +1 -1
  393. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  394. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedEqual.js","sourceRoot":"","sources":["../../../src/test/AdvancedEqual.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Assertion, util } from \"chai\";\r\nimport { Geometry } from \"@itwin/core-geometry\";\r\n\r\ninterface DeepEqualOpts {\r\n /**\r\n * Tolerance for number fields, if not defined will be 1e-10\r\n * If you don't want a tolerance, either supply 0 or use regular .deep.equal\r\n */\r\n tolerance?: number;\r\n /** e.g. consider {x: undefined} and {} as deeply equal */\r\n considerNonExistingAndUndefinedEqual?: boolean;\r\n /** Specify standard property keys holding ec class identifiers (when true, `classFullName` and `relClassName`)\r\n * to be normalized during comparison so that differently cased and alternative syntax still is considered equal\r\n * Passing `true`, is the same as passing `[\"classFullName\", \"relClassName\"]`\r\n */\r\n normalizeClassNameProps?: boolean | string[];\r\n}\r\n\r\nexport const defaultOpts = {\r\n tolerance: 1e-10,\r\n considerNonExistingAndUndefinedEqual: false,\r\n} as const;\r\n\r\ndeclare global {\r\n namespace Chai {\r\n interface Deep {\r\n advancedEqual(actual: any, options?: DeepEqualOpts): Assertion;\r\n subsetEqual(actual: any, options?: DeepEqualOpts): Assertion;\r\n }\r\n }\r\n}\r\n\r\n/** get whether two numbers are almost equal within a tolerance */\r\nconst isAlmostEqualNumber: (a: number, b: number, tol: number) => boolean = (a, b, tol) => Geometry.isSameCoordinate(a, b, tol);\r\n\r\n/** normalize a classname for comparisons */\r\nconst normalizeClassName = (name: string) => name.toLowerCase().replace(/:/, \".\");\r\n\r\ninterface AdvancedEqualFuncOpts extends DeepEqualOpts {\r\n /** only test */\r\n useSubsetEquality?: boolean;\r\n}\r\n\r\n/**\r\n * The diff shown on failure will show undefined fields as part of the diff even if\r\n * consideringNonExistingAndUndefinedEqual is true. You can ignore that.\r\n * We would have to mutate the object to clean the diff, although it is worth considering.\r\n */\r\nexport function advancedDeepEqual(\r\n e: any,\r\n a: any,\r\n options: AdvancedEqualFuncOpts = {},\r\n): boolean {\r\n const normalizedClassNameProps\r\n = options.normalizeClassNameProps === true\r\n ? [\"classFullName\", \"relClassName\"]\r\n : options.normalizeClassNameProps || [];\r\n if (options.tolerance === undefined)\r\n options.tolerance = defaultOpts.tolerance;\r\n if (e === a)\r\n return true;\r\n if (typeof e !== typeof a)\r\n return false;\r\n switch (typeof e) {\r\n case \"number\":\r\n return isAlmostEqualNumber(e, a, options.tolerance);\r\n case \"string\":\r\n case \"boolean\":\r\n case \"function\":\r\n case \"symbol\":\r\n case \"undefined\":\r\n return false; // these objects can only be strict equal which was already tested\r\n case \"object\":\r\n if ((e === null) !== (a === null))\r\n return false;\r\n const eSize = Object.keys(e).filter((k) => options.considerNonExistingAndUndefinedEqual && e[k] !== undefined).length;\r\n const aSize = Object.keys(a).filter((k) => options.considerNonExistingAndUndefinedEqual && a[k] !== undefined).length;\r\n return (eSize === aSize || !!options.useSubsetEquality) && Object.keys(e).every(\r\n (keyOfE) =>\r\n (keyOfE in a || options.considerNonExistingAndUndefinedEqual) &&\r\n normalizedClassNameProps.includes(keyOfE)\r\n ? advancedDeepEqual(normalizeClassName(e[keyOfE]), normalizeClassName(a[keyOfE]))\r\n : advancedDeepEqual(e[keyOfE], a[keyOfE], options),\r\n );\r\n default: // bigint unhandled\r\n throw Error(`unhandled deep compare type code returned from typeof, \"${typeof e}\"`);\r\n }\r\n}\r\n\r\nAssertion.addMethod(\r\n \"advancedEqual\",\r\n function advancedEqual(\r\n expected: any,\r\n options: DeepEqualOpts = {},\r\n ) {\r\n if (options.tolerance === undefined)\r\n options.tolerance = 1e-10;\r\n const actual = this._obj;\r\n const isDeep = util.flag(this, \"deep\");\r\n this.assert(\r\n isDeep\r\n ? advancedDeepEqual(expected, actual, options)\r\n : isAlmostEqualNumber(expected, actual, options.tolerance),\r\n `expected ${\r\n isDeep ? \"deep equality of \" : \" \"\r\n }#{exp} and #{act} with a tolerance of ${options.tolerance}`,\r\n `expected ${\r\n isDeep ? \"deep inequality of \" : \" \"\r\n }#{exp} and #{act} with a tolerance of ${options.tolerance}`,\r\n expected,\r\n actual,\r\n );\r\n },\r\n);\r\n\r\nAssertion.addMethod(\r\n \"subsetEqual\",\r\n function subsetEqual(\r\n expected: any,\r\n options: DeepEqualOpts = {},\r\n ) {\r\n if (options.tolerance === undefined)\r\n options.tolerance = 1e-10;\r\n const actual = this._obj;\r\n this.assert(\r\n advancedDeepEqual(expected, actual, {...options, useSubsetEquality: true }),\r\n `expected #{act} to contain as a subset #{exp}`,\r\n `expected #{act} not to contain as a subset #{exp}`,\r\n expected,\r\n actual,\r\n );\r\n },\r\n);\r\n"]}
1
+ {"version":3,"file":"AdvancedEqual.js","sourceRoot":"","sources":["../../../src/test/AdvancedEqual.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Assertion, util } from \"chai\";\nimport { Geometry } from \"@itwin/core-geometry\";\n\ninterface DeepEqualOpts {\n /**\n * Tolerance for number fields, if not defined will be 1e-10\n * If you don't want a tolerance, either supply 0 or use regular .deep.equal\n */\n tolerance?: number;\n /** e.g. consider {x: undefined} and {} as deeply equal */\n considerNonExistingAndUndefinedEqual?: boolean;\n /** Specify standard property keys holding ec class identifiers (when true, `classFullName` and `relClassName`)\n * to be normalized during comparison so that differently cased and alternative syntax still is considered equal\n * Passing `true`, is the same as passing `[\"classFullName\", \"relClassName\"]`\n */\n normalizeClassNameProps?: boolean | string[];\n}\n\nexport const defaultOpts = {\n tolerance: 1e-10,\n considerNonExistingAndUndefinedEqual: false,\n} as const;\n\ndeclare global {\n namespace Chai {\n interface Deep {\n advancedEqual(actual: any, options?: DeepEqualOpts): Assertion;\n subsetEqual(actual: any, options?: DeepEqualOpts): Assertion;\n }\n }\n}\n\n/** get whether two numbers are almost equal within a tolerance */\nconst isAlmostEqualNumber: (a: number, b: number, tol: number) => boolean = (a, b, tol) => Geometry.isSameCoordinate(a, b, tol);\n\n/** normalize a classname for comparisons */\nconst normalizeClassName = (name: string) => name.toLowerCase().replace(/:/, \".\");\n\ninterface AdvancedEqualFuncOpts extends DeepEqualOpts {\n /** only test */\n useSubsetEquality?: boolean;\n}\n\n/**\n * The diff shown on failure will show undefined fields as part of the diff even if\n * consideringNonExistingAndUndefinedEqual is true. You can ignore that.\n * We would have to mutate the object to clean the diff, although it is worth considering.\n */\nexport function advancedDeepEqual(\n e: any,\n a: any,\n options: AdvancedEqualFuncOpts = {},\n): boolean {\n const normalizedClassNameProps\n = options.normalizeClassNameProps === true\n ? [\"classFullName\", \"relClassName\"]\n : options.normalizeClassNameProps || [];\n if (options.tolerance === undefined)\n options.tolerance = defaultOpts.tolerance;\n if (e === a)\n return true;\n if (typeof e !== typeof a)\n return false;\n switch (typeof e) {\n case \"number\":\n return isAlmostEqualNumber(e, a, options.tolerance);\n case \"string\":\n case \"boolean\":\n case \"function\":\n case \"symbol\":\n case \"undefined\":\n return false; // these objects can only be strict equal which was already tested\n case \"object\":\n if ((e === null) !== (a === null))\n return false;\n const eSize = Object.keys(e).filter((k) => options.considerNonExistingAndUndefinedEqual && e[k] !== undefined).length;\n const aSize = Object.keys(a).filter((k) => options.considerNonExistingAndUndefinedEqual && a[k] !== undefined).length;\n return (eSize === aSize || !!options.useSubsetEquality) && Object.keys(e).every(\n (keyOfE) =>\n (keyOfE in a || options.considerNonExistingAndUndefinedEqual) &&\n normalizedClassNameProps.includes(keyOfE)\n ? advancedDeepEqual(normalizeClassName(e[keyOfE]), normalizeClassName(a[keyOfE]))\n : advancedDeepEqual(e[keyOfE], a[keyOfE], options),\n );\n default: // bigint unhandled\n throw Error(`unhandled deep compare type code returned from typeof, \"${typeof e}\"`);\n }\n}\n\nAssertion.addMethod(\n \"advancedEqual\",\n function advancedEqual(\n expected: any,\n options: DeepEqualOpts = {},\n ) {\n if (options.tolerance === undefined)\n options.tolerance = 1e-10;\n const actual = this._obj;\n const isDeep = util.flag(this, \"deep\");\n this.assert(\n isDeep\n ? advancedDeepEqual(expected, actual, options)\n : isAlmostEqualNumber(expected, actual, options.tolerance),\n `expected ${\n isDeep ? \"deep equality of \" : \" \"\n }#{exp} and #{act} with a tolerance of ${options.tolerance}`,\n `expected ${\n isDeep ? \"deep inequality of \" : \" \"\n }#{exp} and #{act} with a tolerance of ${options.tolerance}`,\n expected,\n actual,\n );\n },\n);\n\nAssertion.addMethod(\n \"subsetEqual\",\n function subsetEqual(\n expected: any,\n options: DeepEqualOpts = {},\n ) {\n if (options.tolerance === undefined)\n options.tolerance = 1e-10;\n const actual = this._obj;\n this.assert(\n advancedDeepEqual(expected, actual, {...options, useSubsetEquality: true }),\n `expected #{act} to contain as a subset #{exp}`,\n `expected #{act} not to contain as a subset #{exp}`,\n expected,\n actual,\n );\n },\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AnnotationTestUtils.js","sourceRoot":"","sources":["../../../src/test/AnnotationTestUtils.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,eAAe,EAAyC,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC/G,OAAO,EAAqB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAA6D,eAAe,EAAqC,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAInK,MAAM,UAAU,8BAA8B,CAAC,IAAoC;IACjF,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAoB,EAAE,IAI9C;IACC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;QAC9C,SAAS;QACT,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,EAAE;QACpC,MAAM,EAAE,EAAS;QACjB,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;KACzE,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,SAAS;QACT,MAAM,EAAE,EAAS;QACjB,iBAAiB;QACjB,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzC,gBAAgB,EAAE,8BAA8B;KACjD,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wFAAwF;AACxF,MAAM,OAAO,WAAY,SAAQ,eAAe,CAAC,OAAO;IAC/C,MAAM,GAAqB,EAAE,CAAC;IAC9B,UAAU,GAAwB,EAAE,CAAC;IACrC,WAAW,GAAiB,EAAE,CAAA;IAErB,0BAA0B,CAAC,MAAsB;QAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IACe,mBAAmB,CAAC,QAA2B;QAC7D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAEe,gBAAgB,CAAC,IAAgB;QAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CAEF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ElementGeometry, GeometryParams, TextBlock, TextString, TextStyleSettings } from \"@itwin/core-common\";\r\nimport { AnyCurvePrimitive, Range2d } from \"@itwin/core-geometry\";\r\nimport { ComputeRangesForTextLayoutArgs, FindFontId, FindTextStyle, layoutTextBlock, TextBlockLayout, TextLayoutRanges, TextStyleResolver } from \"../core-backend\";\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\n\r\n\r\nexport function computeTextRangeAsStringLength(args: ComputeRangesForTextLayoutArgs): TextLayoutRanges {\r\n const range = new Range2d(0, 0, args.chars.length, args.textHeight);\r\n return { layout: range, justification: range };\r\n}\r\n\r\nexport function doLayout(textBlock: TextBlock, args?: {\r\n textStyleId?: Id64String,\r\n findTextStyle?: FindTextStyle;\r\n findFontId?: FindFontId;\r\n}): TextBlockLayout {\r\n const textStyleResolver = new TextStyleResolver({\r\n textBlock,\r\n textStyleId: args?.textStyleId ?? \"\",\r\n iModel: {} as any,\r\n findTextStyle: args?.findTextStyle ?? (() => TextStyleSettings.defaults)\r\n });\r\n const layout = layoutTextBlock({\r\n textBlock,\r\n iModel: {} as any,\r\n textStyleResolver,\r\n findFontId: args?.findFontId ?? (() => 0),\r\n computeTextRange: computeTextRangeAsStringLength,\r\n });\r\n\r\n return layout;\r\n}\r\n\r\n// Extending this because the ElementGeometry.Builder.entries attribute is hard to parse\r\nexport class MockBuilder extends ElementGeometry.Builder {\r\n public params: GeometryParams[] = [];\r\n public geometries: AnyCurvePrimitive[] = [];\r\n public textStrings: TextString[] = []\r\n\r\n public override appendGeometryParamsChange(params: GeometryParams): boolean {\r\n this.params.push(params.clone());\r\n return super.appendGeometryParamsChange(params);\r\n }\r\n public override appendGeometryQuery(geometry: AnyCurvePrimitive): boolean {\r\n this.geometries.push(geometry);\r\n return super.appendGeometryQuery(geometry);\r\n }\r\n\r\n public override appendTextString(text: TextString): boolean {\r\n this.textStrings.push(text);\r\n return super.appendTextString(text);\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"AnnotationTestUtils.js","sourceRoot":"","sources":["../../../src/test/AnnotationTestUtils.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,eAAe,EAAyC,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC/G,OAAO,EAAqB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAA6D,eAAe,EAAqC,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAInK,MAAM,UAAU,8BAA8B,CAAC,IAAoC;IACjF,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAoB,EAAE,IAI9C;IACC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;QAC9C,SAAS;QACT,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,EAAE;QACpC,MAAM,EAAE,EAAS;QACjB,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;KACzE,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,SAAS;QACT,MAAM,EAAE,EAAS;QACjB,iBAAiB;QACjB,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzC,gBAAgB,EAAE,8BAA8B;KACjD,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wFAAwF;AACxF,MAAM,OAAO,WAAY,SAAQ,eAAe,CAAC,OAAO;IAC/C,MAAM,GAAqB,EAAE,CAAC;IAC9B,UAAU,GAAwB,EAAE,CAAC;IACrC,WAAW,GAAiB,EAAE,CAAA;IAErB,0BAA0B,CAAC,MAAsB;QAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IACe,mBAAmB,CAAC,QAA2B;QAC7D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAEe,gBAAgB,CAAC,IAAgB;QAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CAEF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { ElementGeometry, GeometryParams, TextBlock, TextString, TextStyleSettings } from \"@itwin/core-common\";\nimport { AnyCurvePrimitive, Range2d } from \"@itwin/core-geometry\";\nimport { ComputeRangesForTextLayoutArgs, FindFontId, FindTextStyle, layoutTextBlock, TextBlockLayout, TextLayoutRanges, TextStyleResolver } from \"../core-backend\";\nimport { Id64String } from \"@itwin/core-bentley\";\n\n\nexport function computeTextRangeAsStringLength(args: ComputeRangesForTextLayoutArgs): TextLayoutRanges {\n const range = new Range2d(0, 0, args.chars.length, args.textHeight);\n return { layout: range, justification: range };\n}\n\nexport function doLayout(textBlock: TextBlock, args?: {\n textStyleId?: Id64String,\n findTextStyle?: FindTextStyle;\n findFontId?: FindFontId;\n}): TextBlockLayout {\n const textStyleResolver = new TextStyleResolver({\n textBlock,\n textStyleId: args?.textStyleId ?? \"\",\n iModel: {} as any,\n findTextStyle: args?.findTextStyle ?? (() => TextStyleSettings.defaults)\n });\n const layout = layoutTextBlock({\n textBlock,\n iModel: {} as any,\n textStyleResolver,\n findFontId: args?.findFontId ?? (() => 0),\n computeTextRange: computeTextRangeAsStringLength,\n });\n\n return layout;\n}\n\n// Extending this because the ElementGeometry.Builder.entries attribute is hard to parse\nexport class MockBuilder extends ElementGeometry.Builder {\n public params: GeometryParams[] = [];\n public geometries: AnyCurvePrimitive[] = [];\n public textStrings: TextString[] = []\n\n public override appendGeometryParamsChange(params: GeometryParams): boolean {\n this.params.push(params.clone());\n return super.appendGeometryParamsChange(params);\n }\n public override appendGeometryQuery(geometry: AnyCurvePrimitive): boolean {\n this.geometries.push(geometry);\n return super.appendGeometryQuery(geometry);\n }\n\n public override appendTextString(text: TextString): boolean {\n this.textStrings.push(text);\n return super.appendTextString(text);\n }\n\n}"]}
@@ -11,17 +11,17 @@ describe("Attach/Detach Db", () => {
11
11
  const simulationFile = IModelTestUtils.resolveAssetFile("sim-attach.ecdb");
12
12
  const master = SnapshotDb.openFile(masterFile);
13
13
  master.attachDb(simulationFile, "SimDb");
14
- const ecsql = `
15
- SELECT ts.TimeFromStart [Time From Start (s)],
16
- p.UserLabel [Pipe with Max Flow],
17
- MAX(ltvrr.Flow) [Max Flow (L/s)]
18
- FROM
19
- SimDb.simrescore.TimeStep ts
20
- INNER JOIN SimDb.stmswrres.BasicFlowResultRecord ltvrr ON ts.ECInstanceId = ltvrr.TimeStep.Id
21
- INNER JOIN swrhyd.Pipe p ON p.ECInstanceId = ltvrr.ElementId
22
- GROUP BY
23
- ts.ECInstanceId
24
- HAVING
14
+ const ecsql = `
15
+ SELECT ts.TimeFromStart [Time From Start (s)],
16
+ p.UserLabel [Pipe with Max Flow],
17
+ MAX(ltvrr.Flow) [Max Flow (L/s)]
18
+ FROM
19
+ SimDb.simrescore.TimeStep ts
20
+ INNER JOIN SimDb.stmswrres.BasicFlowResultRecord ltvrr ON ts.ECInstanceId = ltvrr.TimeStep.Id
21
+ INNER JOIN swrhyd.Pipe p ON p.ECInstanceId = ltvrr.ElementId
22
+ GROUP BY
23
+ ts.ECInstanceId
24
+ HAVING
25
25
  MAX(ltvrr.Flow) > 1`;
26
26
  const reader = master.createQueryReader(ecsql);
27
27
  const rows = [];
@@ -1 +1 @@
1
- {"version":3,"file":"AttachDb.test.js","sourceRoot":"","sources":["../../../src/test/AttachDb.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { expect } from \"chai\";\r\nimport { SnapshotDb } from \"../IModelDb\";\r\nimport { IModelTestUtils } from \"./IModelTestUtils\";\r\n\r\ndescribe(\"Attach/Detach Db\", () => {\r\n it(\"attach simulation db\", async () => {\r\n const masterFile = IModelTestUtils.resolveAssetFile(\"sim-master.bim\");\r\n const simulationFile = IModelTestUtils.resolveAssetFile(\"sim-attach.ecdb\");\r\n\r\n const master = SnapshotDb.openFile(masterFile);\r\n master.attachDb(simulationFile, \"SimDb\");\r\n\r\n const ecsql = `\r\n SELECT ts.TimeFromStart [Time From Start (s)],\r\n p.UserLabel [Pipe with Max Flow],\r\n MAX(ltvrr.Flow) [Max Flow (L/s)]\r\n FROM\r\n SimDb.simrescore.TimeStep ts\r\n INNER JOIN SimDb.stmswrres.BasicFlowResultRecord ltvrr ON ts.ECInstanceId = ltvrr.TimeStep.Id\r\n INNER JOIN swrhyd.Pipe p ON p.ECInstanceId = ltvrr.ElementId\r\n GROUP BY\r\n ts.ECInstanceId\r\n HAVING\r\n MAX(ltvrr.Flow) > 1`;\r\n\r\n const reader = master.createQueryReader(ecsql);\r\n const rows = [];\r\n while (await reader.step()) {\r\n rows.push(reader.current.toRow());\r\n }\r\n const expected = [\r\n {\r\n 'Time From Start (s)': 0,\r\n 'Pipe with Max Flow': 'CO-4',\r\n 'Max Flow (L/s)': 66.14359584163114\r\n },\r\n {\r\n 'Time From Start (s)': 3600,\r\n 'Pipe with Max Flow': 'CO-4',\r\n 'Max Flow (L/s)': 78.33925707748288\r\n },\r\n {\r\n 'Time From Start (s)': 7200,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 85.32875334207684\r\n },\r\n {\r\n 'Time From Start (s)': 10800,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 73.66891955141061\r\n },\r\n {\r\n 'Time From Start (s)': 14400,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 98.03457129303487\r\n },\r\n {\r\n 'Time From Start (s)': 18000,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 79.73721449443349\r\n },\r\n {\r\n 'Time From Start (s)': 21600,\r\n 'Pipe with Max Flow': 'CO-4',\r\n 'Max Flow (L/s)': 91.99697459812566\r\n },\r\n {\r\n 'Time From Start (s)': 25200,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 97.3640516154515\r\n },\r\n {\r\n 'Time From Start (s)': 28800,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 82.92153917380564\r\n },\r\n {\r\n 'Time From Start (s)': 32400,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 93.43596024800935\r\n },\r\n {\r\n 'Time From Start (s)': 36000,\r\n 'Pipe with Max Flow': 'CO-1',\r\n 'Max Flow (L/s)': 93.38944851040705\r\n },\r\n {\r\n 'Time From Start (s)': 39600,\r\n 'Pipe with Max Flow': 'CO-2',\r\n 'Max Flow (L/s)': 96.89678313985426\r\n },\r\n {\r\n 'Time From Start (s)': 43200,\r\n 'Pipe with Max Flow': 'CO-4',\r\n 'Max Flow (L/s)': 68.37554676909588\r\n },\r\n {\r\n 'Time From Start (s)': 46800,\r\n 'Pipe with Max Flow': 'CO-4',\r\n 'Max Flow (L/s)': 40.71067873689955\r\n },\r\n {\r\n 'Time From Start (s)': 50400,\r\n 'Pipe with Max Flow': 'CO-2',\r\n 'Max Flow (L/s)': 94.95603088826243\r\n },\r\n {\r\n 'Time From Start (s)': 54000,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 90.30742518949977\r\n },\r\n {\r\n 'Time From Start (s)': 57600,\r\n 'Pipe with Max Flow': 'CO-2',\r\n 'Max Flow (L/s)': 96.32532799368296\r\n },\r\n {\r\n 'Time From Start (s)': 61200,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 98.7241157161529\r\n },\r\n {\r\n 'Time From Start (s)': 64800,\r\n 'Pipe with Max Flow': 'CO-1',\r\n 'Max Flow (L/s)': 76.65530275985837\r\n },\r\n {\r\n 'Time From Start (s)': 68400,\r\n 'Pipe with Max Flow': 'CO-2',\r\n 'Max Flow (L/s)': 61.81109058119374\r\n },\r\n {\r\n 'Time From Start (s)': 72000,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 98.37332278792479\r\n },\r\n {\r\n 'Time From Start (s)': 75600,\r\n 'Pipe with Max Flow': 'CO-3',\r\n 'Max Flow (L/s)': 70.55434454594996\r\n },\r\n {\r\n 'Time From Start (s)': 79200,\r\n 'Pipe with Max Flow': 'CO-2',\r\n 'Max Flow (L/s)': 84.03731418990937\r\n },\r\n {\r\n 'Time From Start (s)': 82800,\r\n 'Pipe with Max Flow': 'CO-2',\r\n 'Max Flow (L/s)': 96.3267817742375\r\n }\r\n ];\r\n expect(rows).to.deep.equal(expected);\r\n master.close();\r\n });\r\n\r\n});\r\n"]}
1
+ {"version":3,"file":"AttachDb.test.js","sourceRoot":"","sources":["../../../src/test/AttachDb.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { expect } from \"chai\";\nimport { SnapshotDb } from \"../IModelDb\";\nimport { IModelTestUtils } from \"./IModelTestUtils\";\n\ndescribe(\"Attach/Detach Db\", () => {\n it(\"attach simulation db\", async () => {\n const masterFile = IModelTestUtils.resolveAssetFile(\"sim-master.bim\");\n const simulationFile = IModelTestUtils.resolveAssetFile(\"sim-attach.ecdb\");\n\n const master = SnapshotDb.openFile(masterFile);\n master.attachDb(simulationFile, \"SimDb\");\n\n const ecsql = `\n SELECT ts.TimeFromStart [Time From Start (s)],\n p.UserLabel [Pipe with Max Flow],\n MAX(ltvrr.Flow) [Max Flow (L/s)]\n FROM\n SimDb.simrescore.TimeStep ts\n INNER JOIN SimDb.stmswrres.BasicFlowResultRecord ltvrr ON ts.ECInstanceId = ltvrr.TimeStep.Id\n INNER JOIN swrhyd.Pipe p ON p.ECInstanceId = ltvrr.ElementId\n GROUP BY\n ts.ECInstanceId\n HAVING\n MAX(ltvrr.Flow) > 1`;\n\n const reader = master.createQueryReader(ecsql);\n const rows = [];\n while (await reader.step()) {\n rows.push(reader.current.toRow());\n }\n const expected = [\n {\n 'Time From Start (s)': 0,\n 'Pipe with Max Flow': 'CO-4',\n 'Max Flow (L/s)': 66.14359584163114\n },\n {\n 'Time From Start (s)': 3600,\n 'Pipe with Max Flow': 'CO-4',\n 'Max Flow (L/s)': 78.33925707748288\n },\n {\n 'Time From Start (s)': 7200,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 85.32875334207684\n },\n {\n 'Time From Start (s)': 10800,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 73.66891955141061\n },\n {\n 'Time From Start (s)': 14400,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 98.03457129303487\n },\n {\n 'Time From Start (s)': 18000,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 79.73721449443349\n },\n {\n 'Time From Start (s)': 21600,\n 'Pipe with Max Flow': 'CO-4',\n 'Max Flow (L/s)': 91.99697459812566\n },\n {\n 'Time From Start (s)': 25200,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 97.3640516154515\n },\n {\n 'Time From Start (s)': 28800,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 82.92153917380564\n },\n {\n 'Time From Start (s)': 32400,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 93.43596024800935\n },\n {\n 'Time From Start (s)': 36000,\n 'Pipe with Max Flow': 'CO-1',\n 'Max Flow (L/s)': 93.38944851040705\n },\n {\n 'Time From Start (s)': 39600,\n 'Pipe with Max Flow': 'CO-2',\n 'Max Flow (L/s)': 96.89678313985426\n },\n {\n 'Time From Start (s)': 43200,\n 'Pipe with Max Flow': 'CO-4',\n 'Max Flow (L/s)': 68.37554676909588\n },\n {\n 'Time From Start (s)': 46800,\n 'Pipe with Max Flow': 'CO-4',\n 'Max Flow (L/s)': 40.71067873689955\n },\n {\n 'Time From Start (s)': 50400,\n 'Pipe with Max Flow': 'CO-2',\n 'Max Flow (L/s)': 94.95603088826243\n },\n {\n 'Time From Start (s)': 54000,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 90.30742518949977\n },\n {\n 'Time From Start (s)': 57600,\n 'Pipe with Max Flow': 'CO-2',\n 'Max Flow (L/s)': 96.32532799368296\n },\n {\n 'Time From Start (s)': 61200,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 98.7241157161529\n },\n {\n 'Time From Start (s)': 64800,\n 'Pipe with Max Flow': 'CO-1',\n 'Max Flow (L/s)': 76.65530275985837\n },\n {\n 'Time From Start (s)': 68400,\n 'Pipe with Max Flow': 'CO-2',\n 'Max Flow (L/s)': 61.81109058119374\n },\n {\n 'Time From Start (s)': 72000,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 98.37332278792479\n },\n {\n 'Time From Start (s)': 75600,\n 'Pipe with Max Flow': 'CO-3',\n 'Max Flow (L/s)': 70.55434454594996\n },\n {\n 'Time From Start (s)': 79200,\n 'Pipe with Max Flow': 'CO-2',\n 'Max Flow (L/s)': 84.03731418990937\n },\n {\n 'Time From Start (s)': 82800,\n 'Pipe with Max Flow': 'CO-2',\n 'Max Flow (L/s)': 96.3267817742375\n }\n ];\n expect(rows).to.deep.equal(expected);\n master.close();\n });\n\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ElementLRUCache.test.js","sourceRoot":"","sources":["../../../src/test/ElementLRUCache.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from \"chai\";\r\nimport { CachedElement, ElementLRUCache, InstanceKeyLRUCache } from \"../internal/ElementLRUCache\";\r\nimport { IModelJsNative } from \"../core-backend\";\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\n\r\ndescribe('ElementLruCache', () => {\r\n const testElem1: CachedElement = {\r\n loadOptions: {},\r\n elProps: {\r\n id: \"testId\",\r\n model: \"testModel\",\r\n code: {\r\n spec: \"testSpec\",\r\n scope: \"testScope\"\r\n },\r\n classFullName: \"testName\"\r\n },\r\n }\r\n\r\n const testElem2: CachedElement = {\r\n loadOptions: {},\r\n elProps: {\r\n id: \"testId2\",\r\n model: \"testModel2\",\r\n code: {\r\n spec: \"testSpec2\",\r\n scope: \"testScope2\",\r\n value: \"testValue2\"\r\n },\r\n classFullName: \"testName2\"\r\n },\r\n }\r\n\r\n const testElem3: CachedElement = {\r\n loadOptions: {},\r\n elProps: {\r\n id: \"testId3\",\r\n model: \"testModel3\",\r\n code: {\r\n spec: \"testSpec3\",\r\n scope: \"testScope3\"\r\n },\r\n classFullName: \"testName3\"\r\n },\r\n }\r\n\r\n const testElemFedGuid: CachedElement = {\r\n loadOptions: {},\r\n elProps: {\r\n id: \"testIdFed\",\r\n model: \"testModel\",\r\n code: {\r\n spec: \"testSpec\",\r\n scope: \"testScope\"\r\n },\r\n classFullName: \"testName\",\r\n federationGuid: \"testFedGuid\"\r\n },\r\n }\r\n\r\n const testElemCode: CachedElement = {\r\n loadOptions: {},\r\n elProps: {\r\n id: \"testId5\",\r\n model: \"testModel5\",\r\n code: {\r\n spec: \"testSpec2:testValue2\",\r\n scope: \"testScope2\"\r\n },\r\n classFullName: \"testName5\",\r\n federationGuid: \"testFedGuid5\"\r\n },\r\n }\r\n\r\n const testElemNoId: CachedElement = {\r\n loadOptions: {},\r\n elProps: {\r\n id: undefined,\r\n model: \"testModel5\",\r\n code: {\r\n spec: \"testSpec2\",\r\n scope: \"testScope2\"\r\n },\r\n classFullName: \"testName5\",\r\n federationGuid: \"testFedGuid5\"\r\n },\r\n }\r\n\r\n it('should store and retrieve a valid element', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElem1);\r\n const retrievedElem = cache.get({ id: testElem1.elProps.id });\r\n expect(retrievedElem).to.not.be.undefined;\r\n expect(retrievedElem).to.equal(testElem1);\r\n });\r\n\r\n it('should overwrite existing valid element', () => {\r\n const cache = new ElementLRUCache(3);\r\n const testElemModel = testElem1;\r\n cache.set(testElemModel);\r\n const retrievedElem = cache.get({ id: testElemModel.elProps.id });\r\n expect(retrievedElem).to.not.be.undefined;\r\n expect(retrievedElem).to.equal(testElemModel);\r\n\r\n testElemModel.elProps.model = \"newModel\";\r\n cache.set(testElemModel);\r\n const retrievedElem2 = cache.get({ id: testElemModel.elProps.id });\r\n expect(retrievedElem2).to.not.be.undefined;\r\n expect(retrievedElem2).to.equal(testElemModel);\r\n });\r\n\r\n it('should store and retrieve a valid element by fedGuid', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElemFedGuid);\r\n const retrievedElem = cache.get({ federationGuid: testElemFedGuid.elProps.federationGuid });\r\n expect(retrievedElem).to.not.be.undefined;\r\n expect(retrievedElem).to.equal(testElemFedGuid);\r\n });\r\n\r\n it('should store and retrieve a valid element by code', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElem1);\r\n const retrievedElem = cache.get({ code: testElem1.elProps.code });\r\n expect(retrievedElem).to.not.be.undefined;\r\n expect(retrievedElem).to.equal(testElem1);\r\n\r\n cache.set(testElem2);\r\n const retrievedElem2 = cache.get({ code: testElem2.elProps.code });\r\n expect(retrievedElem2).to.not.be.undefined;\r\n expect(retrievedElem2).to.equal(testElem2);\r\n });\r\n\r\n it('should fail to store an element without id', () => {\r\n const cache = new ElementLRUCache(3);\r\n expect(() => cache.set(testElemNoId)).to.throw(Error, \"Element must have an id\");\r\n });\r\n\r\n it('should delete least used element', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElem1);\r\n cache.set(testElem2);\r\n cache.set(testElem3);\r\n cache.set(testElemFedGuid);\r\n expect(cache.size).to.equal(3);\r\n\r\n const retrievedElem = cache.get({ id: testElem2.elProps.id });\r\n expect(retrievedElem).to.not.be.undefined;\r\n expect(retrievedElem).to.equal(testElem2);\r\n\r\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\r\n expect(retrievedElem2).to.be.undefined;\r\n\r\n const retrievedElem3 = cache.get({ id: testElem3.elProps.id });\r\n expect(retrievedElem3).to.not.be.undefined;\r\n expect(retrievedElem3).to.equal(testElem3);\r\n });\r\n\r\n it('should delete with id', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElem1);\r\n cache.set(testElem2);\r\n cache.set(testElem3);\r\n expect(cache.size).to.equal(3);\r\n cache.delete({ id: testElem2.elProps.id });\r\n expect(cache.size).to.equal(2);\r\n\r\n const retrievedElem = cache.get({ id: testElem2.elProps.id });\r\n expect(retrievedElem).to.be.undefined;\r\n\r\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\r\n expect(retrievedElem2).to.not.be.undefined;\r\n expect(retrievedElem2).to.equal(testElem1);\r\n });\r\n\r\n it('should delete with federation guid', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElem1);\r\n cache.set(testElem2);\r\n cache.set(testElemFedGuid);\r\n expect(cache.size).to.equal(3);\r\n cache.delete({ federationGuid: testElemFedGuid.elProps.federationGuid });\r\n expect(cache.size).to.equal(2);\r\n\r\n const retrievedElem = cache.get({ id: testElemFedGuid.elProps.id });\r\n expect(retrievedElem).to.be.undefined;\r\n\r\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\r\n expect(retrievedElem2).to.not.be.undefined;\r\n expect(retrievedElem2).to.equal(testElem1);\r\n });\r\n\r\n it('should delete with code', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElem1);\r\n cache.set(testElem2);\r\n cache.set(testElem3);\r\n expect(cache.size).to.equal(3);\r\n cache.delete({ code: testElem2.elProps.code });\r\n expect(cache.size).to.equal(2);\r\n\r\n const retrievedElem = cache.get({ id: testElem2.elProps.id });\r\n expect(retrievedElem).to.be.undefined;\r\n\r\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\r\n expect(retrievedElem2).to.not.be.undefined;\r\n expect(retrievedElem2).to.equal(testElem1);\r\n });\r\n\r\n it('should delete with model id', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElem1);\r\n cache.set(testElem2);\r\n cache.set(testElem3);\r\n expect(cache.size).to.equal(3);\r\n cache.deleteWithModel(testElem2.elProps.model);\r\n expect(cache.size).to.equal(2);\r\n\r\n const retrievedElem = cache.get({ id: testElem2.elProps.id });\r\n expect(retrievedElem).to.be.undefined;\r\n\r\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\r\n expect(retrievedElem2).to.not.be.undefined;\r\n expect(retrievedElem2).to.equal(testElem1);\r\n });\r\n\r\n it('should clear the cache', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElem1);\r\n cache.set(testElem2);\r\n cache.set(testElem3);\r\n expect(cache.size).to.equal(3);\r\n\r\n cache.clear();\r\n expect(cache.size).to.equal(0);\r\n\r\n const retrievedElem = cache.get({ id: testElem1.elProps.id });\r\n expect(retrievedElem).to.be.undefined;\r\n });\r\n\r\n it('should not return wrong element when passed a manipulated code value', () => {\r\n const cache = new ElementLRUCache(3);\r\n cache.set(testElem2);\r\n expect(cache.size).to.equal(1);\r\n\r\n const retrievedElem = cache.get({ code: testElemCode.elProps.code });\r\n expect(retrievedElem).to.be.undefined;\r\n });\r\n});\r\n\r\ndescribe('InstanceKeyLRUCache', () => {\r\n const testArgs1: IModelJsNative.ResolveInstanceKeyArgs = {\r\n partialKey: {\r\n id: Id64.fromJSON(\"0x123\"),\r\n baseClassName: \"baseName\",\r\n },\r\n }\r\n\r\n const testArgs2: IModelJsNative.ResolveInstanceKeyArgs = {\r\n federationGuid: \"testFedGuid\",\r\n }\r\n\r\n const testArgs3: IModelJsNative.ResolveInstanceKeyArgs = {\r\n code: {\r\n spec: \"testSpec\",\r\n scope: \"testScope\",\r\n value: \"testValue\"\r\n }\r\n }\r\n\r\n const testArgs4: IModelJsNative.ResolveInstanceKeyArgs = {\r\n code: {\r\n spec: \"testSpec\",\r\n scope: \"testScope\"\r\n }\r\n }\r\n\r\n const testResults: IModelJsNative.ResolveInstanceKeyResult[] = [\r\n {\r\n id: Id64.fromJSON(\"0x123\"),\r\n classFullName: \"testName1\",\r\n },\r\n {\r\n id: Id64.fromJSON(\"0x122\"),\r\n classFullName: \"testName2\",\r\n },\r\n {\r\n id: Id64.fromJSON(\"0x133\"),\r\n classFullName: \"testName3\",\r\n },\r\n {\r\n id: Id64.fromJSON(\"0x144\"),\r\n classFullName: \"testName4\",\r\n }\r\n ];\r\n\r\n it('should store and retrieve a valid InstanceKey', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n const retrievedResult = cache.get({ partialKey: testArgs1.partialKey });\r\n expect(retrievedResult).to.not.be.undefined;\r\n expect(retrievedResult).to.equal(testResults[0]);\r\n });\r\n\r\n it('should overwrite existing valid InstanceKey', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n const testResult = testResults[0];\r\n cache.set(testArgs1, testResult);\r\n const retrievedResult = cache.get({ partialKey: testArgs1.partialKey });\r\n expect(retrievedResult).to.not.be.undefined;\r\n expect(retrievedResult).to.equal(testResult);\r\n\r\n const newTestResult = { id: testResult.id, classFullName: \"newModel\" };\r\n cache.set(testArgs1, newTestResult);\r\n const retrievedResult2 = cache.get({ partialKey: testArgs1.partialKey });\r\n expect(retrievedResult2).to.not.be.undefined;\r\n expect(retrievedResult2).to.equal(newTestResult);\r\n });\r\n\r\n it('should store and retrieve a valid InstanceKey by fedGuid', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs2, testResults[0]);\r\n const retrievedResult = cache.get({ federationGuid: testArgs2.federationGuid });\r\n expect(retrievedResult).to.not.be.undefined;\r\n expect(retrievedResult).to.equal(testResults[0]);\r\n });\r\n\r\n it('should store and retrieve a valid InstanceKey by code', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs3, testResults[0]);\r\n const retrievedResult = cache.get({ code: testArgs3.code });\r\n expect(retrievedResult).to.not.be.undefined;\r\n expect(retrievedResult).to.equal(testResults[0]);\r\n\r\n cache.set(testArgs4, testResults[1]);\r\n const retrievedResult2 = cache.get({ code: testArgs4.code });\r\n expect(retrievedResult2).to.not.be.undefined;\r\n expect(retrievedResult2).to.equal(testResults[1]);\r\n });\r\n\r\n it('should find the same InstanceKey with either code, fedGuid, or Id', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set({ ...testArgs1, ...testArgs2, ...testArgs3}, testResults[0]);\r\n\r\n const retrievedResultById = cache.get({ partialKey: testArgs1.partialKey });\r\n expect(retrievedResultById).to.not.be.undefined;\r\n expect(retrievedResultById).to.equal(testResults[0]);\r\n\r\n const retrievedResultByFedGuid = cache.get({ federationGuid: testArgs2.federationGuid });\r\n expect(retrievedResultByFedGuid).to.not.be.undefined;\r\n expect(retrievedResultByFedGuid).to.equal(testResults[0]);\r\n\r\n const retrievedResultByCode = cache.get({ code: testArgs3.code });\r\n expect(retrievedResultByCode).to.not.be.undefined;\r\n expect(retrievedResultByCode).to.equal(testResults[0]);\r\n });\r\n\r\n it('should update an existing InstanceKey with either code, fedGuid, or Id', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[0]);\r\n cache.set(testArgs3, testResults[0]);\r\n\r\n const retrievedResultById = cache.get({ partialKey: testArgs1.partialKey });\r\n expect(retrievedResultById).to.not.be.undefined;\r\n expect(retrievedResultById).to.equal(testResults[0]);\r\n\r\n const retrievedResultByFedGuid = cache.get({ federationGuid: testArgs2.federationGuid });\r\n expect(retrievedResultByFedGuid).to.not.be.undefined;\r\n expect(retrievedResultByFedGuid).to.equal(testResults[0]);\r\n\r\n const retrievedResultByCode = cache.get({ code: testArgs3.code });\r\n expect(retrievedResultByCode).to.not.be.undefined;\r\n expect(retrievedResultByCode).to.equal(testResults[0]);\r\n });\r\n\r\n it('should delete least used element', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[1]);\r\n cache.set(testArgs3, testResults[2]);\r\n cache.set(testArgs4, testResults[3]);\r\n expect(cache.size).to.equal(3);\r\n\r\n const retrievedResult = cache.get(testArgs2);\r\n expect(retrievedResult).to.not.be.undefined;\r\n expect(retrievedResult).to.equal(testResults[1]);\r\n\r\n const retrievedResult2 = cache.get(testArgs1);\r\n expect(retrievedResult2).to.be.undefined;\r\n\r\n const retrievedResult3 = cache.get(testArgs3);\r\n expect(retrievedResult3).to.not.be.undefined;\r\n expect(retrievedResult3).to.equal(testResults[2]);\r\n });\r\n\r\n it('should delete with partialKey', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[1]);\r\n cache.set(testArgs3, testResults[2]);\r\n expect(cache.size).to.equal(3);\r\n cache.delete({ partialKey: testArgs1.partialKey });\r\n expect(cache.size).to.equal(2);\r\n\r\n const retrievedResult = cache.get({ partialKey: testArgs1.partialKey });\r\n expect(retrievedResult).to.be.undefined;\r\n\r\n const retrievedResult2 = cache.get(testArgs2);\r\n expect(retrievedResult2).to.not.be.undefined;\r\n expect(retrievedResult2).to.equal(testResults[1]);\r\n });\r\n\r\n it('should delete with id', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[1]);\r\n cache.set(testArgs3, testResults[2]);\r\n expect(cache.size).to.equal(3);\r\n cache.deleteById(testArgs1.partialKey!.id);\r\n expect(cache.size).to.equal(2);\r\n\r\n const retrievedResult = cache.get({ partialKey: testArgs1.partialKey });\r\n expect(retrievedResult).to.be.undefined;\r\n\r\n const retrievedResult2 = cache.get(testArgs2);\r\n expect(retrievedResult2).to.not.be.undefined;\r\n expect(retrievedResult2).to.equal(testResults[1]);\r\n });\r\n\r\n it('should throw when deleting with a bad id', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[1]);\r\n cache.set(testArgs3, testResults[2]);\r\n expect(cache.size).to.equal(3);\r\n expect(() => cache.deleteById(\"badid\")).to.throw(Error, \"Invalid id provided\");\r\n expect(cache.size).to.equal(3);\r\n });\r\n\r\n it('should delete with federation guid', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[1]);\r\n cache.set(testArgs3, testResults[2]);\r\n expect(cache.size).to.equal(3);\r\n cache.delete({ federationGuid: testArgs2.federationGuid });\r\n expect(cache.size).to.equal(2);\r\n\r\n const retrievedResult = cache.get({ federationGuid: testArgs2.federationGuid });\r\n expect(retrievedResult).to.be.undefined;\r\n\r\n const retrievedResult2 = cache.get(testArgs3);\r\n expect(retrievedResult2).to.not.be.undefined;\r\n expect(retrievedResult2).to.equal(testResults[2]);\r\n });\r\n\r\n it('should delete with code', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[1]);\r\n cache.set(testArgs3, testResults[2]);\r\n expect(cache.size).to.equal(3);\r\n cache.delete({ code: testArgs3.code });\r\n expect(cache.size).to.equal(2);\r\n\r\n const retrievedResult = cache.get({ code: testArgs3.code });\r\n expect(retrievedResult).to.be.undefined;\r\n\r\n const retrievedResult2 = cache.get(testArgs1);\r\n expect(retrievedResult2).to.not.be.undefined;\r\n expect(retrievedResult2).to.equal(testResults[0]);\r\n });\r\n\r\n it('should delete with any applicable arg', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[0]);\r\n cache.set(testArgs3, testResults[0]);\r\n expect(cache.size).to.equal(1);\r\n cache.delete(testArgs3);\r\n expect(cache.size).to.equal(0);\r\n const retrievedResult = cache.get(testArgs1);\r\n expect(retrievedResult).to.be.undefined;\r\n\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[1]);\r\n cache.set(testArgs3, testResults[2]);\r\n expect(cache.size).to.equal(3);\r\n cache.set(testArgs4, testResults[0]);\r\n expect(cache.size).to.equal(3);\r\n\r\n cache.delete(testArgs4);\r\n expect(cache.size).to.equal(2);\r\n const retrievedResult2 = cache.get(testArgs1);\r\n expect(retrievedResult2).to.be.undefined;\r\n });\r\n\r\n it('should clear the cache', () => {\r\n const cache = new InstanceKeyLRUCache(3);\r\n cache.set(testArgs1, testResults[0]);\r\n cache.set(testArgs2, testResults[1]);\r\n cache.set(testArgs3, testResults[2]);\r\n expect(cache.size).to.equal(3);\r\n\r\n cache.clear();\r\n expect(cache.size).to.equal(0);\r\n\r\n const retrievedElem = cache.get(testArgs1);\r\n expect(retrievedElem).to.be.undefined;\r\n });\r\n});"]}
1
+ {"version":3,"file":"ElementLRUCache.test.js","sourceRoot":"","sources":["../../../src/test/ElementLRUCache.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from \"chai\";\nimport { CachedElement, ElementLRUCache, InstanceKeyLRUCache } from \"../internal/ElementLRUCache\";\nimport { IModelJsNative } from \"../core-backend\";\nimport { Id64 } from \"@itwin/core-bentley\";\n\ndescribe('ElementLruCache', () => {\n const testElem1: CachedElement = {\n loadOptions: {},\n elProps: {\n id: \"testId\",\n model: \"testModel\",\n code: {\n spec: \"testSpec\",\n scope: \"testScope\"\n },\n classFullName: \"testName\"\n },\n }\n\n const testElem2: CachedElement = {\n loadOptions: {},\n elProps: {\n id: \"testId2\",\n model: \"testModel2\",\n code: {\n spec: \"testSpec2\",\n scope: \"testScope2\",\n value: \"testValue2\"\n },\n classFullName: \"testName2\"\n },\n }\n\n const testElem3: CachedElement = {\n loadOptions: {},\n elProps: {\n id: \"testId3\",\n model: \"testModel3\",\n code: {\n spec: \"testSpec3\",\n scope: \"testScope3\"\n },\n classFullName: \"testName3\"\n },\n }\n\n const testElemFedGuid: CachedElement = {\n loadOptions: {},\n elProps: {\n id: \"testIdFed\",\n model: \"testModel\",\n code: {\n spec: \"testSpec\",\n scope: \"testScope\"\n },\n classFullName: \"testName\",\n federationGuid: \"testFedGuid\"\n },\n }\n\n const testElemCode: CachedElement = {\n loadOptions: {},\n elProps: {\n id: \"testId5\",\n model: \"testModel5\",\n code: {\n spec: \"testSpec2:testValue2\",\n scope: \"testScope2\"\n },\n classFullName: \"testName5\",\n federationGuid: \"testFedGuid5\"\n },\n }\n\n const testElemNoId: CachedElement = {\n loadOptions: {},\n elProps: {\n id: undefined,\n model: \"testModel5\",\n code: {\n spec: \"testSpec2\",\n scope: \"testScope2\"\n },\n classFullName: \"testName5\",\n federationGuid: \"testFedGuid5\"\n },\n }\n\n it('should store and retrieve a valid element', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElem1);\n const retrievedElem = cache.get({ id: testElem1.elProps.id });\n expect(retrievedElem).to.not.be.undefined;\n expect(retrievedElem).to.equal(testElem1);\n });\n\n it('should overwrite existing valid element', () => {\n const cache = new ElementLRUCache(3);\n const testElemModel = testElem1;\n cache.set(testElemModel);\n const retrievedElem = cache.get({ id: testElemModel.elProps.id });\n expect(retrievedElem).to.not.be.undefined;\n expect(retrievedElem).to.equal(testElemModel);\n\n testElemModel.elProps.model = \"newModel\";\n cache.set(testElemModel);\n const retrievedElem2 = cache.get({ id: testElemModel.elProps.id });\n expect(retrievedElem2).to.not.be.undefined;\n expect(retrievedElem2).to.equal(testElemModel);\n });\n\n it('should store and retrieve a valid element by fedGuid', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElemFedGuid);\n const retrievedElem = cache.get({ federationGuid: testElemFedGuid.elProps.federationGuid });\n expect(retrievedElem).to.not.be.undefined;\n expect(retrievedElem).to.equal(testElemFedGuid);\n });\n\n it('should store and retrieve a valid element by code', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElem1);\n const retrievedElem = cache.get({ code: testElem1.elProps.code });\n expect(retrievedElem).to.not.be.undefined;\n expect(retrievedElem).to.equal(testElem1);\n\n cache.set(testElem2);\n const retrievedElem2 = cache.get({ code: testElem2.elProps.code });\n expect(retrievedElem2).to.not.be.undefined;\n expect(retrievedElem2).to.equal(testElem2);\n });\n\n it('should fail to store an element without id', () => {\n const cache = new ElementLRUCache(3);\n expect(() => cache.set(testElemNoId)).to.throw(Error, \"Element must have an id\");\n });\n\n it('should delete least used element', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElem1);\n cache.set(testElem2);\n cache.set(testElem3);\n cache.set(testElemFedGuid);\n expect(cache.size).to.equal(3);\n\n const retrievedElem = cache.get({ id: testElem2.elProps.id });\n expect(retrievedElem).to.not.be.undefined;\n expect(retrievedElem).to.equal(testElem2);\n\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\n expect(retrievedElem2).to.be.undefined;\n\n const retrievedElem3 = cache.get({ id: testElem3.elProps.id });\n expect(retrievedElem3).to.not.be.undefined;\n expect(retrievedElem3).to.equal(testElem3);\n });\n\n it('should delete with id', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElem1);\n cache.set(testElem2);\n cache.set(testElem3);\n expect(cache.size).to.equal(3);\n cache.delete({ id: testElem2.elProps.id });\n expect(cache.size).to.equal(2);\n\n const retrievedElem = cache.get({ id: testElem2.elProps.id });\n expect(retrievedElem).to.be.undefined;\n\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\n expect(retrievedElem2).to.not.be.undefined;\n expect(retrievedElem2).to.equal(testElem1);\n });\n\n it('should delete with federation guid', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElem1);\n cache.set(testElem2);\n cache.set(testElemFedGuid);\n expect(cache.size).to.equal(3);\n cache.delete({ federationGuid: testElemFedGuid.elProps.federationGuid });\n expect(cache.size).to.equal(2);\n\n const retrievedElem = cache.get({ id: testElemFedGuid.elProps.id });\n expect(retrievedElem).to.be.undefined;\n\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\n expect(retrievedElem2).to.not.be.undefined;\n expect(retrievedElem2).to.equal(testElem1);\n });\n\n it('should delete with code', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElem1);\n cache.set(testElem2);\n cache.set(testElem3);\n expect(cache.size).to.equal(3);\n cache.delete({ code: testElem2.elProps.code });\n expect(cache.size).to.equal(2);\n\n const retrievedElem = cache.get({ id: testElem2.elProps.id });\n expect(retrievedElem).to.be.undefined;\n\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\n expect(retrievedElem2).to.not.be.undefined;\n expect(retrievedElem2).to.equal(testElem1);\n });\n\n it('should delete with model id', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElem1);\n cache.set(testElem2);\n cache.set(testElem3);\n expect(cache.size).to.equal(3);\n cache.deleteWithModel(testElem2.elProps.model);\n expect(cache.size).to.equal(2);\n\n const retrievedElem = cache.get({ id: testElem2.elProps.id });\n expect(retrievedElem).to.be.undefined;\n\n const retrievedElem2 = cache.get({ id: testElem1.elProps.id });\n expect(retrievedElem2).to.not.be.undefined;\n expect(retrievedElem2).to.equal(testElem1);\n });\n\n it('should clear the cache', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElem1);\n cache.set(testElem2);\n cache.set(testElem3);\n expect(cache.size).to.equal(3);\n\n cache.clear();\n expect(cache.size).to.equal(0);\n\n const retrievedElem = cache.get({ id: testElem1.elProps.id });\n expect(retrievedElem).to.be.undefined;\n });\n\n it('should not return wrong element when passed a manipulated code value', () => {\n const cache = new ElementLRUCache(3);\n cache.set(testElem2);\n expect(cache.size).to.equal(1);\n\n const retrievedElem = cache.get({ code: testElemCode.elProps.code });\n expect(retrievedElem).to.be.undefined;\n });\n});\n\ndescribe('InstanceKeyLRUCache', () => {\n const testArgs1: IModelJsNative.ResolveInstanceKeyArgs = {\n partialKey: {\n id: Id64.fromJSON(\"0x123\"),\n baseClassName: \"baseName\",\n },\n }\n\n const testArgs2: IModelJsNative.ResolveInstanceKeyArgs = {\n federationGuid: \"testFedGuid\",\n }\n\n const testArgs3: IModelJsNative.ResolveInstanceKeyArgs = {\n code: {\n spec: \"testSpec\",\n scope: \"testScope\",\n value: \"testValue\"\n }\n }\n\n const testArgs4: IModelJsNative.ResolveInstanceKeyArgs = {\n code: {\n spec: \"testSpec\",\n scope: \"testScope\"\n }\n }\n\n const testResults: IModelJsNative.ResolveInstanceKeyResult[] = [\n {\n id: Id64.fromJSON(\"0x123\"),\n classFullName: \"testName1\",\n },\n {\n id: Id64.fromJSON(\"0x122\"),\n classFullName: \"testName2\",\n },\n {\n id: Id64.fromJSON(\"0x133\"),\n classFullName: \"testName3\",\n },\n {\n id: Id64.fromJSON(\"0x144\"),\n classFullName: \"testName4\",\n }\n ];\n\n it('should store and retrieve a valid InstanceKey', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n const retrievedResult = cache.get({ partialKey: testArgs1.partialKey });\n expect(retrievedResult).to.not.be.undefined;\n expect(retrievedResult).to.equal(testResults[0]);\n });\n\n it('should overwrite existing valid InstanceKey', () => {\n const cache = new InstanceKeyLRUCache(3);\n const testResult = testResults[0];\n cache.set(testArgs1, testResult);\n const retrievedResult = cache.get({ partialKey: testArgs1.partialKey });\n expect(retrievedResult).to.not.be.undefined;\n expect(retrievedResult).to.equal(testResult);\n\n const newTestResult = { id: testResult.id, classFullName: \"newModel\" };\n cache.set(testArgs1, newTestResult);\n const retrievedResult2 = cache.get({ partialKey: testArgs1.partialKey });\n expect(retrievedResult2).to.not.be.undefined;\n expect(retrievedResult2).to.equal(newTestResult);\n });\n\n it('should store and retrieve a valid InstanceKey by fedGuid', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs2, testResults[0]);\n const retrievedResult = cache.get({ federationGuid: testArgs2.federationGuid });\n expect(retrievedResult).to.not.be.undefined;\n expect(retrievedResult).to.equal(testResults[0]);\n });\n\n it('should store and retrieve a valid InstanceKey by code', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs3, testResults[0]);\n const retrievedResult = cache.get({ code: testArgs3.code });\n expect(retrievedResult).to.not.be.undefined;\n expect(retrievedResult).to.equal(testResults[0]);\n\n cache.set(testArgs4, testResults[1]);\n const retrievedResult2 = cache.get({ code: testArgs4.code });\n expect(retrievedResult2).to.not.be.undefined;\n expect(retrievedResult2).to.equal(testResults[1]);\n });\n\n it('should find the same InstanceKey with either code, fedGuid, or Id', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set({ ...testArgs1, ...testArgs2, ...testArgs3}, testResults[0]);\n\n const retrievedResultById = cache.get({ partialKey: testArgs1.partialKey });\n expect(retrievedResultById).to.not.be.undefined;\n expect(retrievedResultById).to.equal(testResults[0]);\n\n const retrievedResultByFedGuid = cache.get({ federationGuid: testArgs2.federationGuid });\n expect(retrievedResultByFedGuid).to.not.be.undefined;\n expect(retrievedResultByFedGuid).to.equal(testResults[0]);\n\n const retrievedResultByCode = cache.get({ code: testArgs3.code });\n expect(retrievedResultByCode).to.not.be.undefined;\n expect(retrievedResultByCode).to.equal(testResults[0]);\n });\n\n it('should update an existing InstanceKey with either code, fedGuid, or Id', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[0]);\n cache.set(testArgs3, testResults[0]);\n\n const retrievedResultById = cache.get({ partialKey: testArgs1.partialKey });\n expect(retrievedResultById).to.not.be.undefined;\n expect(retrievedResultById).to.equal(testResults[0]);\n\n const retrievedResultByFedGuid = cache.get({ federationGuid: testArgs2.federationGuid });\n expect(retrievedResultByFedGuid).to.not.be.undefined;\n expect(retrievedResultByFedGuid).to.equal(testResults[0]);\n\n const retrievedResultByCode = cache.get({ code: testArgs3.code });\n expect(retrievedResultByCode).to.not.be.undefined;\n expect(retrievedResultByCode).to.equal(testResults[0]);\n });\n\n it('should delete least used element', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[1]);\n cache.set(testArgs3, testResults[2]);\n cache.set(testArgs4, testResults[3]);\n expect(cache.size).to.equal(3);\n\n const retrievedResult = cache.get(testArgs2);\n expect(retrievedResult).to.not.be.undefined;\n expect(retrievedResult).to.equal(testResults[1]);\n\n const retrievedResult2 = cache.get(testArgs1);\n expect(retrievedResult2).to.be.undefined;\n\n const retrievedResult3 = cache.get(testArgs3);\n expect(retrievedResult3).to.not.be.undefined;\n expect(retrievedResult3).to.equal(testResults[2]);\n });\n\n it('should delete with partialKey', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[1]);\n cache.set(testArgs3, testResults[2]);\n expect(cache.size).to.equal(3);\n cache.delete({ partialKey: testArgs1.partialKey });\n expect(cache.size).to.equal(2);\n\n const retrievedResult = cache.get({ partialKey: testArgs1.partialKey });\n expect(retrievedResult).to.be.undefined;\n\n const retrievedResult2 = cache.get(testArgs2);\n expect(retrievedResult2).to.not.be.undefined;\n expect(retrievedResult2).to.equal(testResults[1]);\n });\n\n it('should delete with id', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[1]);\n cache.set(testArgs3, testResults[2]);\n expect(cache.size).to.equal(3);\n cache.deleteById(testArgs1.partialKey!.id);\n expect(cache.size).to.equal(2);\n\n const retrievedResult = cache.get({ partialKey: testArgs1.partialKey });\n expect(retrievedResult).to.be.undefined;\n\n const retrievedResult2 = cache.get(testArgs2);\n expect(retrievedResult2).to.not.be.undefined;\n expect(retrievedResult2).to.equal(testResults[1]);\n });\n\n it('should throw when deleting with a bad id', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[1]);\n cache.set(testArgs3, testResults[2]);\n expect(cache.size).to.equal(3);\n expect(() => cache.deleteById(\"badid\")).to.throw(Error, \"Invalid id provided\");\n expect(cache.size).to.equal(3);\n });\n\n it('should delete with federation guid', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[1]);\n cache.set(testArgs3, testResults[2]);\n expect(cache.size).to.equal(3);\n cache.delete({ federationGuid: testArgs2.federationGuid });\n expect(cache.size).to.equal(2);\n\n const retrievedResult = cache.get({ federationGuid: testArgs2.federationGuid });\n expect(retrievedResult).to.be.undefined;\n\n const retrievedResult2 = cache.get(testArgs3);\n expect(retrievedResult2).to.not.be.undefined;\n expect(retrievedResult2).to.equal(testResults[2]);\n });\n\n it('should delete with code', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[1]);\n cache.set(testArgs3, testResults[2]);\n expect(cache.size).to.equal(3);\n cache.delete({ code: testArgs3.code });\n expect(cache.size).to.equal(2);\n\n const retrievedResult = cache.get({ code: testArgs3.code });\n expect(retrievedResult).to.be.undefined;\n\n const retrievedResult2 = cache.get(testArgs1);\n expect(retrievedResult2).to.not.be.undefined;\n expect(retrievedResult2).to.equal(testResults[0]);\n });\n\n it('should delete with any applicable arg', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[0]);\n cache.set(testArgs3, testResults[0]);\n expect(cache.size).to.equal(1);\n cache.delete(testArgs3);\n expect(cache.size).to.equal(0);\n const retrievedResult = cache.get(testArgs1);\n expect(retrievedResult).to.be.undefined;\n\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[1]);\n cache.set(testArgs3, testResults[2]);\n expect(cache.size).to.equal(3);\n cache.set(testArgs4, testResults[0]);\n expect(cache.size).to.equal(3);\n\n cache.delete(testArgs4);\n expect(cache.size).to.equal(2);\n const retrievedResult2 = cache.get(testArgs1);\n expect(retrievedResult2).to.be.undefined;\n });\n\n it('should clear the cache', () => {\n const cache = new InstanceKeyLRUCache(3);\n cache.set(testArgs1, testResults[0]);\n cache.set(testArgs2, testResults[1]);\n cache.set(testArgs3, testResults[2]);\n expect(cache.size).to.equal(3);\n\n cache.clear();\n expect(cache.size).to.equal(0);\n\n const retrievedElem = cache.get(testArgs1);\n expect(retrievedElem).to.be.undefined;\n });\n});"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GeometryTestUtil.js","sourceRoot":"","sources":["../../../src/test/GeometryTestUtil.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EACI,SAAS,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACO,QAAQ,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAqB,IAAI,CAAC,KAAK,CAClD,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE;IAClE,QAAQ,EAAE,MAAM;CACjB,CAAC,CACH,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,MAAgB,EAAE,MAA2B;IAC/E,gFAAgF;IAChF,MAAM,QAAQ,GAAoC;QAChD,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,4CAA4C;QAC/E,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE;KACtD,CAAC;IAEF,MAAM,SAAS,GAAyB;QACtC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,aAAa,EAAE,QAAQ;QACvB,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;KACtG,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as fs from \"fs\";\r\nimport {\r\n Point3d, Transform, YawPitchRollAngles,\r\n} from \"@itwin/core-geometry\";\r\nimport {\r\n BRepEntity, ColorDef,\r\n} from \"@itwin/core-common\";\r\nimport { IModelTestUtils } from \"./IModelTestUtils\";\r\n\r\nexport const brepData: { data: string } = JSON.parse(\r\n fs.readFileSync(IModelTestUtils.resolveAssetFile(\"brepdata1.json\"), {\r\n encoding: \"utf8\",\r\n }),\r\n);\r\n\r\nexport function createBRepDataProps(origin?: Point3d, angles?: YawPitchRollAngles): BRepEntity.DataProps {\r\n // This brep has a face symbology attribute attached to one face, make it green.\r\n const faceSymb: BRepEntity.FaceSymbologyProps[] = [\r\n { color: ColorDef.blue.toJSON() }, // base symbology should match appearance...\r\n { color: ColorDef.green.toJSON(), transparency: 0.5 },\r\n ];\r\n\r\n const brepProps: BRepEntity.DataProps = {\r\n data: brepData.data,\r\n faceSymbology: faceSymb,\r\n transform: Transform.createOriginAndMatrix(origin, angles ? angles.toMatrix3d() : undefined).toJSON(),\r\n };\r\n\r\n return brepProps;\r\n}\r\n"]}
1
+ {"version":3,"file":"GeometryTestUtil.js","sourceRoot":"","sources":["../../../src/test/GeometryTestUtil.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EACI,SAAS,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACO,QAAQ,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAqB,IAAI,CAAC,KAAK,CAClD,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE;IAClE,QAAQ,EAAE,MAAM;CACjB,CAAC,CACH,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,MAAgB,EAAE,MAA2B;IAC/E,gFAAgF;IAChF,MAAM,QAAQ,GAAoC;QAChD,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,4CAA4C;QAC/E,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE;KACtD,CAAC;IAEF,MAAM,SAAS,GAAyB;QACtC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,aAAa,EAAE,QAAQ;QACvB,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;KACtG,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport * as fs from \"fs\";\nimport {\n Point3d, Transform, YawPitchRollAngles,\n} from \"@itwin/core-geometry\";\nimport {\n BRepEntity, ColorDef,\n} from \"@itwin/core-common\";\nimport { IModelTestUtils } from \"./IModelTestUtils\";\n\nexport const brepData: { data: string } = JSON.parse(\n fs.readFileSync(IModelTestUtils.resolveAssetFile(\"brepdata1.json\"), {\n encoding: \"utf8\",\n }),\n);\n\nexport function createBRepDataProps(origin?: Point3d, angles?: YawPitchRollAngles): BRepEntity.DataProps {\n // This brep has a face symbology attribute attached to one face, make it green.\n const faceSymb: BRepEntity.FaceSymbologyProps[] = [\n { color: ColorDef.blue.toJSON() }, // base symbology should match appearance...\n { color: ColorDef.green.toJSON(), transparency: 0.5 },\n ];\n\n const brepProps: BRepEntity.DataProps = {\n data: brepData.data,\n faceSymbology: faceSymb,\n transform: Transform.createOriginAndMatrix(origin, angles ? angles.toMatrix3d() : undefined).toJSON(),\n };\n\n return brepProps;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IModelHost.test.js","sourceRoot":"","sources":["../../../src/test/IModelHost.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { assert, expect } from \"chai\";\r\nimport * as path from \"path\";\r\nimport * as sinon from \"sinon\";\r\nimport { RpcRegistry } from \"@itwin/core-common\";\r\nimport { BriefcaseManager } from \"../BriefcaseManager\";\r\nimport { SnapshotDb } from \"../IModelDb\";\r\nimport { IModelHost, IModelHostOptions, KnownLocations } from \"../IModelHost\";\r\nimport { Schemas } from \"../Schema\";\r\nimport { KnownTestLocations } from \"./KnownTestLocations\";\r\nimport { AzureServerStorage, AzureServerStorageBindings, AzureServerStorageBindingsConfig } from \"@itwin/object-storage-azure\";\r\nimport { ServerStorage } from \"@itwin/object-storage-core\";\r\nimport { TestUtils } from \"./TestUtils\";\r\nimport { IModelTestUtils } from \"./IModelTestUtils\";\r\nimport { Logger, LogLevel } from \"@itwin/core-bentley\";\r\nimport { overrideSyncNativeLogLevels } from \"../internal/NativePlatform\";\r\nimport { _getHubAccess, _hubAccess } from \"../internal/Symbols\";\r\n\r\ndescribe(\"IModelHost\", () => {\r\n const opts = { cacheDir: TestUtils.getCacheDir() };\r\n beforeEach(async () => {\r\n await TestUtils.shutdownBackend();\r\n });\r\n\r\n afterEach(async () => {\r\n sinon.restore();\r\n });\r\n\r\n after(async () => {\r\n await TestUtils.startBackend();\r\n });\r\n\r\n it(\"valid default configuration\", async () => {\r\n await IModelHost.startup(opts);\r\n\r\n // Valid registered implemented RPCs\r\n expect(RpcRegistry.instance.implementationClasses.size).to.equal(4);\r\n expect(RpcRegistry.instance.implementationClasses.get(\"IModelReadRpcInterface\")).to.exist;\r\n expect(RpcRegistry.instance.implementationClasses.get(\"IModelTileRpcInterface\")).to.exist;\r\n expect(RpcRegistry.instance.implementationClasses.get(\"SnapshotIModelRpcInterface\")).to.exist;\r\n expect(RpcRegistry.instance.implementationClasses.get(\"DevToolsRpcInterface\")).to.exist;\r\n\r\n expect(Schemas.getRegisteredSchema(\"BisCore\")).to.exist;\r\n expect(Schemas.getRegisteredSchema(\"Generic\")).to.exist;\r\n expect(Schemas.getRegisteredSchema(\"Functional\")).to.exist;\r\n });\r\n\r\n it(\"should properly cleanup beforeExit event listeners on shutdown\", async () => {\r\n const beforeCount = process.listenerCount(\"beforeExit\");\r\n for (let i = 0; i <= 15; i++) {\r\n await IModelHost.startup();\r\n await IModelHost.shutdown();\r\n\r\n }\r\n const afterCount = process.listenerCount(\"beforeExit\");\r\n expect(beforeCount).to.be.equal(afterCount);\r\n });\r\n\r\n it(\"should call logger sync function\", async () => {\r\n let nSyncCalls = 0;\r\n overrideSyncNativeLogLevels(() => ++nSyncCalls);\r\n await IModelHost.startup(opts);\r\n expect(nSyncCalls).to.equal(0);\r\n Logger.setLevel(\"test-cat\", LogLevel.Warning);\r\n expect(nSyncCalls).to.equal(1);\r\n overrideSyncNativeLogLevels(undefined);\r\n });\r\n\r\n it(\"should raise onAfterStartup events\", async () => {\r\n const eventHandler = sinon.spy();\r\n IModelHost.onAfterStartup.addOnce(eventHandler);\r\n await IModelHost.startup(opts);\r\n expect(eventHandler.calledOnce).to.be.true;\r\n });\r\n\r\n it(\"should raise onBeforeShutdown events\", async () => {\r\n await TestUtils.startBackend();\r\n const eventHandler = sinon.spy();\r\n IModelHost.onBeforeShutdown.addOnce(eventHandler);\r\n const filename = IModelTestUtils.resolveAssetFile(\"GetSetAutoHandledStructProperties.bim\");\r\n\r\n const workspaceClose = sinon.spy((IModelHost.appWorkspace as any), \"close\");\r\n const saveSettings = IModelHost.appWorkspace.settings as any;\r\n const settingClose = sinon.spy(saveSettings, \"close\");\r\n expect(workspaceClose.callCount).eq(0);\r\n expect(settingClose.callCount).eq(0);\r\n expect(saveSettings._remove).to.not.be.undefined;\r\n\r\n // shutdown should close any opened iModels. Make sure that happens\r\n const imodel1 = SnapshotDb.openFile(filename, { key: \"imodel1\" });\r\n const imodel2 = SnapshotDb.openFile(filename, { key: \"imodel2\" });\r\n const imodel3 = SnapshotDb.openFile(filename, { key: \"imodel3\" });\r\n const imodel4 = SnapshotDb.openFile(filename, { key: \"imodel4\" });\r\n assert.notEqual(imodel1, imodel2);\r\n assert.notEqual(imodel2, imodel3);\r\n expect(imodel1.isOpen).to.be.true;\r\n expect(imodel2.isOpen).to.be.true;\r\n expect(imodel3.isOpen).to.be.true;\r\n imodel4.close(); // make sure it gets removed so we don't try to close it again on shutdown\r\n await TestUtils.shutdownBackend();\r\n expect(eventHandler.calledOnce).to.be.true;\r\n assert.isFalse(imodel1.isOpen, \"shutdown should close iModel1\");\r\n assert.isFalse(imodel2.isOpen, \"shutdown should close iModel2\");\r\n assert.isFalse(imodel3.isOpen, \"shutdown should close iModel3\");\r\n expect(workspaceClose.callCount).eq(1);\r\n expect(settingClose.callCount).eq(1);\r\n expect(saveSettings._remove).to.be.undefined;\r\n });\r\n\r\n it(\"should auto-shutdown on process beforeExit event\", async () => {\r\n await TestUtils.startBackend();\r\n expect(IModelHost.isValid).to.be.true;\r\n const eventHandler = sinon.spy();\r\n IModelHost.onBeforeShutdown.addOnce(eventHandler);\r\n process.emit(\"beforeExit\", 0);\r\n await new Promise((resolve) => setImmediate(resolve));\r\n expect(eventHandler.calledOnce).to.be.true;\r\n expect(IModelHost.isValid).to.be.false;\r\n });\r\n\r\n it(\"should set the briefcase cache directory to expected locations\", async () => {\r\n const config: IModelHostOptions = {};\r\n const cacheSubDir = \"imodels\";\r\n\r\n // Test cache default location\r\n await IModelHost.shutdown();\r\n await IModelHost.startup(config);\r\n let expectedDir = path.join(IModelHost.cacheDir, cacheSubDir);\r\n assert.strictEqual(expectedDir, BriefcaseManager.cacheDir);\r\n\r\n // Test custom cache location\r\n await IModelHost.shutdown();\r\n config.cacheDir = KnownLocations.tmpdir;\r\n await IModelHost.startup(config);\r\n expectedDir = path.join(KnownLocations.tmpdir, cacheSubDir);\r\n assert.strictEqual(expectedDir, BriefcaseManager.cacheDir);\r\n });\r\n\r\n it(\"should set Azure cloud storage provider for tile cache given credentials\", async () => {\r\n const config: IModelHostOptions = {};\r\n config.tileCacheAzureCredentials = {\r\n account: \"testAccount\",\r\n accessKey: \"testAccessKey\",\r\n };\r\n\r\n const storageStub = sinon.createStubInstance(AzureServerStorage) as sinon.SinonStubbedInstance<AzureServerStorage> & AzureServerStorage; // I guess Sinon type definitions don't work well with overloads\r\n const registerStub = sinon.stub(AzureServerStorageBindings.prototype, \"register\").callsFake((container) => {\r\n container.bind(ServerStorage).toConstantValue(storageStub);\r\n });\r\n\r\n await IModelHost.startup(config);\r\n\r\n assert.isDefined(IModelHost.tileStorage);\r\n assert.equal(IModelHost.tileStorage!.storage, storageStub);\r\n assert.isTrue(registerStub.calledOnce);\r\n assert.equal((registerStub.firstCall.lastArg as AzureServerStorageBindingsConfig).accountName, config.tileCacheAzureCredentials.account);\r\n assert.equal((registerStub.firstCall.lastArg as AzureServerStorageBindingsConfig).accountKey, config.tileCacheAzureCredentials.accessKey);\r\n assert.equal((registerStub.firstCall.lastArg as AzureServerStorageBindingsConfig).baseUrl, `https://${config.tileCacheAzureCredentials.account}.blob.core.windows.net`);\r\n });\r\n\r\n it(\"should set custom cloud storage provider for tile cache\", async () => {\r\n const config: IModelHostOptions = {};\r\n config.tileCacheStorage = {} as ServerStorage;\r\n\r\n await IModelHost.startup(config);\r\n\r\n assert.isDefined(IModelHost.tileStorage);\r\n assert.equal(IModelHost.tileStorage!.storage, config.tileCacheStorage);\r\n });\r\n\r\n it(\"should throw if both tileCacheStorage and tileCacheAzureCredentials are set\", async () => {\r\n const config: IModelHostOptions = {};\r\n config.tileCacheAzureCredentials = {\r\n account: \"testAccount\",\r\n accessKey: \"testAccessKey\",\r\n };\r\n config.tileCacheStorage = {} as ServerStorage;\r\n\r\n await expect(IModelHost.startup(config)).to.be.rejectedWith(\"Cannot use both Azure and custom cloud storage providers for tile cache.\");\r\n });\r\n\r\n it(\"should use local cache if cloud storage provider for tile cache is not set\", async () => {\r\n await IModelHost.startup(opts);\r\n\r\n assert.isUndefined(IModelHost.tileStorage);\r\n });\r\n\r\n it(\"should cleanup tileStorage on shutdown\", async () => {\r\n const config: IModelHostOptions = {};\r\n config.tileCacheStorage = {} as ServerStorage;\r\n\r\n await IModelHost.startup(config);\r\n\r\n assert.equal(IModelHost.tileStorage?.storage, config.tileCacheStorage);\r\n\r\n await IModelHost.shutdown();\r\n\r\n assert.isUndefined(IModelHost.tileStorage);\r\n });\r\n\r\n it(\"should throw if hubAccess is undefined and getter is called\", async () => {\r\n await IModelHost.startup(opts);\r\n expect(IModelHost[_getHubAccess]()).undefined;\r\n expect(() => IModelHost[_hubAccess]).throws();\r\n });\r\n\r\n it(\"computeSchemaChecksum\", () => {\r\n const assetsDir = path.join(KnownTestLocations.assetsDir, \"ECSchemaOps\");\r\n const schemaXmlPath = path.join(assetsDir, \"SchemaA.ecschema.xml\");\r\n let referencePaths = [assetsDir];\r\n let sha1 = IModelHost.computeSchemaChecksum({ schemaXmlPath, referencePaths });\r\n expect(sha1).equal(\"3ac6578060902aa0b8426b61d62045fdf7fa0b2b\");\r\n\r\n expect(() => IModelHost.computeSchemaChecksum({ schemaXmlPath, referencePaths, exactMatch: true })).throws(\"Failed to read schema SchemaA.ecschema\");\r\n\r\n referencePaths = [path.join(assetsDir, \"exact-match\")];\r\n sha1 = IModelHost.computeSchemaChecksum({ schemaXmlPath, referencePaths, exactMatch: true });\r\n expect(sha1).equal(\"2a618664fbba1df7c05f27d7c0e8f58de250003b\");\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"IModelHost.test.js","sourceRoot":"","sources":["../../../src/test/IModelHost.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { assert, expect } from \"chai\";\nimport * as path from \"path\";\nimport * as sinon from \"sinon\";\nimport { RpcRegistry } from \"@itwin/core-common\";\nimport { BriefcaseManager } from \"../BriefcaseManager\";\nimport { SnapshotDb } from \"../IModelDb\";\nimport { IModelHost, IModelHostOptions, KnownLocations } from \"../IModelHost\";\nimport { Schemas } from \"../Schema\";\nimport { KnownTestLocations } from \"./KnownTestLocations\";\nimport { AzureServerStorage, AzureServerStorageBindings, AzureServerStorageBindingsConfig } from \"@itwin/object-storage-azure\";\nimport { ServerStorage } from \"@itwin/object-storage-core\";\nimport { TestUtils } from \"./TestUtils\";\nimport { IModelTestUtils } from \"./IModelTestUtils\";\nimport { Logger, LogLevel } from \"@itwin/core-bentley\";\nimport { overrideSyncNativeLogLevels } from \"../internal/NativePlatform\";\nimport { _getHubAccess, _hubAccess } from \"../internal/Symbols\";\n\ndescribe(\"IModelHost\", () => {\n const opts = { cacheDir: TestUtils.getCacheDir() };\n beforeEach(async () => {\n await TestUtils.shutdownBackend();\n });\n\n afterEach(async () => {\n sinon.restore();\n });\n\n after(async () => {\n await TestUtils.startBackend();\n });\n\n it(\"valid default configuration\", async () => {\n await IModelHost.startup(opts);\n\n // Valid registered implemented RPCs\n expect(RpcRegistry.instance.implementationClasses.size).to.equal(4);\n expect(RpcRegistry.instance.implementationClasses.get(\"IModelReadRpcInterface\")).to.exist;\n expect(RpcRegistry.instance.implementationClasses.get(\"IModelTileRpcInterface\")).to.exist;\n expect(RpcRegistry.instance.implementationClasses.get(\"SnapshotIModelRpcInterface\")).to.exist;\n expect(RpcRegistry.instance.implementationClasses.get(\"DevToolsRpcInterface\")).to.exist;\n\n expect(Schemas.getRegisteredSchema(\"BisCore\")).to.exist;\n expect(Schemas.getRegisteredSchema(\"Generic\")).to.exist;\n expect(Schemas.getRegisteredSchema(\"Functional\")).to.exist;\n });\n\n it(\"should properly cleanup beforeExit event listeners on shutdown\", async () => {\n const beforeCount = process.listenerCount(\"beforeExit\");\n for (let i = 0; i <= 15; i++) {\n await IModelHost.startup();\n await IModelHost.shutdown();\n\n }\n const afterCount = process.listenerCount(\"beforeExit\");\n expect(beforeCount).to.be.equal(afterCount);\n });\n\n it(\"should call logger sync function\", async () => {\n let nSyncCalls = 0;\n overrideSyncNativeLogLevels(() => ++nSyncCalls);\n await IModelHost.startup(opts);\n expect(nSyncCalls).to.equal(0);\n Logger.setLevel(\"test-cat\", LogLevel.Warning);\n expect(nSyncCalls).to.equal(1);\n overrideSyncNativeLogLevels(undefined);\n });\n\n it(\"should raise onAfterStartup events\", async () => {\n const eventHandler = sinon.spy();\n IModelHost.onAfterStartup.addOnce(eventHandler);\n await IModelHost.startup(opts);\n expect(eventHandler.calledOnce).to.be.true;\n });\n\n it(\"should raise onBeforeShutdown events\", async () => {\n await TestUtils.startBackend();\n const eventHandler = sinon.spy();\n IModelHost.onBeforeShutdown.addOnce(eventHandler);\n const filename = IModelTestUtils.resolveAssetFile(\"GetSetAutoHandledStructProperties.bim\");\n\n const workspaceClose = sinon.spy((IModelHost.appWorkspace as any), \"close\");\n const saveSettings = IModelHost.appWorkspace.settings as any;\n const settingClose = sinon.spy(saveSettings, \"close\");\n expect(workspaceClose.callCount).eq(0);\n expect(settingClose.callCount).eq(0);\n expect(saveSettings._remove).to.not.be.undefined;\n\n // shutdown should close any opened iModels. Make sure that happens\n const imodel1 = SnapshotDb.openFile(filename, { key: \"imodel1\" });\n const imodel2 = SnapshotDb.openFile(filename, { key: \"imodel2\" });\n const imodel3 = SnapshotDb.openFile(filename, { key: \"imodel3\" });\n const imodel4 = SnapshotDb.openFile(filename, { key: \"imodel4\" });\n assert.notEqual(imodel1, imodel2);\n assert.notEqual(imodel2, imodel3);\n expect(imodel1.isOpen).to.be.true;\n expect(imodel2.isOpen).to.be.true;\n expect(imodel3.isOpen).to.be.true;\n imodel4.close(); // make sure it gets removed so we don't try to close it again on shutdown\n await TestUtils.shutdownBackend();\n expect(eventHandler.calledOnce).to.be.true;\n assert.isFalse(imodel1.isOpen, \"shutdown should close iModel1\");\n assert.isFalse(imodel2.isOpen, \"shutdown should close iModel2\");\n assert.isFalse(imodel3.isOpen, \"shutdown should close iModel3\");\n expect(workspaceClose.callCount).eq(1);\n expect(settingClose.callCount).eq(1);\n expect(saveSettings._remove).to.be.undefined;\n });\n\n it(\"should auto-shutdown on process beforeExit event\", async () => {\n await TestUtils.startBackend();\n expect(IModelHost.isValid).to.be.true;\n const eventHandler = sinon.spy();\n IModelHost.onBeforeShutdown.addOnce(eventHandler);\n process.emit(\"beforeExit\", 0);\n await new Promise((resolve) => setImmediate(resolve));\n expect(eventHandler.calledOnce).to.be.true;\n expect(IModelHost.isValid).to.be.false;\n });\n\n it(\"should set the briefcase cache directory to expected locations\", async () => {\n const config: IModelHostOptions = {};\n const cacheSubDir = \"imodels\";\n\n // Test cache default location\n await IModelHost.shutdown();\n await IModelHost.startup(config);\n let expectedDir = path.join(IModelHost.cacheDir, cacheSubDir);\n assert.strictEqual(expectedDir, BriefcaseManager.cacheDir);\n\n // Test custom cache location\n await IModelHost.shutdown();\n config.cacheDir = KnownLocations.tmpdir;\n await IModelHost.startup(config);\n expectedDir = path.join(KnownLocations.tmpdir, cacheSubDir);\n assert.strictEqual(expectedDir, BriefcaseManager.cacheDir);\n });\n\n it(\"should set Azure cloud storage provider for tile cache given credentials\", async () => {\n const config: IModelHostOptions = {};\n config.tileCacheAzureCredentials = {\n account: \"testAccount\",\n accessKey: \"testAccessKey\",\n };\n\n const storageStub = sinon.createStubInstance(AzureServerStorage) as sinon.SinonStubbedInstance<AzureServerStorage> & AzureServerStorage; // I guess Sinon type definitions don't work well with overloads\n const registerStub = sinon.stub(AzureServerStorageBindings.prototype, \"register\").callsFake((container) => {\n container.bind(ServerStorage).toConstantValue(storageStub);\n });\n\n await IModelHost.startup(config);\n\n assert.isDefined(IModelHost.tileStorage);\n assert.equal(IModelHost.tileStorage!.storage, storageStub);\n assert.isTrue(registerStub.calledOnce);\n assert.equal((registerStub.firstCall.lastArg as AzureServerStorageBindingsConfig).accountName, config.tileCacheAzureCredentials.account);\n assert.equal((registerStub.firstCall.lastArg as AzureServerStorageBindingsConfig).accountKey, config.tileCacheAzureCredentials.accessKey);\n assert.equal((registerStub.firstCall.lastArg as AzureServerStorageBindingsConfig).baseUrl, `https://${config.tileCacheAzureCredentials.account}.blob.core.windows.net`);\n });\n\n it(\"should set custom cloud storage provider for tile cache\", async () => {\n const config: IModelHostOptions = {};\n config.tileCacheStorage = {} as ServerStorage;\n\n await IModelHost.startup(config);\n\n assert.isDefined(IModelHost.tileStorage);\n assert.equal(IModelHost.tileStorage!.storage, config.tileCacheStorage);\n });\n\n it(\"should throw if both tileCacheStorage and tileCacheAzureCredentials are set\", async () => {\n const config: IModelHostOptions = {};\n config.tileCacheAzureCredentials = {\n account: \"testAccount\",\n accessKey: \"testAccessKey\",\n };\n config.tileCacheStorage = {} as ServerStorage;\n\n await expect(IModelHost.startup(config)).to.be.rejectedWith(\"Cannot use both Azure and custom cloud storage providers for tile cache.\");\n });\n\n it(\"should use local cache if cloud storage provider for tile cache is not set\", async () => {\n await IModelHost.startup(opts);\n\n assert.isUndefined(IModelHost.tileStorage);\n });\n\n it(\"should cleanup tileStorage on shutdown\", async () => {\n const config: IModelHostOptions = {};\n config.tileCacheStorage = {} as ServerStorage;\n\n await IModelHost.startup(config);\n\n assert.equal(IModelHost.tileStorage?.storage, config.tileCacheStorage);\n\n await IModelHost.shutdown();\n\n assert.isUndefined(IModelHost.tileStorage);\n });\n\n it(\"should throw if hubAccess is undefined and getter is called\", async () => {\n await IModelHost.startup(opts);\n expect(IModelHost[_getHubAccess]()).undefined;\n expect(() => IModelHost[_hubAccess]).throws();\n });\n\n it(\"computeSchemaChecksum\", () => {\n const assetsDir = path.join(KnownTestLocations.assetsDir, \"ECSchemaOps\");\n const schemaXmlPath = path.join(assetsDir, \"SchemaA.ecschema.xml\");\n let referencePaths = [assetsDir];\n let sha1 = IModelHost.computeSchemaChecksum({ schemaXmlPath, referencePaths });\n expect(sha1).equal(\"3ac6578060902aa0b8426b61d62045fdf7fa0b2b\");\n\n expect(() => IModelHost.computeSchemaChecksum({ schemaXmlPath, referencePaths, exactMatch: true })).throws(\"Failed to read schema SchemaA.ecschema\");\n\n referencePaths = [path.join(assetsDir, \"exact-match\")];\n sha1 = IModelHost.computeSchemaChecksum({ schemaXmlPath, referencePaths, exactMatch: true });\n expect(sha1).equal(\"2a618664fbba1df7c05f27d7c0e8f58de250003b\");\n });\n});\n"]}