@itwin/core-backend 5.1.0-dev.3 → 5.1.0-dev.32

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 (521) hide show
  1. package/CHANGELOG.md +38 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js +1 -1
  5. package/lib/cjs/BisCoreSchema.js.map +1 -1
  6. package/lib/cjs/BlobContainerService.js.map +1 -1
  7. package/lib/cjs/BriefcaseManager.d.ts +10 -2
  8. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  9. package/lib/cjs/BriefcaseManager.js +12 -0
  10. package/lib/cjs/BriefcaseManager.js.map +1 -1
  11. package/lib/cjs/CatalogDb.js.map +1 -1
  12. package/lib/cjs/Category.d.ts +41 -4
  13. package/lib/cjs/Category.d.ts.map +1 -1
  14. package/lib/cjs/Category.js +77 -4
  15. package/lib/cjs/Category.js.map +1 -1
  16. package/lib/cjs/ChangeSummaryManager.js +2 -2
  17. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  18. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  19. package/lib/cjs/ChangesetECAdaptor.js +242 -242
  20. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  21. package/lib/cjs/ChannelControl.js.map +1 -1
  22. package/lib/cjs/CheckpointManager.js.map +1 -1
  23. package/lib/cjs/ClassRegistry.js +5 -5
  24. package/lib/cjs/ClassRegistry.js.map +1 -1
  25. package/lib/cjs/CloudSqlite.js +1 -1
  26. package/lib/cjs/CloudSqlite.js.map +1 -1
  27. package/lib/cjs/CodeService.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/ConcurrentQuery.js.map +1 -1
  32. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  33. package/lib/cjs/DevTools.js.map +1 -1
  34. package/lib/cjs/DisplayStyle.d.ts +9 -4
  35. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  36. package/lib/cjs/DisplayStyle.js +30 -3
  37. package/lib/cjs/DisplayStyle.js.map +1 -1
  38. package/lib/cjs/ECDb.js.map +1 -1
  39. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  40. package/lib/cjs/ECSqlStatement.js.map +1 -1
  41. package/lib/cjs/Element.d.ts +216 -60
  42. package/lib/cjs/Element.d.ts.map +1 -1
  43. package/lib/cjs/Element.js +560 -59
  44. package/lib/cjs/Element.js.map +1 -1
  45. package/lib/cjs/ElementAspect.d.ts +7 -7
  46. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  47. package/lib/cjs/ElementAspect.js +7 -7
  48. package/lib/cjs/ElementAspect.js.map +1 -1
  49. package/lib/cjs/ElementGraphics.js.map +1 -1
  50. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  51. package/lib/cjs/Entity.d.ts +43 -3
  52. package/lib/cjs/Entity.d.ts.map +1 -1
  53. package/lib/cjs/Entity.js +59 -1
  54. package/lib/cjs/Entity.js.map +1 -1
  55. package/lib/cjs/EntityReferences.js.map +1 -1
  56. package/lib/cjs/ExportGraphics.d.ts +54 -8
  57. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  58. package/lib/cjs/ExportGraphics.js +158 -59
  59. package/lib/cjs/ExportGraphics.js.map +1 -1
  60. package/lib/cjs/ExternalSource.js.map +1 -1
  61. package/lib/cjs/FontFile.js.map +1 -1
  62. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  63. package/lib/cjs/GeographicCRSServices.d.ts +6 -2
  64. package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
  65. package/lib/cjs/GeographicCRSServices.js +1 -1
  66. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  67. package/lib/cjs/GeometrySummary.js +47 -47
  68. package/lib/cjs/GeometrySummary.js.map +1 -1
  69. package/lib/cjs/IModelDb.d.ts +28 -43
  70. package/lib/cjs/IModelDb.d.ts.map +1 -1
  71. package/lib/cjs/IModelDb.js +177 -92
  72. package/lib/cjs/IModelDb.js.map +1 -1
  73. package/lib/cjs/IModelDbFonts.js.map +1 -1
  74. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  75. package/lib/cjs/IModelHost.d.ts +13 -0
  76. package/lib/cjs/IModelHost.d.ts.map +1 -1
  77. package/lib/cjs/IModelHost.js +6 -0
  78. package/lib/cjs/IModelHost.js.map +1 -1
  79. package/lib/cjs/IModelJsFs.js.map +1 -1
  80. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  81. package/lib/cjs/IpcHost.js.map +1 -1
  82. package/lib/cjs/LineStyle.js.map +1 -1
  83. package/lib/cjs/LocalHub.js +1 -1
  84. package/lib/cjs/LocalHub.js.map +1 -1
  85. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  86. package/lib/cjs/LockControl.js.map +1 -1
  87. package/lib/cjs/Material.d.ts +19 -0
  88. package/lib/cjs/Material.d.ts.map +1 -1
  89. package/lib/cjs/Material.js +29 -0
  90. package/lib/cjs/Material.js.map +1 -1
  91. package/lib/cjs/Model.d.ts +64 -28
  92. package/lib/cjs/Model.d.ts.map +1 -1
  93. package/lib/cjs/Model.js +115 -27
  94. package/lib/cjs/Model.js.map +1 -1
  95. package/lib/cjs/NativeAppStorage.js.map +1 -1
  96. package/lib/cjs/NativeHost.js.map +1 -1
  97. package/lib/cjs/NavigationRelationship.js.map +1 -1
  98. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  99. package/lib/cjs/PropertyStore.js.map +1 -1
  100. package/lib/cjs/Relationship.js.map +1 -1
  101. package/lib/cjs/RpcBackend.js.map +1 -1
  102. package/lib/cjs/SQLiteDb.js.map +1 -1
  103. package/lib/cjs/Schema.js.map +1 -1
  104. package/lib/cjs/SchemaSync.js.map +1 -1
  105. package/lib/cjs/SchemaUtils.js.map +1 -1
  106. package/lib/cjs/SheetIndex.js.map +1 -1
  107. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  108. package/lib/cjs/SqliteStatement.js.map +1 -1
  109. package/lib/cjs/Texture.d.ts +1 -1
  110. package/lib/cjs/Texture.js +1 -1
  111. package/lib/cjs/Texture.js.map +1 -1
  112. package/lib/cjs/TileStorage.js.map +1 -1
  113. package/lib/cjs/TxnManager.d.ts +4 -4
  114. package/lib/cjs/TxnManager.d.ts.map +1 -1
  115. package/lib/cjs/TxnManager.js +2 -1
  116. package/lib/cjs/TxnManager.js.map +1 -1
  117. package/lib/cjs/ViewDefinition.d.ts +140 -14
  118. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  119. package/lib/cjs/ViewDefinition.js +250 -14
  120. package/lib/cjs/ViewDefinition.js.map +1 -1
  121. package/lib/cjs/ViewStateHydrator.js +3 -3
  122. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  123. package/lib/cjs/ViewStore.js.map +1 -1
  124. package/lib/cjs/annotations/FrameGeometry.d.ts +52 -0
  125. package/lib/cjs/annotations/FrameGeometry.d.ts.map +1 -0
  126. package/lib/cjs/annotations/FrameGeometry.js +250 -0
  127. package/lib/cjs/annotations/FrameGeometry.js.map +1 -0
  128. package/lib/cjs/{TextAnnotationElement.d.ts → annotations/TextAnnotationElement.d.ts} +6 -11
  129. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -0
  130. package/lib/cjs/{TextAnnotationElement.js → annotations/TextAnnotationElement.js} +20 -26
  131. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -0
  132. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts +31 -0
  133. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  134. package/lib/cjs/annotations/TextAnnotationGeometry.js +83 -0
  135. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -0
  136. package/lib/cjs/annotations/TextBlockGeometry.d.ts +16 -0
  137. package/lib/cjs/annotations/TextBlockGeometry.d.ts.map +1 -0
  138. package/lib/cjs/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +11 -68
  139. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -0
  140. package/lib/cjs/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +19 -7
  141. package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -0
  142. package/lib/cjs/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +19 -7
  143. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -0
  144. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  145. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  146. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  147. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  148. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  149. package/lib/cjs/core-backend.d.ts +5 -3
  150. package/lib/cjs/core-backend.d.ts.map +1 -1
  151. package/lib/cjs/core-backend.js +5 -6
  152. package/lib/cjs/core-backend.js.map +1 -1
  153. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  154. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  155. package/lib/cjs/domains/GenericElements.js.map +1 -1
  156. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  157. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  158. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  159. package/lib/cjs/internal/ElementLRUCache.d.ts +28 -0
  160. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -0
  161. package/lib/cjs/internal/ElementLRUCache.js +120 -0
  162. package/lib/cjs/internal/ElementLRUCache.js.map +1 -0
  163. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  164. package/lib/cjs/internal/HubMock.js.map +1 -1
  165. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  166. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  167. package/lib/cjs/internal/NoLocks.js.map +1 -1
  168. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  169. package/lib/cjs/internal/Symbols.d.ts +1 -0
  170. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  171. package/lib/cjs/internal/Symbols.js +2 -1
  172. package/lib/cjs/internal/Symbols.js.map +1 -1
  173. package/lib/cjs/internal/cross-package.js.map +1 -1
  174. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  175. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  176. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  177. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  178. package/lib/cjs/rpc/multipart.js.map +1 -1
  179. package/lib/cjs/rpc/tracing.js.map +1 -1
  180. package/lib/cjs/rpc/web/logging.js.map +1 -1
  181. package/lib/cjs/rpc/web/request.js.map +1 -1
  182. package/lib/cjs/rpc/web/response.js.map +1 -1
  183. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  184. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +2 -2
  185. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  186. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  187. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  188. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  189. package/lib/cjs/workspace/Settings.js.map +1 -1
  190. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  191. package/lib/cjs/workspace/Workspace.js.map +1 -1
  192. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  193. package/lib/esm/BackendHubAccess.js.map +1 -1
  194. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  195. package/lib/esm/BisCoreSchema.js +1 -1
  196. package/lib/esm/BisCoreSchema.js.map +1 -1
  197. package/lib/esm/BlobContainerService.js.map +1 -1
  198. package/lib/esm/BriefcaseManager.d.ts +10 -2
  199. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  200. package/lib/esm/BriefcaseManager.js +12 -0
  201. package/lib/esm/BriefcaseManager.js.map +1 -1
  202. package/lib/esm/CatalogDb.js.map +1 -1
  203. package/lib/esm/Category.d.ts +41 -4
  204. package/lib/esm/Category.d.ts.map +1 -1
  205. package/lib/esm/Category.js +77 -4
  206. package/lib/esm/Category.js.map +1 -1
  207. package/lib/esm/ChangeSummaryManager.js +2 -2
  208. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  209. package/lib/esm/ChangedElementsDb.js.map +1 -1
  210. package/lib/esm/ChangesetECAdaptor.js +242 -242
  211. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  212. package/lib/esm/ChannelControl.js.map +1 -1
  213. package/lib/esm/CheckpointManager.js.map +1 -1
  214. package/lib/esm/ClassRegistry.js +5 -5
  215. package/lib/esm/ClassRegistry.js.map +1 -1
  216. package/lib/esm/CloudSqlite.js +1 -1
  217. package/lib/esm/CloudSqlite.js.map +1 -1
  218. package/lib/esm/CodeService.js.map +1 -1
  219. package/lib/esm/CodeSpecs.d.ts +1 -1
  220. package/lib/esm/CodeSpecs.js +1 -1
  221. package/lib/esm/CodeSpecs.js.map +1 -1
  222. package/lib/esm/ConcurrentQuery.js.map +1 -1
  223. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  224. package/lib/esm/DevTools.js.map +1 -1
  225. package/lib/esm/DisplayStyle.d.ts +9 -4
  226. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  227. package/lib/esm/DisplayStyle.js +30 -3
  228. package/lib/esm/DisplayStyle.js.map +1 -1
  229. package/lib/esm/ECDb.js.map +1 -1
  230. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  231. package/lib/esm/ECSqlStatement.js.map +1 -1
  232. package/lib/esm/Element.d.ts +216 -60
  233. package/lib/esm/Element.d.ts.map +1 -1
  234. package/lib/esm/Element.js +563 -62
  235. package/lib/esm/Element.js.map +1 -1
  236. package/lib/esm/ElementAspect.d.ts +7 -7
  237. package/lib/esm/ElementAspect.d.ts.map +1 -1
  238. package/lib/esm/ElementAspect.js +7 -7
  239. package/lib/esm/ElementAspect.js.map +1 -1
  240. package/lib/esm/ElementGraphics.js.map +1 -1
  241. package/lib/esm/ElementTreeWalker.js.map +1 -1
  242. package/lib/esm/Entity.d.ts +43 -3
  243. package/lib/esm/Entity.d.ts.map +1 -1
  244. package/lib/esm/Entity.js +59 -1
  245. package/lib/esm/Entity.js.map +1 -1
  246. package/lib/esm/EntityReferences.js.map +1 -1
  247. package/lib/esm/ExportGraphics.d.ts +54 -8
  248. package/lib/esm/ExportGraphics.d.ts.map +1 -1
  249. package/lib/esm/ExportGraphics.js +156 -58
  250. package/lib/esm/ExportGraphics.js.map +1 -1
  251. package/lib/esm/ExternalSource.js.map +1 -1
  252. package/lib/esm/FontFile.js.map +1 -1
  253. package/lib/esm/GeoCoordConfig.js.map +1 -1
  254. package/lib/esm/GeographicCRSServices.d.ts +6 -2
  255. package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
  256. package/lib/esm/GeographicCRSServices.js +1 -1
  257. package/lib/esm/GeographicCRSServices.js.map +1 -1
  258. package/lib/esm/GeometrySummary.js +47 -47
  259. package/lib/esm/GeometrySummary.js.map +1 -1
  260. package/lib/esm/IModelDb.d.ts +28 -43
  261. package/lib/esm/IModelDb.d.ts.map +1 -1
  262. package/lib/esm/IModelDb.js +180 -95
  263. package/lib/esm/IModelDb.js.map +1 -1
  264. package/lib/esm/IModelDbFonts.js.map +1 -1
  265. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  266. package/lib/esm/IModelHost.d.ts +13 -0
  267. package/lib/esm/IModelHost.d.ts.map +1 -1
  268. package/lib/esm/IModelHost.js +6 -0
  269. package/lib/esm/IModelHost.js.map +1 -1
  270. package/lib/esm/IModelJsFs.js.map +1 -1
  271. package/lib/esm/ImageSourceConversion.js.map +1 -1
  272. package/lib/esm/IpcHost.js.map +1 -1
  273. package/lib/esm/LineStyle.js.map +1 -1
  274. package/lib/esm/LocalHub.js +1 -1
  275. package/lib/esm/LocalHub.js.map +1 -1
  276. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  277. package/lib/esm/LockControl.js.map +1 -1
  278. package/lib/esm/Material.d.ts +19 -0
  279. package/lib/esm/Material.d.ts.map +1 -1
  280. package/lib/esm/Material.js +30 -1
  281. package/lib/esm/Material.js.map +1 -1
  282. package/lib/esm/Model.d.ts +64 -28
  283. package/lib/esm/Model.d.ts.map +1 -1
  284. package/lib/esm/Model.js +116 -28
  285. package/lib/esm/Model.js.map +1 -1
  286. package/lib/esm/NativeAppStorage.js.map +1 -1
  287. package/lib/esm/NativeHost.js.map +1 -1
  288. package/lib/esm/NavigationRelationship.js.map +1 -1
  289. package/lib/esm/PromiseMemoizer.js.map +1 -1
  290. package/lib/esm/PropertyStore.js.map +1 -1
  291. package/lib/esm/Relationship.js.map +1 -1
  292. package/lib/esm/RpcBackend.js.map +1 -1
  293. package/lib/esm/SQLiteDb.js.map +1 -1
  294. package/lib/esm/Schema.js.map +1 -1
  295. package/lib/esm/SchemaSync.js.map +1 -1
  296. package/lib/esm/SchemaUtils.js.map +1 -1
  297. package/lib/esm/SheetIndex.js.map +1 -1
  298. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  299. package/lib/esm/SqliteStatement.js.map +1 -1
  300. package/lib/esm/Texture.d.ts +1 -1
  301. package/lib/esm/Texture.js +1 -1
  302. package/lib/esm/Texture.js.map +1 -1
  303. package/lib/esm/TileStorage.js.map +1 -1
  304. package/lib/esm/TxnManager.d.ts +4 -4
  305. package/lib/esm/TxnManager.d.ts.map +1 -1
  306. package/lib/esm/TxnManager.js +2 -1
  307. package/lib/esm/TxnManager.js.map +1 -1
  308. package/lib/esm/ViewDefinition.d.ts +140 -14
  309. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  310. package/lib/esm/ViewDefinition.js +251 -15
  311. package/lib/esm/ViewDefinition.js.map +1 -1
  312. package/lib/esm/ViewStateHydrator.js +3 -3
  313. package/lib/esm/ViewStateHydrator.js.map +1 -1
  314. package/lib/esm/ViewStore.js.map +1 -1
  315. package/lib/esm/annotations/FrameGeometry.d.ts +52 -0
  316. package/lib/esm/annotations/FrameGeometry.d.ts.map +1 -0
  317. package/lib/esm/annotations/FrameGeometry.js +245 -0
  318. package/lib/esm/annotations/FrameGeometry.js.map +1 -0
  319. package/lib/esm/{TextAnnotationElement.d.ts → annotations/TextAnnotationElement.d.ts} +6 -11
  320. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -0
  321. package/lib/esm/{TextAnnotationElement.js → annotations/TextAnnotationElement.js} +22 -28
  322. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -0
  323. package/lib/esm/annotations/TextAnnotationGeometry.d.ts +31 -0
  324. package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  325. package/lib/esm/annotations/TextAnnotationGeometry.js +80 -0
  326. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -0
  327. package/lib/esm/annotations/TextBlockGeometry.d.ts +16 -0
  328. package/lib/esm/annotations/TextBlockGeometry.d.ts.map +1 -0
  329. package/lib/esm/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +11 -68
  330. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -0
  331. package/lib/esm/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +19 -7
  332. package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -0
  333. package/lib/esm/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +19 -7
  334. package/lib/esm/annotations/TextBlockLayout.js.map +1 -0
  335. package/lib/esm/core-backend.d.ts +5 -3
  336. package/lib/esm/core-backend.d.ts.map +1 -1
  337. package/lib/esm/core-backend.js +5 -3
  338. package/lib/esm/core-backend.js.map +1 -1
  339. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  340. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  341. package/lib/esm/domains/GenericElements.js.map +1 -1
  342. package/lib/esm/domains/GenericSchema.js.map +1 -1
  343. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  344. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  345. package/lib/esm/internal/ElementLRUCache.d.ts +28 -0
  346. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -0
  347. package/lib/esm/internal/ElementLRUCache.js +116 -0
  348. package/lib/esm/internal/ElementLRUCache.js.map +1 -0
  349. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  350. package/lib/esm/internal/HubMock.js.map +1 -1
  351. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  352. package/lib/esm/internal/NativePlatform.js.map +1 -1
  353. package/lib/esm/internal/NoLocks.js.map +1 -1
  354. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  355. package/lib/esm/internal/Symbols.d.ts +1 -0
  356. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  357. package/lib/esm/internal/Symbols.js +1 -0
  358. package/lib/esm/internal/Symbols.js.map +1 -1
  359. package/lib/esm/internal/cross-package.js.map +1 -1
  360. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  361. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  362. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  363. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  364. package/lib/esm/rpc/multipart.js.map +1 -1
  365. package/lib/esm/rpc/tracing.js.map +1 -1
  366. package/lib/esm/rpc/web/logging.js.map +1 -1
  367. package/lib/esm/rpc/web/request.js.map +1 -1
  368. package/lib/esm/rpc/web/response.js.map +1 -1
  369. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  370. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +2 -2
  371. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  372. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  373. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  374. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  375. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  376. package/lib/esm/test/AttachDb.test.js +11 -11
  377. package/lib/esm/test/AttachDb.test.js.map +1 -1
  378. package/lib/esm/test/ElementLRUCache.test.d.ts +2 -0
  379. package/lib/esm/test/ElementLRUCache.test.d.ts.map +1 -0
  380. package/lib/esm/test/ElementLRUCache.test.js +212 -0
  381. package/lib/esm/test/ElementLRUCache.test.js.map +1 -0
  382. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  383. package/lib/esm/test/IModelHost.test.js.map +1 -1
  384. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  385. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  386. package/lib/esm/test/IpcHost.test.js.map +1 -1
  387. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  388. package/lib/esm/test/PrintElementTree.js.map +1 -1
  389. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  390. package/lib/esm/test/RevisionUtility.js.map +1 -1
  391. package/lib/esm/test/SchemaUtils.test.js +25 -25
  392. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  393. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  394. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  395. package/lib/esm/test/TestUtils.js.map +1 -1
  396. package/lib/esm/test/annotations/TextAnnotation.test.js +190 -1025
  397. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  398. package/lib/esm/test/annotations/TextBlock.test.d.ts +2 -0
  399. package/lib/esm/test/annotations/TextBlock.test.d.ts.map +1 -0
  400. package/lib/esm/test/annotations/TextBlock.test.js +969 -0
  401. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -0
  402. package/lib/esm/test/categories/Category.test.js.map +1 -1
  403. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  404. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  405. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  406. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  407. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  408. package/lib/esm/test/ecdb/ECDb.test.js +86 -65
  409. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  410. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  411. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  412. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  413. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  414. package/lib/esm/test/ecdb/ECSqlQuery.test.js +7 -30
  415. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  416. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  417. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  418. package/lib/esm/test/ecdb/ECSqlStatement.test.js +292 -292
  419. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  420. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  421. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  422. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  423. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  424. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  425. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  426. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  427. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  428. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  429. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  430. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  431. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  432. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  433. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  434. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  435. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  436. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  437. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  438. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  439. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  440. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  441. package/lib/esm/test/imageData.js.map +1 -1
  442. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  443. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  444. package/lib/esm/test/imodel/IModel.test.js +68 -16
  445. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  446. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  447. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  448. package/lib/esm/test/index.js.map +1 -1
  449. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  450. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  451. package/lib/esm/test/misc/GeoServices.test.js +23 -9
  452. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  453. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  454. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  455. package/lib/esm/test/rpc/response.test.js.map +1 -1
  456. package/lib/esm/test/schema/ClassRegistry.test.js +71 -71
  457. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  458. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  459. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  460. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  461. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  462. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  463. package/lib/esm/test/standalone/ChangesetReader.test.js +28 -28
  464. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  465. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  466. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  467. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  468. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  469. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  470. package/lib/esm/test/standalone/ExportGraphics.test.js +67 -15
  471. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  472. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  473. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  474. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  475. package/lib/esm/test/standalone/IModelLimits.test.d.ts +2 -0
  476. package/lib/esm/test/standalone/IModelLimits.test.d.ts.map +1 -0
  477. package/lib/esm/test/standalone/IModelLimits.test.js +103 -0
  478. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -0
  479. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  480. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  481. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  482. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  483. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  484. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  485. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  486. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  487. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  488. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  489. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  490. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  491. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  492. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  493. package/lib/esm/test/standalone/SnapshotDb.test.js +20 -1
  494. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  495. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  496. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  497. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  498. package/lib/esm/test/standalone/TxnManager.test.js +1 -1
  499. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  500. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  501. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  502. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  503. package/lib/esm/workspace/Settings.js.map +1 -1
  504. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  505. package/lib/esm/workspace/Workspace.js.map +1 -1
  506. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  507. package/package.json +12 -12
  508. package/lib/cjs/TextAnnotationElement.d.ts.map +0 -1
  509. package/lib/cjs/TextAnnotationElement.js.map +0 -1
  510. package/lib/cjs/TextAnnotationGeometry.d.ts +0 -32
  511. package/lib/cjs/TextAnnotationGeometry.d.ts.map +0 -1
  512. package/lib/cjs/TextAnnotationGeometry.js.map +0 -1
  513. package/lib/cjs/TextAnnotationLayout.d.ts.map +0 -1
  514. package/lib/cjs/TextAnnotationLayout.js.map +0 -1
  515. package/lib/esm/TextAnnotationElement.d.ts.map +0 -1
  516. package/lib/esm/TextAnnotationElement.js.map +0 -1
  517. package/lib/esm/TextAnnotationGeometry.d.ts +0 -32
  518. package/lib/esm/TextAnnotationGeometry.d.ts.map +0 -1
  519. package/lib/esm/TextAnnotationGeometry.js.map +0 -1
  520. package/lib/esm/TextAnnotationLayout.d.ts.map +0 -1
  521. package/lib/esm/TextAnnotationLayout.js.map +0 -1
