@itwin/core-backend 5.0.0-dev.96 → 5.0.0-dev.98

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 (385) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +2 -8
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  6. package/lib/cjs/BisCoreSchema.js.map +1 -1
  7. package/lib/cjs/BlobContainerService.js.map +1 -1
  8. package/lib/cjs/BriefcaseManager.js.map +1 -1
  9. package/lib/cjs/Category.js.map +1 -1
  10. package/lib/cjs/ChangeSummaryManager.js +2 -2
  11. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  12. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  13. package/lib/cjs/ChangesetECAdaptor.js +242 -242
  14. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  15. package/lib/cjs/ChannelControl.js.map +1 -1
  16. package/lib/cjs/CheckpointManager.d.ts +8 -15
  17. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  18. package/lib/cjs/CheckpointManager.js +23 -54
  19. package/lib/cjs/CheckpointManager.js.map +1 -1
  20. package/lib/cjs/ClassRegistry.js +5 -5
  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.js.map +1 -1
  30. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  31. package/lib/cjs/ECSqlStatement.js.map +1 -1
  32. package/lib/cjs/Element.d.ts +16 -4
  33. package/lib/cjs/Element.d.ts.map +1 -1
  34. package/lib/cjs/Element.js +40 -2
  35. package/lib/cjs/Element.js.map +1 -1
  36. package/lib/cjs/ElementAspect.js.map +1 -1
  37. package/lib/cjs/ElementGraphics.js.map +1 -1
  38. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  39. package/lib/cjs/Entity.js.map +1 -1
  40. package/lib/cjs/EntityReferences.js.map +1 -1
  41. package/lib/cjs/ExportGraphics.js.map +1 -1
  42. package/lib/cjs/ExternalSource.js.map +1 -1
  43. package/lib/cjs/FontFile.js.map +1 -1
  44. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  45. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  46. package/lib/cjs/GeometrySummary.js +47 -47
  47. package/lib/cjs/GeometrySummary.js.map +1 -1
  48. package/lib/cjs/HubMock.d.ts +1 -1
  49. package/lib/cjs/HubMock.d.ts.map +1 -1
  50. package/lib/cjs/HubMock.js +13 -2
  51. package/lib/cjs/HubMock.js.map +1 -1
  52. package/lib/cjs/IModelDb.d.ts.map +1 -1
  53. package/lib/cjs/IModelDb.js +12 -10
  54. package/lib/cjs/IModelDb.js.map +1 -1
  55. package/lib/cjs/IModelDbFonts.js.map +1 -1
  56. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  57. package/lib/cjs/IModelHost.js.map +1 -1
  58. package/lib/cjs/IModelJsFs.js.map +1 -1
  59. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  60. package/lib/cjs/IpcHost.js.map +1 -1
  61. package/lib/cjs/LineStyle.js.map +1 -1
  62. package/lib/cjs/LocalHub.js +1 -1
  63. package/lib/cjs/LocalHub.js.map +1 -1
  64. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  65. package/lib/cjs/LockControl.js.map +1 -1
  66. package/lib/cjs/Material.js.map +1 -1
  67. package/lib/cjs/Model.js.map +1 -1
  68. package/lib/cjs/NativeAppStorage.js.map +1 -1
  69. package/lib/cjs/NativeHost.js.map +1 -1
  70. package/lib/cjs/NavigationRelationship.js.map +1 -1
  71. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  72. package/lib/cjs/PropertyStore.js.map +1 -1
  73. package/lib/cjs/Relationship.js.map +1 -1
  74. package/lib/cjs/RpcBackend.js.map +1 -1
  75. package/lib/cjs/SQLiteDb.js.map +1 -1
  76. package/lib/cjs/Schema.js.map +1 -1
  77. package/lib/cjs/SchemaSync.js.map +1 -1
  78. package/lib/cjs/SchemaUtils.js.map +1 -1
  79. package/lib/cjs/SheetIndex.js.map +1 -1
  80. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  81. package/lib/cjs/SqliteStatement.js.map +1 -1
  82. package/lib/cjs/TextAnnotationElement.js.map +1 -1
  83. package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
  84. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  85. package/lib/cjs/Texture.js.map +1 -1
  86. package/lib/cjs/TileStorage.js.map +1 -1
  87. package/lib/cjs/TxnManager.js.map +1 -1
  88. package/lib/cjs/ViewDefinition.js.map +1 -1
  89. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  90. package/lib/cjs/ViewStore.js.map +1 -1
  91. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  92. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  93. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  94. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  95. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  96. package/lib/cjs/core-backend.js.map +1 -1
  97. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  98. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  99. package/lib/cjs/domains/GenericElements.js.map +1 -1
  100. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  101. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  102. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  103. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  104. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  105. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  106. package/lib/cjs/internal/NoLocks.js.map +1 -1
  107. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  108. package/lib/cjs/internal/Symbols.d.ts +2 -0
  109. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  110. package/lib/cjs/internal/Symbols.js +3 -1
  111. package/lib/cjs/internal/Symbols.js.map +1 -1
  112. package/lib/cjs/internal/cross-package.js.map +1 -1
  113. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  114. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  115. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  116. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  117. package/lib/cjs/rpc/multipart.js.map +1 -1
  118. package/lib/cjs/rpc/tracing.js.map +1 -1
  119. package/lib/cjs/rpc/web/logging.js.map +1 -1
  120. package/lib/cjs/rpc/web/request.js.map +1 -1
  121. package/lib/cjs/rpc/web/response.js.map +1 -1
  122. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  123. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  124. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  125. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  126. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +11 -22
  127. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  128. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  129. package/lib/cjs/workspace/Settings.js.map +1 -1
  130. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  131. package/lib/cjs/workspace/Workspace.js.map +1 -1
  132. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  133. package/lib/esm/BackendHubAccess.d.ts +2 -8
  134. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  135. package/lib/esm/BackendHubAccess.js.map +1 -1
  136. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  137. package/lib/esm/BisCoreSchema.js.map +1 -1
  138. package/lib/esm/BlobContainerService.js.map +1 -1
  139. package/lib/esm/BriefcaseManager.js.map +1 -1
  140. package/lib/esm/Category.js.map +1 -1
  141. package/lib/esm/ChangeSummaryManager.js +2 -2
  142. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  143. package/lib/esm/ChangedElementsDb.js.map +1 -1
  144. package/lib/esm/ChangesetECAdaptor.js +242 -242
  145. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  146. package/lib/esm/ChannelControl.js.map +1 -1
  147. package/lib/esm/CheckpointManager.d.ts +8 -15
  148. package/lib/esm/CheckpointManager.d.ts.map +1 -1
  149. package/lib/esm/CheckpointManager.js +22 -52
  150. package/lib/esm/CheckpointManager.js.map +1 -1
  151. package/lib/esm/ClassRegistry.js +5 -5
  152. package/lib/esm/ClassRegistry.js.map +1 -1
  153. package/lib/esm/CloudSqlite.js.map +1 -1
  154. package/lib/esm/CodeService.js.map +1 -1
  155. package/lib/esm/CodeSpecs.js.map +1 -1
  156. package/lib/esm/ConcurrentQuery.js.map +1 -1
  157. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  158. package/lib/esm/DevTools.js.map +1 -1
  159. package/lib/esm/DisplayStyle.js.map +1 -1
  160. package/lib/esm/ECDb.js.map +1 -1
  161. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  162. package/lib/esm/ECSqlStatement.js.map +1 -1
  163. package/lib/esm/Element.d.ts +16 -4
  164. package/lib/esm/Element.d.ts.map +1 -1
  165. package/lib/esm/Element.js +40 -2
  166. package/lib/esm/Element.js.map +1 -1
  167. package/lib/esm/ElementAspect.js.map +1 -1
  168. package/lib/esm/ElementGraphics.js.map +1 -1
  169. package/lib/esm/ElementTreeWalker.js.map +1 -1
  170. package/lib/esm/Entity.js.map +1 -1
  171. package/lib/esm/EntityReferences.js.map +1 -1
  172. package/lib/esm/ExportGraphics.js.map +1 -1
  173. package/lib/esm/ExternalSource.js.map +1 -1
  174. package/lib/esm/FontFile.js.map +1 -1
  175. package/lib/esm/GeoCoordConfig.js.map +1 -1
  176. package/lib/esm/GeographicCRSServices.js.map +1 -1
  177. package/lib/esm/GeometrySummary.js +47 -47
  178. package/lib/esm/GeometrySummary.js.map +1 -1
  179. package/lib/esm/HubMock.d.ts +1 -1
  180. package/lib/esm/HubMock.d.ts.map +1 -1
  181. package/lib/esm/HubMock.js +13 -2
  182. package/lib/esm/HubMock.js.map +1 -1
  183. package/lib/esm/IModelDb.d.ts.map +1 -1
  184. package/lib/esm/IModelDb.js +12 -10
  185. package/lib/esm/IModelDb.js.map +1 -1
  186. package/lib/esm/IModelDbFonts.js.map +1 -1
  187. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  188. package/lib/esm/IModelHost.js.map +1 -1
  189. package/lib/esm/IModelJsFs.js.map +1 -1
  190. package/lib/esm/ImageSourceConversion.js.map +1 -1
  191. package/lib/esm/IpcHost.js.map +1 -1
  192. package/lib/esm/LineStyle.js.map +1 -1
  193. package/lib/esm/LocalHub.js +1 -1
  194. package/lib/esm/LocalHub.js.map +1 -1
  195. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  196. package/lib/esm/LockControl.js.map +1 -1
  197. package/lib/esm/Material.js.map +1 -1
  198. package/lib/esm/Model.js.map +1 -1
  199. package/lib/esm/NativeAppStorage.js.map +1 -1
  200. package/lib/esm/NativeHost.js.map +1 -1
  201. package/lib/esm/NavigationRelationship.js.map +1 -1
  202. package/lib/esm/PromiseMemoizer.js.map +1 -1
  203. package/lib/esm/PropertyStore.js.map +1 -1
  204. package/lib/esm/Relationship.js.map +1 -1
  205. package/lib/esm/RpcBackend.js.map +1 -1
  206. package/lib/esm/SQLiteDb.js.map +1 -1
  207. package/lib/esm/Schema.js.map +1 -1
  208. package/lib/esm/SchemaSync.js.map +1 -1
  209. package/lib/esm/SchemaUtils.js.map +1 -1
  210. package/lib/esm/SheetIndex.js.map +1 -1
  211. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  212. package/lib/esm/SqliteStatement.js.map +1 -1
  213. package/lib/esm/TextAnnotationElement.js.map +1 -1
  214. package/lib/esm/TextAnnotationGeometry.js.map +1 -1
  215. package/lib/esm/TextAnnotationLayout.js.map +1 -1
  216. package/lib/esm/Texture.js.map +1 -1
  217. package/lib/esm/TileStorage.js.map +1 -1
  218. package/lib/esm/TxnManager.js.map +1 -1
  219. package/lib/esm/ViewDefinition.js.map +1 -1
  220. package/lib/esm/ViewStateHydrator.js.map +1 -1
  221. package/lib/esm/ViewStore.js.map +1 -1
  222. package/lib/esm/core-backend.js.map +1 -1
  223. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  224. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  225. package/lib/esm/domains/GenericElements.js.map +1 -1
  226. package/lib/esm/domains/GenericSchema.js.map +1 -1
  227. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  228. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  229. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  230. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  231. package/lib/esm/internal/NativePlatform.js.map +1 -1
  232. package/lib/esm/internal/NoLocks.js.map +1 -1
  233. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  234. package/lib/esm/internal/Symbols.d.ts +2 -0
  235. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  236. package/lib/esm/internal/Symbols.js +2 -0
  237. package/lib/esm/internal/Symbols.js.map +1 -1
  238. package/lib/esm/internal/cross-package.js.map +1 -1
  239. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  240. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  241. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  242. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  243. package/lib/esm/rpc/multipart.js.map +1 -1
  244. package/lib/esm/rpc/tracing.js.map +1 -1
  245. package/lib/esm/rpc/web/logging.js.map +1 -1
  246. package/lib/esm/rpc/web/request.js.map +1 -1
  247. package/lib/esm/rpc/web/response.js.map +1 -1
  248. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  249. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  250. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  251. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  252. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js +13 -24
  253. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  254. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  255. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  256. package/lib/esm/test/AttachDb.test.js +11 -11
  257. package/lib/esm/test/AttachDb.test.js.map +1 -1
  258. package/lib/esm/test/CloudSqliteMock.d.ts +37 -0
  259. package/lib/esm/test/CloudSqliteMock.d.ts.map +1 -0
  260. package/lib/esm/test/CloudSqliteMock.js +117 -0
  261. package/lib/esm/test/CloudSqliteMock.js.map +1 -0
  262. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  263. package/lib/esm/test/IModelHost.test.js.map +1 -1
  264. package/lib/esm/test/IModelTestUtils.d.ts +1 -1
  265. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  266. package/lib/esm/test/IModelTestUtils.js +6 -4
  267. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  268. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  269. package/lib/esm/test/IpcHost.test.js.map +1 -1
  270. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  271. package/lib/esm/test/PrintElementTree.js.map +1 -1
  272. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  273. package/lib/esm/test/RevisionUtility.js.map +1 -1
  274. package/lib/esm/test/SchemaUtils.test.js +25 -25
  275. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  276. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  277. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  278. package/lib/esm/test/TestUtils.js.map +1 -1
  279. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  280. package/lib/esm/test/categories/Category.test.js.map +1 -1
  281. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  282. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  283. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  284. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  285. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  286. package/lib/esm/test/ecdb/ECDb.test.js +57 -57
  287. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  288. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  289. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  290. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  291. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  292. package/lib/esm/test/ecdb/ECSqlQuery.test.js +7 -7
  293. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  294. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  295. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  296. package/lib/esm/test/ecdb/ECSqlStatement.test.js +292 -292
  297. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  298. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  299. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  300. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  301. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  302. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  303. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  304. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  305. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  306. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  307. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  308. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  309. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  310. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  311. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  312. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  313. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  314. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  315. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  316. package/lib/esm/test/font/IModelDbFonts.test.js +3 -1
  317. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  318. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +18 -7
  319. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  320. package/lib/esm/test/hubaccess/CheckpointManager.test.js +5 -91
  321. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  322. package/lib/esm/test/imageData.js.map +1 -1
  323. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  324. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  325. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  326. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  327. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  328. package/lib/esm/test/index.js.map +1 -1
  329. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  330. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  331. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  332. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  333. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  334. package/lib/esm/test/rpc/response.test.js.map +1 -1
  335. package/lib/esm/test/schema/ClassRegistry.test.js +71 -71
  336. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  337. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  338. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  339. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  340. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  341. package/lib/esm/test/standalone/ChangeMerge.test.js +0 -4
  342. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  343. package/lib/esm/test/standalone/ChangesetReader.test.js +28 -28
  344. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  345. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  346. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  347. package/lib/esm/test/standalone/Drawing.test.d.ts +2 -0
  348. package/lib/esm/test/standalone/Drawing.test.d.ts.map +1 -0
  349. package/lib/esm/test/standalone/Drawing.test.js +120 -0
  350. package/lib/esm/test/standalone/Drawing.test.js.map +1 -0
  351. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  352. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  353. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  354. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  355. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  356. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  357. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  358. package/lib/esm/test/standalone/IModelWrite.test.js +42 -33
  359. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  360. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  361. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  362. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  363. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  364. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  365. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  366. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  367. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  368. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  369. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  370. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  371. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  372. package/lib/esm/test/standalone/SnapshotDb.test.js +4 -3
  373. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  374. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  375. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  376. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  377. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  378. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  379. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  380. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  381. package/lib/esm/workspace/Settings.js.map +1 -1
  382. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  383. package/lib/esm/workspace/Workspace.js.map +1 -1
  384. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  385. package/package.json +13 -12
