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

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 (358) 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.d.ts +54 -8
  13. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  14. package/lib/cjs/ChangesetECAdaptor.js +477 -275
  15. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  16. package/lib/cjs/ChannelControl.js.map +1 -1
  17. package/lib/cjs/CheckpointManager.js.map +1 -1
  18. package/lib/cjs/ClassRegistry.js +5 -5
  19. package/lib/cjs/ClassRegistry.js.map +1 -1
  20. package/lib/cjs/CloudSqlite.js.map +1 -1
  21. package/lib/cjs/CodeService.js.map +1 -1
  22. package/lib/cjs/CodeSpecs.js.map +1 -1
  23. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  24. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  25. package/lib/cjs/DevTools.js.map +1 -1
  26. package/lib/cjs/DisplayStyle.js.map +1 -1
  27. package/lib/cjs/ECDb.js.map +1 -1
  28. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  29. package/lib/cjs/ECSqlStatement.js.map +1 -1
  30. package/lib/cjs/Element.js.map +1 -1
  31. package/lib/cjs/ElementAspect.js.map +1 -1
  32. package/lib/cjs/ElementGraphics.js.map +1 -1
  33. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  34. package/lib/cjs/Entity.js.map +1 -1
  35. package/lib/cjs/EntityReferences.js.map +1 -1
  36. package/lib/cjs/ExportGraphics.js.map +1 -1
  37. package/lib/cjs/ExternalSource.js.map +1 -1
  38. package/lib/cjs/FontFile.js.map +1 -1
  39. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  40. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  41. package/lib/cjs/GeometrySummary.js +47 -47
  42. package/lib/cjs/GeometrySummary.js.map +1 -1
  43. package/lib/cjs/IModelDb.d.ts.map +1 -1
  44. package/lib/cjs/IModelDb.js +9 -8
  45. package/lib/cjs/IModelDb.js.map +1 -1
  46. package/lib/cjs/IModelDbFonts.js.map +1 -1
  47. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  48. package/lib/cjs/IModelHost.js.map +1 -1
  49. package/lib/cjs/IModelJsFs.js.map +1 -1
  50. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  51. package/lib/cjs/IpcHost.js.map +1 -1
  52. package/lib/cjs/LineStyle.js.map +1 -1
  53. package/lib/cjs/LocalHub.js +1 -1
  54. package/lib/cjs/LocalHub.js.map +1 -1
  55. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  56. package/lib/cjs/LockControl.js.map +1 -1
  57. package/lib/cjs/Material.js.map +1 -1
  58. package/lib/cjs/Model.js.map +1 -1
  59. package/lib/cjs/NativeAppStorage.js.map +1 -1
  60. package/lib/cjs/NativeHost.js.map +1 -1
  61. package/lib/cjs/NavigationRelationship.js.map +1 -1
  62. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  63. package/lib/cjs/PropertyStore.js.map +1 -1
  64. package/lib/cjs/Relationship.js.map +1 -1
  65. package/lib/cjs/RpcBackend.js.map +1 -1
  66. package/lib/cjs/SQLiteDb.js.map +1 -1
  67. package/lib/cjs/Schema.js.map +1 -1
  68. package/lib/cjs/SchemaSync.js.map +1 -1
  69. package/lib/cjs/SchemaUtils.js.map +1 -1
  70. package/lib/cjs/SheetIndex.js.map +1 -1
  71. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  72. package/lib/cjs/SqliteStatement.js.map +1 -1
  73. package/lib/cjs/Texture.js.map +1 -1
  74. package/lib/cjs/TileStorage.js.map +1 -1
  75. package/lib/cjs/TxnManager.js.map +1 -1
  76. package/lib/cjs/ViewDefinition.js.map +1 -1
  77. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  78. package/lib/cjs/ViewStore.js.map +1 -1
  79. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  80. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  81. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  82. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  83. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  84. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  85. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  86. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  87. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  88. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  89. package/lib/cjs/core-backend.d.ts.map +1 -1
  90. package/lib/cjs/core-backend.js +20 -0
  91. package/lib/cjs/core-backend.js.map +1 -1
  92. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  93. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  94. package/lib/cjs/domains/GenericElements.js.map +1 -1
  95. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  96. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  97. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  98. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  99. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  100. package/lib/cjs/internal/HubMock.js.map +1 -1
  101. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  102. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  103. package/lib/cjs/internal/NoLocks.js.map +1 -1
  104. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  105. package/lib/cjs/internal/Symbols.js.map +1 -1
  106. package/lib/cjs/internal/cross-package.js.map +1 -1
  107. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  108. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  109. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  110. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  111. package/lib/cjs/rpc/multipart.js.map +1 -1
  112. package/lib/cjs/rpc/tracing.js.map +1 -1
  113. package/lib/cjs/rpc/web/logging.js.map +1 -1
  114. package/lib/cjs/rpc/web/request.js.map +1 -1
  115. package/lib/cjs/rpc/web/response.js.map +1 -1
  116. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  117. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  118. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  119. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  120. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  121. package/lib/cjs/workspace/Settings.js.map +1 -1
  122. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  123. package/lib/cjs/workspace/Workspace.js.map +1 -1
  124. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  125. package/lib/esm/BackendHubAccess.js.map +1 -1
  126. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  127. package/lib/esm/BisCoreSchema.js.map +1 -1
  128. package/lib/esm/BlobContainerService.js.map +1 -1
  129. package/lib/esm/BriefcaseManager.js.map +1 -1
  130. package/lib/esm/CatalogDb.js.map +1 -1
  131. package/lib/esm/Category.js.map +1 -1
  132. package/lib/esm/ChangeSummaryManager.js +2 -2
  133. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  134. package/lib/esm/ChangedElementsDb.js.map +1 -1
  135. package/lib/esm/ChangesetECAdaptor.d.ts +54 -8
  136. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  137. package/lib/esm/ChangesetECAdaptor.js +477 -275
  138. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  139. package/lib/esm/ChannelControl.js.map +1 -1
  140. package/lib/esm/CheckpointManager.js.map +1 -1
  141. package/lib/esm/ClassRegistry.js +5 -5
  142. package/lib/esm/ClassRegistry.js.map +1 -1
  143. package/lib/esm/CloudSqlite.js.map +1 -1
  144. package/lib/esm/CodeService.js.map +1 -1
  145. package/lib/esm/CodeSpecs.js.map +1 -1
  146. package/lib/esm/ConcurrentQuery.js.map +1 -1
  147. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  148. package/lib/esm/DevTools.js.map +1 -1
  149. package/lib/esm/DisplayStyle.js.map +1 -1
  150. package/lib/esm/ECDb.js.map +1 -1
  151. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  152. package/lib/esm/ECSqlStatement.js.map +1 -1
  153. package/lib/esm/Element.js.map +1 -1
  154. package/lib/esm/ElementAspect.js.map +1 -1
  155. package/lib/esm/ElementGraphics.js.map +1 -1
  156. package/lib/esm/ElementTreeWalker.js.map +1 -1
  157. package/lib/esm/Entity.js.map +1 -1
  158. package/lib/esm/EntityReferences.js.map +1 -1
  159. package/lib/esm/ExportGraphics.js.map +1 -1
  160. package/lib/esm/ExternalSource.js.map +1 -1
  161. package/lib/esm/FontFile.js.map +1 -1
  162. package/lib/esm/GeoCoordConfig.js.map +1 -1
  163. package/lib/esm/GeographicCRSServices.js.map +1 -1
  164. package/lib/esm/GeometrySummary.js +47 -47
  165. package/lib/esm/GeometrySummary.js.map +1 -1
  166. package/lib/esm/IModelDb.d.ts.map +1 -1
  167. package/lib/esm/IModelDb.js +9 -8
  168. package/lib/esm/IModelDb.js.map +1 -1
  169. package/lib/esm/IModelDbFonts.js.map +1 -1
  170. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  171. package/lib/esm/IModelHost.js.map +1 -1
  172. package/lib/esm/IModelJsFs.js.map +1 -1
  173. package/lib/esm/ImageSourceConversion.js.map +1 -1
  174. package/lib/esm/IpcHost.js.map +1 -1
  175. package/lib/esm/LineStyle.js.map +1 -1
  176. package/lib/esm/LocalHub.js +1 -1
  177. package/lib/esm/LocalHub.js.map +1 -1
  178. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  179. package/lib/esm/LockControl.js.map +1 -1
  180. package/lib/esm/Material.js.map +1 -1
  181. package/lib/esm/Model.js.map +1 -1
  182. package/lib/esm/NativeAppStorage.js.map +1 -1
  183. package/lib/esm/NativeHost.js.map +1 -1
  184. package/lib/esm/NavigationRelationship.js.map +1 -1
  185. package/lib/esm/PromiseMemoizer.js.map +1 -1
  186. package/lib/esm/PropertyStore.js.map +1 -1
  187. package/lib/esm/Relationship.js.map +1 -1
  188. package/lib/esm/RpcBackend.js.map +1 -1
  189. package/lib/esm/SQLiteDb.js.map +1 -1
  190. package/lib/esm/Schema.js.map +1 -1
  191. package/lib/esm/SchemaSync.js.map +1 -1
  192. package/lib/esm/SchemaUtils.js.map +1 -1
  193. package/lib/esm/SheetIndex.js.map +1 -1
  194. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  195. package/lib/esm/SqliteStatement.js.map +1 -1
  196. package/lib/esm/Texture.js.map +1 -1
  197. package/lib/esm/TileStorage.js.map +1 -1
  198. package/lib/esm/TxnManager.js.map +1 -1
  199. package/lib/esm/ViewDefinition.js.map +1 -1
  200. package/lib/esm/ViewStateHydrator.js.map +1 -1
  201. package/lib/esm/ViewStore.js.map +1 -1
  202. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  203. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  204. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  205. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  206. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  207. package/lib/esm/core-backend.d.ts.map +1 -1
  208. package/lib/esm/core-backend.js +20 -0
  209. package/lib/esm/core-backend.js.map +1 -1
  210. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  211. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  212. package/lib/esm/domains/GenericElements.js.map +1 -1
  213. package/lib/esm/domains/GenericSchema.js.map +1 -1
  214. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  215. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  216. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  217. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  218. package/lib/esm/internal/HubMock.js.map +1 -1
  219. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  220. package/lib/esm/internal/NativePlatform.js.map +1 -1
  221. package/lib/esm/internal/NoLocks.js.map +1 -1
  222. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  223. package/lib/esm/internal/Symbols.js.map +1 -1
  224. package/lib/esm/internal/cross-package.js.map +1 -1
  225. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  226. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  227. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  228. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  229. package/lib/esm/rpc/multipart.js.map +1 -1
  230. package/lib/esm/rpc/tracing.js.map +1 -1
  231. package/lib/esm/rpc/web/logging.js.map +1 -1
  232. package/lib/esm/rpc/web/request.js.map +1 -1
  233. package/lib/esm/rpc/web/response.js.map +1 -1
  234. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  235. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  236. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  237. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  238. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  239. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  240. package/lib/esm/test/AttachDb.test.js +11 -11
  241. package/lib/esm/test/AttachDb.test.js.map +1 -1
  242. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  243. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  244. package/lib/esm/test/IModelHost.test.js.map +1 -1
  245. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  246. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  247. package/lib/esm/test/IpcHost.test.js.map +1 -1
  248. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  249. package/lib/esm/test/PrintElementTree.js.map +1 -1
  250. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  251. package/lib/esm/test/RevisionUtility.js.map +1 -1
  252. package/lib/esm/test/SchemaUtils.test.js +25 -25
  253. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  254. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  255. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  256. package/lib/esm/test/TestUtils.js.map +1 -1
  257. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  258. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  259. package/lib/esm/test/categories/Category.test.js.map +1 -1
  260. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  261. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  262. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  263. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  264. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  265. package/lib/esm/test/ecdb/ECDb.test.js +57 -57
  266. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  267. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  268. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  269. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  270. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  271. package/lib/esm/test/ecdb/ECSqlQuery.test.js +7 -7
  272. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  273. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  274. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  275. package/lib/esm/test/ecdb/ECSqlStatement.test.js +292 -292
  276. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  277. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  278. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  279. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  280. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  281. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  282. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  283. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  284. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  285. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  286. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  287. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  288. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  289. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  290. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  291. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  292. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  293. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  294. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  295. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  296. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  297. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  298. package/lib/esm/test/imageData.js.map +1 -1
  299. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  300. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  301. package/lib/esm/test/imodel/IModel.test.js +27 -0
  302. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  303. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  304. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  305. package/lib/esm/test/index.js.map +1 -1
  306. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  307. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  308. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  309. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  310. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  311. package/lib/esm/test/rpc/response.test.js.map +1 -1
  312. package/lib/esm/test/schema/ClassRegistry.test.js +71 -71
  313. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  314. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  315. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  316. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  317. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  318. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  319. package/lib/esm/test/standalone/ChangesetReader.test.js +322 -164
  320. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  321. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  322. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  323. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  324. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  325. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  326. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  327. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  328. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  329. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  330. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  331. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  332. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  333. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  334. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  335. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  336. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  337. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  338. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  339. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  340. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  341. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  342. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  343. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  344. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  345. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  346. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  347. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  348. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  349. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  350. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  351. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  352. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  353. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  354. package/lib/esm/workspace/Settings.js.map +1 -1
  355. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  356. package/lib/esm/workspace/Workspace.js.map +1 -1
  357. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  358. package/package.json +13 -13
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChangesetECAdaptor = exports.PartialECChangeUnifier = void 0;
3
+ exports.ChangesetECAdaptor = exports.PartialECChangeUnifier = exports.ECChangeUnifierCache = void 0;
4
4
  /*---------------------------------------------------------------------------------------------
5
5
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
6
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -9,6 +9,9 @@ exports.ChangesetECAdaptor = exports.PartialECChangeUnifier = void 0;
9
9
  * @module ECDb
10
10
  */
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_common_1 = require("@itwin/core-common");
13
+ const ECDb_1 = require("./ECDb");
14
+ const Symbols_1 = require("./internal/Symbols");
12
15
  class ECDbMap {
13
16
  db;
14
17
  _cachedClassMaps = new Map();
@@ -17,14 +20,14 @@ class ECDbMap {
17
20
  this.db = db;
18
21
  }
19
22
  getAllDerivedClasses(classFullName) {
20
- const sql = `
21
- SELECT format('0x%x', ch.ClassId)
22
- FROM [ec_cache_ClassHierarchy] [ch]
23
- JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]
24
- JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]
25
- WHERE (([sc].[Alias] = :schemaNameOrAlias
26
- OR [sc].[Name] = :schemaNameOrAlias)
27
- AND ([cs].[Name] = :className))
23
+ const sql = `
24
+ SELECT format('0x%x', ch.ClassId)
25
+ FROM [ec_cache_ClassHierarchy] [ch]
26
+ JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]
27
+ JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]
28
+ WHERE (([sc].[Alias] = :schemaNameOrAlias
29
+ OR [sc].[Name] = :schemaNameOrAlias)
30
+ AND ([cs].[Name] = :className))
28
31
  `;
29
32
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
30
33
  const parts = classFullName.indexOf(".") !== -1 ? classFullName.split(".") : classFullName.split(":");
@@ -39,39 +42,39 @@ class ECDbMap {
39
42
  getTable(tableName) {
40
43
  if (this._cacheTables.has(tableName))
41
44
  return this._cacheTables.get(tableName);
42
- const sql = `
43
- SELECT
44
- JSON_OBJECT (
45
- 'id', FORMAT ('0x%x', [t].[id]),
46
- 'name', [t].[Name],
47
- 'type', (
48
- CASE
49
- [t].[type]
50
- WHEN 0 THEN 'Primary'
51
- WHEN 1 THEN 'Joined'
52
- WHEN 2 THEN 'Existing'
53
- WHEN 3 THEN 'Overflow'
54
- WHEN 4 THEN 'Virtual'
55
- END
56
- ),
57
- 'exclusiveRootClassId', FORMAT ('0x%x',
58
- COALESCE (
59
- [t].[ExclusiveRootClassId], (
60
- SELECT [parent].[ExclusiveRootClassId]
61
- FROM [ec_Table] [parent]
62
- WHERE [parent].[Id] = [t].[ParentTableId] AND [parent].[Type] = 1))),
63
- 'isClassIdVirtual', (
64
- SELECT
65
- [c].[IsVirtual]
66
- FROM
67
- [ec_Column] [c]
68
- WHERE
69
- [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]
70
- )
71
- )
72
- FROM [ec_Table] [t]
73
- WHERE
74
- [t].[Name] = ?;
45
+ const sql = `
46
+ SELECT
47
+ JSON_OBJECT (
48
+ 'id', FORMAT ('0x%x', [t].[id]),
49
+ 'name', [t].[Name],
50
+ 'type', (
51
+ CASE
52
+ [t].[type]
53
+ WHEN 0 THEN 'Primary'
54
+ WHEN 1 THEN 'Joined'
55
+ WHEN 2 THEN 'Existing'
56
+ WHEN 3 THEN 'Overflow'
57
+ WHEN 4 THEN 'Virtual'
58
+ END
59
+ ),
60
+ 'exclusiveRootClassId', FORMAT ('0x%x',
61
+ COALESCE (
62
+ [t].[ExclusiveRootClassId], (
63
+ SELECT [parent].[ExclusiveRootClassId]
64
+ FROM [ec_Table] [parent]
65
+ WHERE [parent].[Id] = [t].[ParentTableId] AND [parent].[Type] = 1))),
66
+ 'isClassIdVirtual', (
67
+ SELECT
68
+ [c].[IsVirtual]
69
+ FROM
70
+ [ec_Column] [c]
71
+ WHERE
72
+ [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]
73
+ )
74
+ )
75
+ FROM [ec_Table] [t]
76
+ WHERE
77
+ [t].[Name] = ?;
75
78
  `;
