@itwin/core-backend 5.0.0-dev.99 → 5.0.0

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 (354) hide show
  1. package/CHANGELOG.md +109 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +1 -1
  3. package/lib/cjs/BackendHubAccess.js +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BriefcaseManager.d.ts +10 -2
  6. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  7. package/lib/cjs/BriefcaseManager.js +12 -0
  8. package/lib/cjs/BriefcaseManager.js.map +1 -1
  9. package/lib/cjs/CatalogDb.d.ts +103 -0
  10. package/lib/cjs/CatalogDb.d.ts.map +1 -0
  11. package/lib/cjs/CatalogDb.js +271 -0
  12. package/lib/cjs/CatalogDb.js.map +1 -0
  13. package/lib/cjs/Category.d.ts +41 -4
  14. package/lib/cjs/Category.d.ts.map +1 -1
  15. package/lib/cjs/Category.js +77 -4
  16. package/lib/cjs/Category.js.map +1 -1
  17. package/lib/cjs/CheckpointManager.d.ts +12 -10
  18. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  19. package/lib/cjs/CheckpointManager.js +17 -41
  20. package/lib/cjs/CheckpointManager.js.map +1 -1
  21. package/lib/cjs/ClassRegistry.d.ts +1 -1
  22. package/lib/cjs/ClassRegistry.js +1 -1
  23. package/lib/cjs/ClassRegistry.js.map +1 -1
  24. package/lib/cjs/CloudSqlite.d.ts +104 -20
  25. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  26. package/lib/cjs/CloudSqlite.js +157 -46
  27. package/lib/cjs/CloudSqlite.js.map +1 -1
  28. package/lib/cjs/CodeSpecs.d.ts +1 -1
  29. package/lib/cjs/CodeSpecs.js +1 -1
  30. package/lib/cjs/CodeSpecs.js.map +1 -1
  31. package/lib/cjs/DisplayStyle.d.ts +9 -4
  32. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  33. package/lib/cjs/DisplayStyle.js +30 -3
  34. package/lib/cjs/DisplayStyle.js.map +1 -1
  35. package/lib/cjs/ECDb.d.ts +4 -4
  36. package/lib/cjs/ECDb.d.ts.map +1 -1
  37. package/lib/cjs/ECDb.js +4 -4
  38. package/lib/cjs/ECDb.js.map +1 -1
  39. package/lib/cjs/ECSchemaXmlContext.d.ts +1 -1
  40. package/lib/cjs/ECSchemaXmlContext.js +1 -1
  41. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  42. package/lib/cjs/ECSqlStatement.d.ts +6 -6
  43. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  44. package/lib/cjs/ECSqlStatement.js +4 -4
  45. package/lib/cjs/ECSqlStatement.js.map +1 -1
  46. package/lib/cjs/Element.d.ts +217 -61
  47. package/lib/cjs/Element.d.ts.map +1 -1
  48. package/lib/cjs/Element.js +561 -60
  49. package/lib/cjs/Element.js.map +1 -1
  50. package/lib/cjs/ElementAspect.d.ts +8 -8
  51. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  52. package/lib/cjs/ElementAspect.js +8 -8
  53. package/lib/cjs/ElementAspect.js.map +1 -1
  54. package/lib/cjs/Entity.d.ts +52 -8
  55. package/lib/cjs/Entity.d.ts.map +1 -1
  56. package/lib/cjs/Entity.js +63 -5
  57. package/lib/cjs/Entity.js.map +1 -1
  58. package/lib/cjs/ExportGraphics.d.ts +54 -8
  59. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  60. package/lib/cjs/ExportGraphics.js +158 -59
  61. package/lib/cjs/ExportGraphics.js.map +1 -1
  62. package/lib/cjs/IModelDb.d.ts +42 -54
  63. package/lib/cjs/IModelDb.d.ts.map +1 -1
  64. package/lib/cjs/IModelDb.js +164 -93
  65. package/lib/cjs/IModelDb.js.map +1 -1
  66. package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
  67. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  68. package/lib/cjs/IModelElementCloneContext.js +1 -1
  69. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  70. package/lib/cjs/IModelHost.d.ts +16 -3
  71. package/lib/cjs/IModelHost.d.ts.map +1 -1
  72. package/lib/cjs/IModelHost.js +9 -3
  73. package/lib/cjs/IModelHost.js.map +1 -1
  74. package/lib/cjs/Material.d.ts +20 -1
  75. package/lib/cjs/Material.d.ts.map +1 -1
  76. package/lib/cjs/Material.js +30 -1
  77. package/lib/cjs/Material.js.map +1 -1
  78. package/lib/cjs/Model.d.ts +64 -28
  79. package/lib/cjs/Model.d.ts.map +1 -1
  80. package/lib/cjs/Model.js +115 -27
  81. package/lib/cjs/Model.js.map +1 -1
  82. package/lib/cjs/NativeHost.d.ts.map +1 -1
  83. package/lib/cjs/NativeHost.js +4 -1
  84. package/lib/cjs/NativeHost.js.map +1 -1
  85. package/lib/cjs/SQLiteDb.d.ts +1 -1
  86. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  87. package/lib/cjs/SQLiteDb.js +6 -5
  88. package/lib/cjs/SQLiteDb.js.map +1 -1
  89. package/lib/cjs/SqliteStatement.d.ts +1 -1
  90. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  91. package/lib/cjs/SqliteStatement.js +1 -1
  92. package/lib/cjs/SqliteStatement.js.map +1 -1
  93. package/lib/cjs/TextAnnotationElement.d.ts +2 -2
  94. package/lib/cjs/TextAnnotationElement.js +2 -2
  95. package/lib/cjs/TextAnnotationElement.js.map +1 -1
  96. package/lib/cjs/Texture.d.ts +1 -1
  97. package/lib/cjs/Texture.js +1 -1
  98. package/lib/cjs/Texture.js.map +1 -1
  99. package/lib/cjs/TxnManager.d.ts +4 -4
  100. package/lib/cjs/TxnManager.d.ts.map +1 -1
  101. package/lib/cjs/TxnManager.js +2 -1
  102. package/lib/cjs/TxnManager.js.map +1 -1
  103. package/lib/cjs/ViewDefinition.d.ts +114 -14
  104. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  105. package/lib/cjs/ViewDefinition.js +222 -14
  106. package/lib/cjs/ViewDefinition.js.map +1 -1
  107. package/lib/cjs/ViewStateHydrator.js +3 -3
  108. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  109. package/lib/cjs/ViewStore.d.ts.map +1 -1
  110. package/lib/cjs/ViewStore.js +27 -27
  111. package/lib/cjs/ViewStore.js.map +1 -1
  112. package/lib/cjs/core-backend.d.ts +1 -1
  113. package/lib/cjs/core-backend.d.ts.map +1 -1
  114. package/lib/cjs/core-backend.js +21 -1
  115. package/lib/cjs/core-backend.js.map +1 -1
  116. package/lib/cjs/internal/ChannelAdmin.js +4 -4
  117. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  118. package/lib/cjs/internal/ElementLRUCache.d.ts +28 -0
  119. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -0
  120. package/lib/cjs/internal/ElementLRUCache.js +120 -0
  121. package/lib/cjs/internal/ElementLRUCache.js.map +1 -0
  122. package/lib/cjs/{HubMock.d.ts → internal/HubMock.d.ts} +4 -5
  123. package/lib/cjs/internal/HubMock.d.ts.map +1 -0
  124. package/lib/cjs/{HubMock.js → internal/HubMock.js} +22 -11
  125. package/lib/cjs/internal/HubMock.js.map +1 -0
  126. package/lib/cjs/internal/Symbols.d.ts +2 -2
  127. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  128. package/lib/cjs/internal/Symbols.js +3 -3
  129. package/lib/cjs/internal/Symbols.js.map +1 -1
  130. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +2 -16
  131. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  132. package/lib/cjs/internal/workspace/WorkspaceImpl.js +35 -104
  133. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  134. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  135. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +3 -3
  136. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  137. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  138. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  139. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  140. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  141. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  142. package/lib/cjs/workspace/Workspace.d.ts +6 -13
  143. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  144. package/lib/cjs/workspace/Workspace.js.map +1 -1
  145. package/lib/cjs/workspace/WorkspaceEditor.d.ts +2 -7
  146. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  147. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  148. package/lib/esm/BackendHubAccess.d.ts +1 -1
  149. package/lib/esm/BackendHubAccess.js +1 -1
  150. package/lib/esm/BackendHubAccess.js.map +1 -1
  151. package/lib/esm/BriefcaseManager.d.ts +10 -2
  152. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  153. package/lib/esm/BriefcaseManager.js +12 -0
  154. package/lib/esm/BriefcaseManager.js.map +1 -1
  155. package/lib/esm/CatalogDb.d.ts +103 -0
  156. package/lib/esm/CatalogDb.d.ts.map +1 -0
  157. package/lib/esm/CatalogDb.js +267 -0
  158. package/lib/esm/CatalogDb.js.map +1 -0
  159. package/lib/esm/Category.d.ts +41 -4
  160. package/lib/esm/Category.d.ts.map +1 -1
  161. package/lib/esm/Category.js +77 -4
  162. package/lib/esm/Category.js.map +1 -1
  163. package/lib/esm/CheckpointManager.d.ts +12 -10
  164. package/lib/esm/CheckpointManager.d.ts.map +1 -1
  165. package/lib/esm/CheckpointManager.js +18 -42
  166. package/lib/esm/CheckpointManager.js.map +1 -1
  167. package/lib/esm/ClassRegistry.d.ts +1 -1
  168. package/lib/esm/ClassRegistry.js +1 -1
  169. package/lib/esm/ClassRegistry.js.map +1 -1
  170. package/lib/esm/CloudSqlite.d.ts +104 -20
  171. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  172. package/lib/esm/CloudSqlite.js +157 -46
  173. package/lib/esm/CloudSqlite.js.map +1 -1
  174. package/lib/esm/CodeSpecs.d.ts +1 -1
  175. package/lib/esm/CodeSpecs.js +1 -1
  176. package/lib/esm/CodeSpecs.js.map +1 -1
  177. package/lib/esm/DisplayStyle.d.ts +9 -4
  178. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  179. package/lib/esm/DisplayStyle.js +30 -3
  180. package/lib/esm/DisplayStyle.js.map +1 -1
  181. package/lib/esm/ECDb.d.ts +4 -4
  182. package/lib/esm/ECDb.d.ts.map +1 -1
  183. package/lib/esm/ECDb.js +4 -4
  184. package/lib/esm/ECDb.js.map +1 -1
  185. package/lib/esm/ECSchemaXmlContext.d.ts +1 -1
  186. package/lib/esm/ECSchemaXmlContext.js +1 -1
  187. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  188. package/lib/esm/ECSqlStatement.d.ts +6 -6
  189. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  190. package/lib/esm/ECSqlStatement.js +4 -4
  191. package/lib/esm/ECSqlStatement.js.map +1 -1
  192. package/lib/esm/Element.d.ts +217 -61
  193. package/lib/esm/Element.d.ts.map +1 -1
  194. package/lib/esm/Element.js +564 -63
  195. package/lib/esm/Element.js.map +1 -1
  196. package/lib/esm/ElementAspect.d.ts +8 -8
  197. package/lib/esm/ElementAspect.d.ts.map +1 -1
  198. package/lib/esm/ElementAspect.js +8 -8
  199. package/lib/esm/ElementAspect.js.map +1 -1
  200. package/lib/esm/Entity.d.ts +52 -8
  201. package/lib/esm/Entity.d.ts.map +1 -1
  202. package/lib/esm/Entity.js +63 -5
  203. package/lib/esm/Entity.js.map +1 -1
  204. package/lib/esm/ExportGraphics.d.ts +54 -8
  205. package/lib/esm/ExportGraphics.d.ts.map +1 -1
  206. package/lib/esm/ExportGraphics.js +156 -58
  207. package/lib/esm/ExportGraphics.js.map +1 -1
  208. package/lib/esm/IModelDb.d.ts +42 -54
  209. package/lib/esm/IModelDb.d.ts.map +1 -1
  210. package/lib/esm/IModelDb.js +167 -96
  211. package/lib/esm/IModelDb.js.map +1 -1
  212. package/lib/esm/IModelElementCloneContext.d.ts +1 -1
  213. package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
  214. package/lib/esm/IModelElementCloneContext.js +1 -1
  215. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  216. package/lib/esm/IModelHost.d.ts +16 -3
  217. package/lib/esm/IModelHost.d.ts.map +1 -1
  218. package/lib/esm/IModelHost.js +9 -3
  219. package/lib/esm/IModelHost.js.map +1 -1
  220. package/lib/esm/Material.d.ts +20 -1
  221. package/lib/esm/Material.d.ts.map +1 -1
  222. package/lib/esm/Material.js +31 -2
  223. package/lib/esm/Material.js.map +1 -1
  224. package/lib/esm/Model.d.ts +64 -28
  225. package/lib/esm/Model.d.ts.map +1 -1
  226. package/lib/esm/Model.js +116 -28
  227. package/lib/esm/Model.js.map +1 -1
  228. package/lib/esm/NativeHost.d.ts.map +1 -1
  229. package/lib/esm/NativeHost.js +4 -1
  230. package/lib/esm/NativeHost.js.map +1 -1
  231. package/lib/esm/SQLiteDb.d.ts +1 -1
  232. package/lib/esm/SQLiteDb.d.ts.map +1 -1
  233. package/lib/esm/SQLiteDb.js +6 -5
  234. package/lib/esm/SQLiteDb.js.map +1 -1
  235. package/lib/esm/SqliteStatement.d.ts +1 -1
  236. package/lib/esm/SqliteStatement.d.ts.map +1 -1
  237. package/lib/esm/SqliteStatement.js +1 -1
  238. package/lib/esm/SqliteStatement.js.map +1 -1
  239. package/lib/esm/TextAnnotationElement.d.ts +2 -2
  240. package/lib/esm/TextAnnotationElement.js +2 -2
  241. package/lib/esm/TextAnnotationElement.js.map +1 -1
  242. package/lib/esm/Texture.d.ts +1 -1
  243. package/lib/esm/Texture.js +1 -1
  244. package/lib/esm/Texture.js.map +1 -1
  245. package/lib/esm/TxnManager.d.ts +4 -4
  246. package/lib/esm/TxnManager.d.ts.map +1 -1
  247. package/lib/esm/TxnManager.js +2 -1
  248. package/lib/esm/TxnManager.js.map +1 -1
  249. package/lib/esm/ViewDefinition.d.ts +114 -14
  250. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  251. package/lib/esm/ViewDefinition.js +223 -15
  252. package/lib/esm/ViewDefinition.js.map +1 -1
  253. package/lib/esm/ViewStateHydrator.js +3 -3
  254. package/lib/esm/ViewStateHydrator.js.map +1 -1
  255. package/lib/esm/ViewStore.d.ts.map +1 -1
  256. package/lib/esm/ViewStore.js +28 -28
  257. package/lib/esm/ViewStore.js.map +1 -1
  258. package/lib/esm/core-backend.d.ts +1 -1
  259. package/lib/esm/core-backend.d.ts.map +1 -1
  260. package/lib/esm/core-backend.js +21 -1
  261. package/lib/esm/core-backend.js.map +1 -1
  262. package/lib/esm/internal/ChannelAdmin.js +5 -5
  263. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  264. package/lib/esm/internal/ElementLRUCache.d.ts +28 -0
  265. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -0
  266. package/lib/esm/internal/ElementLRUCache.js +116 -0
  267. package/lib/esm/internal/ElementLRUCache.js.map +1 -0
  268. package/lib/esm/{HubMock.d.ts → internal/HubMock.d.ts} +4 -5
  269. package/lib/esm/internal/HubMock.d.ts.map +1 -0
  270. package/lib/esm/{HubMock.js → internal/HubMock.js} +22 -11
  271. package/lib/esm/internal/HubMock.js.map +1 -0
  272. package/lib/esm/internal/Symbols.d.ts +2 -2
  273. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  274. package/lib/esm/internal/Symbols.js +2 -2
  275. package/lib/esm/internal/Symbols.js.map +1 -1
  276. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +2 -16
  277. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  278. package/lib/esm/internal/workspace/WorkspaceImpl.js +36 -100
  279. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  280. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  281. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +3 -3
  282. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  283. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  284. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  285. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  286. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  287. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  288. package/lib/esm/test/ElementLRUCache.test.d.ts +2 -0
  289. package/lib/esm/test/ElementLRUCache.test.d.ts.map +1 -0
  290. package/lib/esm/test/ElementLRUCache.test.js +212 -0
  291. package/lib/esm/test/ElementLRUCache.test.js.map +1 -0
  292. package/lib/esm/test/IModelTestUtils.d.ts +6 -2
  293. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  294. package/lib/esm/test/IModelTestUtils.js +27 -6
  295. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  296. package/lib/esm/test/TestChangeSetUtility.js +1 -1
  297. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  298. package/lib/esm/test/TestUtils.d.ts +1 -1
  299. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  300. package/lib/esm/test/TestUtils.js +1 -1
  301. package/lib/esm/test/TestUtils.js.map +1 -1
  302. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js +4 -4
  303. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  304. package/lib/esm/test/ecdb/ECSqlQuery.test.js +0 -23
  305. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  306. package/lib/esm/test/font/IModelDbFonts.test.js +1 -1
  307. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  308. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +1 -1
  309. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  310. package/lib/esm/test/hubaccess/CheckpointManager.test.js +4 -3
  311. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  312. package/lib/esm/test/imodel/IModel.test.js +51 -13
  313. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  314. package/lib/esm/test/standalone/ChangeMerge.test.js +1 -1
  315. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  316. package/lib/esm/test/standalone/ChangesetReader.test.js +1 -1
  317. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  318. package/lib/esm/test/standalone/ExportGraphics.test.js +58 -41
  319. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  320. package/lib/esm/test/standalone/GeometryStream.test.js +49 -1
  321. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  322. package/lib/esm/test/standalone/HubMock.test.js +1 -1
  323. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  324. package/lib/esm/test/standalone/IModelLimits.test.d.ts +2 -0
  325. package/lib/esm/test/standalone/IModelLimits.test.d.ts.map +1 -0
  326. package/lib/esm/test/standalone/IModelLimits.test.js +103 -0
  327. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -0
  328. package/lib/esm/test/standalone/IModelWrite.test.js +1 -1
  329. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  330. package/lib/esm/test/standalone/MergeConflict.test.js +1 -1
  331. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  332. package/lib/esm/test/standalone/ServerBasedLocks.test.js +1 -1
  333. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  334. package/lib/esm/test/standalone/SnapshotDb.test.js +25 -5
  335. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  336. package/lib/esm/test/standalone/TxnManager.test.js +1 -1
  337. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  338. package/lib/esm/test/standalone/Workspace.test.js +4 -3
  339. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  340. package/lib/esm/workspace/Workspace.d.ts +6 -13
  341. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  342. package/lib/esm/workspace/Workspace.js.map +1 -1
  343. package/lib/esm/workspace/WorkspaceEditor.d.ts +2 -7
  344. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  345. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  346. package/package.json +13 -13
  347. package/lib/cjs/HubMock.d.ts.map +0 -1
  348. package/lib/cjs/HubMock.js.map +0 -1
  349. package/lib/esm/HubMock.d.ts.map +0 -1
  350. package/lib/esm/HubMock.js.map +0 -1
  351. package/lib/esm/test/CloudSqliteMock.d.ts +0 -37
  352. package/lib/esm/test/CloudSqliteMock.d.ts.map +0 -1
  353. package/lib/esm/test/CloudSqliteMock.js +0 -117
  354. package/lib/esm/test/CloudSqliteMock.js.map +0 -1
