@itwin/core-backend 3.4.0-dev.9 → 3.4.0
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.
- package/CHANGELOG.md +90 -1
- package/lib/cjs/AliCloudStorageService.d.ts +8 -2
- package/lib/cjs/AliCloudStorageService.d.ts.map +1 -1
- package/lib/cjs/AliCloudStorageService.js +4 -1
- package/lib/cjs/AliCloudStorageService.js.map +1 -1
- package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.d.ts +9 -5
- package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js +9 -5
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.d.ts +1 -0
- package/lib/cjs/ChangedElementsDb.d.ts.map +1 -1
- package/lib/cjs/ChangedElementsDb.js +2 -2
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/CheckpointManager.d.ts +2 -4
- package/lib/cjs/CheckpointManager.d.ts.map +1 -1
- package/lib/cjs/CheckpointManager.js +8 -19
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.d.ts.map +1 -1
- package/lib/cjs/ClassRegistry.js +3 -1
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts +350 -0
- package/lib/cjs/CloudSqlite.d.ts.map +1 -0
- package/lib/cjs/CloudSqlite.js +152 -0
- package/lib/cjs/CloudSqlite.js.map +1 -0
- package/lib/cjs/CloudStorageBackend.d.ts +16 -4
- package/lib/cjs/CloudStorageBackend.d.ts.map +1 -1
- package/lib/cjs/CloudStorageBackend.js +12 -3
- package/lib/cjs/CloudStorageBackend.js.map +1 -1
- package/lib/cjs/CodeService.d.ts +397 -0
- package/lib/cjs/CodeService.d.ts.map +1 -0
- package/lib/cjs/CodeService.js +64 -0
- package/lib/cjs/CodeService.js.map +1 -0
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.d.ts.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.js +15 -0
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.d.ts.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +20 -17
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/ExportGraphics.d.ts +9 -9
- package/lib/cjs/ExportGraphics.d.ts.map +1 -1
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.d.ts.map +1 -1
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.d.ts +7 -1
- package/lib/cjs/GeoCoordConfig.d.ts.map +1 -1
- package/lib/cjs/GeoCoordConfig.js +16 -7
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +1 -1
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/HubMock.d.ts.map +1 -1
- package/lib/cjs/HubMock.js +7 -7
- package/lib/cjs/HubMock.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +18 -5
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +63 -25
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +20 -6
- package/lib/cjs/IModelHost.d.ts.map +1 -1
- package/lib/cjs/IModelHost.js +56 -22
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelJsFs.d.ts +1 -1
- package/lib/cjs/IModelJsFs.d.ts.map +1 -1
- package/lib/cjs/IModelJsFs.js +2 -2
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/LocalHub.js +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/Material.d.ts +3 -1
- package/lib/cjs/Material.d.ts.map +1 -1
- package/lib/cjs/Material.js +3 -1
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.d.ts.map +1 -1
- package/lib/cjs/Model.js +5 -2
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.d.ts.map +1 -1
- package/lib/cjs/PromiseMemoizer.js +10 -4
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.d.ts +133 -0
- package/lib/cjs/PropertyStore.d.ts.map +1 -0
- package/lib/cjs/PropertyStore.js +12 -0
- package/lib/cjs/PropertyStore.js.map +1 -0
- package/lib/cjs/SQLiteDb.d.ts +110 -64
- package/lib/cjs/SQLiteDb.d.ts.map +1 -1
- package/lib/cjs/SQLiteDb.js +61 -58
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/SqliteStatement.d.ts +14 -2
- package/lib/cjs/SqliteStatement.d.ts.map +1 -1
- package/lib/cjs/SqliteStatement.js +50 -28
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/TileStorage.d.ts +19 -0
- package/lib/cjs/TileStorage.d.ts.map +1 -0
- package/lib/cjs/TileStorage.js +91 -0
- package/lib/cjs/TileStorage.js.map +1 -0
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +5 -2
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js +8 -2
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +10 -0
- package/lib/cjs/assets/Settings/backend.setting.json5 +1 -1
- package/lib/cjs/core-backend.d.ts +9 -2
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +10 -3
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +2 -0
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +11 -2
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +3 -0
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/workspace/Settings.d.ts.map +1 -1
- package/lib/cjs/workspace/Settings.js +4 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/Workspace.d.ts +31 -18
- package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
- package/lib/cjs/workspace/Workspace.js +34 -25
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/package.json +18 -19
- package/lib/cjs/IModelSchemaLoader.d.ts +0 -26
- package/lib/cjs/IModelSchemaLoader.d.ts.map +0 -1
- package/lib/cjs/IModelSchemaLoader.js +0 -122
- package/lib/cjs/IModelSchemaLoader.js.map +0 -1
package/lib/cjs/IModelDb.js
CHANGED
|
@@ -16,12 +16,14 @@ const BackendLoggerCategory_1 = require("./BackendLoggerCategory");
|
|
|
16
16
|
const BriefcaseManager_1 = require("./BriefcaseManager");
|
|
17
17
|
const CheckpointManager_1 = require("./CheckpointManager");
|
|
18
18
|
const ClassRegistry_1 = require("./ClassRegistry");
|
|
19
|
+
const CodeService_1 = require("./CodeService");
|
|
19
20
|
const CodeSpecs_1 = require("./CodeSpecs");
|
|
20
21
|
const ConcurrentQuery_1 = require("./ConcurrentQuery");
|
|
21
22
|
const ECSqlStatement_1 = require("./ECSqlStatement");
|
|
22
23
|
const Element_1 = require("./Element");
|
|
23
24
|
const ElementAspect_1 = require("./ElementAspect");
|
|
24
25
|
const ElementGraphics_1 = require("./ElementGraphics");
|
|
26
|
+
const GeoCoordConfig_1 = require("./GeoCoordConfig");
|
|
25
27
|
const IModelHost_1 = require("./IModelHost");
|
|
26
28
|
const IModelJsFs_1 = require("./IModelJsFs");
|
|
27
29
|
const IpcHost_1 = require("./IpcHost");
|
|
@@ -33,7 +35,7 @@ const TxnManager_1 = require("./TxnManager");
|
|
|
33
35
|
const ViewDefinition_1 = require("./ViewDefinition");
|
|
34
36
|
const Settings_1 = require("./workspace/Settings");
|
|
35
37
|
const Workspace_1 = require("./workspace/Workspace");
|
|
36
|
-
|
|
38
|
+
// spell:ignore fontid fontmap
|
|
37
39
|
const loggerCategory = BackendLoggerCategory_1.BackendLoggerCategory.IModelDb;
|
|
38
40
|
/** A null-implementation of LockControl that does not attempt to limit access between briefcases. This relies on change-merging to resolve conflicts. */
|
|
39
41
|
class NoLocks {
|
|
@@ -120,6 +122,8 @@ class IModelDb extends core_common_1.IModel {
|
|
|
120
122
|
});
|
|
121
123
|
}
|
|
122
124
|
}
|
|
125
|
+
/** @alpha */
|
|
126
|
+
get codeService() { return this._codeService; }
|
|
123
127
|
/**
|
|
124
128
|
* Get the [[LockControl]] for this iModel.
|
|
125
129
|
* @beta
|
|
@@ -131,7 +135,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
131
135
|
*/
|
|
132
136
|
get workspace() {
|
|
133
137
|
if (undefined === this._workspace)
|
|
134
|
-
this._workspace = new Workspace_1.ITwinWorkspace(new IModelSettings()
|
|
138
|
+
this._workspace = new Workspace_1.ITwinWorkspace(new IModelSettings());
|
|
135
139
|
return this._workspace;
|
|
136
140
|
}
|
|
137
141
|
/** Acquire the exclusive schema lock on this iModel.
|
|
@@ -186,7 +190,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
186
190
|
get pathName() { return this.nativeDb.getFilePath(); }
|
|
187
191
|
/** Close this IModel, if it is currently open. */
|
|
188
192
|
close() {
|
|
189
|
-
var _a;
|
|
193
|
+
var _a, _b;
|
|
190
194
|
if (!this.isOpen)
|
|
191
195
|
return; // don't continue if already closed
|
|
192
196
|
this.beforeClose();
|
|
@@ -194,6 +198,8 @@ class IModelDb extends core_common_1.IModel {
|
|
|
194
198
|
(_a = this._workspace) === null || _a === void 0 ? void 0 : _a.close();
|
|
195
199
|
this.locks.close();
|
|
196
200
|
this._locks = undefined;
|
|
201
|
+
(_b = this._codeService) === null || _b === void 0 ? void 0 : _b.close();
|
|
202
|
+
this._codeService = undefined;
|
|
197
203
|
this.nativeDb.closeIModel();
|
|
198
204
|
this._nativeDb = undefined; // the underlying nativeDb has been freed by closeIModel
|
|
199
205
|
}
|
|
@@ -740,9 +746,13 @@ class IModelDb extends core_common_1.IModel {
|
|
|
740
746
|
return this._classMetaDataRegistry;
|
|
741
747
|
}
|
|
742
748
|
/** Get the linkTableRelationships for this IModel */
|
|
743
|
-
get relationships() {
|
|
749
|
+
get relationships() {
|
|
750
|
+
return this._relationships || (this._relationships = new Relationship_1.Relationships(this));
|
|
751
|
+
}
|
|
744
752
|
/** Get the CodeSpecs in this IModel. */
|
|
745
|
-
get codeSpecs() {
|
|
753
|
+
get codeSpecs() {
|
|
754
|
+
return (this._codeSpecs !== undefined) ? this._codeSpecs : (this._codeSpecs = new CodeSpecs_1.CodeSpecs(this));
|
|
755
|
+
}
|
|
746
756
|
/** @internal */
|
|
747
757
|
insertCodeSpec(codeSpec) {
|
|
748
758
|
return this.nativeDb.insertCodeSpec(codeSpec.name, codeSpec.properties);
|
|
@@ -834,6 +844,14 @@ class IModelDb extends core_common_1.IModel {
|
|
|
834
844
|
if (metaData.baseClasses !== undefined && metaData.baseClasses.length > 0)
|
|
835
845
|
metaData.baseClasses.forEach((baseClassName) => this.loadMetaData(baseClassName));
|
|
836
846
|
}
|
|
847
|
+
/** Returns the full schema for the input name.
|
|
848
|
+
* @param name The name of the schema e.g. 'BisCore'
|
|
849
|
+
* @returns The SchemaProps for the requested schema
|
|
850
|
+
* @throws if the schema can not be found or loaded.
|
|
851
|
+
*/
|
|
852
|
+
getSchemaProps(name) {
|
|
853
|
+
return this.nativeDb.getSchemaProps(name);
|
|
854
|
+
}
|
|
837
855
|
/** Query if this iModel contains the definition of the specified class.
|
|
838
856
|
* @param classFullName The full name of the class, for example, SomeSchema:SomeClass
|
|
839
857
|
* @returns true if the iModel contains the class definition or false if not.
|
|
@@ -1290,11 +1308,14 @@ IModelDb._settingPropNamespace = "settings";
|
|
|
1290
1308
|
* @throws [[IModelError]] if the element is not found or cannot be loaded.
|
|
1291
1309
|
* @see tryGetElementProps
|
|
1292
1310
|
*/
|
|
1293
|
-
getElementProps(
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1311
|
+
getElementProps(props) {
|
|
1312
|
+
if (typeof props === "string") {
|
|
1313
|
+
props = core_bentley_1.Id64.isId64(props) ? { id: props } : { federationGuid: props };
|
|
1314
|
+
}
|
|
1315
|
+
else if (props instanceof core_common_1.Code) {
|
|
1316
|
+
props = { code: props };
|
|
1317
|
+
}
|
|
1318
|
+
return this._iModel.nativeDb.getElement(props);
|
|
1298
1319
|
}
|
|
1299
1320
|
/** Get properties of an Element by Id, FederationGuid, or Code
|
|
1300
1321
|
* @returns The properties of the element or `undefined` if the element is not found.
|
|
@@ -1336,6 +1357,8 @@ IModelDb._settingPropNamespace = "settings";
|
|
|
1336
1357
|
elementId = core_bentley_1.Id64.isId64(elementId) ? { id: elementId } : { federationGuid: elementId };
|
|
1337
1358
|
else if (elementId instanceof core_common_1.Code)
|
|
1338
1359
|
elementId = { code: elementId };
|
|
1360
|
+
else
|
|
1361
|
+
elementId.onlyBaseProperties = false; // we must load all properties to construct the element.
|
|
1339
1362
|
const elementProps = this.tryGetElementJson(elementId);
|
|
1340
1363
|
if (undefined === elementProps)
|
|
1341
1364
|
return undefined; // no Element with that elementId found
|
|
@@ -1396,7 +1419,8 @@ IModelDb._settingPropNamespace = "settings";
|
|
|
1396
1419
|
return elProps.id = this._iModel.nativeDb.insertElement(elProps);
|
|
1397
1420
|
}
|
|
1398
1421
|
catch (err) {
|
|
1399
|
-
|
|
1422
|
+
err.message = `error inserting element: ${err.message}`;
|
|
1423
|
+
throw err;
|
|
1400
1424
|
}
|
|
1401
1425
|
}
|
|
1402
1426
|
/** Update some properties of an existing element.
|
|
@@ -1411,7 +1435,8 @@ IModelDb._settingPropNamespace = "settings";
|
|
|
1411
1435
|
this._iModel.nativeDb.updateElement(elProps);
|
|
1412
1436
|
}
|
|
1413
1437
|
catch (err) {
|
|
1414
|
-
|
|
1438
|
+
err.message = `error updating element: ${err.message}`;
|
|
1439
|
+
throw err;
|
|
1415
1440
|
}
|
|
1416
1441
|
}
|
|
1417
1442
|
/** Delete one or more elements from this iModel.
|
|
@@ -1426,7 +1451,8 @@ IModelDb._settingPropNamespace = "settings";
|
|
|
1426
1451
|
iModel.nativeDb.deleteElement(id);
|
|
1427
1452
|
}
|
|
1428
1453
|
catch (err) {
|
|
1429
|
-
|
|
1454
|
+
err.message = `error deleting element: ${err.message}`;
|
|
1455
|
+
throw err;
|
|
1430
1456
|
}
|
|
1431
1457
|
});
|
|
1432
1458
|
}
|
|
@@ -1448,9 +1474,10 @@ IModelDb._settingPropNamespace = "settings";
|
|
|
1448
1474
|
const usedIdSet = usageInfo.usedIds ? core_bentley_1.Id64.toIdSet(usageInfo.usedIds) : new Set();
|
|
1449
1475
|
const deleteIfUnused = (ids, used) => {
|
|
1450
1476
|
if (ids) {
|
|
1451
|
-
ids.forEach((id) => {
|
|
1452
|
-
|
|
1453
|
-
|
|
1477
|
+
ids.forEach((id) => {
|
|
1478
|
+
if (!used.has(id))
|
|
1479
|
+
this._iModel.elements.deleteElement(id);
|
|
1480
|
+
});
|
|
1454
1481
|
}
|
|
1455
1482
|
};
|
|
1456
1483
|
try {
|
|
@@ -1476,15 +1503,12 @@ IModelDb._settingPropNamespace = "settings";
|
|
|
1476
1503
|
if (usageInfo.viewDefinitionIds) {
|
|
1477
1504
|
// take another pass in case a deleted ViewDefinition was the only usage of these view-related DefinitionElements
|
|
1478
1505
|
let viewRelatedIds = [];
|
|
1479
|
-
if (usageInfo.displayStyleIds)
|
|
1506
|
+
if (usageInfo.displayStyleIds)
|
|
1480
1507
|
viewRelatedIds = viewRelatedIds.concat(usageInfo.displayStyleIds.filter((id) => usedIdSet.has(id)));
|
|
1481
|
-
|
|
1482
|
-
if (usageInfo.categorySelectorIds) {
|
|
1508
|
+
if (usageInfo.categorySelectorIds)
|
|
1483
1509
|
viewRelatedIds = viewRelatedIds.concat(usageInfo.categorySelectorIds.filter((id) => usedIdSet.has(id)));
|
|
1484
|
-
|
|
1485
|
-
if (usageInfo.modelSelectorIds) {
|
|
1510
|
+
if (usageInfo.modelSelectorIds)
|
|
1486
1511
|
viewRelatedIds = viewRelatedIds.concat(usageInfo.modelSelectorIds.filter((id) => usedIdSet.has(id)));
|
|
1487
|
-
}
|
|
1488
1512
|
if (viewRelatedIds.length > 0) {
|
|
1489
1513
|
const viewRelatedUsageInfo = this._iModel.nativeDb.queryDefinitionElementUsage(viewRelatedIds);
|
|
1490
1514
|
if (viewRelatedUsageInfo) {
|
|
@@ -1498,9 +1522,10 @@ IModelDb._settingPropNamespace = "settings";
|
|
|
1498
1522
|
finally {
|
|
1499
1523
|
this._iModel.nativeDb.endPurgeOperation();
|
|
1500
1524
|
}
|
|
1501
|
-
viewRelatedIds.forEach((id) => {
|
|
1502
|
-
|
|
1503
|
-
|
|
1525
|
+
viewRelatedIds.forEach((id) => {
|
|
1526
|
+
if (!usedViewRelatedIdSet.has(id))
|
|
1527
|
+
usedIdSet.delete(id);
|
|
1528
|
+
});
|
|
1504
1529
|
}
|
|
1505
1530
|
}
|
|
1506
1531
|
}
|
|
@@ -1965,6 +1990,17 @@ class BriefcaseDb extends IModelDb {
|
|
|
1965
1990
|
const openMode = args.readonly ? core_bentley_1.OpenMode.Readonly : core_bentley_1.OpenMode.ReadWrite;
|
|
1966
1991
|
const nativeDb = this.openDgnDb(file, openMode, undefined, args);
|
|
1967
1992
|
const briefcaseDb = new BriefcaseDb({ nativeDb, key: (_a = file.key) !== null && _a !== void 0 ? _a : core_bentley_1.Guid.createValue(), openMode, briefcaseId: nativeDb.getBriefcaseId() });
|
|
1993
|
+
if (openMode === core_bentley_1.OpenMode.ReadWrite && CodeService_1.CodeService.createForIModel) {
|
|
1994
|
+
try {
|
|
1995
|
+
const codeService = CodeService_1.CodeService.createForIModel(briefcaseDb);
|
|
1996
|
+
briefcaseDb._codeService = codeService;
|
|
1997
|
+
this.onCodeServiceCreated.raiseEvent(codeService);
|
|
1998
|
+
}
|
|
1999
|
+
catch (e) {
|
|
2000
|
+
if (e.errorId !== "NoCodeIndex") // no code index means iModel isn't enforcing codes.
|
|
2001
|
+
throw e;
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
1968
2004
|
BriefcaseManager_1.BriefcaseManager.logUsage(briefcaseDb);
|
|
1969
2005
|
this.onOpened.raiseEvent(briefcaseDb, args);
|
|
1970
2006
|
return briefcaseDb;
|
|
@@ -2022,6 +2058,8 @@ BriefcaseDb.onOpen = new core_bentley_1.BeEvent();
|
|
|
2022
2058
|
* ```
|
|
2023
2059
|
*/
|
|
2024
2060
|
BriefcaseDb.onOpened = new core_bentley_1.BeEvent();
|
|
2061
|
+
/** @alpha */
|
|
2062
|
+
BriefcaseDb.onCodeServiceCreated = new core_bentley_1.BeEvent();
|
|
2025
2063
|
/** Used to reattach Daemon from a user's accessToken for V2 checkpoints.
|
|
2026
2064
|
* @note Reattach only happens if the previous access token either has expired or is about to expire within an application-supplied safety duration.
|
|
2027
2065
|
*/
|