@itwin/core-backend 4.0.0-dev.52 → 4.0.0-dev.55

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 (223) 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/BackendLoggerCategory.d.ts +90 -91
  8. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  9. package/lib/cjs/BackendLoggerCategory.js +98 -99
  10. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  11. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  12. package/lib/cjs/BisCoreSchema.js +60 -60
  13. package/lib/cjs/BriefcaseManager.d.ts +170 -170
  14. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  15. package/lib/cjs/BriefcaseManager.js +408 -408
  16. package/lib/cjs/BriefcaseManager.js.map +1 -1
  17. package/lib/cjs/Category.d.ts +153 -153
  18. package/lib/cjs/Category.js +243 -243
  19. package/lib/cjs/Category.js.map +1 -1
  20. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  21. package/lib/cjs/ChangeSummaryManager.js +444 -444
  22. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  23. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  24. package/lib/cjs/ChangedElementsDb.js +165 -165
  25. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  26. package/lib/cjs/ChangedElementsManager.js +88 -88
  27. package/lib/cjs/ChannelControl.d.ts +69 -69
  28. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  29. package/lib/cjs/ChannelControl.js +88 -88
  30. package/lib/cjs/ChannelControl.js.map +1 -1
  31. package/lib/cjs/CheckpointManager.d.ts +121 -121
  32. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  33. package/lib/cjs/CheckpointManager.js +351 -351
  34. package/lib/cjs/CheckpointManager.js.map +1 -1
  35. package/lib/cjs/ClassRegistry.d.ts +79 -79
  36. package/lib/cjs/ClassRegistry.js +249 -244
  37. package/lib/cjs/ClassRegistry.js.map +1 -1
  38. package/lib/cjs/CloudSqlite.d.ts +355 -355
  39. package/lib/cjs/CloudSqlite.js +154 -154
  40. package/lib/cjs/CloudStorageBackend.d.ts +58 -58
  41. package/lib/cjs/CloudStorageBackend.js +170 -170
  42. package/lib/cjs/CodeService.d.ts +396 -396
  43. package/lib/cjs/CodeService.js +63 -63
  44. package/lib/cjs/CodeSpecs.d.ts +55 -55
  45. package/lib/cjs/CodeSpecs.js +124 -124
  46. package/lib/cjs/ConcurrentQuery.d.ts +13 -13
  47. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  48. package/lib/cjs/ConcurrentQuery.js +36 -36
  49. package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
  50. package/lib/cjs/CustomViewState3dCreator.js +82 -82
  51. package/lib/cjs/DevTools.d.ts +74 -73
  52. package/lib/cjs/DevTools.d.ts.map +1 -1
  53. package/lib/cjs/DevTools.js +156 -156
  54. package/lib/cjs/DevTools.js.map +1 -1
  55. package/lib/cjs/DisplayStyle.d.ts +106 -106
  56. package/lib/cjs/DisplayStyle.js +253 -253
  57. package/lib/cjs/DisplayStyle.js.map +1 -1
  58. package/lib/cjs/ECDb.d.ts +194 -194
  59. package/lib/cjs/ECDb.js +353 -353
  60. package/lib/cjs/ECDb.js.map +1 -1
  61. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  62. package/lib/cjs/ECSchemaXmlContext.d.ts.map +1 -1
  63. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  64. package/lib/cjs/ECSqlStatement.d.ts +473 -473
  65. package/lib/cjs/ECSqlStatement.js +791 -791
  66. package/lib/cjs/Element.d.ts +1113 -1113
  67. package/lib/cjs/Element.js +1424 -1424
  68. package/lib/cjs/Element.js.map +1 -1
  69. package/lib/cjs/ElementAspect.d.ts +176 -176
  70. package/lib/cjs/ElementAspect.js +203 -203
  71. package/lib/cjs/ElementAspect.js.map +1 -1
  72. package/lib/cjs/ElementGraphics.d.ts +9 -9
  73. package/lib/cjs/ElementGraphics.js +41 -41
  74. package/lib/cjs/ElementGraphics.js.map +1 -1
  75. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  76. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  77. package/lib/cjs/ElementTreeWalker.js +409 -409
  78. package/lib/cjs/Entity.d.ts +106 -106
  79. package/lib/cjs/Entity.d.ts.map +1 -1
  80. package/lib/cjs/Entity.js +134 -134
  81. package/lib/cjs/Entity.js.map +1 -1
  82. package/lib/cjs/EntityReferences.d.ts +49 -49
  83. package/lib/cjs/EntityReferences.d.ts.map +1 -1
  84. package/lib/cjs/EntityReferences.js +95 -95
  85. package/lib/cjs/ExportGraphics.d.ts +317 -317
  86. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  87. package/lib/cjs/ExportGraphics.js +208 -208
  88. package/lib/cjs/ExternalSource.d.ts +96 -96
  89. package/lib/cjs/ExternalSource.js +131 -131
  90. package/lib/cjs/ExternalSource.js.map +1 -1
  91. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  92. package/lib/cjs/GeoCoordConfig.js +85 -85
  93. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  94. package/lib/cjs/GeometrySummary.d.ts +4 -4
  95. package/lib/cjs/GeometrySummary.js +333 -333
  96. package/lib/cjs/GeometrySummary.js.map +1 -1
  97. package/lib/cjs/HubMock.d.ts +94 -94
  98. package/lib/cjs/HubMock.js +220 -220
  99. package/lib/cjs/HubMock.js.map +1 -1
  100. package/lib/cjs/IModelCloneContext.d.ts +8 -8
  101. package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
  102. package/lib/cjs/IModelCloneContext.js +15 -15
  103. package/lib/cjs/IModelDb.d.ts +1216 -1216
  104. package/lib/cjs/IModelDb.d.ts.map +1 -1
  105. package/lib/cjs/IModelDb.js +2387 -2386
  106. package/lib/cjs/IModelDb.js.map +1 -1
  107. package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
  108. package/lib/cjs/IModelElementCloneContext.js +159 -159
  109. package/lib/cjs/IModelHost.d.ts +369 -369
  110. package/lib/cjs/IModelHost.js +488 -488
  111. package/lib/cjs/IModelHost.js.map +1 -1
  112. package/lib/cjs/IModelJsFs.d.ts +62 -62
  113. package/lib/cjs/IModelJsFs.js +139 -139
  114. package/lib/cjs/IpcHost.d.ts +104 -104
  115. package/lib/cjs/IpcHost.js +276 -276
  116. package/lib/cjs/IpcHost.js.map +1 -1
  117. package/lib/cjs/LineStyle.d.ts +311 -311
  118. package/lib/cjs/LineStyle.js +295 -295
  119. package/lib/cjs/LocalHub.d.ts +162 -162
  120. package/lib/cjs/LocalHub.d.ts.map +1 -1
  121. package/lib/cjs/LocalHub.js +579 -579
  122. package/lib/cjs/LocalHub.js.map +1 -1
  123. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  124. package/lib/cjs/LocalhostIpcHost.js +79 -79
  125. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  126. package/lib/cjs/Material.d.ts +131 -131
  127. package/lib/cjs/Material.js +180 -180
  128. package/lib/cjs/Material.js.map +1 -1
  129. package/lib/cjs/Model.d.ts +392 -392
  130. package/lib/cjs/Model.js +489 -489
  131. package/lib/cjs/Model.js.map +1 -1
  132. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  133. package/lib/cjs/NativeAppStorage.js +202 -202
  134. package/lib/cjs/NativeAppStorage.js.map +1 -1
  135. package/lib/cjs/NativeHost.d.ts +52 -52
  136. package/lib/cjs/NativeHost.js +160 -160
  137. package/lib/cjs/NativeHost.js.map +1 -1
  138. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  139. package/lib/cjs/NavigationRelationship.js +225 -225
  140. package/lib/cjs/NavigationRelationship.js.map +1 -1
  141. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  142. package/lib/cjs/PromiseMemoizer.d.ts.map +1 -1
  143. package/lib/cjs/PromiseMemoizer.js +101 -101
  144. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  145. package/lib/cjs/PropertyStore.d.ts +132 -132
  146. package/lib/cjs/PropertyStore.js +11 -11
  147. package/lib/cjs/Relationship.d.ts +416 -416
  148. package/lib/cjs/Relationship.js +494 -494
  149. package/lib/cjs/Relationship.js.map +1 -1
  150. package/lib/cjs/RpcBackend.d.ts +5 -5
  151. package/lib/cjs/RpcBackend.js +32 -32
  152. package/lib/cjs/SQLiteDb.d.ts +219 -219
  153. package/lib/cjs/SQLiteDb.js +212 -212
  154. package/lib/cjs/Schema.d.ts +55 -55
  155. package/lib/cjs/Schema.js +83 -83
  156. package/lib/cjs/Schema.js.map +1 -1
  157. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  158. package/lib/cjs/ServerBasedLocks.js +168 -168
  159. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  160. package/lib/cjs/SqliteStatement.d.ts +360 -360
  161. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  162. package/lib/cjs/SqliteStatement.js +586 -586
  163. package/lib/cjs/Texture.d.ts +58 -58
  164. package/lib/cjs/Texture.js +82 -82
  165. package/lib/cjs/Texture.js.map +1 -1
  166. package/lib/cjs/TileStorage.d.ts +18 -18
  167. package/lib/cjs/TileStorage.js +87 -87
  168. package/lib/cjs/TxnManager.d.ts +202 -202
  169. package/lib/cjs/TxnManager.d.ts.map +1 -1
  170. package/lib/cjs/TxnManager.js +356 -356
  171. package/lib/cjs/TxnManager.js.map +1 -1
  172. package/lib/cjs/ViewDefinition.d.ts +435 -435
  173. package/lib/cjs/ViewDefinition.js +646 -646
  174. package/lib/cjs/ViewDefinition.js.map +1 -1
  175. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  176. package/lib/cjs/ViewStateHydrator.js +103 -103
  177. package/lib/cjs/core-backend.d.ts +185 -185
  178. package/lib/cjs/core-backend.js +209 -205
  179. package/lib/cjs/core-backend.js.map +1 -1
  180. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  181. package/lib/cjs/domains/FunctionalElements.js +145 -145
  182. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  183. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  184. package/lib/cjs/domains/FunctionalSchema.js +39 -39
  185. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  186. package/lib/cjs/domains/GenericElements.js +263 -263
  187. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  188. package/lib/cjs/domains/GenericSchema.js +28 -28
  189. package/lib/cjs/rpc/multipart.d.ts +11 -11
  190. package/lib/cjs/rpc/multipart.js +71 -71
  191. package/lib/cjs/rpc/tracing.d.ts +28 -28
  192. package/lib/cjs/rpc/tracing.js +73 -73
  193. package/lib/cjs/rpc/tracing.js.map +1 -1
  194. package/lib/cjs/rpc/web/logging.d.ts +9 -9
  195. package/lib/cjs/rpc/web/logging.js +43 -43
  196. package/lib/cjs/rpc/web/request.d.ts +6 -6
  197. package/lib/cjs/rpc/web/request.js +73 -73
  198. package/lib/cjs/rpc/web/response.d.ts +6 -6
  199. package/lib/cjs/rpc/web/response.js +105 -105
  200. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  201. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  202. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +47 -47
  203. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +293 -293
  204. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  205. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
  206. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +202 -202
  207. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  208. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  209. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +166 -166
  210. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  211. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +42 -42
  212. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  213. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  214. package/lib/cjs/workspace/Settings.d.ts +186 -186
  215. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  216. package/lib/cjs/workspace/Settings.js +154 -154
  217. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  218. package/lib/cjs/workspace/SettingsSchemas.js +190 -190
  219. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  220. package/lib/cjs/workspace/Workspace.d.ts +414 -414
  221. package/lib/cjs/workspace/Workspace.js +537 -537
  222. package/lib/cjs/workspace/Workspace.js.map +1 -1
  223. package/package.json +12 -12