@@ -50,6 +50,7 @@ const IModelDbFontsImpl_1 = require("./internal/IModelDbFontsImpl");
50
50
  const Symbols_1 = require("./internal/Symbols");
51
51
  const ecschema_metadata_1 = require("@itwin/ecschema-metadata");
52
52
  const Schema_1 = require("./Schema");
53
+ const ElementLRUCache_1 = require("./internal/ElementLRUCache");
53
54
  // spell:ignore fontid fontmap
54
55
  const loggerCategory = BackendLoggerCategory_1.BackendLoggerCategory.IModelDb;
55
56
  /** @internal */
@@ -579,6 +580,8 @@ class IModelDb extends core_common_1.IModel {
579
580
  this._jsClassMap = undefined;
580
581
  this._schemaMap = undefined;
581
582
  this._schemaContext = undefined;
583
+ this.elements[Symbols_1._cache].clear();
584
+ this.models[Symbols_1._cache].clear();
582
585
  }
583
586
  /** Update the project extents for this iModel.
584
587
  * <p><em>Example:</em>
@@ -647,6 +650,9 @@ class IModelDb extends core_common_1.IModel {
647
650
  performCheckpoint() {
648
651
  if (!this.isReadonly) {
649
652
  this.saveChanges();
653
+ this.clearCaches();
654
+ this[Symbols_1._nativeDb].concurrentQueryShutdown();
655
+ this[Symbols_1._nativeDb].clearECDbCache();
650
656
  this[Symbols_1._nativeDb].performCheckpoint();
651
657
  }
652
658
  }
@@ -979,6 +985,24 @@ class IModelDb extends core_common_1.IModel {
979
985
  return ClassRegistry_1.ClassRegistry.getClass(classFullName, this);
980
986
  }
981
987
  }
988
+ /** Constructs a ResolveInstanceKeyArgs from given parameters
989
+ * @throws [[IModelError]] if the combination of supplied parameters is invalid.
990
+ * @internal
991
+ */
992
+ getInstanceArgs(instanceId, baseClassName, federationGuid, code) {
993
+ if (instanceId && baseClassName) {
994
+ return { partialKey: { id: instanceId, baseClassName } };
995
+ }
996
+ else if (federationGuid) {
997
+ return { federationGuid };
998
+ }
999
+ else if (code) {
1000
+ return { code };
1001
+ }
1002
+ else {
1003
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.InvalidId, "Either instanceId and baseClassName or federationGuid or code must be specified");
1004
+ }
1005
+ }
982
1006
  /** Get metadata for a class. This method will load the metadata from the iModel into the cache as a side-effect, if necessary.
983
1007
  * @throws [[IModelError]] if the metadata cannot be found nor loaded.
984
1008
  * @deprecated in 5.0. Please use `getSchemaItem` from `SchemaContext` class instead.
@@ -1457,10 +1481,13 @@ function processSchemaWriteStatus(status) {
1457
1481
  /** @public */
