@itwin/core-backend 4.0.0-dev.51 → 4.0.0-dev.54

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 (267) hide show
  1. package/lib/cjs/AliCloudStorageService.d.ts +23 -23
  2. package/lib/cjs/AliCloudStorageService.js +71 -71
  3. package/lib/cjs/AliCloudStorageService.js.map +1 -1
  4. package/lib/cjs/BackendHubAccess.d.ts +224 -224
  5. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  6. package/lib/cjs/BackendHubAccess.js +41 -41
  7. package/lib/cjs/BackendHubAccess.js.map +1 -1
  8. package/lib/cjs/BackendLoggerCategory.d.ts +90 -91
  9. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  10. package/lib/cjs/BackendLoggerCategory.js +98 -99
  11. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  12. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  13. package/lib/cjs/BisCoreSchema.js +60 -60
  14. package/lib/cjs/BisCoreSchema.js.map +1 -1
  15. package/lib/cjs/BriefcaseManager.d.ts +170 -170
  16. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  17. package/lib/cjs/BriefcaseManager.js +408 -408
  18. package/lib/cjs/BriefcaseManager.js.map +1 -1
  19. package/lib/cjs/Category.d.ts +153 -153
  20. package/lib/cjs/Category.js +243 -243
  21. package/lib/cjs/Category.js.map +1 -1
  22. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  23. package/lib/cjs/ChangeSummaryManager.js +446 -446
  24. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  25. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  26. package/lib/cjs/ChangedElementsDb.js +165 -165
  27. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  28. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  29. package/lib/cjs/ChangedElementsManager.js +88 -88
  30. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  31. package/lib/cjs/ChannelControl.d.ts +69 -69
  32. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  33. package/lib/cjs/ChannelControl.js +88 -88
  34. package/lib/cjs/ChannelControl.js.map +1 -1
  35. package/lib/cjs/CheckpointManager.d.ts +121 -121
  36. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  37. package/lib/cjs/CheckpointManager.js +351 -351
  38. package/lib/cjs/CheckpointManager.js.map +1 -1
  39. package/lib/cjs/ClassRegistry.d.ts +79 -79
  40. package/lib/cjs/ClassRegistry.js +254 -249
  41. package/lib/cjs/ClassRegistry.js.map +1 -1
  42. package/lib/cjs/CloudSqlite.d.ts +355 -355
  43. package/lib/cjs/CloudSqlite.js +154 -154
  44. package/lib/cjs/CloudSqlite.js.map +1 -1
  45. package/lib/cjs/CloudStorageBackend.d.ts +58 -58
  46. package/lib/cjs/CloudStorageBackend.js +170 -170
  47. package/lib/cjs/CloudStorageBackend.js.map +1 -1
  48. package/lib/cjs/CodeService.d.ts +396 -396
  49. package/lib/cjs/CodeService.js +63 -63
  50. package/lib/cjs/CodeService.js.map +1 -1
  51. package/lib/cjs/CodeSpecs.d.ts +55 -55
  52. package/lib/cjs/CodeSpecs.js +124 -124
  53. package/lib/cjs/CodeSpecs.js.map +1 -1
  54. package/lib/cjs/ConcurrentQuery.d.ts +13 -13
  55. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  56. package/lib/cjs/ConcurrentQuery.js +36 -36
  57. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  58. package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
  59. package/lib/cjs/CustomViewState3dCreator.d.ts.map +1 -1
  60. package/lib/cjs/CustomViewState3dCreator.js +82 -81
  61. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  62. package/lib/cjs/DevTools.d.ts +74 -73
  63. package/lib/cjs/DevTools.d.ts.map +1 -1
  64. package/lib/cjs/DevTools.js +156 -156
  65. package/lib/cjs/DevTools.js.map +1 -1
  66. package/lib/cjs/DisplayStyle.d.ts +106 -106
  67. package/lib/cjs/DisplayStyle.js +253 -253
  68. package/lib/cjs/DisplayStyle.js.map +1 -1
  69. package/lib/cjs/ECDb.d.ts +194 -191
  70. package/lib/cjs/ECDb.d.ts.map +1 -1
  71. package/lib/cjs/ECDb.js +353 -348
  72. package/lib/cjs/ECDb.js.map +1 -1
  73. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  74. package/lib/cjs/ECSchemaXmlContext.d.ts.map +1 -1
  75. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  76. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  77. package/lib/cjs/ECSqlStatement.d.ts +473 -473
  78. package/lib/cjs/ECSqlStatement.js +791 -791
  79. package/lib/cjs/ECSqlStatement.js.map +1 -1
  80. package/lib/cjs/Element.d.ts +1113 -1113
  81. package/lib/cjs/Element.js +1424 -1424
  82. package/lib/cjs/Element.js.map +1 -1
  83. package/lib/cjs/ElementAspect.d.ts +176 -176
  84. package/lib/cjs/ElementAspect.js +203 -203
  85. package/lib/cjs/ElementAspect.js.map +1 -1
  86. package/lib/cjs/ElementGraphics.d.ts +9 -9
  87. package/lib/cjs/ElementGraphics.js +41 -41
  88. package/lib/cjs/ElementGraphics.js.map +1 -1
  89. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  90. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  91. package/lib/cjs/ElementTreeWalker.js +409 -409
  92. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  93. package/lib/cjs/Entity.d.ts +106 -106
  94. package/lib/cjs/Entity.d.ts.map +1 -1
  95. package/lib/cjs/Entity.js +134 -134
  96. package/lib/cjs/Entity.js.map +1 -1
  97. package/lib/cjs/EntityReferences.d.ts +49 -49
  98. package/lib/cjs/EntityReferences.d.ts.map +1 -1
  99. package/lib/cjs/EntityReferences.js +95 -95
  100. package/lib/cjs/EntityReferences.js.map +1 -1
  101. package/lib/cjs/ExportGraphics.d.ts +317 -317
  102. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  103. package/lib/cjs/ExportGraphics.js +208 -208
  104. package/lib/cjs/ExportGraphics.js.map +1 -1
  105. package/lib/cjs/ExternalSource.d.ts +96 -96
  106. package/lib/cjs/ExternalSource.js +131 -131
  107. package/lib/cjs/ExternalSource.js.map +1 -1
  108. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  109. package/lib/cjs/GeoCoordConfig.js +85 -85
  110. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  111. package/lib/cjs/GeometrySummary.d.ts +4 -4
  112. package/lib/cjs/GeometrySummary.js +380 -380
  113. package/lib/cjs/GeometrySummary.js.map +1 -1
  114. package/lib/cjs/HubMock.d.ts +94 -94
  115. package/lib/cjs/HubMock.js +220 -220
  116. package/lib/cjs/HubMock.js.map +1 -1
  117. package/lib/cjs/IModelCloneContext.d.ts +8 -8
  118. package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
  119. package/lib/cjs/IModelCloneContext.js +15 -15
  120. package/lib/cjs/IModelCloneContext.js.map +1 -1
  121. package/lib/cjs/IModelDb.d.ts +1216 -1213
  122. package/lib/cjs/IModelDb.d.ts.map +1 -1
  123. package/lib/cjs/IModelDb.js +2387 -2380
  124. package/lib/cjs/IModelDb.js.map +1 -1
  125. package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
  126. package/lib/cjs/IModelElementCloneContext.js +159 -159
  127. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  128. package/lib/cjs/IModelHost.d.ts +369 -369
  129. package/lib/cjs/IModelHost.js +488 -488
  130. package/lib/cjs/IModelHost.js.map +1 -1
  131. package/lib/cjs/IModelJsFs.d.ts +62 -62
  132. package/lib/cjs/IModelJsFs.js +139 -139
  133. package/lib/cjs/IModelJsFs.js.map +1 -1
  134. package/lib/cjs/IpcHost.d.ts +104 -104
  135. package/lib/cjs/IpcHost.js +276 -276
  136. package/lib/cjs/IpcHost.js.map +1 -1
  137. package/lib/cjs/LineStyle.d.ts +311 -311
  138. package/lib/cjs/LineStyle.js +295 -295
  139. package/lib/cjs/LineStyle.js.map +1 -1
  140. package/lib/cjs/LocalHub.d.ts +162 -162
  141. package/lib/cjs/LocalHub.d.ts.map +1 -1
  142. package/lib/cjs/LocalHub.js +580 -580
  143. package/lib/cjs/LocalHub.js.map +1 -1
  144. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  145. package/lib/cjs/LocalhostIpcHost.js +79 -79
  146. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  147. package/lib/cjs/Material.d.ts +131 -131
  148. package/lib/cjs/Material.js +180 -180
  149. package/lib/cjs/Material.js.map +1 -1
  150. package/lib/cjs/Model.d.ts +392 -392
  151. package/lib/cjs/Model.js +489 -489
  152. package/lib/cjs/Model.js.map +1 -1
  153. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  154. package/lib/cjs/NativeAppStorage.js +202 -202
  155. package/lib/cjs/NativeAppStorage.js.map +1 -1
  156. package/lib/cjs/NativeHost.d.ts +52 -52
  157. package/lib/cjs/NativeHost.js +160 -160
  158. package/lib/cjs/NativeHost.js.map +1 -1
  159. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  160. package/lib/cjs/NavigationRelationship.js +225 -225
  161. package/lib/cjs/NavigationRelationship.js.map +1 -1
  162. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  163. package/lib/cjs/PromiseMemoizer.d.ts.map +1 -1
  164. package/lib/cjs/PromiseMemoizer.js +101 -101
  165. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  166. package/lib/cjs/PropertyStore.d.ts +132 -132
  167. package/lib/cjs/PropertyStore.js +11 -11
  168. package/lib/cjs/PropertyStore.js.map +1 -1
  169. package/lib/cjs/Relationship.d.ts +416 -416
  170. package/lib/cjs/Relationship.js +494 -494
  171. package/lib/cjs/Relationship.js.map +1 -1
  172. package/lib/cjs/RpcBackend.d.ts +5 -5
  173. package/lib/cjs/RpcBackend.js +32 -32
  174. package/lib/cjs/RpcBackend.js.map +1 -1
  175. package/lib/cjs/SQLiteDb.d.ts +219 -219
  176. package/lib/cjs/SQLiteDb.js +212 -212
  177. package/lib/cjs/SQLiteDb.js.map +1 -1
  178. package/lib/cjs/Schema.d.ts +55 -55
  179. package/lib/cjs/Schema.js +83 -83
  180. package/lib/cjs/Schema.js.map +1 -1
  181. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  182. package/lib/cjs/ServerBasedLocks.js +168 -168
  183. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  184. package/lib/cjs/SqliteStatement.d.ts +360 -360
  185. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  186. package/lib/cjs/SqliteStatement.js +586 -586
  187. package/lib/cjs/SqliteStatement.js.map +1 -1
  188. package/lib/cjs/Texture.d.ts +58 -58
  189. package/lib/cjs/Texture.js +82 -82
  190. package/lib/cjs/Texture.js.map +1 -1
  191. package/lib/cjs/TileStorage.d.ts +18 -18
  192. package/lib/cjs/TileStorage.js +87 -87
  193. package/lib/cjs/TileStorage.js.map +1 -1
  194. package/lib/cjs/TxnManager.d.ts +202 -202
  195. package/lib/cjs/TxnManager.d.ts.map +1 -1
  196. package/lib/cjs/TxnManager.js +356 -356
  197. package/lib/cjs/TxnManager.js.map +1 -1
  198. package/lib/cjs/ViewDefinition.d.ts +435 -435
  199. package/lib/cjs/ViewDefinition.js +646 -646
  200. package/lib/cjs/ViewDefinition.js.map +1 -1
  201. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  202. package/lib/cjs/ViewStateHydrator.js +103 -103
  203. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  204. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  205. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  206. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  207. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  208. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  209. package/lib/cjs/core-backend.d.ts +185 -185
  210. package/lib/cjs/core-backend.js +209 -205
  211. package/lib/cjs/core-backend.js.map +1 -1
  212. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  213. package/lib/cjs/domains/FunctionalElements.js +145 -145
  214. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  215. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  216. package/lib/cjs/domains/FunctionalSchema.js +39 -39
  217. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  218. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  219. package/lib/cjs/domains/GenericElements.js +263 -263
  220. package/lib/cjs/domains/GenericElements.js.map +1 -1
  221. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  222. package/lib/cjs/domains/GenericSchema.js +28 -28
  223. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  224. package/lib/cjs/rpc/multipart.d.ts +11 -11
  225. package/lib/cjs/rpc/multipart.js +71 -71
  226. package/lib/cjs/rpc/multipart.js.map +1 -1
  227. package/lib/cjs/rpc/tracing.d.ts +28 -28
  228. package/lib/cjs/rpc/tracing.js +73 -73
  229. package/lib/cjs/rpc/tracing.js.map +1 -1
  230. package/lib/cjs/rpc/web/logging.d.ts +9 -9
  231. package/lib/cjs/rpc/web/logging.js +43 -43
  232. package/lib/cjs/rpc/web/logging.js.map +1 -1
  233. package/lib/cjs/rpc/web/request.d.ts +6 -6
  234. package/lib/cjs/rpc/web/request.js +73 -73
  235. package/lib/cjs/rpc/web/request.js.map +1 -1
  236. package/lib/cjs/rpc/web/response.d.ts +6 -6
  237. package/lib/cjs/rpc/web/response.js +105 -105
  238. package/lib/cjs/rpc/web/response.js.map +1 -1
  239. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  240. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  241. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  242. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +47 -47
  243. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +293 -293
  244. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  245. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
  246. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +202 -202
  247. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  248. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  249. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +166 -166
  250. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  251. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  252. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +42 -42
  253. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  254. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  255. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  256. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  257. package/lib/cjs/workspace/Settings.d.ts +186 -186
  258. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  259. package/lib/cjs/workspace/Settings.js +154 -154
  260. package/lib/cjs/workspace/Settings.js.map +1 -1
  261. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  262. package/lib/cjs/workspace/SettingsSchemas.js +190 -190
  263. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  264. package/lib/cjs/workspace/Workspace.d.ts +414 -414
  265. package/lib/cjs/workspace/Workspace.js +537 -537
  266. package/lib/cjs/workspace/Workspace.js.map +1 -1
  267. package/package.json +12 -12