@@ -24,6 +24,7 @@ __exportStar(require("./BackendLoggerCategory"), exports);
24
24
  __exportStar(require("./BisCoreSchema"), exports);
25
25
  __exportStar(require("./BlobContainerService"), exports);
26
26
  __exportStar(require("./BriefcaseManager"), exports);
27
+ __exportStar(require("./CatalogDb"), exports);
27
28
  __exportStar(require("./Category"), exports);
28
29
  __exportStar(require("./ChangedElementsDb"), exports);
29
30
  __exportStar(require("./ChangeSummaryManager"), exports);
@@ -53,7 +54,6 @@ __exportStar(require("./ExternalSource"), exports);
53
54
  __exportStar(require("./FontFile"), exports);
54
55
  __exportStar(require("./GeoCoordConfig"), exports);
55
56
  __exportStar(require("./GeographicCRSServices"), exports);
56
- __exportStar(require("./HubMock"), exports);
57
57
  __exportStar(require("./ImageSourceConversion"), exports);
58
58
  __exportStar(require("./IModelDb"), exports);
59
59
  __exportStar(require("./IModelDbFonts"), exports);
@@ -96,6 +96,26 @@ __exportStar(require("./workspace/WorkspaceEditor"), exports);
96
96
  __exportStar(require("./SqliteChangesetReader"), exports);
97
97
  __exportStar(require("./ChangesetECAdaptor"), exports);
98
98
  __exportStar(require("./internal/cross-package"), exports);