1458
1482
  (function (IModelDb) {
1459
1483
  /** The collection of models in an [[IModelDb]].
1460
- * @public
1484
+ * @public @preview
1461
1485
  */
1462
1486
  class Models {
1463
1487
  _iModel;
1488
+ _modelCacheSize = 10;
1489
+ /** @internal */
1490
+ [Symbols_1._cache] = new core_bentley_1.LRUMap(this._modelCacheSize);
1464
1491
  /** @internal */
1465
1492
  constructor(_iModel) {
1466
1493
  this._iModel = _iModel;
@@ -1471,7 +1498,10 @@ function processSchemaWriteStatus(status) {
1471
1498
  * @see tryGetModelProps
1472
1499
  */
1473
1500
  getModelProps(id) {
1474
- return this.getModelJson({ id });
1501
+ const model = this.tryGetModelProps(id);
1502
+ if (undefined === model)
1503
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `Model=${id}`);
1504
+ return model;
1475
1505
  }
1476
1506
  /** Get the ModelProps with the specified identifier.
1477
1507
  * @param modelId The Model identifier.
@@ -1481,7 +1511,25 @@ function processSchemaWriteStatus(status) {
1481
1511
  * @see getModelProps
1482
1512
  */
1483
1513
  tryGetModelProps(id) {
1484
- return this.tryGetModelJson({ id });
1514
+ try {
1515
+ if (IModelHost_1.IModelHost.configuration?.disableThinnedNativeInstanceWorkflow) {
1516
+ return this._iModel[Symbols_1._nativeDb].getModel({ id });
1517
+ }
1518
+ const cachedMdl = this[Symbols_1._cache].get(id);
1519
+ if (cachedMdl) {
1520
+ return cachedMdl;
1521
+ }
1522
+ const options = { useJsNames: true };
1523
+ const instanceKey = this.resolveModelKey({ id });
1524
+ const rawInstance = this._iModel[Symbols_1._nativeDb].readInstance(instanceKey, options);
1525
+ const classDef = this._iModel.getJsClass(rawInstance.classFullName);
1526
+ const modelProps = classDef.deserialize({ row: rawInstance, iModel: this._iModel });
1527
+ this[Symbols_1._cache].set(id, modelProps);
1528
+ return modelProps;
1529
+ }
1530
+ catch {
1531
+ return undefined;
1532
+ }
1485
1533
  }
1486
1534
  /** Query for the last modified time for a [[Model]].
1487
1535
  * @param modelId The Id of the model.
@@ -1528,32 +1576,22 @@ function processSchemaWriteStatus(status) {
1528
1576
  return model; // modelClass was not specified, cannot call instanceof to validate
1529
1577
  return model instanceof modelClass ? model : undefined;
1530
1578
  }
1531
- /** Read the properties for a Model as a json string.
1532
- * @param modelIdArg a json string with the identity of the model to load. Must have either "id" or "code".
1533
- * @returns a json string with the properties of the model.
1534
- * @throws [[IModelError]] if the model is not found or cannot be loaded.
1535
- * @see tryGetModelJson
1536
- * @internal
1537
- */
1538
- getModelJson(modelIdArg) {
1539
- const modelJson = this.tryGetModelJson(modelIdArg);
1540
- if (undefined === modelJson) {
1541
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `Model=(id: ${modelIdArg.id}, code: ${modelIdArg.code})`);
1579
+ resolveModelKey(modelIdArg) {
1580
+ const baseClassName = "BisCore:Model";
1581
+ let args;
1582
+ if (modelIdArg.id) {
1583
+ args = { partialKey: { id: modelIdArg.id, baseClassName } };
1542
1584
  }
1543
- return modelJson;
1544
- }
1545
- /** Read the properties for a Model as a json string.
1546
- * @param modelIdArg a json string with the identity of the model to load. Must have either "id" or "code".
1547
- * @returns a json string with the properties of the model or `undefined` if the model is not found.
1548
- * @see getModelJson
1549
- */
1550
- tryGetModelJson(modelIdArg) {
1551
- try {
1552
- return this._iModel[Symbols_1._nativeDb].getModel(modelIdArg);
1585
+ else if (modelIdArg.code) {
1586
+ const modelId = this._iModel.elements.getElementProps({ code: modelIdArg.code }).id;
1587
+ if (!modelId)
1588
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `Model not found with code: [spec:${modelIdArg.code.spec}, scope:${modelIdArg.code.scope}, value:${modelIdArg.code.value}])`);
1589
+ args = { partialKey: { id: modelId, baseClassName } };
1553
1590
  }
1554
- catch {
1555
- return undefined;
1591
+ else {
1592
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.InvalidId, `Invalid model identifier: ${JSON.stringify(modelIdArg)}`);
1556
1593
  }
1594
+ return this._iModel[Symbols_1._nativeDb].resolveInstanceKey(args);
1557
1595
  }
1558
1596
  /** Get the sub-model of the specified Element.
1559
1597
  * See [[IModelDb.Elements.queryElementIdByCode]] for more on how to find an element by Code.
@@ -1597,7 +1635,9 @@ function processSchemaWriteStatus(status) {
1597
1635
  return props.id = this._iModel[Symbols_1._nativeDb].insertModel(props);
1598
1636
  }
1599
1637
  catch (err) {
1600
- throw new core_common_1.IModelError(err.errorNumber, `Error inserting model [${err.message}], class=${props.classFullName}`);
1638
+ const error = new core_common_1.IModelError(err.errorNumber, `Error inserting model [${err.message}], class=${props.classFullName}`);
1639
+ error.cause = err;
1640
+ throw error;
1601
1641
  }
1602
1642
  }
1603
1643
  /** Update an existing model.
@@ -1606,10 +1646,14 @@ function processSchemaWriteStatus(status) {
1606
1646
  */
1607
1647
  updateModel(props) {
1608
1648
  try {
1649
+ if (props.id)
1650
+ this[Symbols_1._cache].delete(props.id);
1609
1651
  this._iModel[Symbols_1._nativeDb].updateModel(props);
1610
1652
  }
1611
1653
  catch (err) {
1612
- throw new core_common_1.IModelError(err.errorNumber, `error updating model [${err.message}] id=${props.id}`);
1654
+ const error = new core_common_1.IModelError(err.errorNumber, `Error updating model [${err.message}], id: ${props.id}`);
1655
+ error.cause = err;
1656
+ throw error;
1613
1657
  }
1614
1658
  }
1615
1659
  /** Mark the geometry of [[GeometricModel]] as having changed, by recording an indirect change to its GeometryGuid property.
@@ -1622,9 +1666,10 @@ function processSchemaWriteStatus(status) {
1622
1666
  * @see [[TxnManager.onModelGeometryChanged]] for the event emitted in response to such a change.
1623
1667
  */
1624
1668
  updateGeometryGuid(modelId) {
1669
+ this._iModel.models[Symbols_1._cache].delete(modelId);
1625
1670
  const error = this._iModel[Symbols_1._nativeDb].updateModelGeometryGuid(modelId);
1626
1671
  if (error !== core_bentley_1.IModelStatus.Success)
1627
- throw new core_common_1.IModelError(error, `updating geometry guid for model ${modelId}`);
1672
+ throw new core_common_1.IModelError(error, `Error updating geometry guid for model ${modelId}`);
1628
1673
  }
1629
1674
  /** Delete one or more existing models.
1630
1675
  * @param ids The Ids of the models to be deleted
@@ -1633,10 +1678,13 @@ function processSchemaWriteStatus(status) {
1633
1678
  deleteModel(ids) {
1634
1679
  core_bentley_1.Id64.toIdSet(ids).forEach((id) => {
1635
1680
  try {
1681
+ this[Symbols_1._cache].delete(id);
1636
1682
  this._iModel[Symbols_1._nativeDb].deleteModel(id);
1637
1683
  }
1638
1684
  catch (err) {
1639
- throw new core_common_1.IModelError(err.errorNumber, `error deleting model [${err.message}] id ${id}`);
1685
+ const error = new core_common_1.IModelError(err.errorNumber, `Error deleting model [${err.message}], id: ${id}`);
1686
+ error.cause = err;
1687
+ throw error;
1640
1688
  }
1641
1689
  });
1642
1690
  }
@@ -1666,10 +1714,13 @@ function processSchemaWriteStatus(status) {
1666
1714
  }
1667
1715
  IModelDb.Models = Models;
1668
1716
  /** The collection of elements in an [[IModelDb]].
1669
- * @public
1717
+ * @public @preview
1670
1718
  */
1671
1719
  class Elements {
1672
1720
  _iModel;
1721
+ _elementCacheSize = 50;
1722
+ /** @internal */
1723
+ [Symbols_1._cache] = new ElementLRUCache_1.ElementLRUCache(this._elementCacheSize);
1673
1724
  /** @internal */
1674
1725
  constructor(_iModel) {
1675
1726
  this._iModel = _iModel;
@@ -1686,50 +1737,40 @@ function processSchemaWriteStatus(status) {
1686
1737
  return !stmt.nextRow() ? undefined : stmt.getValueId(0);
1687
1738
  }) : undefined;
1688
1739
  }
1689
- /** Read element data from the iModel as JSON
1690
- * @param elementIdArg a json string with the identity of the element to load. Must have one of "id", "federationGuid", or "code".
1691
- * @returns The JSON properties of the element.
1692
- * @throws [[IModelError]] if the element is not found or cannot be loaded.
1693
- * @see tryGetElementJson
1694
- * @internal
1695
- */
1696
- getElementJson(elementId) {
1697
- const elementProps = this.tryGetElementJson(elementId);
1698
- if (undefined === elementProps)
1699
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `reading element={id: ${elementId.id} federationGuid: ${elementId.federationGuid}, code: ${elementId.code}}`);
1700
- return elementProps;
1701
- }
1702
- /** Read element data from the iModel as JSON
1703
- * @param loadProps - a json string with the identity of the element to load. Must have one of "id", "federationGuid", or "code".
1704
- * @returns The JSON properties of the element or `undefined` if the element is not found.
1705
- * @throws [[IModelError]] if the element exists, but cannot be loaded.
1706
- * @see getElementJson
1707
- */
1708
- tryGetElementJson(loadProps) {
1709
- try {
1710
- return this._iModel[Symbols_1._nativeDb].getElement(loadProps);
1711
- }
1712
- catch {
1713
- return undefined;
1714
- }
1715
- }
1716
1740
  /** Get properties of an Element by Id, FederationGuid, or Code
1717
1741
  * @throws [[IModelError]] if the element is not found or cannot be loaded.
1718
1742
  * @see tryGetElementProps
1719
1743
  */
1720
1744
  getElementProps(props) {
1745
+ const elProp = this.tryGetElementProps(props);
1746
+ if (undefined === elProp)
1747
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `element not found`);
1748
+ return elProp;
1749
+ }
1750
+ resolveElementKey(props) {
1751
+ const baseClassName = "BisCore:Element";
1752
+ let args;
1721
1753
  if (typeof props === "string") {
1722
- props = core_bentley_1.Id64.isId64(props) ? { id: props } : { federationGuid: props };
1754
+ args = core_bentley_1.Id64.isId64(props) ? { partialKey: { id: props, baseClassName } } : { federationGuid: props };
1723
1755
  }
1724
1756
  else if (props instanceof core_common_1.Code) {
1725
- props = { code: props };
1757
+ args = { code: props };
1726
1758
  }
1727
- try {
1728
- return this._iModel[Symbols_1._nativeDb].getElement(props);
1729
- }
1730
- catch (err) {
1731
- throw new core_common_1.IModelError(err.errorNumber, err.message);
1759
+ else {
1760
+ if (props.id) {
1761
+ args = { partialKey: { id: props.id, baseClassName } };
1762
+ }
1763
+ else if (props.federationGuid) {
1764
+ args = { federationGuid: props.federationGuid };
1765
+ }
1766
+ else if (props.code) {
1767
+ args = { code: props.code };
1768
+ }
1769
+ else {
1770
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.InvalidId, "Element Id or FederationGuid or Code is required");
1771
+ }
1732
1772
  }
1773
+ return this._iModel[Symbols_1._nativeDb].resolveInstanceKey(args);
1733
1774
  }
1734
1775
  /** Get properties of an Element by Id, FederationGuid, or Code
1735
1776
  * @returns The properties of the element or `undefined` if the element is not found.
@@ -1737,14 +1778,32 @@ function processSchemaWriteStatus(status) {
1737
1778
  * @note Useful for cases when an element may or may not exist and throwing an `Error` would be overkill.
1738
1779
  * @see getElementProps
1739
1780
  */
1740
- tryGetElementProps(elementId) {
1741
- if (typeof elementId === "string") {
1742
- elementId = core_bentley_1.Id64.isId64(elementId) ? { id: elementId } : { federationGuid: elementId };
1781
+ tryGetElementProps(props) {
1782
+ if (typeof props === "string") {
1783
+ props = core_bentley_1.Id64.isId64(props) ? { id: props } : { federationGuid: props };
1743
1784
  }
1744
- else if (elementId instanceof core_common_1.Code) {
1745
- elementId = { code: elementId };
1785
+ else if (props instanceof core_common_1.Code) {
1786
+ props = { code: props };
1787
+ }
1788
+ try {
1789
+ if (IModelHost_1.IModelHost.configuration?.disableThinnedNativeInstanceWorkflow) {
1790
+ return this._iModel[Symbols_1._nativeDb].getElement(props);
1791
+ }
1792
+ const cachedElm = this[Symbols_1._cache].get(props);
1793
+ if (cachedElm) {
1794
+ return cachedElm.elProps;
1795
+ }
1796
+ const options = { ...props, useJsNames: true };
1797
+ const instanceKey = this.resolveElementKey(props);
1798
+ const rawInstance = this._iModel[Symbols_1._nativeDb].readInstance(instanceKey, options);
1799
+ const classDef = this._iModel.getJsClass(rawInstance.classFullName);
1800
+ const elementProps = classDef.deserialize({ row: rawInstance, iModel: this._iModel, options: { element: props } });
1801
+ this[Symbols_1._cache].set({ elProps: elementProps, loadOptions: props });
1802
+ return elementProps;
1803
+ }
1804
+ catch {
1805
+ return undefined;
1746
1806
  }
1747
- return this.tryGetElementJson(elementId);
1748
1807
  }
1749
1808
  /** Get an element by Id, FederationGuid, or Code
1750
1809
  * @param elementId either the element's Id, Code, or FederationGuid, or an ElementLoadProps
@@ -1777,7 +1836,7 @@ function processSchemaWriteStatus(status) {
1777
1836
  elementId = { code: elementId };
1778
1837
  else
1779
1838
  elementId.onlyBaseProperties = false; // we must load all properties to construct the element.
1780
- const elementProps = this.tryGetElementJson(elementId);
1839
+ const elementProps = this.tryGetElementProps(elementId);
1781
1840
  if (undefined === elementProps)
1782
1841
  return undefined; // no Element with that elementId found
1783
1842
  const element = this._iModel.constructEntity(elementProps);
@@ -1833,7 +1892,7 @@ function processSchemaWriteStatus(status) {
1833
1892
  /** Insert a new element into the iModel.
1834
1893
  * @param elProps The properties of the new element.
1835
1894
  * @returns The newly inserted element's Id.
1836
- * @throws [[IModelError]] if unable to insert the element.
1895
+ * @throws [[ITwinError]] if unable to insert the element.
1837
1896
  * @note For convenience, the value of `elProps.id` is updated to reflect the resultant element's id.
1838
1897
  * However when `elProps.federationGuid` is not present or undefined, a new Guid will be generated and stored on the resultant element. But
1839
1898
  * the value of `elProps.federationGuid` is *not* updated. Generally, it is best to re-read the element after inserting (e.g. via [[getElementProps]])
@@ -1841,6 +1900,11 @@ function processSchemaWriteStatus(status) {
1841
1900
  */
1842
1901
  insertElement(elProps, options) {
1843
1902
  try {
1903
+ this[Symbols_1._cache].delete({
1904
+ id: elProps.id,
1905
+ federationGuid: elProps.federationGuid,
1906
+ code: elProps.code,
1907
+ });
1844
1908
  return elProps.id = this._iModel[Symbols_1._nativeDb].insertElement(elProps, options);
1845
1909
  }
1846
1910
  catch (err) {
@@ -1858,10 +1922,15 @@ function processSchemaWriteStatus(status) {
1858
1922
  * @param elProps the properties of the element to update.
1859
1923
  * @note The values of `classFullName` and `model` *may not be changed* by this method. Further, it will permute the `elProps` object by adding or
1860
1924
  * overwriting their values to the correct values.
1861
- * @throws [[IModelError]] if unable to update the element.
1925
+ * @throws [[ITwinError]] if unable to update the element.
1862
1926
  */
1863
1927
  updateElement(elProps) {
1864
1928
  try {
1929
+ this[Symbols_1._cache].delete({
1930
+ id: elProps.id,
1931
+ federationGuid: elProps.federationGuid,
1932
+ code: elProps.code,
1933
+ });
1865
1934
  this._iModel[Symbols_1._nativeDb].updateElement(elProps);
1866
1935
  }
1867
1936
  catch (err) {
@@ -1872,13 +1941,14 @@ function processSchemaWriteStatus(status) {
1872
1941
  }
1873
1942
  /** Delete one or more elements from this iModel.
1874
1943
  * @param ids The set of Ids of the element(s) to be deleted
1875
- * @throws [[IModelError]]
1944
+ * @throws [[ITwinError]]
1876
1945
  * @see deleteDefinitionElements
1877
1946
  */
1878
1947
  deleteElement(ids) {
1879
1948
  const iModel = this._iModel;
1880
1949
  core_bentley_1.Id64.toIdSet(ids).forEach((id) => {
1881
1950
  try {
1951
+ this[Symbols_1._cache].delete({ id });
1882
1952
  iModel[Symbols_1._nativeDb].deleteElement(id);
1883
1953
  }
1884
1954
  catch (err) {
@@ -2098,9 +2168,9 @@ function processSchemaWriteStatus(status) {
2098
2168
  */
2099
2169
  getAspects(elementId, aspectClassFullName, excludedClassFullNames) {
2100
2170
  if (aspectClassFullName === undefined) {
2101
- const allAspects = this.runInstanceQuery(`SELECT $ FROM (
2102
- SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
2103
- UNION ALL
2171
+ const allAspects = this.runInstanceQuery(`SELECT $ FROM (
2172
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
2173
+ UNION ALL
2104
2174
  SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
2105
2175
  if (allAspects.length === 0)
2106
2176
  core_bentley_1.Logger.logInfo(BackendLoggerCategory_1.BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
@@ -2120,7 +2190,7 @@ function processSchemaWriteStatus(status) {
2120
2190
  if (classIdList === undefined) {
2121
2191
  const classIds = [];
2122
2192
  // eslint-disable-next-line @typescript-eslint/no-deprecated
2123
- this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
2193
+ this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
2124
2194
  and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name='${fullClassName[0]}')) and SourceECInstanceId != TargetECInstanceId`,
2125
2195
  // eslint-disable-next-line @typescript-eslint/no-deprecated
2126
2196
  (statement) => {
@@ -2137,10 +2207,10 @@ function processSchemaWriteStatus(status) {
2137
2207
  return [];
2138
2208
  }
2139
2209
  // Execute an instance query to retrieve all aspects from all the derived classes
2140
- const aspects = this.runInstanceQuery(`SELECT $ FROM (
2141
- SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
2142
- UNION ALL
2143
- SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
2210
+ const aspects = this.runInstanceQuery(`SELECT $ FROM (
2211
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
2212
+ UNION ALL
2213
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
2144
2214
  ) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
2145
2215
  if (aspects.length === 0)
2146
2216
  core_bentley_1.Logger.logInfo(BackendLoggerCategory_1.BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
@@ -2158,7 +2228,9 @@ function processSchemaWriteStatus(status) {
2158
2228
  return this._iModel[Symbols_1._nativeDb].insertElementAspect(aspectProps);
2159
2229
  }
2160
2230
  catch (err) {
2161
- throw new core_common_1.IModelError(err.errorNumber, `Error inserting ElementAspect [${err.message}], class: ${aspectProps.classFullName}`);
2231
+ const error = new core_common_1.IModelError(err.errorNumber, `Error inserting ElementAspect [${err.message}], class: ${aspectProps.classFullName}`, aspectProps);
2232
+ error.cause = err;
2233
+ throw error;
2162
2234
  }
2163
2235
  }
2164
2236
  /** Update an exist ElementAspect within the iModel.
@@ -2170,7 +2242,9 @@ function processSchemaWriteStatus(status) {
2170
2242
  this._iModel[Symbols_1._nativeDb].updateElementAspect(aspectProps);
2171
2243
  }
2172
2244
  catch (err) {
2173
- throw new core_common_1.IModelError(err.errorNumber, `Error updating ElementAspect [${err.message}], id: ${aspectProps.id}`);
2245
+ const error = new core_common_1.IModelError(err.errorNumber, `Error updating ElementAspect [${err.message}], id: ${aspectProps.id}`, aspectProps);
2246
+ error.cause = err;
2247
+ throw error;
2174
2248
  }
2175
2249
  }
2176
2250
  /** Delete one or more ElementAspects from this iModel.
@@ -2184,14 +2258,16 @@ function processSchemaWriteStatus(status) {
2184
2258
  iModel[Symbols_1._nativeDb].deleteElementAspect(aspectInstanceId);
2185
2259
  }
2186
2260
  catch (err) {
2187
- throw new core_common_1.IModelError(err.errorNumber, `Error deleting ElementAspect [${err.message}], id: ${aspectInstanceId}`);
2261
+ const error = new core_common_1.IModelError(err.errorNumber, `Error deleting ElementAspect [${err.message}], id: ${aspectInstanceId}`);
2262
+ error.cause = err;
2263
+ throw error;
2188
2264
  }
2189
2265
  });
2190
2266
  }
2191
2267
  }
2192
2268
  IModelDb.Elements = Elements;
2193
2269
  /** The collection of views in an [[IModelDb]].
2194
- * @public
2270
+ * @public @preview
2195
2271
  */
2196
2272
  class Views {
2197
2273
  _iModel;
@@ -2217,7 +2293,7 @@ function processSchemaWriteStatus(status) {
2217
2293
  if (undefined === props) {
2218
2294
  const propsString = this._iModel.queryFilePropertyString(Views.viewStoreProperty);
2219
2295
  if (!propsString)
2220
- throw new Error("iModel does not have a default ViewStore");
2296
+ core_common_1.ViewStoreError.throwError("no-viewstore", { message: "iModel does not have a default ViewStore" });
2221
2297
  props = JSON.parse(propsString);
2222
2298
  }
2223
2299
  const accessToken = await CloudSqlite_1.CloudSqlite.requestToken({
@@ -2338,7 +2414,7 @@ function processSchemaWriteStatus(status) {
2338
2414
  }
2339
2415
  getViewThumbnailArg(viewDefinitionId) {
2340
2416
  if (!core_bentley_1.Id64.isValid(viewDefinitionId))
2341
- throw new Error("illegal thumbnail id");
2417
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, "illegal thumbnail id");
2342
2418
  return { namespace: "dgn_View", name: "Thumbnail", id: viewDefinitionId };
2343
2419
  }
2344
2420
  /** Get the thumbnail for a view.
@@ -2381,9 +2457,9 @@ function processSchemaWriteStatus(status) {
2381
2457
  }
2382
2458
  IModelDb.Views = Views;
2383
2459
  /** Represents the current state of a pollable tile content request.
2384
- * Note: lack of a "completed" state because polling a completed request returns the content as a Uint8Array.
2385
- * @internal
2386
- */
2460
+ * Note: lack of a "completed" state because polling a completed request returns the content as a Uint8Array.
2461
+ * @internal
2462
+ */
2387
2463
  let TileContentState;
2388
2464
  (function (TileContentState) {
2389
2465
  TileContentState[TileContentState["New"] = 0] = "New";
@@ -2632,6 +2708,7 @@ class BriefcaseDb extends IModelDb {
2632
2708
  touch.sync(briefcaseDb.watchFilePathName);
2633
2709
  // Restart default txn to trigger events when watch file is changed by some other process.
2634
2710
  const watcher = fs.watch(briefcaseDb.watchFilePathName, { persistent: false }, () => {
2711
+ nativeDb.clearECDbCache();
2635
2712
  nativeDb.restartDefaultTxn();
2636
2713
  briefcaseDb.changeset = briefcaseDb[Symbols_1._nativeDb].getCurrentChangeset();
2637
2714
  });
@@ -3045,6 +3122,10 @@ class SnapshotDb extends IModelDb {
3045
3122
  snapshotDb.channels.addAllowedChannel(ChannelControl_1.ChannelControl.sharedChannelName);
3046
3123
  if (options.createClassViews)
3047
3124
  snapshotDb._createClassViewsOnClose = true; // save flag that will be checked when close() is called
3125
+ if (options.geographicCoordinateSystem)
3126
+ snapshotDb.setGeographicCoordinateSystem(options.geographicCoordinateSystem);
3127
+ if (options.ecefLocation)
3128
+ snapshotDb.setEcefLocation(options.ecefLocation);
3048
3129
  return snapshotDb;
3049
3130
  }
3050
3131
  /** Create a local [Snapshot]($docs/learning/backend/AccessingIModels.md#snapshot-imodels) iModel file, using this iModel as a *seed* or starting point.
@@ -3200,6 +3281,10 @@ class StandaloneDb extends BriefcaseDb {
3200
3281
  nativeDb.resetBriefcaseId(core_common_1.BriefcaseIdValue.Unassigned);
3201
3282
  nativeDb.saveChanges();
3202
3283
  const db = new this({ nativeDb, key: core_bentley_1.Guid.createValue(), briefcaseId: core_common_1.BriefcaseIdValue.Unassigned, openMode: core_bentley_1.OpenMode.ReadWrite });
3284
+ if (args.geographicCoordinateSystem)
3285
+ db.setGeographicCoordinateSystem(args.geographicCoordinateSystem);
3286
+ if (args.ecefLocation)
3287
+ db.setEcefLocation(args.ecefLocation);
3203
3288
  db.channels.addAllowedChannel(ChannelControl_1.ChannelControl.sharedChannelName);
3204
3289
  return db;
3205
3290
  }