@@ -1 +1 @@
1
- {"version":3,"file":"ChangedElementsDb.js","sourceRoot":"","sources":["../../src/ChangedElementsDb.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ChangedElementsDb\r\n */\r\n\r\nimport { AccessToken, DbResult, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\r\nimport { ChangeData, ChangedElements, ChangedModels, IModelError } from \"@itwin/core-common\";\r\nimport { IModelJsNative } from \"@bentley/imodeljs-native\";\r\nimport { BriefcaseManager } from \"./BriefcaseManager\";\r\nimport { ECDbOpenMode } from \"./ECDb\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { IModelHost } from \"./IModelHost\";\r\nimport { IModelNative } from \"./internal/NativePlatform\";\r\nimport { _hubAccess, _nativeDb } from \"./internal/Symbols\";\r\n\r\n/**\r\n * Options for processChangesets function\r\n * @internal\r\n * */\r\nexport interface ProcessChangesetOptions {\r\n startChangesetId: string;\r\n endChangesetId: string;\r\n rulesetId: string;\r\n filterSpatial?: boolean;\r\n wantParents?: boolean;\r\n wantPropertyChecksums?: boolean;\r\n rulesetDir?: string;\r\n tempDir?: string;\r\n wantRelationshipCaching?: boolean;\r\n relationshipCacheSize?: number;\r\n wantChunkTraversal?: boolean;\r\n wantBoundingBoxes?: boolean;\r\n}\r\n\r\n/** An ChangedElementsDb file\r\n * @internal\r\n */\r\nexport class ChangedElementsDb implements Disposable {\r\n private _nativeDb: IModelJsNative.ChangedElementsECDb | undefined;\r\n\r\n constructor() {\r\n this._nativeDb = new IModelNative.platform.ChangedElementsECDb();\r\n }\r\n\r\n public [Symbol.dispose](): void {\r\n if (!this._nativeDb)\r\n return;\r\n\r\n this.closeDb();\r\n this._nativeDb.dispose();\r\n this._nativeDb = undefined;\r\n }\r\n\r\n /** Create a ChangedElementsDb\r\n * @param pathName The path to the ECDb file to create.\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n private _createDb(briefcase: IModelDb, pathName: string): void {\r\n const status: DbResult = this.nativeDb.createDb(briefcase[_nativeDb], pathName);\r\n if (status !== DbResult.BE_SQLITE_OK)\r\n throw new IModelError(status, \"Failed to created ECDb\");\r\n }\r\n\r\n /** Open the Changed Elements Db.\r\n * @param pathName The path to the ECDb file to open\r\n * @param openMode Open mode\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n private _openDb(pathName: string, openMode: ECDbOpenMode = ECDbOpenMode.Readonly): void {\r\n const nativeOpenMode = openMode === ECDbOpenMode.Readonly ? OpenMode.Readonly : OpenMode.ReadWrite;\r\n const tryUpgrade = openMode === ECDbOpenMode.FileUpgrade;\r\n const status = this.nativeDb.openDb(pathName, nativeOpenMode, tryUpgrade);\r\n if (status !== DbResult.BE_SQLITE_OK)\r\n throw new IModelError(status, \"Failed to open ECDb\");\r\n }\r\n\r\n /** Open the Changed Elements Db.\r\n * @param pathName The path to the ECDb file to open\r\n * @param openMode Open mode\r\n * @returns ChangedElementsDb\r\n */\r\n public static openDb(pathName: string, openMode: ECDbOpenMode = ECDbOpenMode.Readonly): ChangedElementsDb {\r\n const cacheDb = new ChangedElementsDb();\r\n cacheDb._openDb(pathName, openMode);\r\n return cacheDb;\r\n }\r\n\r\n /** Create the changed elements cache db\r\n * @param briefcase IModelDb to use\r\n * @param pathName The path to the ECDb file to create.\r\n * @returns The new cache db\r\n */\r\n public static createDb(briefcase: IModelDb, pathName: string): ChangedElementsDb {\r\n const cacheDb = new ChangedElementsDb();\r\n cacheDb._createDb(briefcase, pathName);\r\n return cacheDb;\r\n }\r\n\r\n /** Processes a range of changesets and adds it to the changed elements cache\r\n * @param briefcase iModel briefcase to use\r\n * @param options Options for processing\r\n */\r\n public async processChangesets(accessToken: AccessToken, briefcase: IModelDb, options: ProcessChangesetOptions): Promise<DbResult> {\r\n const iModelId = briefcase.iModelId;\r\n const first = (await IModelHost[_hubAccess].queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;\r\n const end = (await IModelHost[_hubAccess].queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;\r\n const changesets = await IModelHost[_hubAccess].downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager.getChangeSetsPath(iModelId) });\r\n\r\n // ChangeSets need to be processed from newest to oldest\r\n changesets.reverse();\r\n const status = this.nativeDb.processChangesets(\r\n briefcase[_nativeDb],\r\n changesets,\r\n options.rulesetId,\r\n options.filterSpatial,\r\n options.wantParents,\r\n options.wantPropertyChecksums,\r\n options.rulesetDir,\r\n options.tempDir,\r\n options.wantChunkTraversal,\r\n );\r\n if (status !== DbResult.BE_SQLITE_OK)\r\n throw new IModelError(status, \"Failed to process changesets\");\r\n return status;\r\n }\r\n\r\n /** Processes a range of changesets and adds it to the changed elements cache\r\n * This call will close the IModelDb object as it is required for processing and applying changesets\r\n * @param briefcase iModel briefcase to use\r\n * @param options options for processing\r\n */\r\n public async processChangesetsAndRoll(accessToken: AccessToken, briefcase: IModelDb, options: ProcessChangesetOptions): Promise<DbResult> {\r\n const iModelId = briefcase.iModelId;\r\n const first = (await IModelHost[_hubAccess].queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;\r\n const end = (await IModelHost[_hubAccess].queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;\r\n const changesets = await IModelHost[_hubAccess].downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager.getChangeSetsPath(iModelId) });\r\n\r\n // ChangeSets need to be processed from newest to oldest\r\n changesets.reverse();\r\n // Close briefcase before doing processing and rolling briefcase\r\n const dbFilename = briefcase.pathName;\r\n const dbGuid = briefcase.iModelId;\r\n briefcase.close();\r\n // Process changesets\r\n const status = this.nativeDb.processChangesetsAndRoll(\r\n dbFilename,\r\n dbGuid,\r\n changesets,\r\n options.rulesetId,\r\n options.filterSpatial,\r\n options.wantParents,\r\n options.wantPropertyChecksums,\r\n options.rulesetDir,\r\n options.tempDir,\r\n options.wantRelationshipCaching,\r\n options.relationshipCacheSize,\r\n options.wantChunkTraversal,\r\n options.wantBoundingBoxes,\r\n );\r\n if (status !== DbResult.BE_SQLITE_OK)\r\n throw new IModelError(status, \"Failed to process changesets\");\r\n return status;\r\n }\r\n\r\n /** Get changed elements between two changesets\r\n * @param startChangesetId Start Changeset Id\r\n * @param endChangesetId End Changeset Id\r\n * @returns Returns the changed elements between the changesets provided\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n public getChangedElements(startChangesetId: string, endChangesetId: string): ChangedElements | undefined {\r\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\r\n if (result.error || !result.result)\r\n throw new IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : \"Problem getting changed elements\");\r\n return (result.result.changedElements) as ChangedElements;\r\n }\r\n\r\n /** Get changed models between two changesets\r\n * @param startChangesetId Start Changeset Id\r\n * @param endChangesetId End Changeset Id\r\n * @returns Returns the changed models between the changesets provided\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n public getChangedModels(startChangesetId: string, endChangesetId: string): ChangedModels | undefined {\r\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\r\n if (result.error || !result.result)\r\n throw new IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : \"Problem getting changed models\");\r\n return (result.result.changedModels) as ChangedModels;\r\n }\r\n\r\n /** Get changed models between two changesets\r\n * @param startChangesetId Start Changeset Id\r\n * @param endChangesetId End Changeset Id\r\n * @returns Returns the changed models between the changesets provided\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n public getChangeData(startChangesetId: string, endChangesetId: string): ChangeData | undefined {\r\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\r\n if (result.error)\r\n throw new IModelError(result.error.status, result.error.message);\r\n return result.result as ChangeData;\r\n }\r\n\r\n /** Returns true if the Changed Elements Db is open */\r\n public get isOpen(): boolean { return this.nativeDb.isOpen(); }\r\n\r\n /** Returns true if the cache already contains this changeset Id */\r\n public isProcessed(changesetId: string): boolean { return this.nativeDb.isProcessed(changesetId); }\r\n\r\n /** Close the Db after saving any uncommitted changes.\r\n * @throws [IModelError]($common) if the database is not open.\r\n */\r\n public closeDb(): void {\r\n this.nativeDb.closeDb();\r\n }\r\n\r\n public cleanCaches(): void {\r\n this.nativeDb.cleanCaches();\r\n }\r\n\r\n /** @internal */\r\n public get nativeDb(): IModelJsNative.ChangedElementsECDb {\r\n if (!this._nativeDb)\r\n throw new IModelError(IModelStatus.BadRequest, \"ChangedElementsDb object has already been disposed.\");\r\n\r\n return this._nativeDb;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ChangedElementsDb.js","sourceRoot":"","sources":["../../src/ChangedElementsDb.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ChangedElementsDb\n */\n\nimport { AccessToken, DbResult, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport { ChangeData, ChangedElements, ChangedModels, IModelError } from \"@itwin/core-common\";\nimport { IModelJsNative } from \"@bentley/imodeljs-native\";\nimport { BriefcaseManager } from \"./BriefcaseManager\";\nimport { ECDbOpenMode } from \"./ECDb\";\nimport { IModelDb } from \"./IModelDb\";\nimport { IModelHost } from \"./IModelHost\";\nimport { IModelNative } from \"./internal/NativePlatform\";\nimport { _hubAccess, _nativeDb } from \"./internal/Symbols\";\n\n/**\n * Options for processChangesets function\n * @internal\n * */\nexport interface ProcessChangesetOptions {\n startChangesetId: string;\n endChangesetId: string;\n rulesetId: string;\n filterSpatial?: boolean;\n wantParents?: boolean;\n wantPropertyChecksums?: boolean;\n rulesetDir?: string;\n tempDir?: string;\n wantRelationshipCaching?: boolean;\n relationshipCacheSize?: number;\n wantChunkTraversal?: boolean;\n wantBoundingBoxes?: boolean;\n}\n\n/** An ChangedElementsDb file\n * @internal\n */\nexport class ChangedElementsDb implements Disposable {\n private _nativeDb: IModelJsNative.ChangedElementsECDb | undefined;\n\n constructor() {\n this._nativeDb = new IModelNative.platform.ChangedElementsECDb();\n }\n\n public [Symbol.dispose](): void {\n if (!this._nativeDb)\n return;\n\n this.closeDb();\n this._nativeDb.dispose();\n this._nativeDb = undefined;\n }\n\n /** Create a ChangedElementsDb\n * @param pathName The path to the ECDb file to create.\n * @throws [IModelError]($common) if the operation failed.\n */\n private _createDb(briefcase: IModelDb, pathName: string): void {\n const status: DbResult = this.nativeDb.createDb(briefcase[_nativeDb], pathName);\n if (status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(status, \"Failed to created ECDb\");\n }\n\n /** Open the Changed Elements Db.\n * @param pathName The path to the ECDb file to open\n * @param openMode Open mode\n * @throws [IModelError]($common) if the operation failed.\n */\n private _openDb(pathName: string, openMode: ECDbOpenMode = ECDbOpenMode.Readonly): void {\n const nativeOpenMode = openMode === ECDbOpenMode.Readonly ? OpenMode.Readonly : OpenMode.ReadWrite;\n const tryUpgrade = openMode === ECDbOpenMode.FileUpgrade;\n const status = this.nativeDb.openDb(pathName, nativeOpenMode, tryUpgrade);\n if (status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(status, \"Failed to open ECDb\");\n }\n\n /** Open the Changed Elements Db.\n * @param pathName The path to the ECDb file to open\n * @param openMode Open mode\n * @returns ChangedElementsDb\n */\n public static openDb(pathName: string, openMode: ECDbOpenMode = ECDbOpenMode.Readonly): ChangedElementsDb {\n const cacheDb = new ChangedElementsDb();\n cacheDb._openDb(pathName, openMode);\n return cacheDb;\n }\n\n /** Create the changed elements cache db\n * @param briefcase IModelDb to use\n * @param pathName The path to the ECDb file to create.\n * @returns The new cache db\n */\n public static createDb(briefcase: IModelDb, pathName: string): ChangedElementsDb {\n const cacheDb = new ChangedElementsDb();\n cacheDb._createDb(briefcase, pathName);\n return cacheDb;\n }\n\n /** Processes a range of changesets and adds it to the changed elements cache\n * @param briefcase iModel briefcase to use\n * @param options Options for processing\n */\n public async processChangesets(accessToken: AccessToken, briefcase: IModelDb, options: ProcessChangesetOptions): Promise<DbResult> {\n const iModelId = briefcase.iModelId;\n const first = (await IModelHost[_hubAccess].queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;\n const end = (await IModelHost[_hubAccess].queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;\n const changesets = await IModelHost[_hubAccess].downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager.getChangeSetsPath(iModelId) });\n\n // ChangeSets need to be processed from newest to oldest\n changesets.reverse();\n const status = this.nativeDb.processChangesets(\n briefcase[_nativeDb],\n changesets,\n options.rulesetId,\n options.filterSpatial,\n options.wantParents,\n options.wantPropertyChecksums,\n options.rulesetDir,\n options.tempDir,\n options.wantChunkTraversal,\n );\n if (status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(status, \"Failed to process changesets\");\n return status;\n }\n\n /** Processes a range of changesets and adds it to the changed elements cache\n * This call will close the IModelDb object as it is required for processing and applying changesets\n * @param briefcase iModel briefcase to use\n * @param options options for processing\n */\n public async processChangesetsAndRoll(accessToken: AccessToken, briefcase: IModelDb, options: ProcessChangesetOptions): Promise<DbResult> {\n const iModelId = briefcase.iModelId;\n const first = (await IModelHost[_hubAccess].queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;\n const end = (await IModelHost[_hubAccess].queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;\n const changesets = await IModelHost[_hubAccess].downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager.getChangeSetsPath(iModelId) });\n\n // ChangeSets need to be processed from newest to oldest\n changesets.reverse();\n // Close briefcase before doing processing and rolling briefcase\n const dbFilename = briefcase.pathName;\n const dbGuid = briefcase.iModelId;\n briefcase.close();\n // Process changesets\n const status = this.nativeDb.processChangesetsAndRoll(\n dbFilename,\n dbGuid,\n changesets,\n options.rulesetId,\n options.filterSpatial,\n options.wantParents,\n options.wantPropertyChecksums,\n options.rulesetDir,\n options.tempDir,\n options.wantRelationshipCaching,\n options.relationshipCacheSize,\n options.wantChunkTraversal,\n options.wantBoundingBoxes,\n );\n if (status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(status, \"Failed to process changesets\");\n return status;\n }\n\n /** Get changed elements between two changesets\n * @param startChangesetId Start Changeset Id\n * @param endChangesetId End Changeset Id\n * @returns Returns the changed elements between the changesets provided\n * @throws [IModelError]($common) if the operation failed.\n */\n public getChangedElements(startChangesetId: string, endChangesetId: string): ChangedElements | undefined {\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\n if (result.error || !result.result)\n throw new IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : \"Problem getting changed elements\");\n return (result.result.changedElements) as ChangedElements;\n }\n\n /** Get changed models between two changesets\n * @param startChangesetId Start Changeset Id\n * @param endChangesetId End Changeset Id\n * @returns Returns the changed models between the changesets provided\n * @throws [IModelError]($common) if the operation failed.\n */\n public getChangedModels(startChangesetId: string, endChangesetId: string): ChangedModels | undefined {\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\n if (result.error || !result.result)\n throw new IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : \"Problem getting changed models\");\n return (result.result.changedModels) as ChangedModels;\n }\n\n /** Get changed models between two changesets\n * @param startChangesetId Start Changeset Id\n * @param endChangesetId End Changeset Id\n * @returns Returns the changed models between the changesets provided\n * @throws [IModelError]($common) if the operation failed.\n */\n public getChangeData(startChangesetId: string, endChangesetId: string): ChangeData | undefined {\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\n if (result.error)\n throw new IModelError(result.error.status, result.error.message);\n return result.result as ChangeData;\n }\n\n /** Returns true if the Changed Elements Db is open */\n public get isOpen(): boolean { return this.nativeDb.isOpen(); }\n\n /** Returns true if the cache already contains this changeset Id */\n public isProcessed(changesetId: string): boolean { return this.nativeDb.isProcessed(changesetId); }\n\n /** Close the Db after saving any uncommitted changes.\n * @throws [IModelError]($common) if the database is not open.\n */\n public closeDb(): void {\n this.nativeDb.closeDb();\n }\n\n public cleanCaches(): void {\n this.nativeDb.cleanCaches();\n }\n\n /** @internal */\n public get nativeDb(): IModelJsNative.ChangedElementsECDb {\n if (!this._nativeDb)\n throw new IModelError(IModelStatus.BadRequest, \"ChangedElementsDb object has already been disposed.\");\n\n return this._nativeDb;\n }\n}\n"]}
@@ -14,14 +14,14 @@ class ECDbMap {
14
14
  this.db = db;
15
15
  }
16
16
  getAllDerivedClasses(classFullName) {
17
- const sql = `
18
- SELECT format('0x%x', ch.ClassId)
19
- FROM [ec_cache_ClassHierarchy] [ch]
20
- JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]
21
- JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]
22
- WHERE (([sc].[Alias] = :schemaNameOrAlias
23
- OR [sc].[Name] = :schemaNameOrAlias)
24
- AND ([cs].[Name] = :className))
17
+ const sql = `
18
+ SELECT format('0x%x', ch.ClassId)
19
+ FROM [ec_cache_ClassHierarchy] [ch]
20
+ JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]
21
+ JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]
22
+ WHERE (([sc].[Alias] = :schemaNameOrAlias
23
+ OR [sc].[Name] = :schemaNameOrAlias)
24
+ AND ([cs].[Name] = :className))
25
25
  `;
26
26
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
27
27
  const parts = classFullName.indexOf(".") !== -1 ? classFullName.split(".") : classFullName.split(":");
@@ -36,39 +36,39 @@ class ECDbMap {
36
36
  getTable(tableName) {
37
37
  if (this._cacheTables.has(tableName))
38
38
  return this._cacheTables.get(tableName);
39
- const sql = `
40
- SELECT
41
- JSON_OBJECT (
42
- 'id', FORMAT ('0x%x', [t].[id]),
43
- 'name', [t].[Name],
44
- 'type', (
45
- CASE
46
- [t].[type]
47
- WHEN 0 THEN 'Primary'
48
- WHEN 1 THEN 'Joined'
49
- WHEN 2 THEN 'Existing'
50
- WHEN 3 THEN 'Overflow'
51
- WHEN 4 THEN 'Virtual'
52
- END
53
- ),
54
- 'exclusiveRootClassId', FORMAT ('0x%x',
55
- COALESCE (
56
- [t].[ExclusiveRootClassId], (
57
- SELECT [parent].[ExclusiveRootClassId]
58
- FROM [ec_Table] [parent]
59
- WHERE [parent].[Id] = [t].[ParentTableId] AND [parent].[Type] = 1))),
60
- 'isClassIdVirtual', (
61
- SELECT
62
- [c].[IsVirtual]
63
- FROM
64
- [ec_Column] [c]
65
- WHERE
66
- [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]
67
- )
68
- )
69
- FROM [ec_Table] [t]
70
- WHERE
71
- [t].[Name] = ?;
39
+ const sql = `
40
+ SELECT
41
+ JSON_OBJECT (
42
+ 'id', FORMAT ('0x%x', [t].[id]),
43
+ 'name', [t].[Name],
44
+ 'type', (
45
+ CASE
46
+ [t].[type]
47
+ WHEN 0 THEN 'Primary'
48
+ WHEN 1 THEN 'Joined'
49
+ WHEN 2 THEN 'Existing'
50
+ WHEN 3 THEN 'Overflow'
51
+ WHEN 4 THEN 'Virtual'
52
+ END
53
+ ),
54
+ 'exclusiveRootClassId', FORMAT ('0x%x',
55
+ COALESCE (
56
+ [t].[ExclusiveRootClassId], (
57
+ SELECT [parent].[ExclusiveRootClassId]
58
+ FROM [ec_Table] [parent]
59
+ WHERE [parent].[Id] = [t].[ParentTableId] AND [parent].[Type] = 1))),
60
+ 'isClassIdVirtual', (
61
+ SELECT
62
+ [c].[IsVirtual]
63
+ FROM
64
+ [ec_Column] [c]
65
+ WHERE
66
+ [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]
67
+ )
68
+ )
69
+ FROM [ec_Table] [t]
70
+ WHERE
71
+ [t].[Name] = ?;
72
72
  `;
