@itwin/core-backend 4.6.0-dev.3 → 4.6.0-dev.5

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 (98) hide show
  1. package/lib/cjs/BackendHubAccess.js.map +1 -1
  2. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  3. package/lib/cjs/BisCoreSchema.js.map +1 -1
  4. package/lib/cjs/BlobContainerService.js.map +1 -1
  5. package/lib/cjs/BriefcaseManager.js.map +1 -1
  6. package/lib/cjs/Category.js.map +1 -1
  7. package/lib/cjs/ChangeSummaryManager.js +2 -2
  8. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  9. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  10. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  11. package/lib/cjs/ChangesetECAdaptor.js +237 -237
  12. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  13. package/lib/cjs/ChannelControl.js.map +1 -1
  14. package/lib/cjs/CheckpointManager.js.map +1 -1
  15. package/lib/cjs/ClassRegistry.js +5 -5
  16. package/lib/cjs/ClassRegistry.js.map +1 -1
  17. package/lib/cjs/CloudSqlite.js.map +1 -1
  18. package/lib/cjs/CodeService.js.map +1 -1
  19. package/lib/cjs/CodeSpecs.js.map +1 -1
  20. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  21. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  22. package/lib/cjs/DevTools.js.map +1 -1
  23. package/lib/cjs/DisplayStyle.js.map +1 -1
  24. package/lib/cjs/ECDb.js.map +1 -1
  25. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  26. package/lib/cjs/ECSqlStatement.js.map +1 -1
  27. package/lib/cjs/Element.js.map +1 -1
  28. package/lib/cjs/ElementAspect.js.map +1 -1
  29. package/lib/cjs/ElementGraphics.js.map +1 -1
  30. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  31. package/lib/cjs/Entity.js.map +1 -1
  32. package/lib/cjs/EntityReferences.js.map +1 -1
  33. package/lib/cjs/ExportGraphics.js.map +1 -1
  34. package/lib/cjs/ExternalSource.js.map +1 -1
  35. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  36. package/lib/cjs/GeometrySummary.js +47 -47
  37. package/lib/cjs/GeometrySummary.js.map +1 -1
  38. package/lib/cjs/HubMock.js.map +1 -1
  39. package/lib/cjs/IModelCloneContext.js.map +1 -1
  40. package/lib/cjs/IModelDb.d.ts +7 -3
  41. package/lib/cjs/IModelDb.d.ts.map +1 -1
  42. package/lib/cjs/IModelDb.js +43 -15
  43. package/lib/cjs/IModelDb.js.map +1 -1
  44. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  45. package/lib/cjs/IModelHost.js.map +1 -1
  46. package/lib/cjs/IModelJsFs.js.map +1 -1
  47. package/lib/cjs/IpcHost.js.map +1 -1
  48. package/lib/cjs/LineStyle.js.map +1 -1
  49. package/lib/cjs/LocalHub.js +1 -1
  50. package/lib/cjs/LocalHub.js.map +1 -1
  51. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  52. package/lib/cjs/Material.js.map +1 -1
  53. package/lib/cjs/Model.js.map +1 -1
  54. package/lib/cjs/NativeAppStorage.js.map +1 -1
  55. package/lib/cjs/NativeHost.js.map +1 -1
  56. package/lib/cjs/NavigationRelationship.js.map +1 -1
  57. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  58. package/lib/cjs/PropertyStore.js.map +1 -1
  59. package/lib/cjs/Relationship.js.map +1 -1
  60. package/lib/cjs/RpcBackend.js.map +1 -1
  61. package/lib/cjs/SQLiteDb.js.map +1 -1
  62. package/lib/cjs/Schema.js.map +1 -1
  63. package/lib/cjs/SchemaSync.js.map +1 -1
  64. package/lib/cjs/SchemaUtils.js.map +1 -1
  65. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  66. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  67. package/lib/cjs/SqliteStatement.js.map +1 -1
  68. package/lib/cjs/Texture.js.map +1 -1
  69. package/lib/cjs/TileStorage.js.map +1 -1
  70. package/lib/cjs/TxnManager.js.map +1 -1
  71. package/lib/cjs/ViewDefinition.js.map +1 -1
  72. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  73. package/lib/cjs/ViewStore.js.map +1 -1
  74. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  75. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +44 -44
  76. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  77. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  78. package/lib/cjs/assets/Settings/backend.setting.json5 +132 -132
  79. package/lib/cjs/core-backend.js.map +1 -1
  80. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  81. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  82. package/lib/cjs/domains/GenericElements.js.map +1 -1
  83. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  84. package/lib/cjs/rpc/multipart.js.map +1 -1
  85. package/lib/cjs/rpc/tracing.js.map +1 -1
  86. package/lib/cjs/rpc/web/logging.js.map +1 -1
  87. package/lib/cjs/rpc/web/request.js.map +1 -1
  88. package/lib/cjs/rpc/web/response.js.map +1 -1
  89. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  90. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  91. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  92. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  93. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  94. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  95. package/lib/cjs/workspace/Settings.js.map +1 -1
  96. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  97. package/lib/cjs/workspace/Workspace.js.map +1 -1
  98. package/package.json +13 -13