@@ -1,171 +1,171 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CloudStorageTileUploader = exports.AzureBlobStorage = exports.CloudStorageService = void 0;
4
- /*---------------------------------------------------------------------------------------------
5
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
- * See LICENSE.md in the project root for license terms and full copyright notice.
7
- *--------------------------------------------------------------------------------------------*/
8
- const stream_1 = require("stream");
9
- const zlib = require("zlib");
10
- const Azure = require("@azure/storage-blob");
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_common_1 = require("@itwin/core-common");
13
- const BackendLoggerCategory_1 = require("./BackendLoggerCategory");
14
- const IModelHost_1 = require("./IModelHost");
15
- /**
16
- * @beta
17
- * @deprecated in 3.x. Use [[TileStorage]] instead.
18
- */
19
- class CloudStorageService {
20
- initialize() { }
21
- terminate() { }
22
- async download(_name) { return undefined; }
23
- makeDescriptor(id) {
24
- return { name: id.name, provider: this.id };
25
- }
26
- }
27
- exports.CloudStorageService = CloudStorageService;
28
- /**
29
- * @beta
30
- * @deprecated in 3.x. Use `@itwin/object-storage-oss` instead, see https://github.com/iTwin/object-storage for more details.
31
- */
32
- class AzureBlobStorage extends CloudStorageService {
33
- constructor(credentials) {
34
- super();
35
- this.id = core_common_1.CloudStorageProvider.Azure;
36
- if (!credentials.account || !credentials.accessKey) {
37
- throw new core_common_1.IModelError(core_common_1.BentleyStatus.ERROR, "Invalid credentials for Azure blob storage.");
38
- }
39
- this._baseUrl = credentials.baseUrl ?? `https://${credentials.account}.blob.core.windows.net`;
40
- this._credential = new Azure.StorageSharedKeyCredential(credentials.account, credentials.accessKey);
41
- const options = {};
42
- const pipeline = Azure.newPipeline(this._credential, options);
43
- this._service = new Azure.BlobServiceClient(this._baseUrl, pipeline);
44
- }
45
- obtainContainerUrl(id, expiry, clientIp) {
46
- const policy = {
47
- containerName: id.name,
48
- permissions: Azure.ContainerSASPermissions.parse("rl"),
49
- expiresOn: expiry,
50
- };
51
- if (clientIp && clientIp !== "localhost" && clientIp !== "127.0.0.1" && clientIp !== "::1") {
52
- policy.ipRange = { start: clientIp };
53
- }
54
- const token = Azure.generateBlobSASQueryParameters(policy, this._credential);
55
- const url = new URL(this._baseUrl);
56
- url.pathname = `${url.pathname.replace(/\/*$/, "")}/${id.name}`;
57
- url.search = token.toString();
58
- const urlObject = {
59
- descriptor: this.makeDescriptor(id),
60
- valid: 0,
61
- expires: expiry.getTime(),
62
- url: url.toString(),
63
- };
64
- return urlObject;
65
- }
66
- async ensureContainer(name) {
67
- try {
68
- const container = this._service.getContainerClient(name);
69
- await container.create();
70
- return;
71
- }
72
- catch (maybeErr) {
73
- try {
74
- const err = maybeErr;
75
- if (err.statusCode === 409 && err.code === "ContainerAlreadyExists") {
76
- return;
77
- }
78
- }
79
- catch { }
80
- if (typeof (maybeErr) !== "undefined" && maybeErr) {
81
- throw maybeErr;
82
- }
83
- throw new core_common_1.IModelError(core_common_1.BentleyStatus.ERROR, `Unable to create container "${name}".`);
84
- }
85
- }
86
- async upload(container, name, data, options, metadata) {
87
- try {
88
- await this.ensureContainer(container);
89
- const containerClient = this._service.getContainerClient(container);
90
- const blocks = containerClient.getBlockBlobClient(name);
91
- const blobHTTPHeaders = {
92
- blobContentType: options?.type ?? "application/octet-stream",
93
- blobCacheControl: options?.cacheControl ?? "private, max-age=31536000, immutable",
94
- };
95
- const blobOptions = metadata ?
96
- {
97
- blobHTTPHeaders,
98
- metadata: { ...metadata },
99
- } : {
100
- blobHTTPHeaders,
101
- };
102
- const dataStream = new stream_1.PassThrough();
103
- dataStream.end(data);
104
- let source;
105
- if (options && options.contentEncoding === "gzip") {
106
- if (undefined === blobOptions.blobHTTPHeaders)
107
- throw new core_common_1.IModelError(core_common_1.BentleyStatus.ERROR, "Blob HTTP headers object is undefined.");
108
- blobOptions.blobHTTPHeaders.blobContentEncoding = options.contentEncoding;
109
- const compressor = zlib.createGzip();
110
- source = dataStream.pipe(compressor);
111
- }
112
- else {
113
- source = dataStream;
114
- }
115
- const blockSize = 100 * 1024 * 1024;
116
- const concurrency = 1;
117
- const result = await blocks.uploadStream(source, blockSize, concurrency, blobOptions);
118
- return result.etag ?? "";
119
- }
120
- catch (maybeErr) {
121
- if (typeof (maybeErr) !== "undefined" && maybeErr) {
122
- throw maybeErr;
123
- }
124
- throw new core_common_1.IModelError(core_common_1.BentleyStatus.ERROR, `Unable to upload "${name}".`);
125
- }
126
- }
127
- }
128
- exports.AzureBlobStorage = AzureBlobStorage;
129
- /**
130
- * @beta
131
- * @deprecated in 3.x. Use [[TileStorage]] instead.
132
- */
133
- class CloudStorageTileUploader {
134
- constructor() {
135
- this._activeUploads = new Map();
136
- }
137
- get activeUploads() {
138
- return this._activeUploads.values();
139
- }
140
- async uploadToCache(id, content, containerKey, resourceKey, metadata) {
141
- await new Promise((resolve) => setTimeout(resolve));
142
- try {
143
- const options = {};
144
- if (IModelHost_1.IModelHost.compressCachedTiles) {
145
- options.contentEncoding = "gzip";
146
- }
147
- const perfInfo = { ...id.tokenProps, treeId: id.treeId, contentId: id.contentId, size: content.byteLength, compress: IModelHost_1.IModelHost.compressCachedTiles };
148
- const perfLogger = new core_bentley_1.PerfLogger("Uploading tile to external tile cache", () => perfInfo);
149
- await IModelHost_1.IModelHost.tileCacheService?.upload(containerKey, resourceKey, content, options, metadata);
150
- perfLogger.dispose();
151
- }
152
- catch (err) {
153
- core_bentley_1.Logger.logError(BackendLoggerCategory_1.BackendLoggerCategory.IModelTileUpload, (err instanceof Error) ? err.toString() : JSON.stringify(err));
154
- }
155
- this._activeUploads.delete(containerKey + resourceKey);
156
- }
157
- async cacheTile(tokenProps, treeId, contentId, content, guid, metadata) {
158
- const id = { tokenProps, treeId, contentId, guid };
159
- const cache = core_common_1.CloudStorageTileCache.getCache();
160
- const containerKey = cache.formContainerName(id);
161
- const resourceKey = cache.formResourceName(id);
162
- const key = containerKey + resourceKey;
163
- if (this._activeUploads.has(key))
164
- return;
165
- const promise = this.uploadToCache(id, content, containerKey, resourceKey, metadata);
166
- this._activeUploads.set(key, promise);
167
- await promise;
168
- }
169
- }
170
- exports.CloudStorageTileUploader = CloudStorageTileUploader;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudStorageTileUploader = exports.AzureBlobStorage = exports.CloudStorageService = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ const stream_1 = require("stream");
9
+ const zlib = require("zlib");
10
+ const Azure = require("@azure/storage-blob");
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_common_1 = require("@itwin/core-common");
13
+ const BackendLoggerCategory_1 = require("./BackendLoggerCategory");
14
+ const IModelHost_1 = require("./IModelHost");
15
+ /**
16
+ * @beta
17
+ * @deprecated in 3.x. Use [[TileStorage]] instead.
18
+ */
19
+ class CloudStorageService {
20
+ initialize() { }
21
+ terminate() { }
22
+ async download(_name) { return undefined; }
23
+ makeDescriptor(id) {
24
+ return { name: id.name, provider: this.id };
25
+ }
26
+ }
27
+ exports.CloudStorageService = CloudStorageService;
28
+ /**
29
+ * @beta
30
+ * @deprecated in 3.x. Use `@itwin/object-storage-oss` instead, see https://github.com/iTwin/object-storage for more details.
31
+ */
32
+ class AzureBlobStorage extends CloudStorageService {
33
+ constructor(credentials) {
34
+ super();
35
+ this.id = core_common_1.CloudStorageProvider.Azure;
36
+ if (!credentials.account || !credentials.accessKey) {
37
+ throw new core_common_1.IModelError(core_common_1.BentleyStatus.ERROR, "Invalid credentials for Azure blob storage.");
38
+ }
39
+ this._baseUrl = credentials.baseUrl ?? `https://${credentials.account}.blob.core.windows.net`;
40
+ this._credential = new Azure.StorageSharedKeyCredential(credentials.account, credentials.accessKey);
41
+ const options = {};
42
+ const pipeline = Azure.newPipeline(this._credential, options);
43
+ this._service = new Azure.BlobServiceClient(this._baseUrl, pipeline);
44
+ }
45
+ obtainContainerUrl(id, expiry, clientIp) {
46
+ const policy = {
47
+ containerName: id.name,
48
+ permissions: Azure.ContainerSASPermissions.parse("rl"),
49
+ expiresOn: expiry,
50
+ };
51
+ if (clientIp && clientIp !== "localhost" && clientIp !== "127.0.0.1" && clientIp !== "::1") {
52
+ policy.ipRange = { start: clientIp };
53
+ }
54
+ const token = Azure.generateBlobSASQueryParameters(policy, this._credential);
55
+ const url = new URL(this._baseUrl);
56
+ url.pathname = `${url.pathname.replace(/\/*$/, "")}/${id.name}`;
57
+ url.search = token.toString();
58
+ const urlObject = {
59
+ descriptor: this.makeDescriptor(id),
60
+ valid: 0,
61
+ expires: expiry.getTime(),
62
+ url: url.toString(),
63
+ };
64
+ return urlObject;
65
+ }
66
+ async ensureContainer(name) {
67
+ try {
68
+ const container = this._service.getContainerClient(name);
69
+ await container.create();
70
+ return;
71
+ }
72
+ catch (maybeErr) {
73
+ try {
74
+ const err = maybeErr;
75
+ if (err.statusCode === 409 && err.code === "ContainerAlreadyExists") {
76
+ return;
77
+ }
78
+ }
79
+ catch { }
80
+ if (typeof (maybeErr) !== "undefined" && maybeErr) {
81
+ throw maybeErr;
82
+ }
83
+ throw new core_common_1.IModelError(core_common_1.BentleyStatus.ERROR, `Unable to create container "${name}".`);
84
+ }
85
+ }
86
+ async upload(container, name, data, options, metadata) {
87
+ try {
88
+ await this.ensureContainer(container);
89
+ const containerClient = this._service.getContainerClient(container);
90
+ const blocks = containerClient.getBlockBlobClient(name);
91
+ const blobHTTPHeaders = {
92
+ blobContentType: options?.type ?? "application/octet-stream",
93
+ blobCacheControl: options?.cacheControl ?? "private, max-age=31536000, immutable",
94
+ };
95
+ const blobOptions = metadata ?
96
+ {
97
+ blobHTTPHeaders,
98
+ metadata: { ...metadata },
99
+ } : {
100
+ blobHTTPHeaders,
101
+ };
102
+ const dataStream = new stream_1.PassThrough();
103
+ dataStream.end(data);
104
+ let source;
105
+ if (options && options.contentEncoding === "gzip") {
106
+ if (undefined === blobOptions.blobHTTPHeaders)
107
+ throw new core_common_1.IModelError(core_common_1.BentleyStatus.ERROR, "Blob HTTP headers object is undefined.");
108
+ blobOptions.blobHTTPHeaders.blobContentEncoding = options.contentEncoding;
109
+ const compressor = zlib.createGzip();
110
+ source = dataStream.pipe(compressor);
111
+ }
112
+ else {
113
+ source = dataStream;
114
+ }
115
+ const blockSize = 100 * 1024 * 1024;
116
+ const concurrency = 1;
117
+ const result = await blocks.uploadStream(source, blockSize, concurrency, blobOptions);
118
+ return result.etag ?? "";
119
+ }
120
+ catch (maybeErr) {
121
+ if (typeof (maybeErr) !== "undefined" && maybeErr) {
122
+ throw maybeErr;
123
+ }
124
+ throw new core_common_1.IModelError(core_common_1.BentleyStatus.ERROR, `Unable to upload "${name}".`);
125
+ }
126
+ }
127
+ }
128
+ exports.AzureBlobStorage = AzureBlobStorage;
129
+ /**
130
+ * @beta
131
+ * @deprecated in 3.x. Use [[TileStorage]] instead.
132
+ */
133
+ class CloudStorageTileUploader {
134
+ constructor() {
135
+ this._activeUploads = new Map();
136
+ }
137
+ get activeUploads() {
138
+ return this._activeUploads.values();
139
+ }
140
+ async uploadToCache(id, content, containerKey, resourceKey, metadata) {
141
+ await new Promise((resolve) => setTimeout(resolve));
142
+ try {
143
+ const options = {};
144
+ if (IModelHost_1.IModelHost.compressCachedTiles) {
145
+ options.contentEncoding = "gzip";
146
+ }
147
+ const perfInfo = { ...id.tokenProps, treeId: id.treeId, contentId: id.contentId, size: content.byteLength, compress: IModelHost_1.IModelHost.compressCachedTiles };
148
+ const perfLogger = new core_bentley_1.PerfLogger("Uploading tile to external tile cache", () => perfInfo);
149
+ await IModelHost_1.IModelHost.tileCacheService?.upload(containerKey, resourceKey, content, options, metadata);
150
+ perfLogger.dispose();
151
+ }
152
+ catch (err) {
153
+ core_bentley_1.Logger.logError(BackendLoggerCategory_1.BackendLoggerCategory.IModelTileUpload, (err instanceof Error) ? err.toString() : JSON.stringify(err));
154
+ }
155
+ this._activeUploads.delete(containerKey + resourceKey);
156
+ }
157
+ async cacheTile(tokenProps, treeId, contentId, content, guid, metadata) {
158
+ const id = { tokenProps, treeId, contentId, guid };
159
+ const cache = core_common_1.CloudStorageTileCache.getCache();
160
+ const containerKey = cache.formContainerName(id);
161
+ const resourceKey = cache.formResourceName(id);
162
+ const key = containerKey + resourceKey;
163
+ if (this._activeUploads.has(key))
164
+ return;
165
+ const promise = this.uploadToCache(id, content, containerKey, resourceKey, metadata);
166
+ this._activeUploads.set(key, promise);
167
+ await promise;
168
+ }
169
+ }
170
+ exports.CloudStorageTileUploader = CloudStorageTileUploader;
171
171
  //# sourceMappingURL=CloudStorageBackend.js.map