73
73
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
74
74
  stmt.bindString(1, tableName);
@@ -89,186 +89,186 @@ class ECDbMap {
89
89
  getClassMap(classId) {
90
90
  if (this._cachedClassMaps.has(classId))
91
91
  return this._cachedClassMaps.get(classId);
92
- const sql = `
93
- SELECT
94
- JSON_OBJECT(
95
- 'id', format('0x%x', cs.id),
96
- 'name', format('%s:%s', ss.Name, cs.Name),
97
- 'mapStrategy',
98
- (
99
- CASE cm.MapStrategy
100
- WHEN 0 THEN 'NotMapped'
101
- WHEN 1 THEN 'OwnTable'
102
- WHEN 2 THEN 'TablePerHierarchy'
103
- WHEN 3 THEN 'ExistingTable'
104
- WHEN 10 THEN 'ForeignKeyInTargetTable'
105
- WHEN 11 THEN 'ForeignKeyInSourceTable'
106
- END
107
- ),
108
- 'type',
109
- (
110
- CASE cs.Type
111
- WHEN 0 THEN 'Entity'
112
- WHEN 1 THEN 'Relationship'
113
- WHEN 2 THEN 'Struct'
114
- WHEN 3 THEN 'CustomAttribute'
115
- END
116
- ),
117
- 'modifier',
118
- (
119
- CASE cs.Modifier
120
- WHEN 0 THEN 'None'
121
- WHEN 1 THEN 'Abstract'
122
- WHEN 2 THEN 'Sealed'
123
- END
124
- ),
125
- 'properties',
126
- (
127
- SELECT
128
- JSON_GROUP_ARRAY(JSON(propJson))
129
- FROM
130
- (
131
- SELECT
132
- JSON_OBJECT(
133
- 'id', format('0x%x', pt.id),
134
- 'name', pt.Name,
135
- 'kind',
136
- (
137
- CASE pt.Kind
138
- WHEN 0 THEN 'Primitive'
139
- WHEN 1 THEN 'Struct'
140
- WHEN 2 THEN 'PrimitiveArray'
141
- WHEN 3 THEN 'StructArray'
142
- WHEN 4 THEN 'Navigation'
143
- END
144
- ),
145
- 'primitiveType',
146
- (
147
- CASE pt.PrimitiveType
148
- WHEN 0x101 THEN 'Binary'
149
- WHEN 0x201 THEN 'Boolean'
150
- WHEN 0x301 THEN 'DateTime'
151
- WHEN 0x401 THEN 'Double'
152
- WHEN 0x501 THEN 'Integer'
153
- WHEN 0x601 THEN 'Long'
154
- WHEN 0x701 THEN 'Point2d'
155
- WHEN 0x801 THEN 'Point3d'
156
- WHEN 0x901 THEN 'String'
157
- WHEN 0xa01 THEN 'IGeometry'
158
- END
159
- ),
160
- 'extendedTypeName', ExtendedTypeName,
161
- 'navigationRelationship',
162
- (
163
- SELECT
164
- JSON_OBJECT(
165
- 'classId', format('0x%x', nc.Id),
166
- 'classFullName', format('%s:%s', ns.Name, nc.Name)
167
- )
168
- FROM ec_Class nc
169
- JOIN ec_Schema ns ON ns.Id = nc.SchemaId
170
- WHERE
171
- nc.Id = pt.NavigationRelationshipClassId
172
- ),
173
- 'structClass',
174
- (
175
- SELECT
176
- JSON_OBJECT(
177
- 'classId', format('0x%x', nc.Id),
178
- 'classFullName', format('%s:%s', ns.Name, nc.Name)
179
- )
180
- FROM ec_Class nc
181
- JOIN ec_Schema ns ON ns.Id = nc.SchemaId
182
- WHERE
183
- nc.Id = pt.StructClassId
184
- ),
185
- 'dateTimeInfo', (
186
- SELECT
187
- JSON_OBJECT (
188
- 'dateTimeKind', (
189
- CASE
190
- WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'
191
- WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'
192
- ELSE 'Unspecified'
193
- END
194
- ),
195
- 'dateTimeComponent', (
196
- CASE
197
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'
198
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'
199
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'
200
- ELSE 'DateTime'
201
- END
202
- )
203
- )
204
- FROM
205
- [ec_CustomAttribute] [ca]
206
- JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]
207
- JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]
208
- WHERE
209
- [ca].[ContainerType] = 992
210
- AND [cl].[Name] = 'DateTimeInfo'
211
- AND [sc].[Name] = 'CoreCustomAttributes'
212
- AND [ca].[ContainerId] = [pt].[Id]
213
- ),
214
- 'columns',
215
- (
216
- SELECT
217
- JSON_GROUP_ARRAY(JSON(columnJson))
218
- FROM
219
- (
220
- SELECT
221
- JSON_OBJECT(
222
- 'table', tb.Name,
223
- 'column', cc.Name,
224
- 'type',
225
- (
226
- CASE cc.Type
227
- WHEN 0 THEN 'Any'
228
- WHEN 1 THEN 'Boolean'
229
- WHEN 2 THEN 'Blob'
230
- WHEN 3 THEN 'Timestamp'
231
- WHEN 4 THEN 'Real'
232
- WHEN 5 THEN 'Integer'
233
- WHEN 6 THEN 'Text'
234
- END
235
- ),
236
- 'columnKind',
237
- (
238
- CASE cc.ColumnKind
239
- WHEN 0 THEN 'Default'
240
- WHEN 1 THEN 'Id'
241
- WHEN 2 THEN 'ClassId'
242
- WHEN 4 THEN 'SharedData'
243
- END
244
- ),
245
- 'accessString', pp0.AccessString,
246
- 'isVirtual', cc.IsVirtual OR tb.Type = 4
247
- ) columnJson
248
- FROM [ec_PropertyMap] [pm0]
249
- JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]
250
- JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]
251
- JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]
252
- WHERE
253
- [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id
254
- )
255
- )
256
- ) propJson
257
- FROM [ec_PropertyMap] [pm]
258
- JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]
259
- JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]
260
- WHERE
261
- pm.ClassId = cs.Id
262
- GROUP BY
263
- pt.Id
264
- )
265
- )
266
- ) classDef
267
- FROM [ec_Class] [cs]
268
- JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]
269
- JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]
270
- WHERE
271
- [cs].[Id] = ?
92
+ const sql = `
93
+ SELECT
94
+ JSON_OBJECT(
95
+ 'id', format('0x%x', cs.id),
96
+ 'name', format('%s:%s', ss.Name, cs.Name),
97
+ 'mapStrategy',
98
+ (
99
+ CASE cm.MapStrategy
100
+ WHEN 0 THEN 'NotMapped'
101
+ WHEN 1 THEN 'OwnTable'
102
+ WHEN 2 THEN 'TablePerHierarchy'
103
+ WHEN 3 THEN 'ExistingTable'
104
+ WHEN 10 THEN 'ForeignKeyInTargetTable'
105
+ WHEN 11 THEN 'ForeignKeyInSourceTable'
106
+ END
107
+ ),
108
+ 'type',
109
+ (
110
+ CASE cs.Type
111
+ WHEN 0 THEN 'Entity'
112
+ WHEN 1 THEN 'Relationship'
113
+ WHEN 2 THEN 'Struct'
114
+ WHEN 3 THEN 'CustomAttribute'
115
+ END
116
+ ),
117
+ 'modifier',
118
+ (
119
+ CASE cs.Modifier
120
+ WHEN 0 THEN 'None'
121
+ WHEN 1 THEN 'Abstract'
122
+ WHEN 2 THEN 'Sealed'
123
+ END
124
+ ),
125
+ 'properties',
126
+ (
127
+ SELECT
128
+ JSON_GROUP_ARRAY(JSON(propJson))
129
+ FROM
130
+ (
131
+ SELECT
132
+ JSON_OBJECT(
133
+ 'id', format('0x%x', pt.id),
134
+ 'name', pt.Name,
135
+ 'kind',
136
+ (
137
+ CASE pt.Kind
138
+ WHEN 0 THEN 'Primitive'
139
+ WHEN 1 THEN 'Struct'
140
+ WHEN 2 THEN 'PrimitiveArray'
141
+ WHEN 3 THEN 'StructArray'
142
+ WHEN 4 THEN 'Navigation'
143
+ END
144
+ ),
145
+ 'primitiveType',
146
+ (
147
+ CASE pt.PrimitiveType
148
+ WHEN 0x101 THEN 'Binary'
149
+ WHEN 0x201 THEN 'Boolean'
150
+ WHEN 0x301 THEN 'DateTime'
151
+ WHEN 0x401 THEN 'Double'
152
+ WHEN 0x501 THEN 'Integer'
153
+ WHEN 0x601 THEN 'Long'
154
+ WHEN 0x701 THEN 'Point2d'
155
+ WHEN 0x801 THEN 'Point3d'
156
+ WHEN 0x901 THEN 'String'
157
+ WHEN 0xa01 THEN 'IGeometry'
158
+ END
159
+ ),
160
+ 'extendedTypeName', ExtendedTypeName,
161
+ 'navigationRelationship',
162
+ (
163
+ SELECT
164
+ JSON_OBJECT(
165
+ 'classId', format('0x%x', nc.Id),
166
+ 'classFullName', format('%s:%s', ns.Name, nc.Name)
167
+ )
168
+ FROM ec_Class nc
169
+ JOIN ec_Schema ns ON ns.Id = nc.SchemaId
170
+ WHERE
171
+ nc.Id = pt.NavigationRelationshipClassId
172
+ ),
173
+ 'structClass',
174
+ (
175
+ SELECT
176
+ JSON_OBJECT(
177
+ 'classId', format('0x%x', nc.Id),
178
+ 'classFullName', format('%s:%s', ns.Name, nc.Name)
179
+ )
180
+ FROM ec_Class nc
181
+ JOIN ec_Schema ns ON ns.Id = nc.SchemaId
182
+ WHERE
183
+ nc.Id = pt.StructClassId
184
+ ),
185
+ 'dateTimeInfo', (
186
+ SELECT
187
+ JSON_OBJECT (
188
+ 'dateTimeKind', (
189
+ CASE
190
+ WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'
191
+ WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'
192
+ ELSE 'Unspecified'
193
+ END
194
+ ),
195
+ 'dateTimeComponent', (
196
+ CASE
197
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'
198
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'
199
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'
200
+ ELSE 'DateTime'
201
+ END
202
+ )
203
+ )
204
+ FROM
205
+ [ec_CustomAttribute] [ca]
206
+ JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]
207
+ JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]
208
+ WHERE
209
+ [ca].[ContainerType] = 992
210
+ AND [cl].[Name] = 'DateTimeInfo'
211
+ AND [sc].[Name] = 'CoreCustomAttributes'
212
+ AND [ca].[ContainerId] = [pt].[Id]
213
+ ),
214
+ 'columns',
215
+ (
216
+ SELECT
217
+ JSON_GROUP_ARRAY(JSON(columnJson))
218
+ FROM
219
+ (
220
+ SELECT
221
+ JSON_OBJECT(
222
+ 'table', tb.Name,
223
+ 'column', cc.Name,
224
+ 'type',
225
+ (
226
+ CASE cc.Type
227
+ WHEN 0 THEN 'Any'
228
+ WHEN 1 THEN 'Boolean'
229
+ WHEN 2 THEN 'Blob'
230
+ WHEN 3 THEN 'Timestamp'
231
+ WHEN 4 THEN 'Real'
232
+ WHEN 5 THEN 'Integer'
233
+ WHEN 6 THEN 'Text'
234
+ END
235
+ ),
236
+ 'columnKind',
237
+ (
238
+ CASE cc.ColumnKind
239
+ WHEN 0 THEN 'Default'
240
+ WHEN 1 THEN 'Id'
241
+ WHEN 2 THEN 'ClassId'
242
+ WHEN 4 THEN 'SharedData'
243
+ END
244
+ ),
245
+ 'accessString', pp0.AccessString,
246
+ 'isVirtual', cc.IsVirtual OR tb.Type = 4
247
+ ) columnJson
248
+ FROM [ec_PropertyMap] [pm0]
249
+ JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]
250
+ JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]
251
+ JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]
252
+ WHERE
253
+ [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id
254
+ )
255
+ )
256
+ ) propJson
257
+ FROM [ec_PropertyMap] [pm]
258
+ JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]
259
+ JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]
260
+ WHERE
261
+ pm.ClassId = cs.Id
262
+ GROUP BY
263
+ pt.Id
264
+ )
265
+ )
266
+ ) classDef
267
+ FROM [ec_Class] [cs]
268
+ JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]
269
+ JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]
270
+ WHERE
271
+ [cs].[Id] = ?
272
272
  `;
273
273
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
274
274
  stmt.bindId(1, classId);
@@ -334,27 +334,27 @@ export class PartialECChangeUnifier {
334
334
  * @returns return root class id
335
335
  */
336
336
  static getRootClassId(classId, db) {
337
- const sql = `
338
- WITH
339
- [base_class]([classId], [baseClassId], [Level]) AS(
340
- SELECT [ch].[ClassId], [ch].[BaseClassId], 0
341
- FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?
342
- UNION ALL
343
- SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1
344
- FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]
345
-
346
- )
347
- SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass
348
- FROM [base_class] [bc]
349
- WHERE [bc].[ClassId] <> [bc].[BaseClassId]
350
- AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]
351
- FROM [ec_CustomAttribute] [ca]
352
- WHERE [ca].[ContainerType] = 30
353
- AND [ca].[ClassId] IN (SELECT [cc].[Id]
354
- FROM [ec_Class] [cc]
355
- JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]
356
- WHERE [cc].[Name] = 'IsMixIn'
357
- AND [ss].[Name] = 'CoreCustomAttributes'))
337
+ const sql = `
338
+ WITH
339
+ [base_class]([classId], [baseClassId], [Level]) AS(
340
+ SELECT [ch].[ClassId], [ch].[BaseClassId], 0
341
+ FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?
342
+ UNION ALL
343
+ SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1
344
+ FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]
345
+
346
+ )
347
+ SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass
348
+ FROM [base_class] [bc]
349
+ WHERE [bc].[ClassId] <> [bc].[BaseClassId]
350
+ AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]
351
+ FROM [ec_CustomAttribute] [ca]
352
+ WHERE [ca].[ContainerType] = 30
353
+ AND [ca].[ClassId] IN (SELECT [cc].[Id]
354
+ FROM [ec_Class] [cc]
355
+ JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]
356
+ WHERE [cc].[Name] = 'IsMixIn'
357
+ AND [ss].[Name] = 'CoreCustomAttributes'))
358
358
  ORDER BY [Level] DESC`;
359
359
  return db.withSqliteStatement(sql, (stmt) => {
360
360
  stmt.bindId(1, classId);