@itwin/core-backend 5.12.0-dev.9 → 5.13.0-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/BlobContainerService.js.map +1 -1
  6. package/lib/cjs/BriefcaseManager.js.map +1 -1
  7. package/lib/cjs/CatalogDb.js.map +1 -1
  8. package/lib/cjs/Category.js.map +1 -1
  9. package/lib/cjs/ChangeSummaryManager.js +2 -2
  10. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  11. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  12. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  13. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  14. package/lib/cjs/ChangesetReader.js +3 -3
  15. package/lib/cjs/ChangesetReader.js.map +1 -1
  16. package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
  17. package/lib/cjs/ChannelControl.js.map +1 -1
  18. package/lib/cjs/CheckpointManager.js.map +1 -1
  19. package/lib/cjs/ClassRegistry.d.ts.map +1 -1
  20. package/lib/cjs/ClassRegistry.js +6 -7
  21. package/lib/cjs/ClassRegistry.js.map +1 -1
  22. package/lib/cjs/CloudSqlite.js.map +1 -1
  23. package/lib/cjs/CodeService.js.map +1 -1
  24. package/lib/cjs/CodeSpecs.js.map +1 -1
  25. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  26. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  27. package/lib/cjs/DevTools.js.map +1 -1
  28. package/lib/cjs/DisplayStyle.js.map +1 -1
  29. package/lib/cjs/ECDb.d.ts.map +1 -1
  30. package/lib/cjs/ECDb.js +8 -3
  31. package/lib/cjs/ECDb.js.map +1 -1
  32. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  33. package/lib/cjs/ECSqlRowExecutor.d.ts +23 -10
  34. package/lib/cjs/ECSqlRowExecutor.d.ts.map +1 -1
  35. package/lib/cjs/ECSqlRowExecutor.js +77 -15
  36. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  37. package/lib/cjs/ECSqlStatement.js.map +1 -1
  38. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  39. package/lib/cjs/EditTxn.js.map +1 -1
  40. package/lib/cjs/Element.js.map +1 -1
  41. package/lib/cjs/ElementAspect.js.map +1 -1
  42. package/lib/cjs/ElementGraphics.js.map +1 -1
  43. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  44. package/lib/cjs/Entity.js.map +1 -1
  45. package/lib/cjs/EntityReferences.js.map +1 -1
  46. package/lib/cjs/ExportGraphics.js.map +1 -1
  47. package/lib/cjs/ExternalSource.js.map +1 -1
  48. package/lib/cjs/FontFile.js.map +1 -1
  49. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  50. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  51. package/lib/cjs/GeometrySummary.js +47 -47
  52. package/lib/cjs/GeometrySummary.js.map +1 -1
  53. package/lib/cjs/IModelDb.d.ts +20 -8
  54. package/lib/cjs/IModelDb.d.ts.map +1 -1
  55. package/lib/cjs/IModelDb.js +91 -62
  56. package/lib/cjs/IModelDb.js.map +1 -1
  57. package/lib/cjs/IModelDbFonts.js.map +1 -1
  58. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  59. package/lib/cjs/IModelHost.js.map +1 -1
  60. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  61. package/lib/cjs/IModelJsFs.js.map +1 -1
  62. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  63. package/lib/cjs/IpcHost.d.ts +26 -0
  64. package/lib/cjs/IpcHost.d.ts.map +1 -1
  65. package/lib/cjs/IpcHost.js +68 -61
  66. package/lib/cjs/IpcHost.js.map +1 -1
  67. package/lib/cjs/LineStyle.js.map +1 -1
  68. package/lib/cjs/LocalHub.js +1 -1
  69. package/lib/cjs/LocalHub.js.map +1 -1
  70. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  71. package/lib/cjs/LockControl.js.map +1 -1
  72. package/lib/cjs/Material.js.map +1 -1
  73. package/lib/cjs/Model.js.map +1 -1
  74. package/lib/cjs/NativeAppStorage.js.map +1 -1
  75. package/lib/cjs/NativeHost.js.map +1 -1
  76. package/lib/cjs/NavigationRelationship.js.map +1 -1
  77. package/lib/cjs/PartialChangeUnifier.js +7 -7
  78. package/lib/cjs/PartialChangeUnifier.js.map +1 -1
  79. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  80. package/lib/cjs/PropertyStore.js.map +1 -1
  81. package/lib/cjs/Relationship.d.ts.map +1 -1
  82. package/lib/cjs/Relationship.js +13 -7
  83. package/lib/cjs/Relationship.js.map +1 -1
  84. package/lib/cjs/RpcBackend.js.map +1 -1
  85. package/lib/cjs/SQLiteDb.d.ts +43 -0
  86. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  87. package/lib/cjs/SQLiteDb.js +51 -0
  88. package/lib/cjs/SQLiteDb.js.map +1 -1
  89. package/lib/cjs/Schema.js.map +1 -1
  90. package/lib/cjs/SchemaSync.js.map +1 -1
  91. package/lib/cjs/SchemaUtils.js.map +1 -1
  92. package/lib/cjs/SheetIndex.js.map +1 -1
  93. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  94. package/lib/cjs/SqliteStatement.js.map +1 -1
  95. package/lib/cjs/StashManager.js.map +1 -1
  96. package/lib/cjs/Texture.js.map +1 -1
  97. package/lib/cjs/TileStorage.js.map +1 -1
  98. package/lib/cjs/TxnManager.js.map +1 -1
  99. package/lib/cjs/ViewDefinition.js.map +1 -1
  100. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  101. package/lib/cjs/ViewStore.js +1 -1
  102. package/lib/cjs/ViewStore.js.map +1 -1
  103. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  104. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  105. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  106. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  107. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  108. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  109. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  110. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  111. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +36 -36
  112. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +28 -28
  113. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  114. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  115. package/lib/cjs/core-backend.js.map +1 -1
  116. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  117. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  118. package/lib/cjs/domains/GenericElements.js.map +1 -1
  119. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  120. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  121. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  122. package/lib/cjs/internal/ECSqlInstanceReshaper.d.ts +23 -0
  123. package/lib/cjs/internal/ECSqlInstanceReshaper.d.ts.map +1 -0
  124. package/lib/cjs/internal/ECSqlInstanceReshaper.js +125 -0
  125. package/lib/cjs/internal/ECSqlInstanceReshaper.js.map +1 -0
  126. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  127. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  128. package/lib/cjs/internal/HubMock.js.map +1 -1
  129. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  130. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  131. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  132. package/lib/cjs/internal/NoLocks.js.map +1 -1
  133. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  134. package/lib/cjs/internal/ServerBasedLocks.js +33 -33
  135. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  136. package/lib/cjs/internal/Symbols.js.map +1 -1
  137. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  138. package/lib/cjs/internal/annotations/fields.js +9 -4
  139. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  140. package/lib/cjs/internal/cross-package.js.map +1 -1
  141. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  142. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  143. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  144. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  145. package/lib/cjs/internal/workspace/WorkspaceImpl.js +12 -1
  146. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  147. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  148. package/lib/cjs/rpc/multipart.js.map +1 -1
  149. package/lib/cjs/rpc/tracing.js.map +1 -1
  150. package/lib/cjs/rpc/web/logging.js.map +1 -1
  151. package/lib/cjs/rpc/web/request.js.map +1 -1
  152. package/lib/cjs/rpc/web/response.js.map +1 -1
  153. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  154. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  155. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  156. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  157. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  158. package/lib/cjs/workspace/Settings.js.map +1 -1
  159. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  160. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  161. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  162. package/lib/cjs/workspace/Workspace.d.ts +2 -0
  163. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  164. package/lib/cjs/workspace/Workspace.js.map +1 -1
  165. package/lib/cjs/workspace/WorkspaceEditor.d.ts +3 -0
  166. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  167. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  168. package/lib/esm/BackendHubAccess.js.map +1 -1
  169. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  170. package/lib/esm/BisCoreSchema.js.map +1 -1
  171. package/lib/esm/BlobContainerService.js.map +1 -1
  172. package/lib/esm/BriefcaseManager.js.map +1 -1
  173. package/lib/esm/CatalogDb.js.map +1 -1
  174. package/lib/esm/Category.js.map +1 -1
  175. package/lib/esm/ChangeSummaryManager.js +2 -2
  176. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  177. package/lib/esm/ChangedElementsDb.js.map +1 -1
  178. package/lib/esm/ChangesetECAdaptor.js +248 -248
  179. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  180. package/lib/esm/ChangesetReader.js +3 -3
  181. package/lib/esm/ChangesetReader.js.map +1 -1
  182. package/lib/esm/ChangesetReaderTypes.js.map +1 -1
  183. package/lib/esm/ChannelControl.js.map +1 -1
  184. package/lib/esm/CheckpointManager.js.map +1 -1
  185. package/lib/esm/ClassRegistry.d.ts.map +1 -1
  186. package/lib/esm/ClassRegistry.js +6 -7
  187. package/lib/esm/ClassRegistry.js.map +1 -1
  188. package/lib/esm/CloudSqlite.js.map +1 -1
  189. package/lib/esm/CodeService.js.map +1 -1
  190. package/lib/esm/CodeSpecs.js.map +1 -1
  191. package/lib/esm/ConcurrentQuery.js.map +1 -1
  192. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  193. package/lib/esm/DevTools.js.map +1 -1
  194. package/lib/esm/DisplayStyle.js.map +1 -1
  195. package/lib/esm/ECDb.d.ts.map +1 -1
  196. package/lib/esm/ECDb.js +9 -4
  197. package/lib/esm/ECDb.js.map +1 -1
  198. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  199. package/lib/esm/ECSqlRowExecutor.d.ts +23 -10
  200. package/lib/esm/ECSqlRowExecutor.d.ts.map +1 -1
  201. package/lib/esm/ECSqlRowExecutor.js +77 -16
  202. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  203. package/lib/esm/ECSqlStatement.js.map +1 -1
  204. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  205. package/lib/esm/EditTxn.js.map +1 -1
  206. package/lib/esm/Element.js.map +1 -1
  207. package/lib/esm/ElementAspect.js.map +1 -1
  208. package/lib/esm/ElementGraphics.js.map +1 -1
  209. package/lib/esm/ElementTreeWalker.js.map +1 -1
  210. package/lib/esm/Entity.js.map +1 -1
  211. package/lib/esm/EntityReferences.js.map +1 -1
  212. package/lib/esm/ExportGraphics.js.map +1 -1
  213. package/lib/esm/ExternalSource.js.map +1 -1
  214. package/lib/esm/FontFile.js.map +1 -1
  215. package/lib/esm/GeoCoordConfig.js.map +1 -1
  216. package/lib/esm/GeographicCRSServices.js.map +1 -1
  217. package/lib/esm/GeometrySummary.js +47 -47
  218. package/lib/esm/GeometrySummary.js.map +1 -1
  219. package/lib/esm/IModelDb.d.ts +20 -8
  220. package/lib/esm/IModelDb.d.ts.map +1 -1
  221. package/lib/esm/IModelDb.js +93 -64
  222. package/lib/esm/IModelDb.js.map +1 -1
  223. package/lib/esm/IModelDbFonts.js.map +1 -1
  224. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  225. package/lib/esm/IModelHost.js.map +1 -1
  226. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  227. package/lib/esm/IModelJsFs.js.map +1 -1
  228. package/lib/esm/ImageSourceConversion.js.map +1 -1
  229. package/lib/esm/IpcHost.d.ts +26 -0
  230. package/lib/esm/IpcHost.d.ts.map +1 -1
  231. package/lib/esm/IpcHost.js +70 -63
  232. package/lib/esm/IpcHost.js.map +1 -1
  233. package/lib/esm/LineStyle.js.map +1 -1
  234. package/lib/esm/LocalHub.js +1 -1
  235. package/lib/esm/LocalHub.js.map +1 -1
  236. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  237. package/lib/esm/LockControl.js.map +1 -1
  238. package/lib/esm/Material.js.map +1 -1
  239. package/lib/esm/Model.js.map +1 -1
  240. package/lib/esm/NativeAppStorage.js.map +1 -1
  241. package/lib/esm/NativeHost.js.map +1 -1
  242. package/lib/esm/NavigationRelationship.js.map +1 -1
  243. package/lib/esm/PartialChangeUnifier.js +7 -7
  244. package/lib/esm/PartialChangeUnifier.js.map +1 -1
  245. package/lib/esm/PromiseMemoizer.js.map +1 -1
  246. package/lib/esm/PropertyStore.js.map +1 -1
  247. package/lib/esm/Relationship.d.ts.map +1 -1
  248. package/lib/esm/Relationship.js +13 -7
  249. package/lib/esm/Relationship.js.map +1 -1
  250. package/lib/esm/RpcBackend.js.map +1 -1
  251. package/lib/esm/SQLiteDb.d.ts +43 -0
  252. package/lib/esm/SQLiteDb.d.ts.map +1 -1
  253. package/lib/esm/SQLiteDb.js +51 -0
  254. package/lib/esm/SQLiteDb.js.map +1 -1
  255. package/lib/esm/Schema.js.map +1 -1
  256. package/lib/esm/SchemaSync.js.map +1 -1
  257. package/lib/esm/SchemaUtils.js.map +1 -1
  258. package/lib/esm/SheetIndex.js.map +1 -1
  259. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  260. package/lib/esm/SqliteStatement.js.map +1 -1
  261. package/lib/esm/StashManager.js.map +1 -1
  262. package/lib/esm/Texture.js.map +1 -1
  263. package/lib/esm/TileStorage.js.map +1 -1
  264. package/lib/esm/TxnManager.js.map +1 -1
  265. package/lib/esm/ViewDefinition.js.map +1 -1
  266. package/lib/esm/ViewStateHydrator.js.map +1 -1
  267. package/lib/esm/ViewStore.js +1 -1
  268. package/lib/esm/ViewStore.js.map +1 -1
  269. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  270. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  271. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  272. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  273. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  274. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  275. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  276. package/lib/esm/core-backend.js.map +1 -1
  277. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  278. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  279. package/lib/esm/domains/GenericElements.js.map +1 -1
  280. package/lib/esm/domains/GenericSchema.js.map +1 -1
  281. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  282. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  283. package/lib/esm/internal/ECSqlInstanceReshaper.d.ts +23 -0
  284. package/lib/esm/internal/ECSqlInstanceReshaper.d.ts.map +1 -0
  285. package/lib/esm/internal/ECSqlInstanceReshaper.js +120 -0
  286. package/lib/esm/internal/ECSqlInstanceReshaper.js.map +1 -0
  287. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  288. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  289. package/lib/esm/internal/HubMock.js.map +1 -1
  290. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  291. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  292. package/lib/esm/internal/NativePlatform.js.map +1 -1
  293. package/lib/esm/internal/NoLocks.js.map +1 -1
  294. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  295. package/lib/esm/internal/ServerBasedLocks.js +33 -33
  296. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  297. package/lib/esm/internal/Symbols.js.map +1 -1
  298. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  299. package/lib/esm/internal/annotations/fields.js +9 -4
  300. package/lib/esm/internal/annotations/fields.js.map +1 -1
  301. package/lib/esm/internal/cross-package.js.map +1 -1
  302. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  303. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  304. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  305. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  306. package/lib/esm/internal/workspace/WorkspaceImpl.js +12 -1
  307. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  308. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  309. package/lib/esm/rpc/multipart.js.map +1 -1
  310. package/lib/esm/rpc/tracing.js.map +1 -1
  311. package/lib/esm/rpc/web/logging.js.map +1 -1
  312. package/lib/esm/rpc/web/request.js.map +1 -1
  313. package/lib/esm/rpc/web/response.js.map +1 -1
  314. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  315. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  316. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  317. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  318. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  319. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  320. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  321. package/lib/esm/test/AttachDb.test.js +11 -11
  322. package/lib/esm/test/AttachDb.test.js.map +1 -1
  323. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  324. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  325. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  326. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  327. package/lib/esm/test/IModelHost.test.js.map +1 -1
  328. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  329. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  330. package/lib/esm/test/IpcHost.test.js +232 -1
  331. package/lib/esm/test/IpcHost.test.js.map +1 -1
  332. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  333. package/lib/esm/test/PrintElementTree.js.map +1 -1
  334. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  335. package/lib/esm/test/RevisionUtility.js.map +1 -1
  336. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js +51 -51
  337. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js.map +1 -1
  338. package/lib/esm/test/SchemaUtils.test.js +25 -25
  339. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  340. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  341. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  342. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  343. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  344. package/lib/esm/test/TestEditTxn.js.map +1 -1
  345. package/lib/esm/test/TestUtils.js.map +1 -1
  346. package/lib/esm/test/annotations/Fields.test.js +53 -53
  347. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  348. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  349. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  350. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  351. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  352. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  353. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  354. package/lib/esm/test/categories/Category.test.js.map +1 -1
  355. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  356. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  357. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  358. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  359. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  360. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  361. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  362. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  363. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  364. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  365. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  366. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  367. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  368. package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
  369. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  370. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  371. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  372. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js +139 -1
  373. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  374. package/lib/esm/test/ecdb/QueryReaders.test.js +31 -31
  375. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  376. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  377. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  378. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  379. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  380. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  381. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  382. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  383. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  384. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  385. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  386. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  387. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  388. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  389. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  390. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  391. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  392. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  393. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  394. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  395. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  396. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  397. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  398. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  399. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  400. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  401. package/lib/esm/test/hubaccess/CodeSwap.test.js.map +1 -1
  402. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  403. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  404. package/lib/esm/test/hubaccess/SemanticRebase.test.js +345 -345
  405. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  406. package/lib/esm/test/imageData.js.map +1 -1
  407. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  408. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  409. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  410. package/lib/esm/test/imodel/IModel.test.js +64 -44
  411. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  412. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  413. package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
  414. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  415. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  416. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  417. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  418. package/lib/esm/test/index.js.map +1 -1
  419. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.d.ts +2 -0
  420. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.d.ts.map +1 -0
  421. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js +289 -0
  422. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js.map +1 -0
  423. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  424. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  425. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  426. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  427. package/lib/esm/test/rpc/response.test.js.map +1 -1
  428. package/lib/esm/test/schema/ClassRegistry.test.js +101 -101
  429. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  430. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  431. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  432. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  433. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  434. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  435. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  436. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.d.ts +2 -0
  437. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.d.ts.map +1 -0
  438. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js +546 -0
  439. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js.map +1 -0
  440. package/lib/esm/test/schema/SchemaViewHidden.test.js +109 -109
  441. package/lib/esm/test/schema/SchemaViewHidden.test.js.map +1 -1
  442. package/lib/esm/test/schema/SchemaViewKoQ.test.js +13 -13
  443. package/lib/esm/test/schema/SchemaViewKoQ.test.js.map +1 -1
  444. package/lib/esm/test/schema/SchemaViewLifecycle.test.js +17 -17
  445. package/lib/esm/test/schema/SchemaViewLifecycle.test.js.map +1 -1
  446. package/lib/esm/test/schema/SchemaViewValidation.test.js +8 -8
  447. package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -1
  448. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  449. package/lib/esm/test/standalone/ChangeElementParentModel.test.js.map +1 -1
  450. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  451. package/lib/esm/test/standalone/ChangesetReader.test.js +313 -313
  452. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  453. package/lib/esm/test/standalone/CloudSqlite.test.js.map +1 -1
  454. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  455. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
  456. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  457. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  458. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  459. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  460. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  461. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  462. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  463. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  464. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  465. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  466. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  467. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  468. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  469. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  470. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  471. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  472. package/lib/esm/test/standalone/MergeConflict.test.js +1 -1
  473. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  474. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  475. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  476. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  477. package/lib/esm/test/standalone/SQLiteDb.test.d.ts +1 -1
  478. package/lib/esm/test/standalone/SQLiteDb.test.d.ts.map +1 -1
  479. package/lib/esm/test/standalone/SQLiteDb.test.js +93 -1
  480. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  481. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
  482. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
  483. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  484. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  485. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  486. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  487. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  488. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  489. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  490. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  491. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  492. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  493. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  494. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  495. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  496. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  497. package/lib/esm/test/standalone/ViewStoreDb.test.js +30 -0
  498. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  499. package/lib/esm/test/standalone/Workspace.test.js +63 -1
  500. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  501. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  502. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  503. package/lib/esm/workspace/Settings.js.map +1 -1
  504. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  505. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  506. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  507. package/lib/esm/workspace/Workspace.d.ts +2 -0
  508. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  509. package/lib/esm/workspace/Workspace.js.map +1 -1
  510. package/lib/esm/workspace/WorkspaceEditor.d.ts +3 -0
  511. package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
  512. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  513. package/package.json +14 -15