76
79
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
77
80
  stmt.bindString(1, tableName);
@@ -92,186 +95,186 @@ class ECDbMap {
92
95
  getClassMap(classId) {
93
96
  if (this._cachedClassMaps.has(classId))
94
97
  return this._cachedClassMaps.get(classId);
95
- const sql = `
96
- SELECT
97
- JSON_OBJECT(
98
- 'id', format('0x%x', cs.id),
99
- 'name', format('%s:%s', ss.Name, cs.Name),
100
- 'mapStrategy',
101
- (
102
- CASE cm.MapStrategy
103
- WHEN 0 THEN 'NotMapped'
104
- WHEN 1 THEN 'OwnTable'
105
- WHEN 2 THEN 'TablePerHierarchy'
106
- WHEN 3 THEN 'ExistingTable'
107
- WHEN 10 THEN 'ForeignKeyInTargetTable'
108
- WHEN 11 THEN 'ForeignKeyInSourceTable'
109
- END
110
- ),
111
- 'type',
112
- (
113
- CASE cs.Type
114
- WHEN 0 THEN 'Entity'
115
- WHEN 1 THEN 'Relationship'
116
- WHEN 2 THEN 'Struct'
117
- WHEN 3 THEN 'CustomAttribute'
118
- END
119
- ),
120
- 'modifier',
121
- (
122
- CASE cs.Modifier
123
- WHEN 0 THEN 'None'
124
- WHEN 1 THEN 'Abstract'
125
- WHEN 2 THEN 'Sealed'
126
- END
127
- ),
128
- 'properties',
129
- (
130
- SELECT
131
- JSON_GROUP_ARRAY(JSON(propJson))
132
- FROM
133
- (
134
- SELECT
135
- JSON_OBJECT(
136
- 'id', format('0x%x', pt.id),
137
- 'name', pt.Name,
138
- 'kind',
139
- (
140
- CASE pt.Kind
141
- WHEN 0 THEN 'Primitive'
142
- WHEN 1 THEN 'Struct'
143
- WHEN 2 THEN 'PrimitiveArray'
144
- WHEN 3 THEN 'StructArray'
145
- WHEN 4 THEN 'Navigation'
146
- END
147
- ),
148
- 'primitiveType',
149
- (
150
- CASE pt.PrimitiveType
151
- WHEN 0x101 THEN 'Binary'
152
- WHEN 0x201 THEN 'Boolean'
153
- WHEN 0x301 THEN 'DateTime'
154
- WHEN 0x401 THEN 'Double'
155
- WHEN 0x501 THEN 'Integer'
156
- WHEN 0x601 THEN 'Long'
157
- WHEN 0x701 THEN 'Point2d'
158
- WHEN 0x801 THEN 'Point3d'
159
- WHEN 0x901 THEN 'String'
160
- WHEN 0xa01 THEN 'IGeometry'
161
- END
162
- ),
163
- 'extendedTypeName', ExtendedTypeName,
164
- 'navigationRelationship',
165
- (
166
- SELECT
167
- JSON_OBJECT(
168
- 'classId', format('0x%x', nc.Id),
169
- 'classFullName', format('%s:%s', ns.Name, nc.Name)
170
- )
171
- FROM ec_Class nc
172
- JOIN ec_Schema ns ON ns.Id = nc.SchemaId
173
- WHERE
174
- nc.Id = pt.NavigationRelationshipClassId
175
- ),
176
- 'structClass',
177
- (
178
- SELECT
179
- JSON_OBJECT(
180
- 'classId', format('0x%x', nc.Id),
181
- 'classFullName', format('%s:%s', ns.Name, nc.Name)
182
- )
183
- FROM ec_Class nc
184
- JOIN ec_Schema ns ON ns.Id = nc.SchemaId
185
- WHERE
186
- nc.Id = pt.StructClassId
187
- ),
188
- 'dateTimeInfo', (
189
- SELECT
190
- JSON_OBJECT (
191
- 'dateTimeKind', (
192
- CASE
193
- WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'
194
- WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'
195
- ELSE 'Unspecified'
196
- END
197
- ),
198
- 'dateTimeComponent', (
199
- CASE
200
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'
201
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'
202
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'
203
- ELSE 'DateTime'
204
- END
205
- )
206
- )
207
- FROM
208
- [ec_CustomAttribute] [ca]
209
- JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]
210
- JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]
211
- WHERE
212
- [ca].[ContainerType] = 992
213
- AND [cl].[Name] = 'DateTimeInfo'
214
- AND [sc].[Name] = 'CoreCustomAttributes'
215
- AND [ca].[ContainerId] = [pt].[Id]
216
- ),
217
- 'columns',
218
- (
219
- SELECT
220
- JSON_GROUP_ARRAY(JSON(columnJson))
221
- FROM
222
- (
223
- SELECT
224
- JSON_OBJECT(
225
- 'table', tb.Name,
226
- 'column', cc.Name,
227
- 'type',
228
- (
229
- CASE cc.Type
230
- WHEN 0 THEN 'Any'
231
- WHEN 1 THEN 'Boolean'
232
- WHEN 2 THEN 'Blob'
233
- WHEN 3 THEN 'Timestamp'
234
- WHEN 4 THEN 'Real'
235
- WHEN 5 THEN 'Integer'
236
- WHEN 6 THEN 'Text'
237
- END
238
- ),
239
- 'columnKind',
240
- (
241
- CASE cc.ColumnKind
242
- WHEN 0 THEN 'Default'
243
- WHEN 1 THEN 'Id'
244
- WHEN 2 THEN 'ClassId'
245
- WHEN 4 THEN 'SharedData'
246
- END
247
- ),
248
- 'accessString', pp0.AccessString,
249
- 'isVirtual', cc.IsVirtual OR tb.Type = 4
250
- ) columnJson
251
- FROM [ec_PropertyMap] [pm0]
252
- JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]
253
- JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]
254
- JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]
255
- WHERE
256
- [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id
257
- )
258
- )
259
- ) propJson
260
- FROM [ec_PropertyMap] [pm]
261
- JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]
262
- JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]
263
- WHERE
264
- pm.ClassId = cs.Id
265
- GROUP BY
266
- pt.Id
267
- )
268
- )
269
- ) classDef
270
- FROM [ec_Class] [cs]
271
- JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]
272
- JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]
273
- WHERE
274
- [cs].[Id] = ?
98
+ const sql = `
99
+ SELECT
100
+ JSON_OBJECT(
101
+ 'id', format('0x%x', cs.id),
102
+ 'name', format('%s:%s', ss.Name, cs.Name),
103
+ 'mapStrategy',
104
+ (
105
+ CASE cm.MapStrategy
106
+ WHEN 0 THEN 'NotMapped'
107
+ WHEN 1 THEN 'OwnTable'
108
+ WHEN 2 THEN 'TablePerHierarchy'
109
+ WHEN 3 THEN 'ExistingTable'
110
+ WHEN 10 THEN 'ForeignKeyInTargetTable'
111
+ WHEN 11 THEN 'ForeignKeyInSourceTable'
112
+ END
113
+ ),
114
+ 'type',
115
+ (
116
+ CASE cs.Type
117
+ WHEN 0 THEN 'Entity'
118
+ WHEN 1 THEN 'Relationship'
119
+ WHEN 2 THEN 'Struct'
120
+ WHEN 3 THEN 'CustomAttribute'
121
+ END
122
+ ),
123
+ 'modifier',
124
+ (
125
+ CASE cs.Modifier
126
+ WHEN 0 THEN 'None'
127
+ WHEN 1 THEN 'Abstract'
128
+ WHEN 2 THEN 'Sealed'
129
+ END
130
+ ),
131
+ 'properties',
132
+ (
133
+ SELECT
134
+ JSON_GROUP_ARRAY(JSON(propJson))
135
+ FROM
136
+ (
137
+ SELECT
138
+ JSON_OBJECT(
139
+ 'id', format('0x%x', pt.id),
140
+ 'name', pt.Name,
141
+ 'kind',
142
+ (
143
+ CASE pt.Kind
144
+ WHEN 0 THEN 'Primitive'
145
+ WHEN 1 THEN 'Struct'
146
+ WHEN 2 THEN 'PrimitiveArray'
147
+ WHEN 3 THEN 'StructArray'
148
+ WHEN 4 THEN 'Navigation'
149
+ END
150
+ ),
151
+ 'primitiveType',
152
+ (
153
+ CASE pt.PrimitiveType
154
+ WHEN 0x101 THEN 'Binary'
155
+ WHEN 0x201 THEN 'Boolean'
156
+ WHEN 0x301 THEN 'DateTime'
157
+ WHEN 0x401 THEN 'Double'
158
+ WHEN 0x501 THEN 'Integer'
159
+ WHEN 0x601 THEN 'Long'
160
+ WHEN 0x701 THEN 'Point2d'
161
+ WHEN 0x801 THEN 'Point3d'
162
+ WHEN 0x901 THEN 'String'
163
+ WHEN 0xa01 THEN 'IGeometry'
164
+ END
165
+ ),
166
+ 'extendedTypeName', ExtendedTypeName,
167
+ 'navigationRelationship',
168
+ (
169
+ SELECT
170
+ JSON_OBJECT(
171
+ 'classId', format('0x%x', nc.Id),
172
+ 'classFullName', format('%s:%s', ns.Name, nc.Name)
173
+ )
174
+ FROM ec_Class nc
175
+ JOIN ec_Schema ns ON ns.Id = nc.SchemaId
176
+ WHERE
177
+ nc.Id = pt.NavigationRelationshipClassId
178
+ ),
179
+ 'structClass',
180
+ (
181
+ SELECT
182
+ JSON_OBJECT(
183
+ 'classId', format('0x%x', nc.Id),
184
+ 'classFullName', format('%s:%s', ns.Name, nc.Name)
185
+ )
186
+ FROM ec_Class nc
187
+ JOIN ec_Schema ns ON ns.Id = nc.SchemaId
188
+ WHERE
189
+ nc.Id = pt.StructClassId
190
+ ),
191
+ 'dateTimeInfo', (
192
+ SELECT
193
+ JSON_OBJECT (
194
+ 'dateTimeKind', (
195
+ CASE
196
+ WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'
197
+ WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'
198
+ ELSE 'Unspecified'
199
+ END
200
+ ),
201
+ 'dateTimeComponent', (
202
+ CASE
203
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'
204
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'
205
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'
206
+ ELSE 'DateTime'
207
+ END
208
+ )
209
+ )
210
+ FROM
211
+ [ec_CustomAttribute] [ca]
212
+ JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]
213
+ JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]
214
+ WHERE
215
+ [ca].[ContainerType] = 992
216
+ AND [cl].[Name] = 'DateTimeInfo'
217
+ AND [sc].[Name] = 'CoreCustomAttributes'
218
+ AND [ca].[ContainerId] = [pt].[Id]
219
+ ),
220
+ 'columns',
221
+ (
222
+ SELECT
223
+ JSON_GROUP_ARRAY(JSON(columnJson))
224
+ FROM
225
+ (
226
+ SELECT
227
+ JSON_OBJECT(
228
+ 'table', tb.Name,
229
+ 'column', cc.Name,
230
+ 'type',
231
+ (
232
+ CASE cc.Type
233
+ WHEN 0 THEN 'Any'
234
+ WHEN 1 THEN 'Boolean'
235
+ WHEN 2 THEN 'Blob'
236
+ WHEN 3 THEN 'Timestamp'
237
+ WHEN 4 THEN 'Real'
238
+ WHEN 5 THEN 'Integer'
239
+ WHEN 6 THEN 'Text'
240
+ END
241
+ ),
242
+ 'columnKind',
243
+ (
244
+ CASE cc.ColumnKind
245
+ WHEN 0 THEN 'Default'
246
+ WHEN 1 THEN 'Id'
247
+ WHEN 2 THEN 'ClassId'
248
+ WHEN 4 THEN 'SharedData'
249
+ END
250
+ ),
251
+ 'accessString', pp0.AccessString,
252
+ 'isVirtual', cc.IsVirtual OR tb.Type = 4
253
+ ) columnJson
254
+ FROM [ec_PropertyMap] [pm0]
255
+ JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]
256
+ JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]
257
+ JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]
258
+ WHERE
259
+ [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id
260
+ )
261
+ )
262
+ ) propJson
263
+ FROM [ec_PropertyMap] [pm]
264
+ JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]
265
+ JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]
266
+ WHERE
267
+ pm.ClassId = cs.Id
268
+ GROUP BY
269
+ pt.Id
270
+ )
271
+ )
272
+ ) classDef
273
+ FROM [ec_Class] [cs]
274
+ JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]
275
+ JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]
276
+ WHERE
277
+ [cs].[Id] = ?
275
278
  `;
276
279
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
277
280
  stmt.bindId(1, classId);
@@ -321,6 +324,186 @@ var DateTime;
321
324
  }
322
325
  DateTime.fromJulianDay = fromJulianDay;
323
326
  })(DateTime || (DateTime = {}));
327
+ var ECChangeUnifierCache;
328
+ (function (ECChangeUnifierCache) {
329
+ function createInMemory() {
330
+ return new InMemoryInstanceCache();
331
+ }
332
+ ECChangeUnifierCache.createInMemory = createInMemory;
333
+ function createSqliteBacked(db, bufferedReadInstanceSizeInBytes = 1024 * 1024 * 10) {
334
+ return new SqliteBackedInstanceCache(db, bufferedReadInstanceSizeInBytes);
335
+ }
336
+ ECChangeUnifierCache.createSqliteBacked = createSqliteBacked;
337
+ })(ECChangeUnifierCache || (exports.ECChangeUnifierCache = ECChangeUnifierCache = {}));
338
+ /**
339
+ * In-memory cache for storing changed EC instances.
340
+ */
341
+ class InMemoryInstanceCache {
342
+ _cache = new Map();
343
+ /**
344
+ * Retrieves the changed EC instance associated with the specified key.
345
+ * @param key - The key used to retrieve the instance.
346
+ * @returns The changed EC instance, or undefined if not found.
347
+ */
348
+ get(key) {
349
+ return this._cache.get(key);
350
+ }
351
+ /**
352
+ * Sets the changed EC instance associated with the specified key.
353
+ * @param key - The key used to store the instance.
354
+ * @param value - The changed EC instance to be stored.
355
+ */
356
+ set(key, value) {
357
+ const meta = value.$meta;
358
+ // Remove undefined keys
359
+ if (meta) {
360
+ Object.keys(meta).forEach((k) => meta[k] === undefined && delete meta[k]);
361
+ }
362
+ this._cache.set(key, value);
363
+ }
364
+ /**
365
+ * Returns an iterator over all the changed EC instances in the cache.
366
+ * @returns An iterator over all the changed EC instances.
367
+ */
368
+ *all() {
369
+ for (const key of Array.from(this._cache.keys()).sort()) {
370
+ const instance = this._cache.get(key);
371
+ if (instance) {
372
+ yield instance;
373
+ }
374
+ }
375
+ }
376
+ /**
377
+ * Returns the number of changed EC instances in the cache.
378
+ * @returns The number of changed EC instances.
379
+ */
380
+ count() {
381
+ return this._cache.size;
382
+ }
383
+ /**
384
+ * Disposes the cache.
385
+ */
386
+ [Symbol.dispose]() {
387
+ // Implementation details
388
+ }
389
+ }
390
+ /**
391
+ * Represents a cache for unifying EC changes in a SQLite-backed instance cache.
392
+ */
393
+ class SqliteBackedInstanceCache {
394
+ _db;
395
+ bufferedReadInstanceSizeInBytes;
396
+ _cacheTable = `[temp].[${core_bentley_1.Guid.createValue()}]`;
397
+ static defaultBufferSize = 1024 * 1024 * 10; // 10MB
398
+ /**
399
+ * Creates an instance of SqliteBackedInstanceCache.
400
+ * @param _db The underlying database connection.
401
+ * @param bufferedReadInstanceSizeInBytes The size of read instance buffer defaults to 10Mb.
402
+ * @throws Error if bufferedReadInstanceSizeInBytes is less than or equal to 0.
403
+ */
404
+ constructor(_db, bufferedReadInstanceSizeInBytes = SqliteBackedInstanceCache.defaultBufferSize) {
405
+ this._db = _db;
406
+ this.bufferedReadInstanceSizeInBytes = bufferedReadInstanceSizeInBytes;
407
+ if (bufferedReadInstanceSizeInBytes <= 0)
408
+ throw new Error("bufferedReadInstanceCount must be greater than 0");
409
+ this.createTempTable();
410
+ }
411
+ /**
412
+ * Creates a temporary table in the database for caching instances.
413
+ * @throws Error if unable to create the temporary table.
414
+ */
415
+ createTempTable() {
416
+ this._db.withSqliteStatement(`CREATE TABLE ${this._cacheTable} ([key] text primary key, [value] text)`, (stmt) => {
417
+ if (core_bentley_1.DbResult.BE_SQLITE_DONE !== stmt.step())
418
+ throw new Error("unable to create temp table");
419
+ });
420
+ }
421
+ /**
422
+ * Drops the temporary table from the database.
423
+ * @throws Error if unable to drop the temporary table.
424
+ */
425
+ dropTempTable() {
426
+ this._db.saveChanges();
427
+ if (this._db instanceof ECDb_1.ECDb)
428
+ this._db.clearStatementCache();
429
+ else {
430
+ this._db.clearCaches();
431
+ this._db[Symbols_1._nativeDb].clearECDbCache();
432
+ }
433
+ this._db.withSqliteStatement(`DROP TABLE IF EXISTS ${this._cacheTable}`, (stmt) => {
434
+ if (core_bentley_1.DbResult.BE_SQLITE_DONE !== stmt.step())
435
+ throw new Error("unable to drop temp table");
436
+ });
437
+ }
438
+ /**
439
+ * Retrieves the changed EC instance from the cache based on the specified key.
440
+ * @param key The key of the instance.
441
+ * @returns The changed EC instance if found, otherwise undefined.
442
+ */
443
+ get(key) {
444
+ return this._db.withPreparedSqliteStatement(`SELECT [value] FROM ${this._cacheTable} WHERE [key]=?`, (stmt) => {
445
+ stmt.bindString(1, key);
446
+ if (stmt.step() === core_bentley_1.DbResult.BE_SQLITE_ROW) {
447
+ const out = JSON.parse(stmt.getValueString(0), core_common_1.Base64EncodedString.reviver);
448
+ return out;
449
+ }
450
+ return undefined;
451
+ });
452
+ }
453
+ /**
454
+ * Sets the changed EC instance in the cache with the specified key.
455
+ * @param key The key of the instance.
456
+ * @param value The changed EC instance to be set.
457
+ */
458
+ set(key, value) {
459
+ const shallowCopy = Object.assign({}, value);
460
+ this._db.withPreparedSqliteStatement(`INSERT INTO ${this._cacheTable} ([key], [value]) VALUES (?, ?) ON CONFLICT ([key]) DO UPDATE SET [value] = [excluded].[value]`, (stmt) => {
461
+ stmt.bindString(1, key);
462
+ stmt.bindString(2, JSON.stringify(shallowCopy, core_common_1.Base64EncodedString.replacer));
463
+ stmt.step();
464
+ });
465
+ }
466
+ /**
467
+ * Returns an iterator for all the changed EC instances in the cache.
468
+ * @returns An iterator for all the changed EC instances.
469
+ */
470
+ *all() {
471
+ const sql = `
472
+ SELECT JSON_GROUP_ARRAY (JSON([value]))
473
+ FROM (SELECT
474
+ [value],
475
+ SUM (LENGTH ([value])) OVER (ORDER BY [key] ROWS UNBOUNDED PRECEDING) / ${this.bufferedReadInstanceSizeInBytes} AS [bucket]
476
+ FROM ${this._cacheTable})
477
+ GROUP BY [bucket]`;
478
+ const stmt = this._db.prepareSqliteStatement(sql);
479
+ while (stmt.step() === core_bentley_1.DbResult.BE_SQLITE_ROW) {
480
+ const instanceBucket = JSON.parse(stmt.getValueString(0), core_common_1.Base64EncodedString.reviver);
481
+ for (const value of instanceBucket) {
482
+ yield value;
483
+ }
484
+ }
485
+ stmt[Symbol.dispose]();
486
+ }
487
+ /**
488
+ * Returns the number of instances in the cache.
489
+ * @returns The number of instances in the cache.
490
+ */
491
+ count() {
492
+ return this._db.withPreparedSqliteStatement(`SELECT COUNT(*) FROM ${this._cacheTable}`, (stmt) => {
493
+ if (stmt.step() === core_bentley_1.DbResult.BE_SQLITE_ROW)
494
+ return stmt.getValue(0).getInteger();
495
+ return 0;
496
+ });
497
+ }
498
+ /**
499
+ * Disposes the cache by dropping the temporary table.
500
+ */
501
+ [Symbol.dispose]() {
502
+ if (this._db.isOpen) {
503
+ this.dropTempTable();
504
+ }
505
+ }
506
+ }
324
507
  /**
325
508
  * Combine partial changed instance into single instance.
326
509
  * Partial changes is per table and a single instance can
@@ -328,38 +511,49 @@ var DateTime;
328
511
  * @beta
329
512
  */
330
513
  class PartialECChangeUnifier {
331
- _cache = new Map();
514
+ _db;
515
+ _cache;
332
516
  _readonly = false;
517
+ constructor(_db, _cache = new InMemoryInstanceCache()) {
518
+ this._db = _db;
519
+ this._cache = _cache;
520
+ }
521
+ /**
522
+ * Dispose the instance.
523
+ */
524
+ [Symbol.dispose]() {
525
+ this._cache[Symbol.dispose]();
526
+ }
333
527
  /**
334
528
  * Get root class id for a given class
335
529
  * @param classId given class id
336
530
  * @param db use to find root class
337
531
  * @returns return root class id
338
532
  */
339
- static getRootClassId(classId, db) {
340
- const sql = `
341
- WITH
342
- [base_class]([classId], [baseClassId], [Level]) AS(
343
- SELECT [ch].[ClassId], [ch].[BaseClassId], 0
344
- FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?
345
- UNION ALL
346
- SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1
347
- FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]
348
-
349
- )
350
- SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass
351
- FROM [base_class] [bc]
352
- WHERE [bc].[ClassId] <> [bc].[BaseClassId]
353
- AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]
354
- FROM [ec_CustomAttribute] [ca]
355
- WHERE [ca].[ContainerType] = 30
356
- AND [ca].[ClassId] IN (SELECT [cc].[Id]
357
- FROM [ec_Class] [cc]
358
- JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]
359
- WHERE [cc].[Name] = 'IsMixIn'
360
- AND [ss].[Name] = 'CoreCustomAttributes'))
533
+ getRootClassId(classId) {
534
+ const sql = `
535
+ WITH
536
+ [base_class]([classId], [baseClassId], [Level]) AS(
537
+ SELECT [ch].[ClassId], [ch].[BaseClassId], 0
538
+ FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?
539
+ UNION ALL
540
+ SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1
541
+ FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]
542
+
543
+ )
544
+ SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass
545
+ FROM [base_class] [bc]
546
+ WHERE [bc].[ClassId] <> [bc].[BaseClassId]
547
+ AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]
548
+ FROM [ec_CustomAttribute] [ca]
549
+ WHERE [ca].[ContainerType] = 30
550
+ AND [ca].[ClassId] IN (SELECT [cc].[Id]
551
+ FROM [ec_Class] [cc]
552
+ JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]
553
+ WHERE [cc].[Name] = 'IsMixIn'
554
+ AND [ss].[Name] = 'CoreCustomAttributes'))
361
555
  ORDER BY [Level] DESC`;
362
- return db.withSqliteStatement(sql, (stmt) => {
556
+ return this._db.withSqliteStatement(sql, (stmt) => {
363
557
  stmt.bindId(1, classId);
364
558
  if (stmt.step() === core_bentley_1.DbResult.BE_SQLITE_ROW && !stmt.isValueNull(0)) {
365
559
  return stmt.getValueString(0);
@@ -367,15 +561,30 @@ class PartialECChangeUnifier {
367
561
  return classId;
368
562
  });
369
563
  }
564
+ /**
565
+ * Checks if the given `rhsClassId` is an instance of the `lhsClassId`.
566
+ * @param rhsClassId The ID of the right-hand side class.
567
+ * @param lhsClassId The ID of the left-hand side class.
568
+ * @returns `true` if `rhsClassId` is an instance of `lhsClassId`, `false` otherwise.
569
+ */
570
+ instanceOf(rhsClassId, lhsClassId) {
571
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
572
+ return this._db.withPreparedStatement("SELECT ec_instanceof(?,?)", (stmt) => {
573
+ stmt.bindId(1, rhsClassId);
574
+ stmt.bindId(2, lhsClassId);
575
+ stmt.step();
576
+ return stmt.getValue(0).getInteger() === 1;
577
+ });
578
+ }
370
579
  /**
371
580
  * Combine partial instance with instance with same key if already exists.
372
581
  * @param rhs partial instance
373
582
  */
374
- combine(rhs, db) {
583
+ combine(rhs) {
375
584
  if (!rhs.$meta) {
376
585
  throw new Error("PartialECChange being combine must have '$meta' property");
377
586
  }
378
- const key = PartialECChangeUnifier.buildKey(rhs, db);
587
+ const key = this.buildKey(rhs);
379
588
  const lhs = this._cache.get(key);
380
589
  if (lhs) {
381
590
  const { $meta: _, ...restOfRhs } = rhs;
@@ -384,37 +593,39 @@ class PartialECChangeUnifier {
384
593
  lhs.$meta.tables = [...rhs.$meta?.tables, ...lhs.$meta?.tables];
385
594
  lhs.$meta.changeIndexes = [...rhs.$meta?.changeIndexes, ...lhs.$meta?.changeIndexes];
386
595
  // we preserve child class name & id when merging instance.
387
- if (rhs.$meta.fallbackClassId && lhs.$meta.fallbackClassId && db && rhs.$meta.fallbackClassId !== lhs.$meta.fallbackClassId) {
596
+ if (rhs.$meta.fallbackClassId && lhs.$meta.fallbackClassId && rhs.$meta.fallbackClassId !== lhs.$meta.fallbackClassId) {
388
597
  const lhsClassId = lhs.$meta.fallbackClassId;
389
598
  const rhsClassId = rhs.$meta.fallbackClassId;
390
- // eslint-disable-next-line @typescript-eslint/no-deprecated
391
- const isRhsIsSubClassOfLhs = db.withPreparedStatement("SELECT ec_instanceof(?,?)", (stmt) => {
392
- stmt.bindId(1, rhsClassId);
393
- stmt.bindId(2, lhsClassId);
394
- stmt.step();
395
- return stmt.getValue(0).getInteger() === 1;
396
- });
599
+ const isRhsIsSubClassOfLhs = this.instanceOf(rhsClassId, lhsClassId);
397
600
  if (isRhsIsSubClassOfLhs) {
398
601
  lhs.$meta.fallbackClassId = rhs.$meta.fallbackClassId;
399
602
  lhs.$meta.classFullName = rhs.$meta.classFullName;
400
603
  }
401
604
  }
402
605
  }
606
+ this._cache.set(key, lhs);
403
607
  }
404
608
  else {
405
609
  this._cache.set(key, rhs);
406
610
  }
407
611
  }
612
+ /**
613
+ * Returns the number of instances in the cache.
614
+ * @returns The number of instances in the cache.
615
+ */
616
+ getInstanceCount() {
617
+ return this._cache.count();
618
+ }
408
619
  /**
409
620
  * Build key from EC change.
410
621
  * @param change EC change
411
622
  * @returns key created from EC change.
412
623
  */
413
- static buildKey(change, db) {
624
+ buildKey(change) {
414
625
  let classId = change.ECClassId;
415
626
  if (typeof classId === "undefined") {
416
- if (db && change.$meta?.fallbackClassId) {
417
- classId = this.getRootClassId(change.$meta.fallbackClassId, db);
627
+ if (change.$meta?.fallbackClassId) {
628
+ classId = this.getRootClassId(change.$meta.fallbackClassId);
418
629
  }
419
630
  if (typeof classId === "undefined") {
420
631
  throw new Error(`unable to resolve ECClassId to root class id.`);
@@ -437,32 +648,23 @@ class PartialECChangeUnifier {
437
648
  throw new Error("this instance is marked as readonly.");
438
649
  }
439
650
  if (adaptor.op === "Updated" && adaptor.inserted && adaptor.deleted) {
440
- this.combine(adaptor.inserted, adaptor.reader.db);
441
- this.combine(adaptor.deleted, adaptor.reader.db);
651
+ this.combine(adaptor.inserted);
652
+ this.combine(adaptor.deleted);
442
653
  }
443
654
  else if (adaptor.op === "Inserted" && adaptor.inserted) {
444
- this.combine(adaptor.inserted, adaptor.reader.db);
655
+ this.combine(adaptor.inserted);
445
656
  }
446
657
  else if (adaptor.op === "Deleted" && adaptor.deleted) {
447
- this.combine(adaptor.deleted, adaptor.reader.db);
448
- }
449
- }
450
- /**
451
- * Delete $meta from all the instances.
452
- */
453
- stripMetaData() {
454
- for (const inst of this._cache.values()) {
455
- if ("$meta" in inst) {
456
- delete inst.$meta;
457
- }
658
+ this.combine(adaptor.deleted);
458
659
  }
459
- this._readonly = true;
460
660
  }
461
661
  /**
462
662
  * Returns complete EC change instances.
463
663
  * @beta
464
664
  */
465
- get instances() { return this._cache.values(); }
665
+ get instances() {
666
+ return this._cache.all();
667
+ }
466
668
  }
467
669
  exports.PartialECChangeUnifier = PartialECChangeUnifier;
468
670
  /**