@itwin/core-backend 4.0.0-dev.1 → 4.0.0-dev.100

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 (270) hide show
  1. package/CHANGELOG.md +68 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +226 -224
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js +41 -41
  5. package/lib/cjs/BackendHubAccess.js.map +1 -1
  6. package/lib/cjs/BackendLoggerCategory.d.ts +90 -91
  7. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  8. package/lib/cjs/BackendLoggerCategory.js +98 -99
  9. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  10. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  11. package/lib/cjs/BisCoreSchema.js +60 -60
  12. package/lib/cjs/BlobContainerService.d.ts +120 -0
  13. package/lib/cjs/BlobContainerService.d.ts.map +1 -0
  14. package/lib/cjs/BlobContainerService.js +18 -0
  15. package/lib/cjs/BlobContainerService.js.map +1 -0
  16. package/lib/cjs/BriefcaseManager.d.ts +184 -170
  17. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  18. package/lib/cjs/BriefcaseManager.js +421 -414
  19. package/lib/cjs/BriefcaseManager.js.map +1 -1
  20. package/lib/cjs/Category.d.ts +153 -153
  21. package/lib/cjs/Category.js +243 -243
  22. package/lib/cjs/Category.js.map +1 -1
  23. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  24. package/lib/cjs/ChangeSummaryManager.js +444 -445
  25. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  26. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  27. package/lib/cjs/ChangedElementsDb.js +165 -165
  28. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  29. package/lib/cjs/ChangedElementsManager.js +88 -88
  30. package/lib/cjs/ChannelControl.d.ts +70 -0
  31. package/lib/cjs/ChannelControl.d.ts.map +1 -0
  32. package/lib/cjs/ChannelControl.js +89 -0
  33. package/lib/cjs/ChannelControl.js.map +1 -0
  34. package/lib/cjs/CheckpointManager.d.ts +121 -121
  35. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  36. package/lib/cjs/CheckpointManager.js +351 -349
  37. package/lib/cjs/CheckpointManager.js.map +1 -1
  38. package/lib/cjs/ClassRegistry.d.ts +79 -79
  39. package/lib/cjs/ClassRegistry.js +249 -245
  40. package/lib/cjs/ClassRegistry.js.map +1 -1
  41. package/lib/cjs/CloudSqlite.d.ts +572 -350
  42. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  43. package/lib/cjs/CloudSqlite.js +374 -153
  44. package/lib/cjs/CloudSqlite.js.map +1 -1
  45. package/lib/cjs/CodeService.d.ts +399 -396
  46. package/lib/cjs/CodeService.d.ts.map +1 -1
  47. package/lib/cjs/CodeService.js +63 -63
  48. package/lib/cjs/CodeService.js.map +1 -1
  49. package/lib/cjs/CodeSpecs.d.ts +58 -55
  50. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  51. package/lib/cjs/CodeSpecs.js +154 -124
  52. package/lib/cjs/CodeSpecs.js.map +1 -1
  53. package/lib/cjs/ConcurrentQuery.d.ts +13 -13
  54. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  55. package/lib/cjs/ConcurrentQuery.js +36 -36
  56. package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
  57. package/lib/cjs/CustomViewState3dCreator.d.ts.map +1 -1
  58. package/lib/cjs/CustomViewState3dCreator.js +80 -81
  59. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  60. package/lib/cjs/DevTools.d.ts +74 -71
  61. package/lib/cjs/DevTools.d.ts.map +1 -1
  62. package/lib/cjs/DevTools.js +156 -154
  63. package/lib/cjs/DevTools.js.map +1 -1
  64. package/lib/cjs/DisplayStyle.d.ts +104 -106
  65. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  66. package/lib/cjs/DisplayStyle.js +251 -256
  67. package/lib/cjs/DisplayStyle.js.map +1 -1
  68. package/lib/cjs/ECDb.d.ts +194 -191
  69. package/lib/cjs/ECDb.d.ts.map +1 -1
  70. package/lib/cjs/ECDb.js +351 -350
  71. package/lib/cjs/ECDb.js.map +1 -1
  72. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  73. package/lib/cjs/ECSchemaXmlContext.d.ts.map +1 -1
  74. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  75. package/lib/cjs/ECSqlStatement.d.ts +473 -473
  76. package/lib/cjs/ECSqlStatement.js +791 -791
  77. package/lib/cjs/Element.d.ts +1105 -1109
  78. package/lib/cjs/Element.d.ts.map +1 -1
  79. package/lib/cjs/Element.js +1416 -1427
  80. package/lib/cjs/Element.js.map +1 -1
  81. package/lib/cjs/ElementAspect.d.ts +175 -179
  82. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  83. package/lib/cjs/ElementAspect.js +202 -211
  84. package/lib/cjs/ElementAspect.js.map +1 -1
  85. package/lib/cjs/ElementGraphics.d.ts +9 -9
  86. package/lib/cjs/ElementGraphics.js +41 -41
  87. package/lib/cjs/ElementGraphics.js.map +1 -1
  88. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  89. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  90. package/lib/cjs/ElementTreeWalker.js +409 -409
  91. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  92. package/lib/cjs/Entity.d.ts +102 -106
  93. package/lib/cjs/Entity.d.ts.map +1 -1
  94. package/lib/cjs/Entity.js +118 -134
  95. package/lib/cjs/Entity.js.map +1 -1
  96. package/lib/cjs/EntityReferences.d.ts +49 -49
  97. package/lib/cjs/EntityReferences.d.ts.map +1 -1
  98. package/lib/cjs/EntityReferences.js +95 -95
  99. package/lib/cjs/ExportGraphics.d.ts +317 -317
  100. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  101. package/lib/cjs/ExportGraphics.js +208 -208
  102. package/lib/cjs/ExternalSource.d.ts +95 -96
  103. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  104. package/lib/cjs/ExternalSource.js +130 -131
  105. package/lib/cjs/ExternalSource.js.map +1 -1
  106. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  107. package/lib/cjs/GeoCoordConfig.js +85 -85
  108. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  109. package/lib/cjs/GeometrySummary.d.ts +4 -4
  110. package/lib/cjs/GeometrySummary.js +333 -333
  111. package/lib/cjs/GeometrySummary.js.map +1 -1
  112. package/lib/cjs/HubMock.d.ts +94 -94
  113. package/lib/cjs/HubMock.js +220 -222
  114. package/lib/cjs/HubMock.js.map +1 -1
  115. package/lib/cjs/IModelCloneContext.d.ts +8 -8
  116. package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
  117. package/lib/cjs/IModelCloneContext.js +15 -15
  118. package/lib/cjs/IModelDb.d.ts +1222 -1196
  119. package/lib/cjs/IModelDb.d.ts.map +1 -1
  120. package/lib/cjs/IModelDb.js +2389 -2392
  121. package/lib/cjs/IModelDb.js.map +1 -1
  122. package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
  123. package/lib/cjs/IModelElementCloneContext.js +159 -159
  124. package/lib/cjs/IModelHost.d.ts +370 -369
  125. package/lib/cjs/IModelHost.d.ts.map +1 -1
  126. package/lib/cjs/IModelHost.js +476 -496
  127. package/lib/cjs/IModelHost.js.map +1 -1
  128. package/lib/cjs/IModelJsFs.d.ts +62 -62
  129. package/lib/cjs/IModelJsFs.js +139 -140
  130. package/lib/cjs/IModelJsFs.js.map +1 -1
  131. package/lib/cjs/IpcHost.d.ts +104 -104
  132. package/lib/cjs/IpcHost.js +276 -278
  133. package/lib/cjs/IpcHost.js.map +1 -1
  134. package/lib/cjs/LineStyle.d.ts +311 -311
  135. package/lib/cjs/LineStyle.js +295 -295
  136. package/lib/cjs/LocalHub.d.ts +162 -162
  137. package/lib/cjs/LocalHub.d.ts.map +1 -1
  138. package/lib/cjs/LocalHub.js +579 -584
  139. package/lib/cjs/LocalHub.js.map +1 -1
  140. package/lib/cjs/LocalhostIpcHost.d.ts +21 -20
  141. package/lib/cjs/LocalhostIpcHost.d.ts.map +1 -1
  142. package/lib/cjs/LocalhostIpcHost.js +79 -81
  143. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  144. package/lib/cjs/Material.d.ts +131 -131
  145. package/lib/cjs/Material.d.ts.map +1 -1
  146. package/lib/cjs/Material.js +185 -181
  147. package/lib/cjs/Material.js.map +1 -1
  148. package/lib/cjs/Model.d.ts +391 -392
  149. package/lib/cjs/Model.d.ts.map +1 -1
  150. package/lib/cjs/Model.js +487 -485
  151. package/lib/cjs/Model.js.map +1 -1
  152. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  153. package/lib/cjs/NativeAppStorage.js +202 -202
  154. package/lib/cjs/NativeAppStorage.js.map +1 -1
  155. package/lib/cjs/NativeHost.d.ts +52 -52
  156. package/lib/cjs/NativeHost.d.ts.map +1 -1
  157. package/lib/cjs/NativeHost.js +158 -163
  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 +123 -132
  167. package/lib/cjs/PropertyStore.d.ts.map +1 -1
  168. package/lib/cjs/PropertyStore.js +179 -11
  169. package/lib/cjs/PropertyStore.js.map +1 -1
  170. package/lib/cjs/Relationship.d.ts +413 -416
  171. package/lib/cjs/Relationship.d.ts.map +1 -1
  172. package/lib/cjs/Relationship.js +491 -494
  173. package/lib/cjs/Relationship.js.map +1 -1
  174. package/lib/cjs/RpcBackend.d.ts +5 -5
  175. package/lib/cjs/RpcBackend.js +32 -32
  176. package/lib/cjs/SQLiteDb.d.ts +317 -219
  177. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  178. package/lib/cjs/SQLiteDb.js +318 -214
  179. package/lib/cjs/SQLiteDb.js.map +1 -1
  180. package/lib/cjs/Schema.d.ts +55 -55
  181. package/lib/cjs/Schema.js +83 -83
  182. package/lib/cjs/Schema.js.map +1 -1
  183. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  184. package/lib/cjs/ServerBasedLocks.js +168 -168
  185. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  186. package/lib/cjs/SqliteStatement.d.ts +360 -360
  187. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  188. package/lib/cjs/SqliteStatement.js +586 -586
  189. package/lib/cjs/Texture.d.ts +58 -58
  190. package/lib/cjs/Texture.js +82 -82
  191. package/lib/cjs/Texture.js.map +1 -1
  192. package/lib/cjs/TileStorage.d.ts +44 -18
  193. package/lib/cjs/TileStorage.d.ts.map +1 -1
  194. package/lib/cjs/TileStorage.js +109 -90
  195. package/lib/cjs/TileStorage.js.map +1 -1
  196. package/lib/cjs/TxnManager.d.ts +202 -202
  197. package/lib/cjs/TxnManager.d.ts.map +1 -1
  198. package/lib/cjs/TxnManager.js +356 -356
  199. package/lib/cjs/TxnManager.js.map +1 -1
  200. package/lib/cjs/ViewDefinition.d.ts +429 -439
  201. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  202. package/lib/cjs/ViewDefinition.js +640 -646
  203. package/lib/cjs/ViewDefinition.js.map +1 -1
  204. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  205. package/lib/cjs/ViewStateHydrator.js +103 -103
  206. package/lib/cjs/core-backend.d.ts +181 -184
  207. package/lib/cjs/core-backend.d.ts.map +1 -1
  208. package/lib/cjs/core-backend.js +205 -204
  209. package/lib/cjs/core-backend.js.map +1 -1
  210. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  211. package/lib/cjs/domains/FunctionalElements.js +145 -145
  212. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  213. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  214. package/lib/cjs/domains/FunctionalSchema.d.ts.map +1 -1
  215. package/lib/cjs/domains/FunctionalSchema.js +39 -40
  216. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  217. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  218. package/lib/cjs/domains/GenericElements.js +263 -263
  219. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  220. package/lib/cjs/domains/GenericSchema.js +28 -28
  221. package/lib/cjs/rpc/multipart.d.ts +11 -11
  222. package/lib/cjs/rpc/multipart.js +71 -71
  223. package/lib/cjs/rpc/tracing.d.ts +28 -28
  224. package/lib/cjs/rpc/tracing.js +73 -74
  225. package/lib/cjs/rpc/tracing.js.map +1 -1
  226. package/lib/cjs/rpc/web/logging.d.ts +9 -9
  227. package/lib/cjs/rpc/web/logging.js +43 -43
  228. package/lib/cjs/rpc/web/request.d.ts +6 -6
  229. package/lib/cjs/rpc/web/request.js +73 -74
  230. package/lib/cjs/rpc/web/request.js.map +1 -1
  231. package/lib/cjs/rpc/web/response.d.ts +6 -6
  232. package/lib/cjs/rpc/web/response.js +105 -106
  233. package/lib/cjs/rpc/web/response.js.map +1 -1
  234. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  235. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  236. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +47 -47
  237. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +293 -294
  238. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  239. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +20 -22
  240. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -1
  241. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +193 -205
  242. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  243. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  244. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +166 -168
  245. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  246. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  247. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +42 -43
  248. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  249. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  250. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  251. package/lib/cjs/workspace/Settings.d.ts +186 -186
  252. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  253. package/lib/cjs/workspace/Settings.js +155 -155
  254. package/lib/cjs/workspace/Settings.js.map +1 -1
  255. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  256. package/lib/cjs/workspace/SettingsSchemas.js +190 -191
  257. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  258. package/lib/cjs/workspace/Workspace.d.ts +411 -414
  259. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  260. package/lib/cjs/workspace/Workspace.js +521 -543
  261. package/lib/cjs/workspace/Workspace.js.map +1 -1
  262. package/package.json +25 -28
  263. package/lib/cjs/AliCloudStorageService.d.ts +0 -24
  264. package/lib/cjs/AliCloudStorageService.d.ts.map +0 -1
  265. package/lib/cjs/AliCloudStorageService.js +0 -72
  266. package/lib/cjs/AliCloudStorageService.js.map +0 -1
  267. package/lib/cjs/CloudStorageBackend.d.ts +0 -59
  268. package/lib/cjs/CloudStorageBackend.d.ts.map +0 -1
  269. package/lib/cjs/CloudStorageBackend.js +0 -174
  270. package/lib/cjs/CloudStorageBackend.js.map +0 -1