@@ -16,6 +16,7 @@ import { BriefcaseManager } from "./BriefcaseManager";
16
16
  import { ChannelControl } from "./ChannelControl";
17
17
  import { createChannelControl } from "./internal/ChannelAdmin";
18
18
  import { CheckpointManager, V2CheckpointManager } from "./CheckpointManager";
19
+ import { getRuntimeClass, reshapeInstanceRow } from "./internal/ECSqlInstanceReshaper";
19
20
  import { ClassRegistry, EntityJsClassMap, MetaDataRegistry } from "./ClassRegistry";
20
21
  import { CloudSqlite } from "./CloudSqlite";
21
22
  import { CodeService } from "./CodeService";
@@ -46,11 +47,11 @@ import { IModelNative } from "./internal/NativePlatform";
46
47
  import { createNoOpLockControl } from "./internal/NoLocks";
47
48
  import { createIModelDbFonts } from "./internal/IModelDbFontsImpl";
48
49
  import { _activeTxn, _cache, _close, _hubAccess, _implicitTxn, _instanceKeyCache, _nativeDb, _releaseAllLocks, _resetIModelDb } from "./internal/Symbols";
49
- import { ECVersion, SchemaContext, SchemaJsonLocater, SchemaView } from "@itwin/ecschema-metadata";
50
+ import { ECVersion, SchemaContext, SchemaJsonLocater, SchemaManifest, SchemaViewManager } from "@itwin/ecschema-metadata";
50
51
  import { SchemaMap } from "./Schema";