@@ -1561,11 +1561,15 @@ exports.IModelDb = IModelDb;
1561
1561
  throw err;
1562
1562
  }
1563
1563
  }
1564
- /** Update some properties of an existing element.
1564
+ /**
1565
+ * Update some properties of an existing element.
1566
+ * All parts of `elProps` are optional *other than* `id`. If id is missing, an exception is thrown.
1567
+ *
1565
1568
  * To support clearing a property value, every property name that is present in the `elProps` object will be updated even if the value is `undefined`.
1566
1569
  * To keep an individual element property unchanged, it should either be excluded from the `elProps` parameter or set to its current value.
1567
1570
  * @param elProps the properties of the element to update.
1568
- * @note As described above, this is a special case where there is a difference between a property being excluded and a property being present in `elProps` but set to `undefined`.
1571
+ * @note The values of `classFullName` and `model` *may not be changed* by this method. Further, it will permute the `elProps` object by adding or
1572
+ * overwriting their values to the correct values.
1569
1573
  * @throws [[IModelError]] if unable to update the element.
1570
1574
  */
1571
1575
  updateElement(elProps) {
@@ -1798,9 +1802,9 @@ exports.IModelDb = IModelDb;
1798
1802
  */
1799
1803
  getAspects(elementId, aspectClassFullName, excludedClassFullNames) {
1800
1804
  if (aspectClassFullName === undefined) {
1801
- const allAspects = this.runInstanceQuery(`SELECT $ FROM (
1802
- SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
1803
- UNION ALL
1805
+ const allAspects = this.runInstanceQuery(`SELECT $ FROM (
1806
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
1807
+ UNION ALL
1804
1808
  SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
1805
1809
  if (allAspects.length === 0)
1806
1810
  core_bentley_1.Logger.logError(BackendLoggerCategory_1.BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
@@ -1818,7 +1822,7 @@ exports.IModelDb = IModelDb;
1818
1822
  let classIdList = IModelDb.Elements.classMap.get(aspectClassFullName);
1819
1823
  if (classIdList === undefined) {
1820
1824
  const classIds = [];
1821
- this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
1825
+ this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
1822
1826
  and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name='${fullClassName[0]}')) and SourceECInstanceId != TargetECInstanceId`, (statement) => {
1823
1827
  while (statement.step() === core_bentley_1.DbResult.BE_SQLITE_ROW)
1824
1828
  classIds.push(statement.getValue(0).getId());
@@ -1833,10 +1837,10 @@ exports.IModelDb = IModelDb;
1833
1837
  return [];
1834
1838
  }
1835
1839
  // Execute an instance query to retrieve all aspects from all the derived classes
1836
- const aspects = this.runInstanceQuery(`SELECT $ FROM (
1837
- SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
1838
- UNION ALL
1839
- SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
1840
+ const aspects = this.runInstanceQuery(`SELECT $ FROM (
1841
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
1842
+ UNION ALL
1843
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
1840
1844
  ) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
1841
1845
  if (aspects.length === 0)
1842
1846
  core_bentley_1.Logger.logError(BackendLoggerCategory_1.BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
@@ -2235,13 +2239,37 @@ class BriefcaseDb extends IModelDb {
2235
2239
  // - push changes
2236
2240
  // - release schema lock
2237
2241
  // good thing computers are fast. Fortunately upgrading should be rare (and the push time will dominate anyway.) Don't try to optimize any of this away.
2238
- await withBriefcaseDb(briefcase, async (db) => db.acquireSchemaLock()); // may not really acquire lock if iModel uses "noLocks" mode.
2239
2242
  try {
2240
- await this.doUpgrade(briefcase, { profile: core_common_1.ProfileOptions.Upgrade, schemaLockHeld: true }, "Upgraded profile");
2241
- await this.doUpgrade(briefcase, { domain: core_common_1.DomainOptions.Upgrade, schemaLockHeld: true }, "Upgraded domain schemas");
2243
+ await this.doUpgrade(briefcase, { profile: core_common_1.ProfileOptions.Upgrade }, "Upgraded profile");
2242
2244
  }
2243
- finally {
2244
- await withBriefcaseDb(briefcase, async (db) => db.locks.releaseAllLocks());
2245
+ catch (error) {
2246
+ if (error.errorNumber === core_bentley_1.DbResult.BE_SQLITE_ERROR_DataTransformRequired) {
2247
+ core_bentley_1.Logger.logInfo(loggerCategory, `Profile upgrade contains data transform. Retrying upgrade with a schema lock.`);
2248
+ try {
2249
+ await withBriefcaseDb(briefcase, async (db) => db.acquireSchemaLock()); // may not really acquire lock if iModel uses "noLocks" mode.
2250
+ await this.doUpgrade(briefcase, { profile: core_common_1.ProfileOptions.Upgrade, schemaLockHeld: true }, "Upgraded profile");
2251
+ await this.doUpgrade(briefcase, { domain: core_common_1.DomainOptions.Upgrade, schemaLockHeld: true }, "Upgraded domain schemas");
2252
+ }
2253
+ finally {
2254
+ await withBriefcaseDb(briefcase, async (db) => db.locks.releaseAllLocks());
2255
+ }
2256
+ return;
2257
+ }
2258
+ }
2259
+ try {
2260
+ await this.doUpgrade(briefcase, { domain: core_common_1.DomainOptions.Upgrade }, "Upgraded domain schemas");
2261
+ }
2262
+ catch (error) {
2263
+ if (error.errorNumber === core_bentley_1.DbResult.BE_SQLITE_ERROR_DataTransformRequired) {
2264
+ core_bentley_1.Logger.logInfo(loggerCategory, `Domain schema upgrade contains data transform. Retrying upgrade with a schema lock.`);
2265
+ try {
2266
+ await withBriefcaseDb(briefcase, async (db) => db.acquireSchemaLock()); // may not really acquire lock if iModel uses "noLocks" mode.
2267
+ await this.doUpgrade(briefcase, { domain: core_common_1.DomainOptions.Upgrade, schemaLockHeld: true }, "Upgraded domain schemas");
2268
+ }
2269
+ finally {
2270
+ await withBriefcaseDb(briefcase, async (db) => db.locks.releaseAllLocks());
2271
+ }
2272
+ }
2245
2273
  }
2246
2274
  }
2247
2275
  /** Open a briefcase file and return a new BriefcaseDb to interact with it.