99
+ const globalSymbolCoreBackend = Symbol.for("itwin.core.backend.globals");
100
+ if (globalThis[globalSymbolCoreBackend]) {
101
+ // Get the stack trace from when the module was first loaded
102
+ const firstLoadStack = globalThis[globalSymbolCoreBackend].stack;
103
+ const error = new Error("Multiple @itwin/core-backend imports detected! This may happen if:\n" +
104
+ "- You have multiple versions of the package installed\n" +
105
+ "- Your bundling configuration is incorrect\n" +
106
+ "- You're importing from both ESM and CommonJS versions");
107
+ /* eslint-disable no-console */
108
+ console.error("Duplicate @itwin/core-backend import:", error);
109
+ console.error("First import occurred at:", firstLoadStack);
110
+ console.error("Current import occurred at:", error.stack);
111
+ /* eslint-enable no-console */
112
+ throw error;
113
+ }
114
+ else {
115
+ globalThis[globalSymbolCoreBackend] = {
116
+ stack: new Error().stack,
117
+ };
118
+ }
99
119
  /** @docs-package-description
100
120
  * The core-backend package always runs on the computer with a local Briefcase.
101
121
  *
@@ -1 +1 @@
1
- {"version":3,"file":"core-backend.js","sourceRoot":"","sources":["../../src/core-backend.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;;;;;;AAE/F,qDAAmC;AACnC,0DAAwC;AACxC,kDAAgC;AAChC,yDAAuC;AACvC,qDAAmC;AACnC,6CAA2B;AAC3B,sDAAoC;AACpC,yDAAuC;AACvC,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,gDAA8B;AAC9B,gDAA8B;AAC9B,8CAA4B;AAC5B,6CAA2B;AAC3B,iDAA+B;AAC/B,+DAA6C;AAC7C,6DAA2C;AAC3C,4DAA0C;AAC1C,0DAAwC;AACxC,yCAAuB;AACvB,uDAAqC;AACrC,mDAAiC;AACjC,4CAA0B;AAC1B,kDAAgC;AAChC,oDAAkC;AAClC,sDAAoC;AACpC,2CAAyB;AACzB,qDAAmC;AACnC,mDAAiC;AACjC,mDAAiC;AACjC,6CAA2B;AAC3B,mDAAiC;AACjC,0DAAwC;AACxC,4CAA0B;AAC1B,0DAAwC;AACxC,6CAA2B;AAC3B,kDAAgC;AAChC,8DAA4C;AAC5C,+CAA6B;AAC7B,+CAA6B;AAC7B,+CAA6B;AAC7B,4CAA0B;AAC1B,8CAA4B;AAC5B,qDAAmC;AACnC,6CAA2B;AAC3B,gDAA8B;AAC9B,6CAA2B;AAC3B,0CAAwB;AACxB,qDAAmC;AACnC,+CAA6B;AAC7B,2DAAyC;AACzC,kDAAgC;AAChC,iDAA+B;AAC/B,gDAA8B;AAC9B,2CAAyB;AACzB,gDAA8B;AAC9B,+CAA6B;AAC7B,6CAA2B;AAC3B,oDAAkC;AAClC,0DAAwC;AACxC,+DAKgC;AAJ9B,8HAAA,sBAAsB,OAAA;AACtB,oIAAA,4BAA4B,OAAA;AAI9B,2DAAyC;AACzC,4CAA0B;AAC1B,gDAA8B;AAC9B,+CAA6B;AAC7B,mDAAiC;AACjC,8CAA4B;AAC5B,uDAAqC;AACrC,8DAA4C;AAC5C,wDAAsC;AACtC,8DAA4C;AAC5C,0DAAwC;AACxC,uDAAqC;AAErC,2DAAyC;AAEzC;;;;GAIG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;IAGI;AAEJ;;;GAGG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;GAEG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;GAGG","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\nexport * from \"./BackendHubAccess\";\nexport * from \"./BackendLoggerCategory\";\nexport * from \"./BisCoreSchema\";\nexport * from \"./BlobContainerService\";\nexport * from \"./BriefcaseManager\";\nexport * from \"./Category\";\nexport * from \"./ChangedElementsDb\";\nexport * from \"./ChangeSummaryManager\";\nexport * from \"./ChannelControl\";\nexport * from \"./CheckpointManager\";\nexport * from \"./ClassRegistry\";\nexport * from \"./CloudSqlite\";\nexport * from \"./CodeService\";\nexport * from \"./CodeSpecs\";\nexport * from \"./DevTools\";\nexport * from \"./DisplayStyle\";\nexport * from \"./domains/FunctionalElements\";\nexport * from \"./domains/FunctionalSchema\";\nexport * from \"./domains/GenericElements\";\nexport * from \"./domains/GenericSchema\";\nexport * from \"./ECDb\";\nexport * from \"./ECSchemaXmlContext\";\nexport * from \"./ECSqlStatement\";\nexport * from \"./Element\";\nexport * from \"./ElementAspect\";\nexport * from \"./ElementGraphics\";\nexport * from \"./ElementTreeWalker\";\nexport * from \"./Entity\";\nexport * from \"./EntityReferences\";\nexport * from \"./ExportGraphics\";\nexport * from \"./ExternalSource\";\nexport * from \"./FontFile\";\nexport * from \"./GeoCoordConfig\";\nexport * from \"./GeographicCRSServices\";\nexport * from \"./HubMock\";\nexport * from \"./ImageSourceConversion\";\nexport * from \"./IModelDb\";\nexport * from \"./IModelDbFonts\";\nexport * from \"./IModelElementCloneContext\";\nexport * from \"./IModelHost\";\nexport * from \"./IModelJsFs\";\nexport * from \"./SchemaSync\";\nexport * from \"./IpcHost\";\nexport * from \"./LineStyle\";\nexport * from \"./LocalhostIpcHost\";\nexport * from \"./LocalHub\";\nexport * from \"./LockControl\";\nexport * from \"./Material\";\nexport * from \"./Model\";\nexport * from \"./NativeAppStorage\";\nexport * from \"./NativeHost\";\nexport * from \"./NavigationRelationship\";\nexport * from \"./PropertyStore\";\nexport * from \"./Relationship\";\nexport * from \"./rpc/tracing\";\nexport * from \"./Schema\";\nexport * from \"./SchemaUtils\";\nexport * from \"./SheetIndex\";\nexport * from \"./SQLiteDb\";\nexport * from \"./SqliteStatement\";\nexport * from \"./TextAnnotationElement\";\nexport {\n computeGraphemeOffsets,\n computeLayoutTextBlockResult,\n ComputeGraphemeOffsetsArgs,\n LayoutTextBlockArgs,\n} from \"./TextAnnotationLayout\";\nexport * from \"./TextAnnotationGeometry\";\nexport * from \"./Texture\";\nexport * from \"./TileStorage\";\nexport * from \"./TxnManager\";\nexport * from \"./ViewDefinition\";\nexport * from \"./ViewStore\";\nexport * from \"./workspace/Settings\";\nexport * from \"./workspace/SettingsSchemas\";\nexport * from \"./workspace/Workspace\";\nexport * from \"./workspace/WorkspaceEditor\";\nexport * from \"./SqliteChangesetReader\";\nexport * from \"./ChangesetECAdaptor\";\n\nexport * from \"./internal/cross-package\";\n\n/** @docs-package-description\n * The core-backend package always runs on the computer with a local Briefcase.\n *\n * It contains classes that [backend code]($docs/learning/backend/index.md) can use to work with directly with iModels.\n */\n\n/**\n * @docs-group-description BlobContainers\n * Classes for working with cloud-based blob containers.\n */\n\n/**\n * @docs-group-description Codes\n * Classes for working with [Codes]($docs/BIS/guide/fundamentals/codes.md).\n * See [the learning articles]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description ECDb\n * Classes for working with ECDb.\n */\n\n/**\n * @docs-group-description ECSQL\n * Classes for working with [ECSQL]($docs/learning/ECSQL.md)\n */\n\n/**\n * @docs-group-description ElementAspects\n * Subclasses of [ElementAspects]($docs/bis/guide/fundamentals/elementaspect-fundamentals.md).\n * See [the learning articles]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description ElementGeometry\n * Classes for defining the symbology and geometry of geometric elements\n */\n\n/**\n * @docs-group-description Elements\n * Subclasses of [Elements]($docs/BIS/guide/fundamentals/element-fundamentals.md).\n * See [the learning articles]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description ExportGraphics\n * APIs for producing low-level graphics primitives from element geometry.\n */\n\n/**\n * @docs-group-description HubAccess\n * APIs for working with IModelHub\n */\n\n/**\n * @docs-group-description Images\n * APIs for encoding and decoding images\n */\n\n/**\n * @docs-group-description IModelHost\n * Classes for configuring and administering the backend [host]($docs/learning/backend/IModelHost.md).\n * See [the learning article]($docs/learning/backend/IModelHost.md).\n */\n\n/**\n * @docs-group-description iModels\n * Classes for working with [iModels]($docs/learning/iModels.md).\n * See [the learning article]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description Logging\n * Logger categories used by this package.\n */\n\n/**\n * @docs-group-description Models\n * Subclasses of [Models]($docs/BIS/guide/fundamentals/model-fundamentals.md).\n * See [the learning articles]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description NativeApp\n * Classes for working with Mobile/Desktop Application.\n */\n\n/**\n * @docs-group-description Portability\n */\n\n/**\n * @docs-group-description Relationships\n * Classes that describe the [relationships]($docs/bis/guide/fundamentals/relationship-fundamentals.md) between elements.\n */\n\n/**\n * @docs-group-description RpcInterface\n * Classes for working with [RpcInterfaces]($docs/learning/RpcInterface.md).\n */\n\n/**\n * @docs-group-description Schema\n * Classes for working with [ECSchemas]($docs/learning/backend/SchemasAndElementsInTypeScript.md)\n */\n\n/**\n * @docs-group-description SQLite\n * Classes for working directly with SQLite\n */\n\n/**\n * @docs-group-description SQLiteDb\n * Classes for working with SQLiteDb.\n */\n\n/**\n * @docs-group-description TileStorage\n * Class for working with cloud storage using iTwin/object-storage cloud providers\n */\n\n/**\n * @docs-group-description ViewDefinitions\n * Classes for working with Elements that define what appears in [Views]($docs/learning/frontend/views.md).\n * See [the learning articles]($docs/learning/backend/createelements/#orthographicviewdefinition).\n */\n\n/**\n * @docs-group-description Workspace\n * APIs for loading and using Settings and Workspace resources\n */\n"]}
1
+ {"version":3,"file":"core-backend.js","sourceRoot":"","sources":["../../src/core-backend.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;;;;;;AAE/F,qDAAmC;AACnC,0DAAwC;AACxC,kDAAgC;AAChC,yDAAuC;AACvC,qDAAmC;AACnC,8CAA4B;AAC5B,6CAA2B;AAC3B,sDAAoC;AACpC,yDAAuC;AACvC,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,gDAA8B;AAC9B,gDAA8B;AAC9B,8CAA4B;AAC5B,6CAA2B;AAC3B,iDAA+B;AAC/B,+DAA6C;AAC7C,6DAA2C;AAC3C,4DAA0C;AAC1C,0DAAwC;AACxC,yCAAuB;AACvB,uDAAqC;AACrC,mDAAiC;AACjC,4CAA0B;AAC1B,kDAAgC;AAChC,oDAAkC;AAClC,sDAAoC;AACpC,2CAAyB;AACzB,qDAAmC;AACnC,mDAAiC;AACjC,mDAAiC;AACjC,6CAA2B;AAC3B,mDAAiC;AACjC,0DAAwC;AACxC,0DAAwC;AACxC,6CAA2B;AAC3B,kDAAgC;AAChC,8DAA4C;AAC5C,+CAA6B;AAC7B,+CAA6B;AAC7B,+CAA6B;AAC7B,4CAA0B;AAC1B,8CAA4B;AAC5B,qDAAmC;AACnC,6CAA2B;AAC3B,gDAA8B;AAC9B,6CAA2B;AAC3B,0CAAwB;AACxB,qDAAmC;AACnC,+CAA6B;AAC7B,2DAAyC;AACzC,kDAAgC;AAChC,iDAA+B;AAC/B,gDAA8B;AAC9B,2CAAyB;AACzB,gDAA8B;AAC9B,+CAA6B;AAC7B,6CAA2B;AAC3B,oDAAkC;AAClC,0DAAwC;AACxC,+DAKgC;AAJ9B,8HAAA,sBAAsB,OAAA;AACtB,oIAAA,4BAA4B,OAAA;AAI9B,2DAAyC;AACzC,4CAA0B;AAC1B,gDAA8B;AAC9B,+CAA6B;AAC7B,mDAAiC;AACjC,8CAA4B;AAC5B,uDAAqC;AACrC,8DAA4C;AAC5C,wDAAsC;AACtC,8DAA4C;AAC5C,0DAAwC;AACxC,uDAAqC;AAErC,2DAAyC;AAEzC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AACzE,IAAK,UAAkB,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACjD,4DAA4D;IAC5D,MAAM,cAAc,GAAI,UAAkB,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC;IAE1E,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,sEAAsE;QACpE,yDAAyD;QACzD,8CAA8C;QAC9C,wDAAwD,CAC3D,CAAC;IAEF,+BAA+B;IAC/B,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,cAAc,CAAC,CAAC;IAC3D,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1D,8BAA8B;IAE9B,MAAM,KAAK,CAAC;AACd,CAAC;KAAM,CAAC;IACL,UAAkB,CAAC,uBAAuB,CAAC,GAAG;QAC7C,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC,KAAK;KACzB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;IAGI;AAEJ;;;GAGG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;GAGG;AAEH;;GAEG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;GAIG;AAEH;;;GAGG","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\nexport * from \"./BackendHubAccess\";\nexport * from \"./BackendLoggerCategory\";\nexport * from \"./BisCoreSchema\";\nexport * from \"./BlobContainerService\";\nexport * from \"./BriefcaseManager\";\nexport * from \"./CatalogDb\";\nexport * from \"./Category\";\nexport * from \"./ChangedElementsDb\";\nexport * from \"./ChangeSummaryManager\";\nexport * from \"./ChannelControl\";\nexport * from \"./CheckpointManager\";\nexport * from \"./ClassRegistry\";\nexport * from \"./CloudSqlite\";\nexport * from \"./CodeService\";\nexport * from \"./CodeSpecs\";\nexport * from \"./DevTools\";\nexport * from \"./DisplayStyle\";\nexport * from \"./domains/FunctionalElements\";\nexport * from \"./domains/FunctionalSchema\";\nexport * from \"./domains/GenericElements\";\nexport * from \"./domains/GenericSchema\";\nexport * from \"./ECDb\";\nexport * from \"./ECSchemaXmlContext\";\nexport * from \"./ECSqlStatement\";\nexport * from \"./Element\";\nexport * from \"./ElementAspect\";\nexport * from \"./ElementGraphics\";\nexport * from \"./ElementTreeWalker\";\nexport * from \"./Entity\";\nexport * from \"./EntityReferences\";\nexport * from \"./ExportGraphics\";\nexport * from \"./ExternalSource\";\nexport * from \"./FontFile\";\nexport * from \"./GeoCoordConfig\";\nexport * from \"./GeographicCRSServices\";\nexport * from \"./ImageSourceConversion\";\nexport * from \"./IModelDb\";\nexport * from \"./IModelDbFonts\";\nexport * from \"./IModelElementCloneContext\";\nexport * from \"./IModelHost\";\nexport * from \"./IModelJsFs\";\nexport * from \"./SchemaSync\";\nexport * from \"./IpcHost\";\nexport * from \"./LineStyle\";\nexport * from \"./LocalhostIpcHost\";\nexport * from \"./LocalHub\";\nexport * from \"./LockControl\";\nexport * from \"./Material\";\nexport * from \"./Model\";\nexport * from \"./NativeAppStorage\";\nexport * from \"./NativeHost\";\nexport * from \"./NavigationRelationship\";\nexport * from \"./PropertyStore\";\nexport * from \"./Relationship\";\nexport * from \"./rpc/tracing\";\nexport * from \"./Schema\";\nexport * from \"./SchemaUtils\";\nexport * from \"./SheetIndex\";\nexport * from \"./SQLiteDb\";\nexport * from \"./SqliteStatement\";\nexport * from \"./TextAnnotationElement\";\nexport {\n computeGraphemeOffsets,\n computeLayoutTextBlockResult,\n ComputeGraphemeOffsetsArgs,\n LayoutTextBlockArgs,\n} from \"./TextAnnotationLayout\";\nexport * from \"./TextAnnotationGeometry\";\nexport * from \"./Texture\";\nexport * from \"./TileStorage\";\nexport * from \"./TxnManager\";\nexport * from \"./ViewDefinition\";\nexport * from \"./ViewStore\";\nexport * from \"./workspace/Settings\";\nexport * from \"./workspace/SettingsSchemas\";\nexport * from \"./workspace/Workspace\";\nexport * from \"./workspace/WorkspaceEditor\";\nexport * from \"./SqliteChangesetReader\";\nexport * from \"./ChangesetECAdaptor\";\n\nexport * from \"./internal/cross-package\";\n\nconst globalSymbolCoreBackend = Symbol.for(\"itwin.core.backend.globals\");\nif ((globalThis as any)[globalSymbolCoreBackend]) {\n // Get the stack trace from when the module was first loaded\n const firstLoadStack = (globalThis as any)[globalSymbolCoreBackend].stack;\n\n const error = new Error(\n \"Multiple @itwin/core-backend imports detected! This may happen if:\\n\" +\n \"- You have multiple versions of the package installed\\n\" +\n \"- Your bundling configuration is incorrect\\n\" +\n \"- You're importing from both ESM and CommonJS versions\"\n );\n\n /* eslint-disable no-console */\n console.error(\"Duplicate @itwin/core-backend import:\", error);\n console.error(\"First import occurred at:\", firstLoadStack);\n console.error(\"Current import occurred at:\", error.stack);\n /* eslint-enable no-console */\n\n throw error;\n} else {\n (globalThis as any)[globalSymbolCoreBackend] = {\n stack: new Error().stack,\n };\n}\n\n/** @docs-package-description\n * The core-backend package always runs on the computer with a local Briefcase.\n *\n * It contains classes that [backend code]($docs/learning/backend/index.md) can use to work with directly with iModels.\n */\n\n/**\n * @docs-group-description BlobContainers\n * Classes for working with cloud-based blob containers.\n */\n\n/**\n * @docs-group-description Codes\n * Classes for working with [Codes]($docs/BIS/guide/fundamentals/codes.md).\n * See [the learning articles]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description ECDb\n * Classes for working with ECDb.\n */\n\n/**\n * @docs-group-description ECSQL\n * Classes for working with [ECSQL]($docs/learning/ECSQL.md)\n */\n\n/**\n * @docs-group-description ElementAspects\n * Subclasses of [ElementAspects]($docs/bis/guide/fundamentals/elementaspect-fundamentals.md).\n * See [the learning articles]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description ElementGeometry\n * Classes for defining the symbology and geometry of geometric elements\n */\n\n/**\n * @docs-group-description Elements\n * Subclasses of [Elements]($docs/BIS/guide/fundamentals/element-fundamentals.md).\n * See [the learning articles]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description ExportGraphics\n * APIs for producing low-level graphics primitives from element geometry.\n */\n\n/**\n * @docs-group-description HubAccess\n * APIs for working with IModelHub\n */\n\n/**\n * @docs-group-description Images\n * APIs for encoding and decoding images\n */\n\n/**\n * @docs-group-description IModelHost\n * Classes for configuring and administering the backend [host]($docs/learning/backend/IModelHost.md).\n * See [the learning article]($docs/learning/backend/IModelHost.md).\n */\n\n/**\n * @docs-group-description iModels\n * Classes for working with [iModels]($docs/learning/iModels.md).\n * See [the learning article]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description Logging\n * Logger categories used by this package.\n */\n\n/**\n * @docs-group-description Models\n * Subclasses of [Models]($docs/BIS/guide/fundamentals/model-fundamentals.md).\n * See [the learning articles]($docs/learning/backend/index.md).\n */\n\n/**\n * @docs-group-description NativeApp\n * Classes for working with Mobile/Desktop Application.\n */\n\n/**\n * @docs-group-description Portability\n */\n\n/**\n * @docs-group-description Relationships\n * Classes that describe the [relationships]($docs/bis/guide/fundamentals/relationship-fundamentals.md) between elements.\n */\n\n/**\n * @docs-group-description RpcInterface\n * Classes for working with [RpcInterfaces]($docs/learning/RpcInterface.md).\n */\n\n/**\n * @docs-group-description Schema\n * Classes for working with [ECSchemas]($docs/learning/backend/SchemasAndElementsInTypeScript.md)\n */\n\n/**\n * @docs-group-description SQLite\n * Classes for working directly with SQLite\n */\n\n/**\n * @docs-group-description SQLiteDb\n * Classes for working with SQLiteDb.\n */\n\n/**\n * @docs-group-description TileStorage\n * Class for working with cloud storage using iTwin/object-storage cloud providers\n */\n\n/**\n * @docs-group-description ViewDefinitions\n * Classes for working with Elements that define what appears in [Views]($docs/learning/frontend/views.md).\n * See [the learning articles]($docs/learning/backend/createelements/#orthographicviewdefinition).\n */\n\n/**\n * @docs-group-description Workspace\n * APIs for loading and using Settings and Workspace resources\n */\n"]}
@@ -66,7 +66,7 @@ class ChannelAdmin {
66
66
  return;
67
67
  const deniedChannel = this._deniedModels.get(modelId);
68
68
  if (undefined !== deniedChannel)
69
- core_common_1.ChannelError.throwError("not-allowed", `Channel ${deniedChannel} is not allowed`, deniedChannel);
69
+ core_common_1.ChannelControlError.throwError("not-allowed", `Channel ${deniedChannel} is not allowed`, deniedChannel);
70
70
  const channel = this.getChannelKey(modelId);
71
71
  if (this._allowedChannels.has(channel)) {
72
72
  this._allowedModels.add(modelId);
@@ -78,9 +78,9 @@ class ChannelAdmin {
78
78
  makeChannelRoot(args) {
79
79
  const channelKey = this.getChannelKey(args.elementId);
80
80
  if (ChannelControl_1.ChannelControl.sharedChannelName !== channelKey)
81
- core_common_1.ChannelError.throwError("may-not-nest", `Channel ${channelKey} may not nest`, channelKey);
81
+ core_common_1.ChannelControlError.throwError("may-not-nest", `Channel ${channelKey} may not nest`, channelKey);
82
82
  if (this.queryChannelRoot(args.channelKey) !== undefined)
83
- core_common_1.ChannelError.throwError("root-exists", `Channel ${args.channelKey} root already exist`, channelKey);
83
+ core_common_1.ChannelControlError.throwError("root-exists", `Channel ${args.channelKey} root already exist`, channelKey);
84
84
  const props = { classFullName: ChannelAdmin.channelClassName, element: { id: args.elementId }, owner: args.channelKey };
85
85
  this._iModel.elements.insertAspect(props);
86
86
  }
@@ -89,7 +89,7 @@ class ChannelAdmin {
89
89
  // makeChannelRoot will check that again, but at that point the new Subject is already inserted.
90
90
  // Prefer to check twice instead of deleting the Subject in the latter option.
91
91
  if (this.queryChannelRoot(args.channelKey) !== undefined)
92
- core_common_1.ChannelError.throwError("root-exists", `Channel ${args.channelKey} root already exist`, args.channelKey);
92
+ core_common_1.ChannelControlError.throwError("root-exists", `Channel ${args.channelKey} root already exist`, args.channelKey);
93
93
  const elementId = Element_1.Subject.insert(this._iModel, args.parentSubjectId ?? core_common_1.IModel.rootSubjectId, args.subjectName, args.description);
94
94
  this.makeChannelRoot({ elementId, channelKey: args.channelKey });
95
95
  return elementId;
@@ -1 +1 @@
1
- {"version":3,"file":"ChannelAdmin.js","sourceRoot":"","sources":["../../../src/internal/ChannelAdmin.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/** @packageDocumentation\n * @module Elements\n */\n\nimport { DbResult, Id64String, IModelStatus } from \"@itwin/core-bentley\";\nimport { ChannelError, ChannelRootAspectProps, IModel, IModelError } from \"@itwin/core-common\";\nimport { ChannelControl, ChannelKey } from \"../ChannelControl\";\nimport { Subject } from \"../Element\";\nimport { IModelDb } from \"../IModelDb\";\nimport { IModelHost } from \"../IModelHost\";\nimport { _implementationProhibited, _nativeDb, _verifyChannel } from \"./Symbols\";\n\nclass ChannelAdmin implements ChannelControl {\n public static readonly channelClassName = \"bis:ChannelRootAspect\";\n\n public readonly [_implementationProhibited] = undefined;\n private _allowedChannels = new Set<ChannelKey>();\n private _allowedModels = new Set<Id64String>();\n private _deniedModels = new Map<Id64String, ChannelKey>();\n\n public constructor(private _iModel: IModelDb) {\n // for backwards compatibility, allow the shared channel unless explicitly turned off in IModelHostOptions.\n if (IModelHost.configuration?.allowSharedChannel !== false)\n this._allowedChannels.add(ChannelControl.sharedChannelName);\n }\n\n public addAllowedChannel(channelKey: ChannelKey) {\n this._allowedChannels.add(channelKey);\n this._deniedModels.clear();\n }\n\n public removeAllowedChannel(channelKey: ChannelKey) {\n this._allowedChannels.delete(channelKey);\n this._allowedModels.clear();\n }\n\n public getChannelKey(elementId: Id64String): ChannelKey {\n if (elementId === IModel.rootSubjectId)\n return ChannelControl.sharedChannelName;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const channel = this._iModel.withPreparedStatement(`SELECT Owner FROM ${ChannelAdmin.channelClassName} WHERE Element.Id=?`, (stmt) => {\n stmt.bindId(1, elementId);\n return DbResult.BE_SQLITE_ROW === stmt.step() ? stmt.getValue(0).getString() : undefined;\n });\n\n if (channel !== undefined)\n return channel;\n } catch {\n // Exception happens if the iModel is too old: ChannelRootAspect class not present in the BisCore schema (older than v1.0.10).\n // In that case all data in such iModel is assumed to be in the shared channel.\n return ChannelControl.sharedChannelName;\n }\n\n const parentId = this._iModel.withPreparedSqliteStatement(\"SELECT ParentId,ModelId FROM bis_Element WHERE id=?\", (stmt) => {\n stmt.bindId(1, elementId);\n if (DbResult.BE_SQLITE_ROW !== stmt.step())\n throw new IModelError(IModelStatus.NotFound, \"Element does not exist\");\n return stmt.getValueId(0) ?? stmt.getValueId(1); // if parent is undefined, use modelId\n });\n\n return this.getChannelKey(parentId);\n }\n\n public [_verifyChannel](modelId: Id64String): void {\n // Note: indirect changes are permitted to change any channel\n if (this._allowedModels.has(modelId) || this._iModel[_nativeDb].isIndirectChanges())\n return;\n\n const deniedChannel = this._deniedModels.get(modelId);\n if (undefined !== deniedChannel)\n ChannelError.throwError(\"not-allowed\", `Channel ${deniedChannel} is not allowed`, deniedChannel);\n\n const channel = this.getChannelKey(modelId);\n if (this._allowedChannels.has(channel)) {\n this._allowedModels.add(modelId);\n return;\n }\n\n this._deniedModels.set(modelId, channel);\n return this[_verifyChannel](modelId);\n }\n\n public makeChannelRoot(args: { elementId: Id64String, channelKey: ChannelKey }) {\n const channelKey = this.getChannelKey(args.elementId);\n if (ChannelControl.sharedChannelName !== channelKey)\n ChannelError.throwError(\"may-not-nest\", `Channel ${channelKey} may not nest`, channelKey);\n\n if (this.queryChannelRoot(args.channelKey) !== undefined)\n ChannelError.throwError(\"root-exists\", `Channel ${args.channelKey} root already exist`, channelKey);\n\n const props: ChannelRootAspectProps = { classFullName: ChannelAdmin.channelClassName, element: { id: args.elementId }, owner: args.channelKey };\n this._iModel.elements.insertAspect(props);\n }\n\n public insertChannelSubject(args: { subjectName: string, channelKey: ChannelKey, parentSubjectId?: Id64String, description?: string }): Id64String {\n // Check if channelKey already exists before inserting Subject.\n // makeChannelRoot will check that again, but at that point the new Subject is already inserted.\n // Prefer to check twice instead of deleting the Subject in the latter option.\n if (this.queryChannelRoot(args.channelKey) !== undefined)\n ChannelError.throwError(\"root-exists\", `Channel ${args.channelKey} root already exist`, args.channelKey);\n\n const elementId = Subject.insert(this._iModel, args.parentSubjectId ?? IModel.rootSubjectId, args.subjectName, args.description);\n this.makeChannelRoot({ elementId, channelKey: args.channelKey });\n return elementId;\n }\n\n public queryChannelRoot(channelKey: ChannelKey): Id64String | undefined {\n if (channelKey === ChannelControl.sharedChannelName)\n // RootSubject acts as the ChannelRoot element of the shared channel\n return IModel.rootSubjectId;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const channelRoot = this._iModel.withPreparedStatement(`SELECT Element.Id FROM ${ChannelAdmin.channelClassName} WHERE Owner=?`, (stmt) => {\n stmt.bindString(1, channelKey);\n return DbResult.BE_SQLITE_ROW === stmt.step() ? stmt.getValue(0).getId() : undefined;\n });\n\n return channelRoot;\n } catch {\n // Exception happens if the iModel is too old: ChannelRootAspect class not present in the BisCore schema (older than v1.0.10).\n // In that case all data in such iModel is assumed to be in the shared channel.\n return undefined;\n }\n\n }\n}\n\nexport function createChannelControl(iModel: IModelDb): ChannelAdmin {\n return new ChannelAdmin(iModel);\n}\n"]}
1
+ {"version":3,"file":"ChannelAdmin.js","sourceRoot":"","sources":["../../../src/internal/ChannelAdmin.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/** @packageDocumentation\n * @module Elements\n */\n\nimport { DbResult, Id64String, IModelStatus } from \"@itwin/core-bentley\";\nimport { ChannelControlError, ChannelRootAspectProps, IModel, IModelError } from \"@itwin/core-common\";\nimport { ChannelControl, ChannelKey } from \"../ChannelControl\";\nimport { Subject } from \"../Element\";\nimport { IModelDb } from \"../IModelDb\";\nimport { IModelHost } from \"../IModelHost\";\nimport { _implementationProhibited, _nativeDb, _verifyChannel } from \"./Symbols\";\n\nclass ChannelAdmin implements ChannelControl {\n public static readonly channelClassName = \"bis:ChannelRootAspect\";\n\n public readonly [_implementationProhibited] = undefined;\n private _allowedChannels = new Set<ChannelKey>();\n private _allowedModels = new Set<Id64String>();\n private _deniedModels = new Map<Id64String, ChannelKey>();\n\n public constructor(private _iModel: IModelDb) {\n // for backwards compatibility, allow the shared channel unless explicitly turned off in IModelHostOptions.\n if (IModelHost.configuration?.allowSharedChannel !== false)\n this._allowedChannels.add(ChannelControl.sharedChannelName);\n }\n\n public addAllowedChannel(channelKey: ChannelKey) {\n this._allowedChannels.add(channelKey);\n this._deniedModels.clear();\n }\n\n public removeAllowedChannel(channelKey: ChannelKey) {\n this._allowedChannels.delete(channelKey);\n this._allowedModels.clear();\n }\n\n public getChannelKey(elementId: Id64String): ChannelKey {\n if (elementId === IModel.rootSubjectId)\n return ChannelControl.sharedChannelName;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const channel = this._iModel.withPreparedStatement(`SELECT Owner FROM ${ChannelAdmin.channelClassName} WHERE Element.Id=?`, (stmt) => {\n stmt.bindId(1, elementId);\n return DbResult.BE_SQLITE_ROW === stmt.step() ? stmt.getValue(0).getString() : undefined;\n });\n\n if (channel !== undefined)\n return channel;\n } catch {\n // Exception happens if the iModel is too old: ChannelRootAspect class not present in the BisCore schema (older than v1.0.10).\n // In that case all data in such iModel is assumed to be in the shared channel.\n return ChannelControl.sharedChannelName;\n }\n\n const parentId = this._iModel.withPreparedSqliteStatement(\"SELECT ParentId,ModelId FROM bis_Element WHERE id=?\", (stmt) => {\n stmt.bindId(1, elementId);\n if (DbResult.BE_SQLITE_ROW !== stmt.step())\n throw new IModelError(IModelStatus.NotFound, \"Element does not exist\");\n return stmt.getValueId(0) ?? stmt.getValueId(1); // if parent is undefined, use modelId\n });\n\n return this.getChannelKey(parentId);\n }\n\n public [_verifyChannel](modelId: Id64String): void {\n // Note: indirect changes are permitted to change any channel\n if (this._allowedModels.has(modelId) || this._iModel[_nativeDb].isIndirectChanges())\n return;\n\n const deniedChannel = this._deniedModels.get(modelId);\n if (undefined !== deniedChannel)\n ChannelControlError.throwError(\"not-allowed\", `Channel ${deniedChannel} is not allowed`, deniedChannel);\n\n const channel = this.getChannelKey(modelId);\n if (this._allowedChannels.has(channel)) {\n this._allowedModels.add(modelId);\n return;\n }\n\n this._deniedModels.set(modelId, channel);\n return this[_verifyChannel](modelId);\n }\n\n public makeChannelRoot(args: { elementId: Id64String, channelKey: ChannelKey }) {\n const channelKey = this.getChannelKey(args.elementId);\n if (ChannelControl.sharedChannelName !== channelKey)\n ChannelControlError.throwError(\"may-not-nest\", `Channel ${channelKey} may not nest`, channelKey);\n\n if (this.queryChannelRoot(args.channelKey) !== undefined)\n ChannelControlError.throwError(\"root-exists\", `Channel ${args.channelKey} root already exist`, channelKey);\n\n const props: ChannelRootAspectProps = { classFullName: ChannelAdmin.channelClassName, element: { id: args.elementId }, owner: args.channelKey };\n this._iModel.elements.insertAspect(props);\n }\n\n public insertChannelSubject(args: { subjectName: string, channelKey: ChannelKey, parentSubjectId?: Id64String, description?: string }): Id64String {\n // Check if channelKey already exists before inserting Subject.\n // makeChannelRoot will check that again, but at that point the new Subject is already inserted.\n // Prefer to check twice instead of deleting the Subject in the latter option.\n if (this.queryChannelRoot(args.channelKey) !== undefined)\n ChannelControlError.throwError(\"root-exists\", `Channel ${args.channelKey} root already exist`, args.channelKey);\n\n const elementId = Subject.insert(this._iModel, args.parentSubjectId ?? IModel.rootSubjectId, args.subjectName, args.description);\n this.makeChannelRoot({ elementId, channelKey: args.channelKey });\n return elementId;\n }\n\n public queryChannelRoot(channelKey: ChannelKey): Id64String | undefined {\n if (channelKey === ChannelControl.sharedChannelName)\n // RootSubject acts as the ChannelRoot element of the shared channel\n return IModel.rootSubjectId;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const channelRoot = this._iModel.withPreparedStatement(`SELECT Element.Id FROM ${ChannelAdmin.channelClassName} WHERE Owner=?`, (stmt) => {\n stmt.bindString(1, channelKey);\n return DbResult.BE_SQLITE_ROW === stmt.step() ? stmt.getValue(0).getId() : undefined;\n });\n\n return channelRoot;\n } catch {\n // Exception happens if the iModel is too old: ChannelRootAspect class not present in the BisCore schema (older than v1.0.10).\n // In that case all data in such iModel is assumed to be in the shared channel.\n return undefined;\n }\n\n }\n}\n\nexport function createChannelControl(iModel: IModelDb): ChannelAdmin {\n return new ChannelAdmin(iModel);\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import { Id64String } from "@itwin/core-bentley";
2
+ import { ElementLoadOptions, ElementLoadProps, ElementProps } from "@itwin/core-common";
3
+ export interface CachedElement {
4
+ loadOptions: ElementLoadOptions;
5
+ elProps: ElementProps;
6
+ }
7
+ /**
8
+ * A LRU cache for entities. Cache contains the ElementProps and the load options used to load it.
9
+ * Cache can be searched by id, code or federationGuid.
10
+ */
11
+ export declare class ElementLRUCache {
12
+ readonly capacity: number;
13
+ static readonly DEFAULT_CAPACITY = 2000;
14
+ private _elementCache;
15
+ private _cacheByCode;
16
+ private _cacheByFederationGuid;
17
+ private static makeCodeKey;
18
+ private findElement;
19
+ constructor(capacity?: number);
20
+ clear(): void;
21
+ get size(): number;
22
+ deleteWithModel(modelId: Id64String): void;
23
+ delete(key: ElementLoadProps): boolean;
24
+ get(key: ElementLoadProps): CachedElement | undefined;
25
+ set(el: CachedElement): this;
26
+ get [Symbol.toStringTag](): string;
27
+ }
28
+ //# sourceMappingURL=ElementLRUCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementLRUCache.d.ts","sourceRoot":"","sources":["../../../src/internal/ElementLRUCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAa,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGnG,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,kBAAkB,CAAA;IAC/B,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,eAAe;aA6BS,QAAQ;IA5B3C,gBAAuB,gBAAgB,QAAQ;IAC/C,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,sBAAsB,CAAiC;IAE/D,OAAO,CAAC,MAAM,CAAC,WAAW;IAO1B,OAAO,CAAC,WAAW;gBAgBgB,QAAQ,SAAmC;IACvE,KAAK,IAAI,IAAI;IAKpB,IAAW,IAAI,IAAI,MAAM,CAExB;IACM,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAM1C,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO;IAYtC,GAAG,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,GAAG,SAAS;IAoBrD,GAAG,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;IA6BnC,IAAW,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAExC;CACF"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ElementLRUCache = void 0;
4
+ /**
5
+ * A LRU cache for entities. Cache contains the ElementProps and the load options used to load it.
6
+ * Cache can be searched by id, code or federationGuid.
7
+ */
8
+ class ElementLRUCache {
9
+ capacity;
10
+ static DEFAULT_CAPACITY = 2000;
11
+ _elementCache = new Map();
12
+ _cacheByCode = new Map();
13
+ _cacheByFederationGuid = new Map();
14
+ static makeCodeKey(code) {
15
+ const keys = [code.scope, code.spec];
16
+ if (code.value !== undefined) {
17
+ keys.push(code.value);
18
+ }
19
+ return JSON.stringify(keys);
20
+ }
21
+ findElement(key) {
22
+ if (key.id) {
23
+ return this._elementCache.get(key.id);
24
+ }
25
+ else if (key.federationGuid) {
26
+ const id = this._cacheByFederationGuid.get(key.federationGuid);
27
+ if (id)
28
+ return this._elementCache.get(id);
29
+ }
30
+ else if (key.code) {
31
+ const id = this._cacheByCode.get(ElementLRUCache.makeCodeKey(key.code));
32
+ if (id)
33
+ return this._elementCache.get(id);
34
+ }
35
+ else {
36
+ throw new Error("No key provided");
37
+ }
38
+ return undefined;
39
+ }
40
+ constructor(capacity = ElementLRUCache.DEFAULT_CAPACITY) {
41
+ this.capacity = capacity;
42
+ }
43
+ clear() {
44
+ this._elementCache.clear();
45
+ this._cacheByCode.clear();
46
+ this._cacheByFederationGuid.clear();
47
+ }
48
+ get size() {
49
+ return this._elementCache.size;
50
+ }
51
+ deleteWithModel(modelId) {
52
+ this._elementCache.forEach((cachedVal, elementId) => {
53
+ if (cachedVal.elProps.model === modelId)
54
+ this.delete({ id: elementId });
55
+ });
56
+ }
57
+ delete(key) {
58
+ const cachedElement = this.findElement(key);
59
+ if (cachedElement) {
60
+ if (cachedElement.elProps.id)
61
+ this._elementCache.delete(cachedElement.elProps.id);
62
+ this._cacheByCode.delete(ElementLRUCache.makeCodeKey(cachedElement.elProps.code));
63
+ if (cachedElement.elProps.federationGuid)
64
+ this._cacheByFederationGuid.delete(cachedElement.elProps.federationGuid);
65
+ return true;
66
+ }
67
+ return false;
68
+ }
69
+ get(key) {
70
+ const cachedElement = this.findElement(key);
71
+ if (cachedElement) {
72
+ if (cachedElement.elProps.id) {
73
+ this._elementCache.delete(cachedElement.elProps.id);
74
+ this._elementCache.set(cachedElement.elProps.id, cachedElement);
75
+ }
76
+ }
77
+ if (cachedElement) {
78
+ if (key.displayStyle !== cachedElement.loadOptions.displayStyle ||
79
+ key.onlyBaseProperties !== cachedElement.loadOptions.onlyBaseProperties ||
80
+ key.renderTimeline !== cachedElement.loadOptions.renderTimeline ||
81
+ key.wantBRepData !== cachedElement.loadOptions.wantBRepData ||
82
+ key.wantGeometry !== cachedElement.loadOptions.wantGeometry) {
83
+ return undefined;
84
+ }
85
+ }
86
+ return cachedElement;
87
+ }
88
+ set(el) {
89
+ if (!el.elProps.id)
90
+ throw new Error("Element must have an id");
91
+ // do not cache this element as geom need to be rerender into geom props if any part changes
92
+ // TODO: find a way to handle caching geometry
93
+ if (el.loadOptions.wantGeometry) {
94
+ return this;
95
+ }
96
+ if (this._elementCache.has(el.elProps.id)) {
97
+ this._elementCache.delete(el.elProps.id);
98
+ this._elementCache.set(el.elProps.id, el);
99
+ }
100
+ else {
101
+ this._elementCache.set(el.elProps.id, el);
102
+ }
103
+ if (el.elProps.federationGuid) {
104
+ this._cacheByFederationGuid.set(el.elProps.federationGuid, el.elProps.id);
105
+ }
106
+ this._cacheByCode.set(ElementLRUCache.makeCodeKey(el.elProps.code), el.elProps.id);
107
+ if (this._elementCache.size > this.capacity) {
108
+ const oldestKey = this._elementCache.keys().next().value;
109
+ const oldestElement = this._elementCache.get(oldestKey);
110
+ this.delete({ id: oldestKey, federationGuid: oldestElement?.elProps.federationGuid, code: oldestElement?.elProps.code });
111
+ }
112
+ return this;
113
+ }
114
+ get [Symbol.toStringTag]() {
115
+ return `EntityCache(this.size=${this.size}, capacity=${this.capacity})`;
116
+ }
117
+ }
118
+ exports.ElementLRUCache = ElementLRUCache;
119
+ ;
120
+ //# sourceMappingURL=ElementLRUCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementLRUCache.js","sourceRoot":"","sources":["../../../src/internal/ElementLRUCache.ts"],"names":[],"mappings":"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","sourcesContent":["import { Id64String } from \"@itwin/core-bentley\";\nimport { CodeProps, ElementLoadOptions, ElementLoadProps, ElementProps } from \"@itwin/core-common\";\n\n/* @internal */\nexport interface CachedElement {\n loadOptions: ElementLoadOptions\n elProps: ElementProps;\n}\n\n/**\n * A LRU cache for entities. Cache contains the ElementProps and the load options used to load it.\n * Cache can be searched by id, code or federationGuid.\n */\nexport class ElementLRUCache {\n public static readonly DEFAULT_CAPACITY = 2000;\n private _elementCache = new Map<Id64String, CachedElement>();\n private _cacheByCode = new Map<Id64String, Id64String>();\n private _cacheByFederationGuid = new Map<string, Id64String>();\n\n private static makeCodeKey(code: CodeProps): string {\n const keys = [code.scope, code.spec];\n if (code.value !== undefined) {\n keys.push(code.value);\n }\n return JSON.stringify(keys);\n }\n private findElement(key: ElementLoadProps): CachedElement | undefined {\n if (key.id) {\n return this._elementCache.get(key.id);\n } else if (key.federationGuid) {\n const id = this._cacheByFederationGuid.get(key.federationGuid);\n if (id)\n return this._elementCache.get(id);\n } else if (key.code) {\n const id = this._cacheByCode.get(ElementLRUCache.makeCodeKey(key.code));\n if (id)\n return this._elementCache.get(id);\n } else {\n throw new Error(\"No key provided\");\n }\n return undefined;\n }\n public constructor(public readonly capacity = ElementLRUCache.DEFAULT_CAPACITY) { }\n public clear(): void {\n this._elementCache.clear();\n this._cacheByCode.clear();\n this._cacheByFederationGuid.clear();\n }\n public get size(): number {\n return this._elementCache.size;\n }\n public deleteWithModel(modelId: Id64String): void {\n this._elementCache.forEach((cachedVal, elementId) => {\n if (cachedVal.elProps.model === modelId)\n this.delete({ id: elementId });\n });\n }\n public delete(key: ElementLoadProps): boolean {\n const cachedElement = this.findElement(key);\n if (cachedElement) {\n if (cachedElement.elProps.id)\n this._elementCache.delete(cachedElement.elProps.id);\n this._cacheByCode.delete(ElementLRUCache.makeCodeKey(cachedElement.elProps.code));\n if (cachedElement.elProps.federationGuid)\n this._cacheByFederationGuid.delete(cachedElement.elProps.federationGuid);\n return true;\n }\n return false;\n }\n public get(key: ElementLoadProps): CachedElement | undefined {\n const cachedElement = this.findElement(key);\n if (cachedElement) {\n if (cachedElement.elProps.id) {\n this._elementCache.delete(cachedElement.elProps.id);\n this._elementCache.set(cachedElement.elProps.id, cachedElement);\n }\n }\n\n if (cachedElement) {\n if (key.displayStyle !== cachedElement.loadOptions.displayStyle ||\n key.onlyBaseProperties !== cachedElement.loadOptions.onlyBaseProperties ||\n key.renderTimeline !== cachedElement.loadOptions.renderTimeline ||\n key.wantBRepData !== cachedElement.loadOptions.wantBRepData ||\n key.wantGeometry !== cachedElement.loadOptions.wantGeometry) {\n return undefined\n }\n }\n return cachedElement;\n }\n public set(el: CachedElement): this {\n if (!el.elProps.id)\n throw new Error(\"Element must have an id\");\n\n // do not cache this element as geom need to be rerender into geom props if any part changes\n // TODO: find a way to handle caching geometry\n if (el.loadOptions.wantGeometry) {\n return this;\n }\n\n if (this._elementCache.has(el.elProps.id)) {\n this._elementCache.delete(el.elProps.id);\n this._elementCache.set(el.elProps.id, el);\n } else {\n this._elementCache.set(el.elProps.id, el);\n }\n\n if (el.elProps.federationGuid) {\n this._cacheByFederationGuid.set(el.elProps.federationGuid, el.elProps.id);\n }\n\n this._cacheByCode.set(ElementLRUCache.makeCodeKey(el.elProps.code), el.elProps.id);\n if (this._elementCache.size > this.capacity) {\n const oldestKey = this._elementCache.keys().next().value as Id64String;\n const oldestElement = this._elementCache.get(oldestKey);\n this.delete({ id: oldestKey, federationGuid: oldestElement?.elProps.federationGuid, code: oldestElement?.elProps.code });\n }\n return this;\n }\n public get [Symbol.toStringTag](): string {\n return `EntityCache(this.size=${this.size}, capacity=${this.capacity})`;\n }\n};\n"]}
@@ -1,8 +1,8 @@
1
1
  import { GuidString } from "@itwin/core-bentley";
2
- import { ChangesetFileProps, ChangesetIndex, ChangesetIndexAndId, ChangesetProps, ChangesetRange, IModelVersion, LocalDirName } from "@itwin/core-common";
3
- import { AcquireNewBriefcaseIdArg, BriefcaseDbArg, BriefcaseIdArg, ChangesetArg, CreateNewIModelProps, DownloadChangesetArg, DownloadChangesetRangeArg, IModelIdArg, IModelNameArg, LockMap, LockProps, V2CheckpointAccessProps } from "./BackendHubAccess";
4
- import { CheckpointProps, DownloadRequest } from "./CheckpointManager";
5
- import { LocalHub } from "./LocalHub";
2
+ import { ChangesetFileProps, ChangesetIndex, ChangesetProps, ChangesetRange, IModelVersion, LocalDirName } from "@itwin/core-common";
3
+ import { AcquireNewBriefcaseIdArg, BriefcaseDbArg, BriefcaseIdArg, ChangesetArg, CreateNewIModelProps, DownloadChangesetArg, DownloadChangesetRangeArg, IModelIdArg, IModelNameArg, LockMap, LockProps, V2CheckpointAccessProps } from "../BackendHubAccess";
4
+ import { CheckpointProps } from "../CheckpointManager";
5
+ import { LocalHub } from "../LocalHub";
6
6
  /**
7
7
  * Mocks iModelHub for testing creating Briefcases, downloading checkpoints, and simulating multiple users pushing and pulling changesets, etc.
8
8
  *
@@ -82,7 +82,6 @@ export declare class HubMock {
82
82
  changesetProps: ChangesetFileProps;
83
83
  }): Promise<ChangesetIndex>;
84
84
  static queryV2Checkpoint(arg: CheckpointProps): Promise<V2CheckpointAccessProps | undefined>;
85
- static downloadV1Checkpoint(arg: DownloadRequest): Promise<ChangesetIndexAndId>;
86
85
  static releaseAllLocks(arg: BriefcaseDbArg): Promise<void>;
87
86
  static queryAllLocks(_arg: BriefcaseDbArg): Promise<LockProps[]>;
88
87
  static acquireLocks(arg: BriefcaseDbArg, locks: LockMap): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HubMock.d.ts","sourceRoot":"","sources":["../../../src/internal/HubMock.ts"],"names":[],"mappings":"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"}
@@ -7,16 +7,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.HubMock = void 0;
8
8
  const path_1 = require("path");
9
9
  const core_bentley_1 = require("@itwin/core-bentley");
10
- const CheckpointManager_1 = require("./CheckpointManager");
11
- const IModelHost_1 = require("./IModelHost");
12
- const IModelJsFs_1 = require("./IModelJsFs");
13
- const LocalHub_1 = require("./LocalHub");
14
- const Symbols_1 = require("./internal/Symbols");
15
- const CloudSqliteMock_1 = require("./test/CloudSqliteMock");
10
+ const CheckpointManager_1 = require("../CheckpointManager");
11
+ const IModelHost_1 = require("../IModelHost");
12
+ const IModelJsFs_1 = require("../IModelJsFs");
13
+ const LocalHub_1 = require("../LocalHub");
14
+ const Symbols_1 = require("./Symbols");
15
+ const BriefcaseManager_1 = require("../BriefcaseManager");
16
+ const path = require("path");
16
17
  function wasStarted(val) {
17
18
  if (undefined === val)
18
19
  throw new Error("Call HubMock.startup first");
19
20
  }
21
+ function doDownload(args) {
22
+ HubMock.findLocalHub(args.iModelId).downloadCheckpoint(args);
23
+ }
24
+ const mockCheckpoint = {
25
+ mockAttach: (checkpoint) => {
26
+ const targetFile = path.join(BriefcaseManager_1.BriefcaseManager.getBriefcaseBasePath(checkpoint.iModelId), `${checkpoint.changeset.index}.bim`);
27
+ doDownload({ ...checkpoint, targetFile });
28
+ return targetFile;
29
+ },
30
+ mockDownload: (request) => {
31
+ doDownload({ ...request.checkpoint, targetFile: request.localFile });
32
+ }
33
+ };
20
34
  /**
21
35
  * Mocks iModelHub for testing creating Briefcases, downloading checkpoints, and simulating multiple users pushing and pulling changesets, etc.
22
36
  *
@@ -75,7 +89,7 @@ class HubMock {
75
89
  this._saveHubAccess = IModelHost_1.IModelHost[Symbols_1._getHubAccess]();
76
90
  IModelHost_1.IModelHost[Symbols_1._setHubAccess](this);
77
91
  HubMock._iTwinId = core_bentley_1.Guid.createValue(); // all iModels for this test get the same "iTwinId"
78
- CloudSqliteMock_1.CloudSqliteMock.startup();
92
+ CheckpointManager_1.V2CheckpointManager[Symbols_1._mockCheckpoint] = mockCheckpoint;
79
93
  }
80
94
  /** Stop a HubMock that was previously started with [[startup]]
81
95
  * @note this function throws an exception if any of the iModels used during the tests are left open.
@@ -83,7 +97,7 @@ class HubMock {
83
97
  static shutdown() {
84
98
  if (this.mockRoot === undefined)
85
99
  return;
86
- CloudSqliteMock_1.CloudSqliteMock.shutdown();
100
+ CheckpointManager_1.V2CheckpointManager[Symbols_1._mockCheckpoint] = undefined;
87
101
  HubMock._iTwinId = undefined;
88
102
  for (const hub of this.hubs)
89
103
  hub[1].cleanup();
@@ -187,9 +201,6 @@ class HubMock {
187
201
  checkpoint: arg,
188
202
  };
189
203
  }
190
- static async downloadV1Checkpoint(arg) {
191
- return this.findLocalHub(arg.checkpoint.iModelId).downloadCheckpoint({ changeset: arg.checkpoint.changeset, targetFile: arg.localFile });
192
- }
193
204
  static async releaseAllLocks(arg) {
194
205
  const hub = this.findLocalHub(arg.iModelId);
195
206
  hub.releaseAllLocks({ briefcaseId: arg.briefcaseId, changesetIndex: hub.getIndexFromChangeset(arg.changeset) });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HubMock.js","sourceRoot":"","sources":["../../../src/internal/HubMock.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 { join } from \"path\";\nimport { Guid, GuidString } from \"@itwin/core-bentley\";\nimport {\n ChangesetFileProps, ChangesetIndex, ChangesetIndexOrId, ChangesetProps, ChangesetRange, IModelVersion, LocalDirName,\n} from \"@itwin/core-common\";\nimport {\n AcquireNewBriefcaseIdArg,\n BackendHubAccess, BriefcaseDbArg, BriefcaseIdArg, ChangesetArg, CreateNewIModelProps, DownloadChangesetArg, DownloadChangesetRangeArg, IModelIdArg, IModelNameArg,\n LockMap, LockProps, V2CheckpointAccessProps,\n} from \"../BackendHubAccess\";\nimport { CheckpointProps, DownloadRequest, MockCheckpoint, ProgressFunction, ProgressStatus, V2CheckpointManager } from \"../CheckpointManager\";\nimport { IModelHost } from \"../IModelHost\";\nimport { IModelJsFs } from \"../IModelJsFs\";\nimport { LocalHub } from \"../LocalHub\";\nimport { TokenArg } from \"../IModelDb\";\nimport { _getHubAccess, _mockCheckpoint, _setHubAccess } from \"./Symbols\";\nimport { BriefcaseManager } from \"../BriefcaseManager\";\nimport * as path from \"path\";\n\nfunction wasStarted(val: string | undefined): asserts val is string {\n if (undefined === val)\n throw new Error(\"Call HubMock.startup first\");\n}\n\nfunction doDownload(args: { iModelId: string, changeset: ChangesetIndexOrId, targetFile: string }) {\n HubMock.findLocalHub(args.iModelId).downloadCheckpoint(args);\n}\nconst mockCheckpoint: MockCheckpoint = {\n mockAttach: (checkpoint: CheckpointProps) => {\n const targetFile = path.join(BriefcaseManager.getBriefcaseBasePath(checkpoint.iModelId), `${checkpoint.changeset.index}.bim`);\n doDownload({ ...checkpoint, targetFile })\n return targetFile;\n },\n\n mockDownload: (request: DownloadRequest) => {\n doDownload({ ...request.checkpoint, targetFile: request.localFile });\n }\n};\n\n/**\n * Mocks iModelHub for testing creating Briefcases, downloading checkpoints, and simulating multiple users pushing and pulling changesets, etc.\n *\n * Generally, tests for apis that *create or modify* iModels can and should be mocked. Otherwise they:\n * - create tremendous load on the test servers when they run on programmer's desktops and in CI jobs\n * - waste network and data center resources (i.e. $$$s),\n * - interfere with other tests running on the same or other systems, and\n * - (far worse) are the source of test flakiness outside of the api being tested.\n *\n * This class can be used to create tests that do not require authentication, are synchronous,\n * are guaranteed to be self-contained (i.e. do not interfere with other tests running at the same time or later), and do not fail for reasons outside\n * of the control of the test itself. As a bonus, in addition to making tests more reliable, mocking IModelHub generally makes tests run *much* faster.\n *\n * On the other hand, tests that expect to find an existing iModels, checkpoints, changesets, etc. in IModelHub cannot be mocked. In that case, those tests\n * should be careful to NOT modify the data, since doing so causes interference with other tests running simultaneously. These tests should be limited to\n * low level testing of the core apis only.\n *\n * To initialize HubMock, call [[startup]] at the beginning of your test, usually in `describe.before`. Thereafter, all access to iModelHub for an iModel will be\n * directed to a [[LocalHub]] - your test code does not change. After the test(s) complete, call [[shutdown]] (usually in `describe.after`) to stop mocking IModelHub and clean\n * up any resources used by the test(s). If you want to mock a single test, call [[startup]] as the first line and [[shutdown]] as the last. If you wish to run the\n * test against a \"real\" IModelHub, you can simply comment off the call [[startup]], though in that case you should make sure the name of your\n * iModel is unique so your test won't collide with other tests (iModel name uniqueness is not necessary for mocked tests.)\n *\n * Mocked tests must always start by creating a new iModel via [[IModelHost[_hubAccess].createNewIModel]] with a `version0` iModel.\n * They use mock (aka \"bogus\") credentials for `AccessTokens`, which is fine since [[HubMock]] never accesses resources outside the current\n * computer.\n *\n * @note Only one HubMock at a time, *running in a single process*, may be active. The comments above about multiple simultaneous tests refer to tests\n * running on different computers, or on a single computer in multiple processes. All of those scenarios are problematic without mocking.\n *\n * @internal\n */\nexport class HubMock {\n private static mockRoot: LocalDirName | undefined;\n private static hubs = new Map<string, LocalHub>();\n private static _saveHubAccess: BackendHubAccess | undefined;\n private static _iTwinId: GuidString | undefined;\n\n /** Determine whether a test us currently being run under HubMock */\n public static get isValid() { return undefined !== this.mockRoot; }\n public static get iTwinId() {\n wasStarted(this._iTwinId);\n return this._iTwinId;\n }\n\n /**\n * Begin mocking IModelHub access. After this call, all access to IModelHub will be directed to a [[LocalHub]].\n * @param mockName a unique name (e.g. \"MyTest\") for this HubMock to disambiguate tests when more than one is simultaneously active.\n * It is used to create a private directory used by the HubMock for a test. That directory is removed when [[shutdown]] is called.\n */\n public static startup(mockName: LocalDirName, outputDir: string) {\n if (this.isValid)\n throw new Error(\"Either a previous test did not call HubMock.shutdown() properly, or more than one test is simultaneously attempting to use HubMock, which is not allowed\");\n\n this.hubs.clear();\n this.mockRoot = join(outputDir, \"HubMock\", mockName);\n IModelJsFs.recursiveMkDirSync(this.mockRoot);\n IModelJsFs.purgeDirSync(this.mockRoot);\n this._saveHubAccess = IModelHost[_getHubAccess]();\n\n IModelHost[_setHubAccess](this);\n HubMock._iTwinId = Guid.createValue(); // all iModels for this test get the same \"iTwinId\"\n\n V2CheckpointManager[_mockCheckpoint] = mockCheckpoint;\n }\n\n /** Stop a HubMock that was previously started with [[startup]]\n * @note this function throws an exception if any of the iModels used during the tests are left open.\n */\n public static shutdown() {\n if (this.mockRoot === undefined)\n return;\n\n V2CheckpointManager[_mockCheckpoint] = undefined;\n\n HubMock._iTwinId = undefined;\n for (const hub of this.hubs)\n hub[1].cleanup();\n\n this.hubs.clear();\n IModelJsFs.purgeDirSync(this.mockRoot);\n IModelJsFs.removeSync(this.mockRoot);\n IModelHost[_setHubAccess](this._saveHubAccess);\n this.mockRoot = undefined;\n }\n\n public static findLocalHub(iModelId: GuidString): LocalHub {\n const hub = this.hubs.get(iModelId);\n if (!hub)\n throw new Error(`local hub for iModel ${iModelId} not created`);\n return hub;\n }\n\n /** create a [[LocalHub]] for an iModel. */\n public static async createNewIModel(arg: CreateNewIModelProps): Promise<GuidString> {\n wasStarted(this.mockRoot);\n const props = { ...arg, iModelId: Guid.createValue() };\n const mock = new LocalHub(join(this.mockRoot, props.iModelId), props);\n this.hubs.set(props.iModelId, mock);\n return props.iModelId;\n }\n\n /** remove the [[LocalHub]] for an iModel */\n public static destroy(iModelId: GuidString) {\n this.findLocalHub(iModelId).cleanup();\n this.hubs.delete(iModelId);\n }\n\n /** All methods below are mocks of the [[BackendHubAccess]] interface */\n\n public static async getChangesetFromNamedVersion(arg: IModelIdArg & { versionName: string }): Promise<ChangesetProps> {\n return this.findLocalHub(arg.iModelId).findNamedVersion(arg.versionName);\n }\n\n private static changesetIndexFromArg(arg: ChangesetArg) {\n return (undefined !== arg.changeset.index) ? arg.changeset.index : this.findLocalHub(arg.iModelId).getChangesetIndex(arg.changeset.id);\n }\n\n public static async getChangesetFromVersion(arg: IModelIdArg & { version: IModelVersion }): Promise<ChangesetProps> {\n const hub = this.findLocalHub(arg.iModelId);\n const version = arg.version;\n if (version.isFirst)\n return hub.getChangesetByIndex(0);\n\n const asOf = version.getAsOfChangeSet();\n if (asOf)\n return hub.getChangesetById(asOf);\n\n const versionName = version.getName();\n if (versionName)\n return hub.findNamedVersion(versionName);\n\n return hub.getLatestChangeset();\n }\n\n public static async getLatestChangeset(arg: IModelIdArg): Promise<ChangesetProps> {\n return this.findLocalHub(arg.iModelId).getLatestChangeset();\n }\n\n private static async getAccessToken(arg: TokenArg) {\n return arg.accessToken ?? await IModelHost.getAccessToken();\n }\n\n public static async getMyBriefcaseIds(arg: IModelIdArg): Promise<number[]> {\n const accessToken = await this.getAccessToken(arg);\n return this.findLocalHub(arg.iModelId).getBriefcaseIds(accessToken);\n }\n\n public static async acquireNewBriefcaseId(arg: AcquireNewBriefcaseIdArg): Promise<number> {\n const accessToken = await this.getAccessToken(arg);\n return this.findLocalHub(arg.iModelId).acquireNewBriefcaseId(accessToken, arg.briefcaseAlias);\n }\n\n /** Release a briefcaseId. After this call it is illegal to generate changesets for the released briefcaseId. */\n public static async releaseBriefcase(arg: BriefcaseIdArg): Promise<void> {\n return this.findLocalHub(arg.iModelId).releaseBriefcaseId(arg.briefcaseId);\n }\n\n public static async downloadChangeset(arg: DownloadChangesetArg): Promise<ChangesetFileProps> {\n const changesetProps = this.findLocalHub(arg.iModelId).downloadChangeset({ index: this.changesetIndexFromArg(arg), targetDir: arg.targetDir });\n\n if (arg.progressCallback) {\n const totalSize = IModelJsFs.lstatSync(changesetProps.pathname)?.size;\n if (totalSize)\n await HubMock.mockProgressReporting(arg.progressCallback, totalSize);\n }\n\n return changesetProps;\n }\n\n public static async downloadChangesets(arg: DownloadChangesetRangeArg): Promise<ChangesetFileProps[]> {\n const changesetProps = this.findLocalHub(arg.iModelId).downloadChangesets({ range: arg.range, targetDir: arg.targetDir });\n\n if (arg.progressCallback) {\n const totalSize = changesetProps.reduce((sum, props) => sum + (IModelJsFs.lstatSync(props.pathname)?.size ?? 0), 0);\n await HubMock.mockProgressReporting(arg.progressCallback, totalSize);\n }\n\n return changesetProps;\n }\n\n public static async queryChangeset(arg: ChangesetArg): Promise<ChangesetProps> {\n return this.findLocalHub(arg.iModelId).getChangesetByIndex(this.changesetIndexFromArg(arg));\n }\n\n public static async queryChangesets(arg: IModelIdArg & { range?: ChangesetRange }): Promise<ChangesetProps[]> {\n return this.findLocalHub(arg.iModelId).queryChangesets(arg.range);\n }\n\n public static async pushChangeset(arg: IModelIdArg & { changesetProps: ChangesetFileProps }): Promise<ChangesetIndex> {\n return this.findLocalHub(arg.iModelId).addChangeset(arg.changesetProps);\n }\n\n public static async queryV2Checkpoint(arg: CheckpointProps): Promise<V2CheckpointAccessProps | undefined> {\n return {\n accountName: \"none\",\n sasToken: \"none\",\n containerId: Guid.createValue(),\n dbName: `${arg.changeset.index ?? 0}.bim`,\n storageType: \"mock\",\n isMock: true,\n checkpoint: arg,\n } as V2CheckpointAccessProps;\n }\n\n public static async releaseAllLocks(arg: BriefcaseDbArg) {\n const hub = this.findLocalHub(arg.iModelId);\n hub.releaseAllLocks({ briefcaseId: arg.briefcaseId, changesetIndex: hub.getIndexFromChangeset(arg.changeset) });\n }\n\n public static async queryAllLocks(_arg: BriefcaseDbArg): Promise<LockProps[]> {\n return [];\n }\n\n public static async acquireLocks(arg: BriefcaseDbArg, locks: LockMap): Promise<void> {\n this.findLocalHub(arg.iModelId).acquireLocks(locks, arg);\n }\n\n public static async queryIModelByName(arg: IModelNameArg): Promise<GuidString | undefined> {\n for (const hub of this.hubs) {\n const localHub = hub[1];\n if (localHub.iTwinId === arg.iTwinId && localHub.iModelName === arg.iModelName)\n return localHub.iModelId;\n }\n return undefined;\n }\n\n public static async deleteIModel(arg: IModelIdArg & { iTwinId: GuidString }): Promise<void> {\n return this.destroy(arg.iModelId);\n }\n\n private static async mockProgressReporting(progressCallback: ProgressFunction, totalSize: number): Promise<void> {\n await new Promise((resolve, reject) => {\n let rejected = false;\n\n const mockProgress = (index: number) => {\n const bytesDownloaded = Math.floor(totalSize * (index / 4));\n if (!rejected && progressCallback(bytesDownloaded, totalSize) === ProgressStatus.Abort) {\n rejected = true;\n reject(new Error(\"AbortError\"));\n }\n };\n\n mockProgress(1);\n setTimeout(() => mockProgress(2), 50);\n setTimeout(() => mockProgress(3), 100);\n setTimeout(() => {\n mockProgress(4);\n resolve(undefined);\n }, 150);\n });\n }\n}\n"]}
@@ -15,6 +15,6 @@ export declare const _verifyChannel: unique symbol;
15
15
  export declare const _hubAccess: unique symbol;
16
16
  export declare const _setHubAccess: unique symbol;
17
17
  export declare const _getHubAccess: unique symbol;
18
- export declare const _openCheckpoint: unique symbol;
19
- export declare const _getCheckpointDb: unique symbol;
18
+ export declare const _mockCheckpoint: unique symbol;
19
+ export declare const _cache: unique symbol;
20
20
  //# sourceMappingURL=Symbols.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Symbols.d.ts","sourceRoot":"","sources":["../../../src/internal/Symbols.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,eAAO,MAAM,yBAAyB,eAAmG,CAAC;AAM1I,eAAO,MAAM,MAAM,eAA2B,CAAC;AAC/C,eAAO,MAAM,kBAAkB,eAAuC,CAAC;AACvE,eAAO,MAAM,UAAU,eAA+B,CAAC;AACvD,eAAO,MAAM,QAAQ,eAA6B,CAAC;AACnD,eAAO,MAAM,IAAI,eAAyB,CAAC;AAC3C,gBAAgB;AAChB,eAAO,MAAM,SAAS,eAA8B,CAAC;AACrD,eAAO,MAAM,gBAAgB,eAAqC,CAAC;AACnE,eAAO,MAAM,cAAc,eAAmC,CAAC;AAC/D,gBAAgB;AAChB,eAAO,MAAM,UAAU,eAA+B,CAAC;AACvD,eAAO,MAAM,aAAa,eAAkC,CAAC;AAC7D,eAAO,MAAM,aAAa,eAAkC,CAAC;AAC7D,eAAO,MAAM,eAAe,eAAoC,CAAC;AACjE,eAAO,MAAM,gBAAgB,eAAqC,CAAC"}
1
+ {"version":3,"file":"Symbols.d.ts","sourceRoot":"","sources":["../../../src/internal/Symbols.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,eAAO,MAAM,yBAAyB,eAAmG,CAAC;AAM1I,eAAO,MAAM,MAAM,eAA2B,CAAC;AAC/C,eAAO,MAAM,kBAAkB,eAAuC,CAAC;AACvE,eAAO,MAAM,UAAU,eAA+B,CAAC;AACvD,eAAO,MAAM,QAAQ,eAA6B,CAAC;AACnD,eAAO,MAAM,IAAI,eAAyB,CAAC;AAC3C,gBAAgB;AAChB,eAAO,MAAM,SAAS,eAA8B,CAAC;AACrD,eAAO,MAAM,gBAAgB,eAAqC,CAAC;AACnE,eAAO,MAAM,cAAc,eAAmC,CAAC;AAC/D,gBAAgB;AAChB,eAAO,MAAM,UAAU,eAA+B,CAAC;AACvD,eAAO,MAAM,aAAa,eAAkC,CAAC;AAC7D,eAAO,MAAM,aAAa,eAAkC,CAAC;AAC7D,eAAO,MAAM,eAAe,eAAoC,CAAC;AACjE,eAAO,MAAM,MAAM,eAA2B,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * @module Workspace
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports._getCheckpointDb = exports._openCheckpoint = exports._getHubAccess = exports._setHubAccess = exports._hubAccess = exports._verifyChannel = exports._releaseAllLocks = exports._nativeDb = exports._key = exports._getData = exports._faceProps = exports._elementWasCreated = exports._close = exports._implementationProhibited = void 0;
10
+ exports._cache = exports._mockCheckpoint = exports._getHubAccess = exports._setHubAccess = exports._hubAccess = exports._verifyChannel = exports._releaseAllLocks = exports._nativeDb = exports._key = exports._getData = exports._faceProps = exports._elementWasCreated = exports._close = exports._implementationProhibited = void 0;
11
11
  exports._implementationProhibited = Symbol.for("Implementations of this interface can only be obtained from the containing package");
12
12
  function sym(name) {
13
13
  return `${name}_core-backend_INTERNAL_ONLY_DO_NOT_USE`;
@@ -25,6 +25,6 @@ exports._verifyChannel = Symbol.for(sym("verifyChannel"));
25
25
  exports._hubAccess = Symbol.for(sym("hubAccess"));
26
26
  exports._setHubAccess = Symbol.for(sym("setHubAccess"));
27
27
  exports._getHubAccess = Symbol.for(sym("getHubAccess"));
28
- exports._openCheckpoint = Symbol.for(sym("openCheckpoint"));
29
- exports._getCheckpointDb = Symbol.for(sym("getCheckpointDb"));
28
+ exports._mockCheckpoint = Symbol.for(sym("mockCheckpoint"));
29
+ exports._cache = Symbol.for(sym("cache"));
30
30
  //# sourceMappingURL=Symbols.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Symbols.js","sourceRoot":"","sources":["../../../src/internal/Symbols.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEU,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;AAE1I,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,GAAG,IAAI,wCAAwC,CAAC;AACzD,CAAC;AAEY,QAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAClC,QAAA,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1D,QAAA,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1C,QAAA,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,QAAA,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,gBAAgB;AACH,QAAA,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,QAAA,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACtD,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/D,gBAAgB;AACH,QAAA,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1C,QAAA,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAChD,QAAA,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAChD,QAAA,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACpD,QAAA,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,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/** @packageDocumentation\n * @module Workspace\n */\n\nexport const _implementationProhibited = Symbol.for(\"Implementations of this interface can only be obtained from the containing package\");\n\nfunction sym(name: string): string {\n return `${name}_core-backend_INTERNAL_ONLY_DO_NOT_USE`;\n}\n\nexport const _close = Symbol.for(sym(\"close\"));\nexport const _elementWasCreated = Symbol.for(sym(\"elementWasCreated\"));\nexport const _faceProps = Symbol.for(sym(\"faceProps\"));\nexport const _getData = Symbol.for(sym(\"getData\"));\nexport const _key = Symbol.for(sym(\"key\"));\n/** @internal */\nexport const _nativeDb = Symbol.for(sym(\"nativeDb\"));\nexport const _releaseAllLocks = Symbol.for(sym(\"releaseAllLocks\"));\nexport const _verifyChannel = Symbol.for(sym(\"verifyChannel\"));\n/** @internal */\nexport const _hubAccess = Symbol.for(sym(\"hubAccess\"));\nexport const _setHubAccess = Symbol.for(sym(\"setHubAccess\"));\nexport const _getHubAccess = Symbol.for(sym(\"getHubAccess\"));\nexport const _openCheckpoint = Symbol.for(sym(\"openCheckpoint\"));\nexport const _getCheckpointDb = Symbol.for(sym(\"getCheckpointDb\"));\n"]}
1
+ {"version":3,"file":"Symbols.js","sourceRoot":"","sources":["../../../src/internal/Symbols.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEU,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;AAE1I,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,GAAG,IAAI,wCAAwC,CAAC;AACzD,CAAC;AAEY,QAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAClC,QAAA,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1D,QAAA,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1C,QAAA,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,QAAA,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,gBAAgB;AACH,QAAA,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,QAAA,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACtD,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/D,gBAAgB;AACH,QAAA,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1C,QAAA,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAChD,QAAA,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAChD,QAAA,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACpD,QAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,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/** @packageDocumentation\n * @module Workspace\n */\n\nexport const _implementationProhibited = Symbol.for(\"Implementations of this interface can only be obtained from the containing package\");\n\nfunction sym(name: string): string {\n return `${name}_core-backend_INTERNAL_ONLY_DO_NOT_USE`;\n}\n\nexport const _close = Symbol.for(sym(\"close\"));\nexport const _elementWasCreated = Symbol.for(sym(\"elementWasCreated\"));\nexport const _faceProps = Symbol.for(sym(\"faceProps\"));\nexport const _getData = Symbol.for(sym(\"getData\"));\nexport const _key = Symbol.for(sym(\"key\"));\n/** @internal */\nexport const _nativeDb = Symbol.for(sym(\"nativeDb\"));\nexport const _releaseAllLocks = Symbol.for(sym(\"releaseAllLocks\"));\nexport const _verifyChannel = Symbol.for(sym(\"verifyChannel\"));\n/** @internal */\nexport const _hubAccess = Symbol.for(sym(\"hubAccess\"));\nexport const _setHubAccess = Symbol.for(sym(\"setHubAccess\"));\nexport const _getHubAccess = Symbol.for(sym(\"getHubAccess\"));\nexport const _mockCheckpoint = Symbol.for(sym(\"mockCheckpoint\"));\nexport const _cache = Symbol.for(sym(\"cache\"));\n"]}
@@ -3,15 +3,13 @@
3
3
  */
4
4
  import { FilePropertyProps } from "@itwin/core-common";
5
5
  import { Settings } from "../../workspace/Settings";
6
- import { Workspace, WorkspaceContainer, WorkspaceContainerId, WorkspaceDb, WorkspaceDbFullName, WorkspaceDbLoadError, WorkspaceDbName, WorkspaceDbProps, WorkspaceDbVersion, WorkspaceOpts } from "../../workspace/Workspace";
6
+ import { Workspace, WorkspaceContainer, WorkspaceContainerId, WorkspaceDb, WorkspaceDbLoadError, WorkspaceDbProps, WorkspaceOpts } from "../../workspace/Workspace";
7
7
  import { WorkspaceEditor } from "../../workspace/WorkspaceEditor";
8
8
  /** file extension for local WorkspaceDbs */
9
9
  export declare const workspaceDbFileExt = "itwin-workspace";
10
10
  export declare function constructWorkspaceDb(props: WorkspaceDbProps, container: WorkspaceContainer): WorkspaceDb;
11
11
  export declare function constructWorkspace(settings: Settings, opts?: WorkspaceOpts): OwnedWorkspace;
12
12
  export declare function constructWorkspaceEditor(): WorkspaceEditor;
13
- export declare function noLeadingOrTrailingSpaces(name: string, msg: string): void;
14
- export declare function validateWorkspaceDbName(dbName: WorkspaceDbName): void;
15
13
  /**
16
14
  * Validate that a WorkspaceContainer.Id is valid.
17
15
  * The rules for ContainerIds (from Azure, see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata):
@@ -20,20 +18,8 @@ export declare function validateWorkspaceDbName(dbName: WorkspaceDbName): void;
20
18
  * - may not be shorter than 3 or longer than 63 characters
21
19
  */
22
20
  export declare function validateWorkspaceContainerId(id: WorkspaceContainerId): void;
23
- export declare function validateWorkspaceDbVersion(version?: WorkspaceDbVersion): string;
24
- /**
25
- * Parse the name stored in a WorkspaceContainer into the dbName and version number. A single WorkspaceContainer may hold
26
- * many versions of the same WorkspaceDb. The name of the Db in the WorkspaceContainer is in the format "name:version". This
27
- * function splits them into separate strings.
28
- */
29
- export declare function parseWorkspaceDbFileName(dbFileName: WorkspaceDbFullName): {
30
- dbName: WorkspaceDbName;
31
- version: WorkspaceDbVersion;
32
- };
33
- /** Create a dbName for a WorkspaceDb from its base name and version. This will be in the format "name:version" */
34
- export declare function makeWorkspaceDbFileName(dbName: WorkspaceDbName, version?: WorkspaceDbVersion): WorkspaceDbName;
35
21
  export declare const workspaceManifestProperty: FilePropertyProps;
36
- export declare function throwWorkspaceDbLoadErrors(msg: string, errors: WorkspaceDbLoadError[]): never;
22
+ export declare function throwWorkspaceDbLoadErrors(message: string, wsLoadErrors: WorkspaceDbLoadError[]): never;
37
23
  export interface OwnedWorkspace extends Workspace {
38
24
  /** Only the owner of a Workspace may close it. */
39
25
  close(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceImpl.d.ts","sourceRoot":"","sources":["../../../../src/internal/workspace/WorkspaceImpl.ts"],"names":[],"mappings":"AAIA;;GAEG;AAOH,OAAO,EAAE,iBAAiB,EAA4C,MAAM,oBAAoB,CAAC;AAMjG,OAAO,EAAe,QAAQ,EAAgE,MAAM,0BAA0B,CAAC;AAE/H,OAAO,EACsB,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAA2B,WAAW,EACpH,mBAAmB,EAAE,oBAAoB,EAA8C,eAAe,EAA6B,gBAAgB,EAC1F,kBAAkB,EAAE,aAAa,EAC3F,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAqH,eAAe,EAAE,MAAM,iCAAiC,CAAC;AASrL,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AA6rBpD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,GAAG,WAAW,CAExG;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,cAAc,CAE3F;AAED,wBAAgB,wBAAwB,IAAI,eAAe,CAE1D;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAGlE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,QAK9D;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,oBAAoB,QAGpE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE,kBAAkB,UAStE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAGlI;AAED,kHAAkH;AAClH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,eAAe,CAE9G;AAED,eAAO,MAAM,yBAAyB,EAAE,iBAAgE,CAAC;AASzG,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAI7F;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,kDAAkD;IAClD,KAAK,IAAI,IAAI,CAAC;CACf"}
1
+ {"version":3,"file":"WorkspaceImpl.d.ts","sourceRoot":"","sources":["../../../../src/internal/workspace/WorkspaceImpl.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAoB,iBAAiB,EAA+C,MAAM,oBAAoB,CAAC;AAMtH,OAAO,EAAe,QAAQ,EAAgE,MAAM,0BAA0B,CAAC;AAE/H,OAAO,EACsB,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAA2B,WAAW,EAC/F,oBAAoB,EAA0F,gBAAgB,EAC1F,aAAa,EACvE,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAqH,eAAe,EAAE,MAAM,iCAAiC,CAAC;AASrL,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AAgqBpD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,GAAG,WAAW,CAExG;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,cAAc,CAE3F;AAED,wBAAgB,wBAAwB,IAAI,eAAe,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,oBAAoB,QAGpE;AAED,eAAO,MAAM,yBAAyB,EAAE,iBAAgE,CAAC;AAOzG,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAEvG;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,kDAAkD;IAClD,KAAK,IAAI,IAAI,CAAC;CACf"}