51
52
  import { ElementLRUCache, InstanceKeyLRUCache } from "./internal/ElementLRUCache";
52
53
  import { IModelIncrementalSchemaLocater } from "./IModelIncrementalSchemaLocater";
53
- import { ECSqlRowExecutor } from "./ECSqlRowExecutor";
54
+ import { ECSqlRowExecutor, releaseECSqlStatement } from "./ECSqlRowExecutor";
54
55
  import { integrityCheckTypeMap, performQuickIntegrityCheck, performSpecificIntegrityCheck } from "./internal/IntegrityCheck";
55
56
  import { ECSqlSyncReader } from "./ECSqlSyncReader";
56
57
  // spell:ignore fontid fontmap
@@ -162,7 +163,9 @@ export class IModelDb extends IModel {
162
163
  _jsClassMap;
163
164
  _schemaMap;
164
165
  _schemaContext;
165
- _schemasPromise;
166
+ // Created lazily on the first getSchemaView call. Owns the SchemaView's lifetime and does all its
167
+ // data access through the SchemaViewDataProvider implemented below.
168
+ _schemaViewManager;
166
169
  /** @deprecated in 5.0.0 - might be removed in next major version. Use [[fonts]]. */
167
170
  _fontMap; // eslint-disable-line @typescript-eslint/no-deprecated
168
171
  _fonts = createIModelDbFonts(this);
@@ -610,16 +613,22 @@ export class IModelDb extends IModel {
610
613
  * @param config Allow to specify certain flags which control how query is executed.
611
614
  * @returns the value returned by `callback`.
612
615
  * @throws IModelError if db is not open.
613
- * Should be used when we want true step by step behaviour from the reader without any intermediate caching involved.
616
+ * Use this method for true step-by-step row consumption without intermediate result or page caching.
617
+ * The prepared ECSQL statement may be reused from the statement cache between completed calls.
614
618
  * @beta
615
619
  * */
616
620
  withQueryReader(ecsql, callback, params, config) {
617
621
  if (!this[_nativeDb].isOpen())
618
622
  throw new IModelError(DbResult.BE_SQLITE_ERROR_NOTOPEN, "db not open");
619
- const executor = new ECSqlRowExecutor(this);
620
- const reader = new ECSqlSyncReader(executor, ecsql, params, config);
621
- const release = () => executor[Symbol.dispose]();
623
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
624
+ const stmt = this._statementCache.findAndRemove(ecsql) ?? new ECSqlStatement();
625
+ const executor = new ECSqlRowExecutor(this, stmt, loggerCategory);
626
+ const release = () => {
627
+ executor[Symbol.dispose]();
628
+ releaseECSqlStatement(stmt, this._statementCache, loggerCategory, executor.canCacheStatement);
629
+ };
622
630
  try {
631
+ const reader = new ECSqlSyncReader(executor, ecsql, params, config);
623
632
  const val = callback(reader);
624
633
  if (val instanceof Promise) {
625
634
  val.then(release, release);
@@ -719,8 +728,7 @@ export class IModelDb extends IModel {
719
728
  const where = [...parentCategories].join(",");
720
729
  const query = `SELECT ECInstanceId as id, Parent.Id as parentId, Properties as appearance FROM BisCore.SubCategory WHERE Parent.Id IN (${where})`;
721
730
  try {
722
- // eslint-disable-next-line @typescript-eslint/no-deprecated
723
- for await (const row of this.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
731
+ for await (const row of this.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyNames })) {
724
732
  result.push(row.toRow());
725
733
  }
726
734
  }
@@ -740,8 +748,7 @@ export class IModelDb extends IModel {
740
748
  const where = [...categoryIds].join(",");
741
749
  const query = `SELECT ECInstanceId as id, Parent.Id as parentId, Properties as appearance FROM BisCore.SubCategory WHERE Parent.Id IN (${where})`;
742
750
  try {
743
- // eslint-disable-next-line @typescript-eslint/no-deprecated
744
- for await (const row of this.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
751
+ for await (const row of this.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyNames })) {
745
752
  result.push(row.toRow());
746
753
  }
747
754
  }
@@ -784,7 +791,7 @@ export class IModelDb extends IModel {
784
791
  }
785
792
  }
786
793
  }
787
- }, QueryBinder.from(params.bindings));
794
+ }, QueryBinder.fromSkippingNullish(params.bindings));
788
795
  return ids;