@@ -1,61 +1,61 @@
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 Schema
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.BisCoreSchema = void 0;
11
- const path = require("path");
12
- const categoryMod = require("./Category");
13
- const ClassRegistry_1 = require("./ClassRegistry");
14
- const elementMod = require("./Element");
15
- const aspectMod = require("./ElementAspect");
16
- const externalSourceMod = require("./ExternalSource");
17
- const IModelHost_1 = require("./IModelHost");
18
- const materialMod = require("./Material");
19
- const modelMod = require("./Model");
20
- const linkMod = require("./Relationship");
21
- const Schema_1 = require("./Schema");
22
- const textureMod = require("./Texture");
23
- const viewMod = require("./ViewDefinition");
24
- const displayStyleMod = require("./DisplayStyle");
25
- /**
26
- * The [BisCore]($docs/bis/guide/fundamentals/schemas-domains.md) schema is the lowest level Schema in an iModel.
27
- *
28
- * It is automatically registered when [[IModelHost.startup]] is called.
29
- *
30
- * ** Example:**
31
- * ``` ts
32
- * [[include:BisCore.registerSchemaAndGetClass]]
33
- * ```
34
- * @public
35
- */
36
- class BisCoreSchema extends Schema_1.Schema {
37
- static get schemaName() { return "BisCore"; }
38
- static get schemaFilePath() { return path.join(IModelHost_1.KnownLocations.nativeAssetsDir, "ECSchemas", "Dgn", `${BisCoreSchema.schemaName}.ecschema.xml`); }
39
- /** @internal */
40
- static registerSchema() {
41
- if (this === Schema_1.Schemas.getRegisteredSchema(this.schemaName))
42
- return;
43
- Schema_1.Schemas.unregisterSchema(this.schemaName);
44
- Schema_1.Schemas.registerSchema(this);
45
- // this list should include all backend .ts files with implementations of Entity-based classes. Order does not matter.
46
- [
47
- elementMod,
48
- aspectMod,
49
- modelMod,
50
- categoryMod,
51
- viewMod,
52
- linkMod,
53
- textureMod,
54
- materialMod,
55
- externalSourceMod,
56
- displayStyleMod,
57
- ].forEach((module) => ClassRegistry_1.ClassRegistry.registerModule(module, this));
58
- }
59
- }
60
- exports.BisCoreSchema = BisCoreSchema;
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 Schema
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.BisCoreSchema = void 0;
11
+ const path = require("path");
12
+ const categoryMod = require("./Category");
13
+ const ClassRegistry_1 = require("./ClassRegistry");
14
+ const elementMod = require("./Element");
15
+ const aspectMod = require("./ElementAspect");
16
+ const externalSourceMod = require("./ExternalSource");
17
+ const IModelHost_1 = require("./IModelHost");
18
+ const materialMod = require("./Material");
19
+ const modelMod = require("./Model");
20
+ const linkMod = require("./Relationship");
21
+ const Schema_1 = require("./Schema");
22
+ const textureMod = require("./Texture");
23
+ const viewMod = require("./ViewDefinition");
24
+ const displayStyleMod = require("./DisplayStyle");
25
+ /**
26
+ * The [BisCore]($docs/bis/guide/fundamentals/schemas-domains.md) schema is the lowest level Schema in an iModel.
27
+ *
28
+ * It is automatically registered when [[IModelHost.startup]] is called.
29
+ *
30
+ * ** Example:**
31
+ * ``` ts
32
+ * [[include:BisCore.registerSchemaAndGetClass]]
33
+ * ```
34
+ * @public
35
+ */
36
+ class BisCoreSchema extends Schema_1.Schema {
37
+ static get schemaName() { return "BisCore"; }
38
+ static get schemaFilePath() { return path.join(IModelHost_1.KnownLocations.nativeAssetsDir, "ECSchemas", "Dgn", `${BisCoreSchema.schemaName}.ecschema.xml`); }
39
+ /** @internal */
40
+ static registerSchema() {
41
+ if (this === Schema_1.Schemas.getRegisteredSchema(this.schemaName))
42
+ return;
43
+ Schema_1.Schemas.unregisterSchema(this.schemaName);
44
+ Schema_1.Schemas.registerSchema(this);
45
+ // this list should include all backend .ts files with implementations of Entity-based classes. Order does not matter.
46
+ [
47
+ elementMod,
48
+ aspectMod,
49
+ modelMod,
50
+ categoryMod,
51
+ viewMod,
52
+ linkMod,
53
+ textureMod,
54
+ materialMod,
55
+ externalSourceMod,
56
+ displayStyleMod,
57
+ ].forEach((module) => ClassRegistry_1.ClassRegistry.registerModule(module, this));
58
+ }
59
+ }
60
+ exports.BisCoreSchema = BisCoreSchema;
61
61
  //# sourceMappingURL=BisCoreSchema.js.map