@@ -1,166 +1,166 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- /** @packageDocumentation
7
- * @module ChangedElementsDb
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ChangedElementsDb = void 0;
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_common_1 = require("@itwin/core-common");
13
- const BriefcaseManager_1 = require("./BriefcaseManager");
14
- const ECDb_1 = require("./ECDb");
15
- const IModelHost_1 = require("./IModelHost");
16
- /** An ChangedElementsDb file
17
- * @internal
18
- */
19
- class ChangedElementsDb {
20
- constructor() {
21
- this._nativeDb = new IModelHost_1.IModelHost.platform.ChangedElementsECDb();
22
- }
23
- dispose() {
24
- if (!this._nativeDb)
25
- return;
26
- this.closeDb();
27
- this._nativeDb.dispose();
28
- this._nativeDb = undefined;
29
- }
30
- /** Create a ChangedElementsDb
31
- * @param pathName The path to the ECDb file to create.
32
- * @throws [IModelError]($common) if the operation failed.
33
- */
34
- _createDb(briefcase, pathName) {
35
- const status = this.nativeDb.createDb(briefcase.nativeDb, pathName);
36
- if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
37
- throw new core_common_1.IModelError(status, "Failed to created ECDb");
38
- }
39
- /** Open the Changed Elements Db.
40
- * @param pathName The path to the ECDb file to open
41
- * @param openMode Open mode
42
- * @throws [IModelError]($common) if the operation failed.
43
- */
44
- _openDb(pathName, openMode = ECDb_1.ECDbOpenMode.Readonly) {
45
- const nativeOpenMode = openMode === ECDb_1.ECDbOpenMode.Readonly ? core_bentley_1.OpenMode.Readonly : core_bentley_1.OpenMode.ReadWrite;
46
- const tryUpgrade = openMode === ECDb_1.ECDbOpenMode.FileUpgrade;
47
- const status = this.nativeDb.openDb(pathName, nativeOpenMode, tryUpgrade);
48
- if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
49
- throw new core_common_1.IModelError(status, "Failed to open ECDb");
50
- }
51
- /** Open the Changed Elements Db.
52
- * @param pathName The path to the ECDb file to open
53
- * @param openMode Open mode
54
- * @returns ChangedElementsDb
55
- */
56
- static openDb(pathName, openMode = ECDb_1.ECDbOpenMode.Readonly) {
57
- const cacheDb = new ChangedElementsDb();
58
- cacheDb._openDb(pathName, openMode);
59
- return cacheDb;
60
- }
61
- /** Create the changed elements cache db
62
- * @param briefcase IModelDb to use
63
- * @param pathName The path to the ECDb file to create.
64
- * @returns The new cache db
65
- */
66
- static createDb(briefcase, pathName) {
67
- const cacheDb = new ChangedElementsDb();
68
- cacheDb._createDb(briefcase, pathName);
69
- return cacheDb;
70
- }
71
- /** Processes a range of changesets and adds it to the changed elements cache
72
- * @param briefcase iModel briefcase to use
73
- * @param options Options for processing
74
- */
75
- async processChangesets(accessToken, briefcase, options) {
76
- const iModelId = briefcase.iModelId;
77
- const first = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;
78
- const end = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;
79
- const changesets = await IModelHost_1.IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager_1.BriefcaseManager.getChangeSetsPath(iModelId) });
80
- // ChangeSets need to be processed from newest to oldest
81
- changesets.reverse();
82
- const status = this.nativeDb.processChangesets(briefcase.nativeDb, changesets, options.rulesetId, options.filterSpatial, options.wantParents, options.wantPropertyChecksums, options.rulesetDir, options.tempDir, options.wantChunkTraversal);
83
- if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
84
- throw new core_common_1.IModelError(status, "Failed to process changesets");
85
- return status;
86
- }
87
- /** Processes a range of changesets and adds it to the changed elements cache
88
- * This call will close the IModelDb object as it is required for processing and applying changesets
89
- * @param briefcase iModel briefcase to use
90
- * @param options options for processing
91
- */
92
- async processChangesetsAndRoll(accessToken, briefcase, options) {
93
- const iModelId = briefcase.iModelId;
94
- const first = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;
95
- const end = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;
96
- const changesets = await IModelHost_1.IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager_1.BriefcaseManager.getChangeSetsPath(iModelId) });
97
- // ChangeSets need to be processed from newest to oldest
98
- changesets.reverse();
99
- // Close briefcase before doing processing and rolling briefcase
100
- const dbFilename = briefcase.pathName;
101
- const dbGuid = briefcase.iModelId;
102
- briefcase.close();
103
- // Process changesets
104
- const status = this.nativeDb.processChangesetsAndRoll(dbFilename, dbGuid, changesets, options.rulesetId, options.filterSpatial, options.wantParents, options.wantPropertyChecksums, options.rulesetDir, options.tempDir, options.wantRelationshipCaching, options.relationshipCacheSize, options.wantChunkTraversal);
105
- if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
106
- throw new core_common_1.IModelError(status, "Failed to process changesets");
107
- return status;
108
- }
109
- /** Get changed elements between two changesets
110
- * @param startChangesetId Start Changeset Id
111
- * @param endChangesetId End Changeset Id
112
- * @returns Returns the changed elements between the changesets provided
113
- * @throws [IModelError]($common) if the operation failed.
114
- */
115
- getChangedElements(startChangesetId, endChangesetId) {
116
- const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
117
- if (result.error || !result.result)
118
- throw new core_common_1.IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : "Problem getting changed elements");
119
- return (result.result.changedElements);
120
- }
121
- /** Get changed models between two changesets
122
- * @param startChangesetId Start Changeset Id
123
- * @param endChangesetId End Changeset Id
124
- * @returns Returns the changed models between the changesets provided
125
- * @throws [IModelError]($common) if the operation failed.
126
- */
127
- getChangedModels(startChangesetId, endChangesetId) {
128
- const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
129
- if (result.error || !result.result)
130
- throw new core_common_1.IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : "Problem getting changed models");
131
- return (result.result.changedModels);
132
- }
133
- /** Get changed models between two changesets
134
- * @param startChangesetId Start Changeset Id
135
- * @param endChangesetId End Changeset Id
136
- * @returns Returns the changed models between the changesets provided
137
- * @throws [IModelError]($common) if the operation failed.
138
- */
139
- getChangeData(startChangesetId, endChangesetId) {
140
- const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
141
- if (result.error)
142
- throw new core_common_1.IModelError(result.error.status, result.error.message);
143
- return result.result;
144
- }
145
- /** Returns true if the Changed Elements Db is open */
146
- get isOpen() { return this.nativeDb.isOpen(); }
147
- /** Returns true if the cache already contains this changeset Id */
148
- isProcessed(changesetId) { return this.nativeDb.isProcessed(changesetId); }
149
- /** Close the Db after saving any uncommitted changes.
150
- * @throws [IModelError]($common) if the database is not open.
151
- */
152
- closeDb() {
153
- this.nativeDb.closeDb();
154
- }
155
- cleanCaches() {
156
- this.nativeDb.cleanCaches();
157
- }
158
- /** @internal */
159
- get nativeDb() {
160
- if (!this._nativeDb)
161
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadRequest, "ChangedElementsDb object has already been disposed.");
162
- return this._nativeDb;
163
- }
164
- }
165
- exports.ChangedElementsDb = ChangedElementsDb;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module ChangedElementsDb
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ChangedElementsDb = void 0;
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_common_1 = require("@itwin/core-common");
13
+ const BriefcaseManager_1 = require("./BriefcaseManager");
14
+ const ECDb_1 = require("./ECDb");
15
+ const IModelHost_1 = require("./IModelHost");
16
+ /** An ChangedElementsDb file
17
+ * @internal
18
+ */
19
+ class ChangedElementsDb {
20
+ constructor() {
21
+ this._nativeDb = new IModelHost_1.IModelHost.platform.ChangedElementsECDb();
22
+ }
23
+ dispose() {
24
+ if (!this._nativeDb)
25
+ return;
26
+ this.closeDb();
27
+ this._nativeDb.dispose();
28
+ this._nativeDb = undefined;
29
+ }
30
+ /** Create a ChangedElementsDb
31
+ * @param pathName The path to the ECDb file to create.
32
+ * @throws [IModelError]($common) if the operation failed.
33
+ */
34
+ _createDb(briefcase, pathName) {
35
+ const status = this.nativeDb.createDb(briefcase.nativeDb, pathName);
36
+ if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
37
+ throw new core_common_1.IModelError(status, "Failed to created ECDb");
38
+ }
39
+ /** Open the Changed Elements Db.
40
+ * @param pathName The path to the ECDb file to open
41
+ * @param openMode Open mode
42
+ * @throws [IModelError]($common) if the operation failed.
43
+ */
44
+ _openDb(pathName, openMode = ECDb_1.ECDbOpenMode.Readonly) {
45
+ const nativeOpenMode = openMode === ECDb_1.ECDbOpenMode.Readonly ? core_bentley_1.OpenMode.Readonly : core_bentley_1.OpenMode.ReadWrite;
46
+ const tryUpgrade = openMode === ECDb_1.ECDbOpenMode.FileUpgrade;
47
+ const status = this.nativeDb.openDb(pathName, nativeOpenMode, tryUpgrade);
48
+ if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
49
+ throw new core_common_1.IModelError(status, "Failed to open ECDb");
50
+ }
51
+ /** Open the Changed Elements Db.
52
+ * @param pathName The path to the ECDb file to open
53
+ * @param openMode Open mode
54
+ * @returns ChangedElementsDb
55
+ */
56
+ static openDb(pathName, openMode = ECDb_1.ECDbOpenMode.Readonly) {
57
+ const cacheDb = new ChangedElementsDb();
58
+ cacheDb._openDb(pathName, openMode);
59
+ return cacheDb;
60
+ }
61
+ /** Create the changed elements cache db
62
+ * @param briefcase IModelDb to use
63
+ * @param pathName The path to the ECDb file to create.
64
+ * @returns The new cache db
65
+ */
66
+ static createDb(briefcase, pathName) {
67
+ const cacheDb = new ChangedElementsDb();
68
+ cacheDb._createDb(briefcase, pathName);
69
+ return cacheDb;
70
+ }
71
+ /** Processes a range of changesets and adds it to the changed elements cache
72
+ * @param briefcase iModel briefcase to use
73
+ * @param options Options for processing
74
+ */
75
+ async processChangesets(accessToken, briefcase, options) {
76
+ const iModelId = briefcase.iModelId;
77
+ const first = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;
78
+ const end = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;
79
+ const changesets = await IModelHost_1.IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager_1.BriefcaseManager.getChangeSetsPath(iModelId) });
80
+ // ChangeSets need to be processed from newest to oldest
81
+ changesets.reverse();
82
+ const status = this.nativeDb.processChangesets(briefcase.nativeDb, changesets, options.rulesetId, options.filterSpatial, options.wantParents, options.wantPropertyChecksums, options.rulesetDir, options.tempDir, options.wantChunkTraversal);
83
+ if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
84
+ throw new core_common_1.IModelError(status, "Failed to process changesets");
85
+ return status;
86
+ }
87
+ /** Processes a range of changesets and adds it to the changed elements cache
88
+ * This call will close the IModelDb object as it is required for processing and applying changesets
89
+ * @param briefcase iModel briefcase to use
90
+ * @param options options for processing
91
+ */
92
+ async processChangesetsAndRoll(accessToken, briefcase, options) {
93
+ const iModelId = briefcase.iModelId;
94
+ const first = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;
95
+ const end = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;
96
+ const changesets = await IModelHost_1.IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager_1.BriefcaseManager.getChangeSetsPath(iModelId) });
97
+ // ChangeSets need to be processed from newest to oldest
98
+ changesets.reverse();
99
+ // Close briefcase before doing processing and rolling briefcase
100
+ const dbFilename = briefcase.pathName;
101
+ const dbGuid = briefcase.iModelId;
102
+ briefcase.close();
103
+ // Process changesets
104
+ const status = this.nativeDb.processChangesetsAndRoll(dbFilename, dbGuid, changesets, options.rulesetId, options.filterSpatial, options.wantParents, options.wantPropertyChecksums, options.rulesetDir, options.tempDir, options.wantRelationshipCaching, options.relationshipCacheSize, options.wantChunkTraversal);
105
+ if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
106
+ throw new core_common_1.IModelError(status, "Failed to process changesets");
107
+ return status;
108
+ }
109
+ /** Get changed elements between two changesets
110
+ * @param startChangesetId Start Changeset Id
111
+ * @param endChangesetId End Changeset Id
112
+ * @returns Returns the changed elements between the changesets provided
113
+ * @throws [IModelError]($common) if the operation failed.
114
+ */
115
+ getChangedElements(startChangesetId, endChangesetId) {
116
+ const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
117
+ if (result.error || !result.result)
118
+ throw new core_common_1.IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : "Problem getting changed elements");
119
+ return (result.result.changedElements);
120
+ }
121
+ /** Get changed models between two changesets
122
+ * @param startChangesetId Start Changeset Id
123
+ * @param endChangesetId End Changeset Id
124
+ * @returns Returns the changed models between the changesets provided
125
+ * @throws [IModelError]($common) if the operation failed.
126
+ */
127
+ getChangedModels(startChangesetId, endChangesetId) {
128
+ const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
129
+ if (result.error || !result.result)
130
+ throw new core_common_1.IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : "Problem getting changed models");
131
+ return (result.result.changedModels);
132
+ }
133
+ /** Get changed models between two changesets
134
+ * @param startChangesetId Start Changeset Id
135
+ * @param endChangesetId End Changeset Id
136
+ * @returns Returns the changed models between the changesets provided
137
+ * @throws [IModelError]($common) if the operation failed.
138
+ */
139
+ getChangeData(startChangesetId, endChangesetId) {
140
+ const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
141
+ if (result.error)
142
+ throw new core_common_1.IModelError(result.error.status, result.error.message);
143
+ return result.result;
144
+ }
145
+ /** Returns true if the Changed Elements Db is open */
146
+ get isOpen() { return this.nativeDb.isOpen(); }
147
+ /** Returns true if the cache already contains this changeset Id */
148
+ isProcessed(changesetId) { return this.nativeDb.isProcessed(changesetId); }
149
+ /** Close the Db after saving any uncommitted changes.
150
+ * @throws [IModelError]($common) if the database is not open.
151
+ */
152
+ closeDb() {
153
+ this.nativeDb.closeDb();
154
+ }
155
+ cleanCaches() {
156
+ this.nativeDb.cleanCaches();
157
+ }
158
+ /** @internal */
159
+ get nativeDb() {
160
+ if (!this._nativeDb)
161
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadRequest, "ChangedElementsDb object has already been disposed.");
162
+ return this._nativeDb;
163
+ }
164
+ }
165
+ exports.ChangedElementsDb = ChangedElementsDb;
166
166
  //# sourceMappingURL=ChangedElementsDb.js.map