789
796
  }
790
797
  clearCaches(params) {
@@ -795,11 +802,7 @@ export class IModelDb extends IModel {
795
802
  this._jsClassMap = undefined;
796
803
  this._schemaMap = undefined;
797
804
  this._schemaContext = undefined;
798
- if (this._schemasPromise) {
799
- const old = this._schemasPromise;
800
- this._schemasPromise = undefined;
801
- old.then((view) => view.markOutdated()).catch(() => { });
802
- }
805
+ this._schemaViewManager?.reset();
803
806
  this[_nativeDb].clearECDbCache();
804
807
  }
805
808
  this.elements[_cache].clear();
@@ -1295,53 +1298,74 @@ export class IModelDb extends IModel {
1295
1298
  return this._schemaContext;
1296
1299
  }
1297
1300
  /** Get the schema view for this iModel. The view is built lazily on
1298
- * first call by fetching compact binary schema data via `PRAGMA schema_view` through
1299
- * the ConcurrentQuery thread pool. Subsequent calls return the cached view. Multiple
1300
- * concurrent callers share a single in-flight build.
1301
+ * first call by fetching compact binary schema data through
1302
+ * the ConcurrentQuery thread pool.
1301
1303
  *
1302
1304
  * The returned `SchemaView` is a lightweight, read-only, synchronous API for
1303
1305
  * navigating schema metadata - classes, properties, relationships, enumerations, etc.
1304
1306
  * It is the recommended default for runtime read-only metadata access and is significantly
1305
1307
  * faster and lower-memory than [[schemaContext]]. Use [[schemaContext]] for schema authoring,
1306
1308
  * custom-attribute deserialization, or anywhere you need the full ecschema-metadata object graph.
1309
+ *
1310
+ * Every call shares one accumulating view instance and concurrent calls are serialized, so a
1311
+ * caller never observes a partially loaded view. The instance is discarded by [[clearCaches]],
1312
+ * for example after a schema import; the next call builds a new one. See
1313
+ * [GetSchemaViewArgs]($ecschema-metadata) for the arguments.
1307
1314
  * @beta
1308
1315
  */
1309
- async getSchemaView() {
1310
- if (this._schemasPromise) {
1311
- const ctx = await this._schemasPromise;
1312
- if (!ctx.isOutdated)
1313
- return ctx;
1314
- }
1315
- // Capture the in-flight promise locally so the rejection handler only clears
1316
- // `_schemasPromise` if it still points at this build. A concurrent invalidation +
1317
- // re-fetch could otherwise replace the field before our hydrate fails, and a naive
1318
- // `_schemasPromise = undefined` would clobber that newer reference.
1319
- const inflight = this._hydrateSchemas();
1320
- this._schemasPromise = inflight;
1321
- inflight.catch(() => {
1322
- if (this._schemasPromise === inflight)
1323
- this._schemasPromise = undefined;
1324
- });
1325
- return inflight;
1326
- }
1327
- async _hydrateSchemas() {
1328
- // PRAGMA returns exactly one row with format, formatVersion, data (binary), schemaToken.
1329
- // Important: only call reader.next() once - do NOT use `for await` on PRAGMA results.
1330
- // ConcurrentQuery wraps regular ECSQL in LIMIT/OFFSET for pagination but skips this for
1331
- // PRAGMAs. If the serialized result exceeds the memory threshold, the response is marked
1332
- // "Partial", and a `for await` loop would re-issue the same PRAGMA forever since PRAGMAs
1333
- // don't support OFFSET-based pagination.
1334
- // This implementation uses the non-pinned version of the pragma other than frontend - because backend
1335
- // is always strictly coupled with the native code.
1336
- const reader = this.createQueryReader("PRAGMA schema_view");
1316
+ async getSchemaView(args) {
1317
+ this._schemaViewManager ??= new SchemaViewManager(this._createSchemaViewDataProvider());
1318
+ return this._schemaViewManager.getSchemaView(args);
1319
+ }
1320
+ /** The [SchemaViewDataProvider]($ecschema-metadata) backing this iModel's [[getSchemaView]]: the
1321
+ * transport-specific half of schema-view loading. The backend always uses the latest blob version
1322
+ * since it is strictly coupled with native code.
1323
+ */
1324
+ _createSchemaViewDataProvider() {
1325
+ return {
1326
+ fetchFullBlob: async () => this._fetchSchemaBlob("PRAGMA schema_view"),
1327
+ // Names are ECNames, so a comma can never occur in one. Native re-validates each token as an
1328
+ // ECName and fails the pragma on an unknown name.
1329
+ fetchFragmentBlob: async (schemaNames) => this._fetchSchemaBlob(`PRAGMA schema_view_fragment('${schemaNames.join(",")}')`),
1330
+ fetchManifest: async () => {
1331
+ const schemaRows = [];
1332
+ const schemaSql = "SELECT ECInstanceId, Name, VersionMajor, VersionWrite, VersionMinor FROM meta.ECSchemaDef";
1333
+ for await (const row of this.createQueryReader(schemaSql)) {
1334
+ // ECInstanceId arrives as a hex Id64String. `ec_` metadata rowids carry no briefcase
1335
+ // prefix, so the local id is the full value.
1336
+ schemaRows.push({ ecInstanceId: Id64.getLocalId(row[0]), name: row[1], versionMajor: row[2], versionWrite: row[3], versionMinor: row[4] });
1337
+ }
1338
+ const referenceRows = [];
1339
+ const referenceSql = "SELECT SourceECInstanceId, TargetECInstanceId FROM meta.SchemaHasSchemaReferences";
1340
+ for await (const row of this.createQueryReader(referenceSql))
1341
+ referenceRows.push({ sourceECInstanceId: Id64.getLocalId(row[0]), targetECInstanceId: Id64.getLocalId(row[1]) });
1342
+ return SchemaManifest.fromRows(schemaRows, referenceRows);
1343
+ },
1344
+ fetchSchemaToken: async () => {
1345
+ const reader = this.createQueryReader("PRAGMA checksum(schema_token)");
1346
+ const result = await reader.next();
1347
+ if (result.done)
1348
+ throw new IModelError(DbResult.BE_SQLITE_ERROR, "PRAGMA checksum(schema_token) returned no rows");
1349
+ return result.value.sha3_256;
1350
+ },
1351
+ };
1352
+ }
1353
+ /** Fetch one schema-view blob (full or fragment). Both `PRAGMA schema_view` and
1354
+ * `PRAGMA schema_view_fragment` return a single row with the same columns. */
1355
+ async _fetchSchemaBlob(pragma) {
1356
+ // Only call reader.next() once - do NOT use `for await` on PRAGMA results. ConcurrentQuery wraps
1357
+ // regular ECSQL in LIMIT/OFFSET for pagination but skips this for PRAGMAs; if the serialized result
1358
+ // exceeds the memory threshold the response is marked "Partial", and a `for await` loop would
1359
+ // re-issue the same PRAGMA forever since PRAGMAs don't support OFFSET-based pagination.
1360
+ const reader = this.createQueryReader(pragma);
1337
1361
  const result = await reader.next();
1338
1362
  if (result.done)
1339
- throw new IModelError(DbResult.BE_SQLITE_ERROR, "PRAGMA schema_view returned no rows");
1363
+ throw new IModelError(DbResult.BE_SQLITE_ERROR, `${pragma} returned no rows`);
1340
1364
  const data = result.value.data;
1341
1365
  const token = result.value.schemaToken;
1342
1366
  if (data === undefined || data === null)
1343
- throw new IModelError(DbResult.BE_SQLITE_ERROR, "PRAGMA schema_view returned null data column");
1344
- return SchemaView.fromBinary(data, token ?? "");
1367
+ throw new IModelError(DbResult.BE_SQLITE_ERROR, `${pragma} returned null data column`);
1368
+ return { data, schemaToken: token ?? "" };
1345
1369
  }
1346
1370
  /** Get the linkTableRelationships for this IModel */
1347
1371
  get relationships() {
@@ -2516,16 +2540,21 @@ function processSchemaWriteStatus(status) {
2516
2540
  * @throws [[IModelError]]
2517
2541
  */
2518
2542
  _queryAspect(aspectInstanceId, aspectClassName) {
2519
- const sql = `SELECT *, ec_classname(ECClassId, 's:c') classFullName FROM ${aspectClassName} WHERE ECInstanceId=:aspectInstanceId`;
2543
+ // `SELECT *` targets a caller/runtime-determined ElementAspect subclass, so its shape can't be decomposed
2544
+ // ahead of time. Query using the non-deprecated UseECSqlPropertyNames format and reshape the row into the
2545
+ // legacy UseJsPropertyNames shape using ECSchema metadata (see ECSqlInstanceReshaper for why a naive,
2546
+ // non-schema-aware rename isn't safe here).
2547
+ const ecClass = getRuntimeClass(this._iModel, aspectClassName);
2548
+ const sql = `SELECT * FROM ${aspectClassName} WHERE ECInstanceId=:aspectInstanceId`;
2520
2549
  const aspect = this._iModel.withQueryReader(sql, (reader) => {
2521
2550
  if (reader.step()) {
2522
- const aspectProps = { ...reader.current.toRow() }; // start with everything that SELECT * returned; classFullName is supplied by the ec_classname alias
2523
- aspectProps.className = undefined; // clear the raw ECClassId-derived property from SELECT * that we don't want in the final instance
2551
+ const aspectProps = reshapeInstanceRow(reader.current.toRow(), ecClass, this._iModel);
2552
+ aspectProps.classFullName = aspectProps.className.replace(".", ":"); // add in property required by EntityProps
2553
+ aspectProps.className = undefined; // clear property from SELECT * that we don't want in the final instance
2524
2554
  return aspectProps;
2525
2555
  }
2526
2556
  return undefined;
2527
- // eslint-disable-next-line @typescript-eslint/no-deprecated
2528
- }, new QueryBinder().bindId("aspectInstanceId", aspectInstanceId), { rowFormat: QueryRowFormat.UseJsPropertyNames });
2557
+ }, new QueryBinder().bindId("aspectInstanceId", aspectInstanceId), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });
2529
2558
  if (undefined === aspect) {
2530
2559
  throw new IModelError(IModelStatus.NotFound, `ElementAspect not found ${aspectInstanceId}, ${aspectClassName}`);
2531
2560
  }
@@ -2574,9 +2603,9 @@ function processSchemaWriteStatus(status) {
2574
2603
  */
2575
2604
  getAspects(elementId, aspectClassFullName, excludedClassFullNames) {
2576
2605
  if (aspectClassFullName === undefined) {
2577
- const allAspects = this.runInstanceQuery(`SELECT $ FROM (
2578
- SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
2579
- UNION ALL
2606
+ const allAspects = this.runInstanceQuery(`SELECT $ FROM (
2607
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
2608
+ UNION ALL
2580
2609
  SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
2581
2610
  if (allAspects.length === 0)
2582
2611
  Logger.logInfo(BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
@@ -2595,7 +2624,7 @@ function processSchemaWriteStatus(status) {
2595
2624
  let classIdList = IModelDb.Elements.classMap.get(aspectClassFullName);
2596
2625
  if (classIdList === undefined) {
2597
2626
  const classIds = [];
2598
- const sql = `select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name=:className
2627
+ const sql = `select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name=:className
2599
2628
  and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name=:schemaName)) and SourceECInstanceId != TargetECInstanceId`;
2600
2629
  this._iModel.withQueryReader(sql, (reader) => {
2601
2630
  for (const row of reader) {
@@ -2614,10 +2643,10 @@ function processSchemaWriteStatus(status) {
2614
2643
  return [];
2615
2644
  }
2616
2645
  // Execute an instance query to retrieve all aspects from all the derived classes
2617
- const aspects = this.runInstanceQuery(`SELECT $ FROM (
2618
- SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
2619
- UNION ALL
2620
- SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
2646
+ const aspects = this.runInstanceQuery(`SELECT $ FROM (
2647
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
2648
+ UNION ALL
2649
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
2621
2650
  ) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
2622
2651
  if (aspects.length === 0)
2623
2652
  Logger.logInfo(BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);