@@ -0,0 +1,120 @@
1
+ /** @packageDocumentation
2
+ * @module BlobContainers
3
+ */
4
+ import { AccessToken, Id64String } from "@itwin/core-bentley";
5
+ /**
6
+ * Types and functions for creating, deleting and authorizing access to cloud-based blob containers for an iTwin.
7
+ * @beta
8
+ */
9
+ export declare namespace BlobContainer {
10
+ /** Object that implements the methods to create, delete, and request access to a container. */
11
+ let service: BlobContainer.ContainerService | undefined;
12
+ /** name of cloud provider for a container. */
13
+ type Provider = "azure" | "google" | "aws";
14
+ /** the name of the container within its `Scope` */
15
+ type ContainerId = string;
16
+ /** token that authenticates a user. This token is required to obtain a `ContainerToken`. */
17
+ type UserToken = AccessToken;
18
+ /** token that authenticates access to a container for either read or write. */
19
+ type ContainerToken = AccessToken;
20
+ /**
21
+ * The scope for a container. This determines:
22
+ * - the "owner" organization, including the contract that governs its legal and commercial terms and obligations
23
+ * - the administrators who may configure RBAC permissions
24
+ * - the datacenter for the container. Every container resides in a datacenter as determined by the iTwinId. This
25
+ * determines the region for data residency requirements.
26
+ * - the lifecycle constraints for the container. No container can outlive its iTwin or its iModel (if defined). That is,
27
+ * when the iTwin/iModel is deleted (either explicitly or due to contract expiration), the container is also deleted.
28
+ */
29
+ interface Scope {
30
+ /** iTwinId of the owner of this container. */
31
+ iTwinId: Id64String;
32
+ /** optionally, an iModelId within the iTwin. If present, container is deleted when the iModel is deleted. */
33
+ iModelId?: Id64String;
34
+ }
35
+ /**
36
+ * Metadata about the use of a container so that:
37
+ * - administrators can understand why a container exists for assigning RBAC permissions appropriately
38
+ * - usage reports can aggregate types of containers
39
+ * - applications can identify their containers
40
+ * - applications can store important (to them) properties "on" their containers
41
+ */
42
+ interface Metadata {
43
+ /** Human readable explanation of the information held in the container. This will be displayed in the administrator RBAC panel, and on usage reports. */
44
+ description: string;
45
+ /** a machine-readable string that describes the "format" of the data in this container (e.g. "CloudSqlite") */
46
+ format: string;
47
+ /** an identifier of the application that uses this this container */
48
+ application: string;
49
+ /** Additional properties stored on the container */
50
+ [propertyName: string]: string;
51
+ }
52
+ /** Properties returned by `Service.requestToken` */
53
+ interface TokenProps {
54
+ /**
55
+ * expiring token that provides the requested access to the container. Should be used in all subsequent requests for blobs within the container,
56
+ * and must be refreshed before it expires
57
+ */
58
+ token: ContainerToken;
59
+ /** scope of the container. */
60
+ scope: Scope;
61
+ /** name of the blob storage provider. */
62
+ provider: Provider;
63
+ /** Time at which the token will expire. The token should be refreshed (that is, a new token should be requested) before this time. */
64
+ expiration: Date;
65
+ /** Metadata of the container. */
66
+ metadata: Metadata;
67
+ }
68
+ /** The URI and Id of the container. */
69
+ interface Address {
70
+ uri: string;
71
+ id: ContainerId;
72
+ }
73
+ /** Information required to access an existing container. */
74
+ interface AccessContainerProps {
75
+ address: Address;
76
+ userToken: UserToken;
77
+ }
78
+ /** Information required to request an access token for a container. */
79
+ interface RequestTokenProps extends AccessContainerProps {
80
+ /** If true, token should provide write access.
81
+ * @note if write access is requested and the user is authorized for read but not write, an exception will be thrown (i.e. a read token is *not* returned).
82
+ */
83
+ forWriteAccess?: boolean;
84
+ /** the number of seconds before the token should expire.
85
+ * @note A maximum duration is determined by the service. If no value is supplied, or the value is larger than the maximum, the maximum duration is used.
86
+ */
87
+ durationSeconds?: number;
88
+ }
89
+ /** Information required to create a new container. */
90
+ interface CreateNewContainerProps {
91
+ /** the scope of the new container */
92
+ scope: Scope;
93
+ /** metadata to be stored on the new container */
94
+ metadata: Metadata;
95
+ /** The user's access token. The user must be authorized with "create container" RBAC role for the iTwin. */
96
+ userToken: UserToken;
97
+ /**
98
+ * the id for the container. Useful for tests.
99
+ * @internal
100
+ */
101
+ id?: ContainerId;
102
+ }
103
+ /** Methods to create, delete, and access blob containers. */
104
+ interface ContainerService {
105
+ /**
106
+ * Create a new blob container. Throws on failure (e.g. access denied or container already exists.)
107
+ */
108
+ create(props: CreateNewContainerProps): Promise<Address>;
109
+ /**
110
+ * Delete an existing blob container.
111
+ * @note This method requires that the user be authorized with "delete container" RBAC role for the iTwin.
112
+ */
113
+ delete(props: AccessContainerProps): Promise<void>;
114
+ /**
115
+ * Request a `ContainerToken` for a container. Throws on failure.
116
+ */
117
+ requestToken(props: RequestTokenProps): Promise<TokenProps>;
118
+ }
119
+ }
120
+ //# sourceMappingURL=BlobContainerService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlobContainerService.d.ts","sourceRoot":"","sources":["../../src/BlobContainerService.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;GAGG;AACH,yBAAiB,aAAa,CAAC;IAE7B,+FAA+F;IACxF,IAAI,OAAO,EAAE,aAAa,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAE/D,8CAA8C;IAC9C,KAAY,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAElD,mDAAmD;IACnD,KAAY,WAAW,GAAG,MAAM,CAAC;IAEjC,4FAA4F;IAC5F,KAAY,SAAS,GAAG,WAAW,CAAC;IAEpC,+EAA+E;IAC/E,KAAY,cAAc,GAAG,WAAW,CAAC;IAEzC;;;;;;;;OAQG;IACH,UAAiB,KAAK;QACpB,8CAA8C;QAC9C,OAAO,EAAE,UAAU,CAAC;QACpB,6GAA6G;QAC7G,QAAQ,CAAC,EAAE,UAAU,CAAC;KACvB;IAED;;;;;;OAMG;IACH,UAAiB,QAAQ;QACvB,yJAAyJ;QACzJ,WAAW,EAAE,MAAM,CAAC;QACpB,+GAA+G;QAC/G,MAAM,EAAE,MAAM,CAAC;QACf,qEAAqE;QACrE,WAAW,EAAE,MAAM,CAAC;QACpB,oDAAoD;QACpD,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;KAChC;IAED,oDAAoD;IACpD,UAAiB,UAAU;QACzB;;;WAGG;QACH,KAAK,EAAE,cAAc,CAAC;QACtB,8BAA8B;QAC9B,KAAK,EAAE,KAAK,CAAC;QACb,yCAAyC;QACzC,QAAQ,EAAE,QAAQ,CAAC;QACnB,sIAAsI;QACtI,UAAU,EAAE,IAAI,CAAC;QACjB,iCAAiC;QACjC,QAAQ,EAAE,QAAQ,CAAC;KACpB;IAED,uCAAuC;IACvC,UAAiB,OAAO;QACtB,GAAG,EAAE,MAAM,CAAC;QACZ,EAAE,EAAE,WAAW,CAAC;KACjB;IAED,4DAA4D;IAC5D,UAAiB,oBAAoB;QACnC,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,SAAS,CAAC;KACtB;IAED,uEAAuE;IACvE,UAAiB,iBAAkB,SAAQ,oBAAoB;QAC7D;;WAEG;QACH,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB;;WAEG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B;IAED,sDAAsD;IACtD,UAAiB,uBAAuB;QACtC,qCAAqC;QACrC,KAAK,EAAE,KAAK,CAAC;QACb,iDAAiD;QACjD,QAAQ,EAAE,QAAQ,CAAC;QACnB,4GAA4G;QAC5G,SAAS,EAAE,SAAS,CAAC;QACrB;;;WAGG;QACH,EAAE,CAAC,EAAE,WAAW,CAAC;KAClB;IAED,6DAA6D;IAC7D,UAAiB,gBAAgB;QAC/B;;WAEG;QACH,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzD;;;WAGG;QACH,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnD;;WAEG;QACH,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;KAC7D;CACF"}
@@ -0,0 +1,18 @@
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 BlobContainers
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.BlobContainer = void 0;
11
+ /**
12
+ * Types and functions for creating, deleting and authorizing access to cloud-based blob containers for an iTwin.
13
+ * @beta
14
+ */
15
+ var BlobContainer;
16
+ (function (BlobContainer) {
17
+ })(BlobContainer = exports.BlobContainer || (exports.BlobContainer = {}));
18
+ //# sourceMappingURL=BlobContainerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlobContainerService.js","sourceRoot":"","sources":["../../src/BlobContainerService.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAMH;;;GAGG;AACH,IAAiB,aAAa,CA6H7B;AA7HD,WAAiB,aAAa;AA6H9B,CAAC,EA7HgB,aAAa,GAAb,qBAAa,KAAb,qBAAa,QA6H7B","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 BlobContainers\r\n */\r\n\r\n// spell:ignore datacenter\r\n\r\nimport { AccessToken, Id64String } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * Types and functions for creating, deleting and authorizing access to cloud-based blob containers for an iTwin.\r\n * @beta\r\n */\r\nexport namespace BlobContainer {\r\n\r\n /** Object that implements the methods to create, delete, and request access to a container. */\r\n export let service: BlobContainer.ContainerService | undefined;\r\n\r\n /** name of cloud provider for a container. */\r\n export type Provider = \"azure\" | \"google\" | \"aws\";\r\n\r\n /** the name of the container within its `Scope` */\r\n export type ContainerId = string;\r\n\r\n /** token that authenticates a user. This token is required to obtain a `ContainerToken`. */\r\n export type UserToken = AccessToken;\r\n\r\n /** token that authenticates access to a container for either read or write. */\r\n export type ContainerToken = AccessToken;\r\n\r\n /**\r\n * The scope for a container. This determines:\r\n * - the \"owner\" organization, including the contract that governs its legal and commercial terms and obligations\r\n * - the administrators who may configure RBAC permissions\r\n * - the datacenter for the container. Every container resides in a datacenter as determined by the iTwinId. This\r\n * determines the region for data residency requirements.\r\n * - the lifecycle constraints for the container. No container can outlive its iTwin or its iModel (if defined). That is,\r\n * when the iTwin/iModel is deleted (either explicitly or due to contract expiration), the container is also deleted.\r\n */\r\n export interface Scope {\r\n /** iTwinId of the owner of this container. */\r\n iTwinId: Id64String;\r\n /** optionally, an iModelId within the iTwin. If present, container is deleted when the iModel is deleted. */\r\n iModelId?: Id64String;\r\n }\r\n\r\n /**\r\n * Metadata about the use of a container so that:\r\n * - administrators can understand why a container exists for assigning RBAC permissions appropriately\r\n * - usage reports can aggregate types of containers\r\n * - applications can identify their containers\r\n * - applications can store important (to them) properties \"on\" their containers\r\n */\r\n export interface Metadata {\r\n /** Human readable explanation of the information held in the container. This will be displayed in the administrator RBAC panel, and on usage reports. */\r\n description: string;\r\n /** a machine-readable string that describes the \"format\" of the data in this container (e.g. \"CloudSqlite\") */\r\n format: string;\r\n /** an identifier of the application that uses this this container */\r\n application: string;\r\n /** Additional properties stored on the container */\r\n [propertyName: string]: string;\r\n }\r\n\r\n /** Properties returned by `Service.requestToken` */\r\n export interface TokenProps {\r\n /**\r\n * expiring token that provides the requested access to the container. Should be used in all subsequent requests for blobs within the container,\r\n * and must be refreshed before it expires\r\n */\r\n token: ContainerToken;\r\n /** scope of the container. */\r\n scope: Scope;\r\n /** name of the blob storage provider. */\r\n provider: Provider;\r\n /** Time at which the token will expire. The token should be refreshed (that is, a new token should be requested) before this time. */\r\n expiration: Date;\r\n /** Metadata of the container. */\r\n metadata: Metadata;\r\n }\r\n\r\n /** The URI and Id of the container. */\r\n export interface Address {\r\n uri: string;\r\n id: ContainerId;\r\n }\r\n\r\n /** Information required to access an existing container. */\r\n export interface AccessContainerProps {\r\n address: Address;\r\n userToken: UserToken;\r\n }\r\n\r\n /** Information required to request an access token for a container. */\r\n export interface RequestTokenProps extends AccessContainerProps {\r\n /** If true, token should provide write access.\r\n * @note if write access is requested and the user is authorized for read but not write, an exception will be thrown (i.e. a read token is *not* returned).\r\n */\r\n forWriteAccess?: boolean;\r\n /** the number of seconds before the token should expire.\r\n * @note A maximum duration is determined by the service. If no value is supplied, or the value is larger than the maximum, the maximum duration is used.\r\n */\r\n durationSeconds?: number;\r\n }\r\n\r\n /** Information required to create a new container. */\r\n export interface CreateNewContainerProps {\r\n /** the scope of the new container */\r\n scope: Scope;\r\n /** metadata to be stored on the new container */\r\n metadata: Metadata;\r\n /** The user's access token. The user must be authorized with \"create container\" RBAC role for the iTwin. */\r\n userToken: UserToken;\r\n /**\r\n * the id for the container. Useful for tests.\r\n * @internal\r\n */\r\n id?: ContainerId;\r\n }\r\n\r\n /** Methods to create, delete, and access blob containers. */\r\n export interface ContainerService {\r\n /**\r\n * Create a new blob container. Throws on failure (e.g. access denied or container already exists.)\r\n */\r\n create(props: CreateNewContainerProps): Promise<Address>;\r\n\r\n /**\r\n * Delete an existing blob container.\r\n * @note This method requires that the user be authorized with \"delete container\" RBAC role for the iTwin.\r\n */\r\n delete(props: AccessContainerProps): Promise<void>;\r\n\r\n /**\r\n * Request a `ContainerToken` for a container. Throws on failure.\r\n */\r\n requestToken(props: RequestTokenProps): Promise<TokenProps>;\r\n }\r\n}\r\n"]}
@@ -1,171 +1,185 @@
1
- /** @packageDocumentation
2
- * @module iModels
3
- */
4
- import { AccessToken, BeDuration, GuidString } from "@itwin/core-bentley";
5
- import { BriefcaseId, BriefcaseProps, ChangesetIndex, LocalBriefcaseProps, LocalDirName, LocalFileName, RequestNewBriefcaseProps, RpcActivity } from "@itwin/core-common";
6
- import { AcquireNewBriefcaseIdArg } from "./BackendHubAccess";
7
- import { ProgressFunction } from "./CheckpointManager";
8
- import { BriefcaseDb, IModelDb, TokenArg } from "./IModelDb";
9
- /** The argument for [[BriefcaseManager.downloadBriefcase]]
10
- * @public
11
- */
12
- export interface RequestNewBriefcaseArg extends TokenArg, RequestNewBriefcaseProps {
13
- /** If present, a function called periodically during the download to indicate progress.
14
- * @note return non-zero from this function to abort the download.
15
- */
16
- onProgress?: ProgressFunction;
17
- }
18
- /**
19
- * Parameters for pushing changesets to iModelHub
20
- * @public
21
- */
22
- export interface PushChangesArgs extends TokenArg {
23
- /** A description of the changes. This is visible on the iModel's timeline. */
24
- description: string;
25
- /** if present, the locks are retained after the operation. Otherwise, *all* locks are released after the changeset is successfully pushed. */
26
- retainLocks?: true;
27
- /** number of times to retry pull/merge if other users are pushing at the same time. Default is 5 */
28
- mergeRetryCount?: number;
29
- /** delay to wait between pull/merge retry attempts. Default is 3 seconds */
30
- mergeRetryDelay?: BeDuration;
31
- /** the number of time to attempt to retry to push the changeset upon failure. Default is 3 */
32
- pushRetryCount?: number;
33
- /** The delay to wait between retry attempts on failed pushes. Default is 3 seconds. */
34
- pushRetryDelay?: BeDuration;
35
- }
36
- /**
37
- * Specifies a specific index for pulling changes.
38
- * @public
39
- */
40
- export interface ToChangesetArgs extends TokenArg {
41
- /** The last ChangesetIndex to pull. If not present, pull *all* newer changesets. */
42
- toIndex?: ChangesetIndex;
43
- }
44
- /** Arguments for [[BriefcaseManager.pullAndApplyChangesets]]
45
- * @public
46
- */
47
- export declare type PullChangesArgs = ToChangesetArgs & {
48
- /** If present, a function called periodically during the download to indicate progress.
49
- * @note return non-zero from this function to abort the download.
50
- */
51
- onProgress?: ProgressFunction;
52
- };
53
- /** Manages downloading Briefcases and downloading and uploading changesets.
54
- * @public
55
- */
56
- export declare class BriefcaseManager {
57
- /** Get the local path of the folder storing files that are associated with an imodel */
58
- static getIModelPath(iModelId: GuidString): LocalDirName;
59
- /** @internal */
60
- static getChangeSetsPath(iModelId: GuidString): LocalDirName;
61
- /** @internal */
62
- static getChangeCachePathName(iModelId: GuidString): LocalFileName;
63
- /** @internal */
64
- static getChangedElementsPathName(iModelId: GuidString): LocalFileName;
65
- private static _briefcaseSubDir;
66
- /** @internal */
67
- static getBriefcaseBasePath(iModelId: GuidString): LocalDirName;
68
- /** Get the name of the local file that holds, or will hold, a local briefcase in the briefcase cache.
69
- * @note The briefcase cache is a local directory established in the call to [[BriefcaseManager.initialize]].
70
- * @param briefcase the iModelId and BriefcaseId for the filename
71
- * @see getIModelPath
72
- */
73
- static getFileName(briefcase: BriefcaseProps): LocalFileName;
74
- private static setupCacheDir;
75
- private static _initialized?;
76
- /** Initialize BriefcaseManager
77
- * @param cacheRootDir The root directory for storing a cache of downloaded briefcase files on the local computer.
78
- * Briefcases are stored relative to this path in sub-folders organized by IModelId.
79
- * @note It is perfectly valid for applications to store briefcases in locations they manage, outside of `cacheRootDir`.
80
- */
81
- static initialize(cacheRootDir: LocalDirName): void;
82
- private static finalize;
83
- /** Get a list of the local briefcase held in the briefcase cache, optionally for a single iModelId
84
- * @param iModelId if present, only briefcases for this iModelId are returned, otherwise all briefcases for all
85
- * iModels in the briefcase cache are returned.
86
- * @note usually there should only be one briefcase per iModel.
87
- */
88
- static getCachedBriefcases(iModelId?: GuidString): LocalBriefcaseProps[];
89
- private static _cacheDir;
90
- /** Get the root directory for the briefcase cache */
91
- static get cacheDir(): LocalDirName;
92
- /** Determine whether the supplied briefcaseId is in the range of assigned BriefcaseIds issued by iModelHub
93
- * @note this does check whether the id was actually acquired by the caller.
94
- */
95
- static isValidBriefcaseId(id: BriefcaseId): boolean;
96
- /** Acquire a new briefcaseId from iModelHub for the supplied iModelId
97
- * @note usually there should only be one briefcase per iModel per user. If a single user acquires more than one briefcaseId,
98
- * it's a good idea to supply different aliases for each of them.
99
- */
100
- static acquireNewBriefcaseId(arg: AcquireNewBriefcaseIdArg): Promise<BriefcaseId>;
101
- /**
102
- * Download a new briefcase from iModelHub for the supplied iModelId.
103
- *
104
- * Briefcases are local files holding a copy of an iModel.
105
- * Briefcases may either be specific to an individual user (so that it can be modified to create changesets), or it can be readonly so it can accept but not create changesets.
106
- * Every briefcase internally holds its [[BriefcaseId]]. Writeable briefcases have a `BriefcaseId` "assigned" to them by iModelHub. No two users will ever have the same BriefcaseId.
107
- * Readonly briefcases are "unassigned" with the special value [[BriefcaseId.Unassigned]].
108
- *
109
- * Typically a given user will have only one briefcase on their machine for a given iModelId. Rarely, it may be necessary to use more than one
110
- * briefcase to make isolated independent sets of changes, but that is exceedingly complicated and rare.
111
- *
112
- * Callers of this method may supply a BriefcaseId, or if none is supplied, a new one is acquired from iModelHub.
113
- *
114
- * @param arg The arguments that specify the briefcase file to be downloaded.
115
- * @returns The properties of the local briefcase in a Promise that is resolved after the briefcase is fully downloaded and the briefcase file is ready for use via [BriefcaseDb.open]($backend).
116
- * @note The location of the local file to hold the briefcase is arbitrary and may be any valid *local* path on your machine. If you don't supply
117
- * a filename, the local briefcase cache is used by creating a file with the briefcaseId as its name in the `briefcases` folder below the folder named
118
- * for the IModelId.
119
- * @note *It is invalid to edit briefcases on a shared network drive* and that is a sure way to corrupt your briefcase (see https://www.sqlite.org/howtocorrupt.html)
120
- */
121
- static downloadBriefcase(arg: RequestNewBriefcaseArg): Promise<LocalBriefcaseProps>;
122
- /** Deletes change sets of an iModel from local disk
123
- * @internal
124
- */
125
- static deleteChangeSetsFromLocalDisk(iModelId: string): void;
126
- /** Releases a briefcaseId from iModelHub. After this call it is illegal to generate changesets for the released briefcaseId.
127
- * @note generally, this method should not be called directly. Instead use [[deleteBriefcaseFiles]].
128
- * @see deleteBriefcaseFiles
129
- */
130
- static releaseBriefcase(accessToken: AccessToken, briefcase: BriefcaseProps): Promise<void>;
131
- /**
132
- * Delete and clean up a briefcase and all of its associated files. First, this method opens the supplied filename to determine its briefcaseId.
133
- * Then, if a requestContext is supplied, it releases a BriefcaseId from iModelHub. Finally it deletes the local briefcase file and
134
- * associated files (that is, all files in the same directory that start with the briefcase name).
135
- * @param filePath the full file name of the Briefcase to delete
136
- * @param accessToken for releasing the briefcaseId
137
- */
138
- static deleteBriefcaseFiles(filePath: LocalFileName, accessToken?: AccessToken): Promise<void>;
139
- /** Deletes a file
140
- * - Does not throw any error, but logs it instead
141
- * - Returns true if the delete was successful
142
- */
143
- private static deleteFile;
144
- /** Deletes a folder, checking if it's empty
145
- * - Does not throw any error, but logs it instead
146
- * - Returns true if the delete was successful
147
- */
148
- private static deleteFolderIfEmpty;
149
- /** Deletes the contents of a folder, but not the folder itself
150
- * - Does not throw any errors, but logs them.
151
- * - returns true if the delete was successful.
152
- */
153
- private static deleteFolderContents;
154
- /** Deletes a folder and all it's contents.
155
- * - Does not throw any errors, but logs them.
156
- * - returns true if the delete was successful.
157
- */
158
- private static deleteFolderAndContents;
159
- private static applySingleChangeset;
160
- /** @internal */
161
- static pullAndApplyChangesets(db: IModelDb, arg: PullChangesArgs): Promise<void>;
162
- /** create a changeset from the current changes, and push it to iModelHub */
163
- private static pushChanges;
164
- /** Pull/merge (if necessary), then push all local changes as a changeset. Called by [[BriefcaseDb.pushChanges]]
165
- * @internal
166
- */
167
- static pullMergePush(db: BriefcaseDb, arg: PushChangesArgs): Promise<void>;
168
- /** @internal */
169
- static logUsage(imodel: IModelDb, activity?: RpcActivity): void;
170
- }
1
+ /** @packageDocumentation
2
+ * @module iModels
3
+ */
4
+ import { AccessToken, BeDuration, GuidString } from "@itwin/core-bentley";
5
+ import { BriefcaseId, BriefcaseProps, ChangesetIndex, ChangesetIndexOrId, ChangesetProps, ChangesetRange, LocalBriefcaseProps, LocalDirName, LocalFileName, RequestNewBriefcaseProps, RpcActivity } from "@itwin/core-common";
6
+ import { AcquireNewBriefcaseIdArg } from "./BackendHubAccess";
7
+ import { ProgressFunction } from "./CheckpointManager";
8
+ import { BriefcaseDb, IModelDb, TokenArg } from "./IModelDb";
9
+ /** The argument for [[BriefcaseManager.downloadBriefcase]]
10
+ * @public
11
+ */
12
+ export interface RequestNewBriefcaseArg extends TokenArg, RequestNewBriefcaseProps {
13
+ /** If present, a function called periodically during the download to indicate progress.
14
+ * @note return non-zero from this function to abort the download.
15
+ */
16
+ onProgress?: ProgressFunction;
17
+ }
18
+ /**
19
+ * Parameters for pushing changesets to iModelHub
20
+ * @public
21
+ */
22
+ export interface PushChangesArgs extends TokenArg {
23
+ /** A description of the changes. This is visible on the iModel's timeline. */
24
+ description: string;
25
+ /** if present, the locks are retained after the operation. Otherwise, *all* locks are released after the changeset is successfully pushed. */
26
+ retainLocks?: true;
27
+ /** number of times to retry pull/merge if other users are pushing at the same time. Default is 5 */
28
+ mergeRetryCount?: number;
29
+ /** delay to wait between pull/merge retry attempts. Default is 3 seconds */
30
+ mergeRetryDelay?: BeDuration;
31
+ /** the number of time to attempt to retry to push the changeset upon failure. Default is 3 */
32
+ pushRetryCount?: number;
33
+ /** The delay to wait between retry attempts on failed pushes. Default is 3 seconds. */
34
+ pushRetryDelay?: BeDuration;
35
+ }
36
+ /**
37
+ * Specifies a specific index for pulling changes.
38
+ * @public
39
+ */
40
+ export interface ToChangesetArgs extends TokenArg {
41
+ /** The last ChangesetIndex to pull. If not present, pull *all* newer changesets. */
42
+ toIndex?: ChangesetIndex;
43
+ }
44
+ /** Arguments for [[BriefcaseManager.pullAndApplyChangesets]]
45
+ * @public
46
+ */
47
+ export type PullChangesArgs = ToChangesetArgs & {
48
+ /** If present, a function called periodically during the download to indicate progress.
49
+ * @note return non-zero from this function to abort the download.
50
+ */
51
+ onProgress?: ProgressFunction;
52
+ };
53
+ /** Manages downloading Briefcases and downloading and uploading changesets.
54
+ * @public
55
+ */
56
+ export declare class BriefcaseManager {
57
+ /** Get the local path of the folder storing files that are associated with an imodel */
58
+ static getIModelPath(iModelId: GuidString): LocalDirName;
59
+ /** @internal */
60
+ static getChangeSetsPath(iModelId: GuidString): LocalDirName;
61
+ /** @internal */
62
+ static getChangeCachePathName(iModelId: GuidString): LocalFileName;
63
+ /** @internal */
64
+ static getChangedElementsPathName(iModelId: GuidString): LocalFileName;
65
+ private static _briefcaseSubDir;
66
+ /** @internal */
67
+ static getBriefcaseBasePath(iModelId: GuidString): LocalDirName;
68
+ /** Get the name of the local file that holds, or will hold, a local briefcase in the briefcase cache.
69
+ * @note The briefcase cache is a local directory established in the call to [[BriefcaseManager.initialize]].
70
+ * @param briefcase the iModelId and BriefcaseId for the filename
71
+ * @see getIModelPath
72
+ */
73
+ static getFileName(briefcase: BriefcaseProps): LocalFileName;
74
+ private static setupCacheDir;
75
+ private static _initialized?;
76
+ /** Initialize BriefcaseManager
77
+ * @param cacheRootDir The root directory for storing a cache of downloaded briefcase files on the local computer.
78
+ * Briefcases are stored relative to this path in sub-folders organized by IModelId.
79
+ * @note It is perfectly valid for applications to store briefcases in locations they manage, outside of `cacheRootDir`.
80
+ */
81
+ static initialize(cacheRootDir: LocalDirName): void;
82
+ private static finalize;
83
+ /** Get a list of the local briefcase held in the briefcase cache, optionally for a single iModelId
84
+ * @param iModelId if present, only briefcases for this iModelId are returned, otherwise all briefcases for all
85
+ * iModels in the briefcase cache are returned.
86
+ * @note usually there should only be one briefcase per iModel.
87
+ */
88
+ static getCachedBriefcases(iModelId?: GuidString): LocalBriefcaseProps[];
89
+ private static _cacheDir;
90
+ /** Get the root directory for the briefcase cache */
91
+ static get cacheDir(): LocalDirName;
92
+ /** Determine whether the supplied briefcaseId is in the range of assigned BriefcaseIds issued by iModelHub
93
+ * @note this does check whether the id was actually acquired by the caller.
94
+ */
95
+ static isValidBriefcaseId(id: BriefcaseId): boolean;
96
+ /** Acquire a new briefcaseId from iModelHub for the supplied iModelId
97
+ * @note usually there should only be one briefcase per iModel per user. If a single user acquires more than one briefcaseId,
98
+ * it's a good idea to supply different aliases for each of them.
99
+ */
100
+ static acquireNewBriefcaseId(arg: AcquireNewBriefcaseIdArg): Promise<BriefcaseId>;
101
+ /**
102
+ * Download a new briefcase from iModelHub for the supplied iModelId.
103
+ *
104
+ * Briefcases are local files holding a copy of an iModel.
105
+ * Briefcases may either be specific to an individual user (so that it can be modified to create changesets), or it can be readonly so it can accept but not create changesets.
106
+ * Every briefcase internally holds its [[BriefcaseId]]. Writeable briefcases have a `BriefcaseId` "assigned" to them by iModelHub. No two users will ever have the same BriefcaseId.
107
+ * Readonly briefcases are "unassigned" with the special value [[BriefcaseId.Unassigned]].
108
+ *
109
+ * Typically a given user will have only one briefcase on their machine for a given iModelId. Rarely, it may be necessary to use more than one
110
+ * briefcase to make isolated independent sets of changes, but that is exceedingly complicated and rare.
111
+ *
112
+ * Callers of this method may supply a BriefcaseId, or if none is supplied, a new one is acquired from iModelHub.
113
+ *
114
+ * @param arg The arguments that specify the briefcase file to be downloaded.
115
+ * @returns The properties of the local briefcase in a Promise that is resolved after the briefcase is fully downloaded and the briefcase file is ready for use via [BriefcaseDb.open]($backend).
116
+ * @note The location of the local file to hold the briefcase is arbitrary and may be any valid *local* path on your machine. If you don't supply
117
+ * a filename, the local briefcase cache is used by creating a file with the briefcaseId as its name in the `briefcases` folder below the folder named
118
+ * for the IModelId.
119
+ * @note *It is invalid to edit briefcases on a shared network drive* and that is a sure way to corrupt your briefcase (see https://www.sqlite.org/howtocorrupt.html)
120
+ */
121
+ static downloadBriefcase(arg: RequestNewBriefcaseArg): Promise<LocalBriefcaseProps>;
122
+ /** Deletes change sets of an iModel from local disk
123
+ * @internal
124
+ */
125
+ static deleteChangeSetsFromLocalDisk(iModelId: string): void;
126
+ /** Releases a briefcaseId from iModelHub. After this call it is illegal to generate changesets for the released briefcaseId.
127
+ * @note generally, this method should not be called directly. Instead use [[deleteBriefcaseFiles]].
128
+ * @see deleteBriefcaseFiles
129
+ */
130
+ static releaseBriefcase(accessToken: AccessToken, briefcase: BriefcaseProps): Promise<void>;
131
+ /**
132
+ * Delete and clean up a briefcase and all of its associated files. First, this method opens the supplied filename to determine its briefcaseId.
133
+ * Then, if a requestContext is supplied, it releases a BriefcaseId from iModelHub. Finally it deletes the local briefcase file and
134
+ * associated files (that is, all files in the same directory that start with the briefcase name).
135
+ * @param filePath the full file name of the Briefcase to delete
136
+ * @param accessToken for releasing the briefcaseId
137
+ */
138
+ static deleteBriefcaseFiles(filePath: LocalFileName, accessToken?: AccessToken): Promise<void>;
139
+ /** Deletes a file
140
+ * - Does not throw any error, but logs it instead
141
+ * - Returns true if the delete was successful
142
+ */
143
+ private static deleteFile;
144
+ /** Deletes a folder, checking if it's empty
145
+ * - Does not throw any error, but logs it instead
146
+ * - Returns true if the delete was successful
147
+ */
148
+ private static deleteFolderIfEmpty;
149
+ /** Deletes the contents of a folder, but not the folder itself
150
+ * - Does not throw any errors, but logs them.
151
+ * - returns true if the delete was successful.
152
+ */
153
+ private static deleteFolderContents;
154
+ /** Query the hub for the properties for a ChangesetIndex or ChangesetId */
155
+ static queryChangeset(arg: {
156
+ iModelId: GuidString;
157
+ changeset: ChangesetIndexOrId;
158
+ }): Promise<ChangesetProps>;
159
+ /** Query the hub for an array of changeset properties given a ChangesetRange */
160
+ static queryChangesets(arg: {
161
+ iModelId: GuidString;
162
+ range: ChangesetRange;
163
+ }): Promise<ChangesetProps[]>;
164
+ /** Query the hub for the ChangesetProps of the most recent changeset */
165
+ static getLatestChangeset(arg: {
166
+ iModelId: GuidString;
167
+ }): Promise<ChangesetProps>;
168
+ /** Deletes a folder and all it's contents.
169
+ * - Does not throw any errors, but logs them.
170
+ * - returns true if the delete was successful.
171
+ */
172
+ private static deleteFolderAndContents;
173
+ private static applySingleChangeset;
174
+ /** @internal */
175
+ static pullAndApplyChangesets(db: IModelDb, arg: PullChangesArgs): Promise<void>;
176
+ /** create a changeset from the current changes, and push it to iModelHub */
177
+ private static pushChanges;
178
+ /** Pull/merge (if necessary), then push all local changes as a changeset. Called by [[BriefcaseDb.pushChanges]]
179
+ * @internal
180
+ */
181
+ static pullMergePush(db: BriefcaseDb, arg: PushChangesArgs): Promise<void>;
182
+ /** @internal */
183
+ static logUsage(imodel: IModelDb, activity?: RpcActivity): void;
184
+ }
171
185
  //# sourceMappingURL=BriefcaseManager.d.ts.map