@@ -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, IDisposable, 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\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}\r\n\r\n/** An ChangedElementsDb file\r\n * @internal\r\n */\r\nexport class ChangedElementsDb implements IDisposable {\r\n private _nativeDb: IModelJsNative.ChangedElementsECDb | undefined;\r\n\r\n constructor() {\r\n this._nativeDb = new IModelHost.platform.ChangedElementsECDb();\r\n }\r\n\r\n public 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 );\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, IDisposable, 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\";\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}\n\n/** An ChangedElementsDb file\n * @internal\n */\nexport class ChangedElementsDb implements IDisposable {\n private _nativeDb: IModelJsNative.ChangedElementsECDb | undefined;\n\n constructor() {\n this._nativeDb = new IModelHost.platform.ChangedElementsECDb();\n }\n\n public 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 );\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"]}
@@ -1,40 +1,40 @@
1
- import { GuidString } from "@itwin/core-bentley";
2
- import { ChangeData, ChangedElements, ChangedModels } from "@itwin/core-common";
3
- /** Utilities for querying changed elements caches */
4
- /** @internal */
5
- export declare class ChangedElementsManager {
6
- /** Maintains a single entry since we will only have a cache per iModel, which means a ChangedElementsDb per backend instance */
7
- private static _entry;
8
- static getChangedElementsPathName(iModelId: GuidString): string;
9
- /** Get changed elements Db */
10
- private static getChangedElementsDb;
11
- static cleanUp(): void;
12
- /** Gets the changed elements from the cache if found
13
- * @param iModelId Id of the iModel
14
- * @param startChangesetId Start changeset Id
15
- * @param endChangesetId End changeset Id
16
- * @returns Changed elements if found
17
- */
18
- static getChangedElements(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangedElements | undefined;
19
- /** Gets the changed models from the cache if found
20
- * @param iModelId Id of the iModel
21
- * @param startChangesetId Start changeset Id
22
- * @param endChangesetId End changeset Id
23
- * @returns Changed models if found
24
- */
25
- static getChangedModels(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangedModels | undefined;
26
- /** Gets the change data (models and elements) from the cache if found
27
- * @param iModelId Id of the iModel
28
- * @param startChangesetId Start changeset Id
29
- * @param endChangesetId End changeset Id
30
- * @returns Changed models if found
31
- */
32
- static getChangeData(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangeData | undefined;
33
- /** Checks if the cache contains information about the changeset
34
- * @param iModelId Id of the iModel
35
- * @param changesetId Changeset to check for
36
- * @returns true if the changeset has been processed and exists in the cache
37
- */
38
- static isProcessed(iModelId: GuidString, changesetId: string): boolean;
39
- }
1
+ import { GuidString } from "@itwin/core-bentley";
2
+ import { ChangeData, ChangedElements, ChangedModels } from "@itwin/core-common";
3
+ /** Utilities for querying changed elements caches */
4
+ /** @internal */
5
+ export declare class ChangedElementsManager {
6
+ /** Maintains a single entry since we will only have a cache per iModel, which means a ChangedElementsDb per backend instance */
7
+ private static _entry;
8
+ static getChangedElementsPathName(iModelId: GuidString): string;
9
+ /** Get changed elements Db */
10
+ private static getChangedElementsDb;
11
+ static cleanUp(): void;
12
+ /** Gets the changed elements from the cache if found
13
+ * @param iModelId Id of the iModel
14
+ * @param startChangesetId Start changeset Id
15
+ * @param endChangesetId End changeset Id
16
+ * @returns Changed elements if found
17
+ */
18
+ static getChangedElements(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangedElements | undefined;
19
+ /** Gets the changed models from the cache if found
20
+ * @param iModelId Id of the iModel
21
+ * @param startChangesetId Start changeset Id
22
+ * @param endChangesetId End changeset Id
23
+ * @returns Changed models if found
24
+ */
25
+ static getChangedModels(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangedModels | undefined;
26
+ /** Gets the change data (models and elements) from the cache if found
27
+ * @param iModelId Id of the iModel
28
+ * @param startChangesetId Start changeset Id
29
+ * @param endChangesetId End changeset Id
30
+ * @returns Changed models if found
31
+ */
32
+ static getChangeData(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangeData | undefined;
33
+ /** Checks if the cache contains information about the changeset
34
+ * @param iModelId Id of the iModel
35
+ * @param changesetId Changeset to check for
36
+ * @returns true if the changeset has been processed and exists in the cache
37
+ */
38
+ static isProcessed(iModelId: GuidString, changesetId: string): boolean;
39
+ }
40
40
  //# sourceMappingURL=ChangedElementsManager.d.ts.map