@itwin/core-backend 4.7.0-dev.10 → 4.7.0-dev.11

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 (106) 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.d.ts.map +1 -1
  6. package/lib/cjs/BriefcaseManager.js +3 -1
  7. package/lib/cjs/BriefcaseManager.js.map +1 -1
  8. package/lib/cjs/Category.js.map +1 -1
  9. package/lib/cjs/ChangeSummaryManager.js +2 -2
  10. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  11. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  12. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  13. package/lib/cjs/ChangesetECAdaptor.js +237 -237
  14. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  15. package/lib/cjs/ChannelControl.js.map +1 -1
  16. package/lib/cjs/CheckpointManager.js.map +1 -1
  17. package/lib/cjs/ClassRegistry.js +5 -5
  18. package/lib/cjs/ClassRegistry.js.map +1 -1
  19. package/lib/cjs/CloudSqlite.js.map +1 -1
  20. package/lib/cjs/CodeService.js.map +1 -1
  21. package/lib/cjs/CodeSpecs.js.map +1 -1
  22. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  23. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  24. package/lib/cjs/DevTools.js.map +1 -1
  25. package/lib/cjs/DisplayStyle.js.map +1 -1
  26. package/lib/cjs/ECDb.js.map +1 -1
  27. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  28. package/lib/cjs/ECSqlStatement.js.map +1 -1
  29. package/lib/cjs/Element.js.map +1 -1
  30. package/lib/cjs/ElementAspect.js.map +1 -1
  31. package/lib/cjs/ElementGraphics.js.map +1 -1
  32. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  33. package/lib/cjs/Entity.js.map +1 -1
  34. package/lib/cjs/EntityReferences.js.map +1 -1
  35. package/lib/cjs/ExportGraphics.js.map +1 -1
  36. package/lib/cjs/ExternalSource.js.map +1 -1
  37. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  38. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  39. package/lib/cjs/GeometrySummary.js +47 -47
  40. package/lib/cjs/GeometrySummary.js.map +1 -1
  41. package/lib/cjs/HubMock.js.map +1 -1
  42. package/lib/cjs/IModelCloneContext.js.map +1 -1
  43. package/lib/cjs/IModelDb.d.ts.map +1 -1
  44. package/lib/cjs/IModelDb.js +48 -13
  45. package/lib/cjs/IModelDb.js.map +1 -1
  46. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  47. package/lib/cjs/IModelHost.js.map +1 -1
  48. package/lib/cjs/IModelJsFs.js.map +1 -1
  49. package/lib/cjs/IpcHost.js.map +1 -1
  50. package/lib/cjs/LineStyle.js.map +1 -1
  51. package/lib/cjs/LocalHub.js +1 -1
  52. package/lib/cjs/LocalHub.js.map +1 -1
  53. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  54. package/lib/cjs/Material.js.map +1 -1
  55. package/lib/cjs/Model.js.map +1 -1
  56. package/lib/cjs/NativeAppStorage.js.map +1 -1
  57. package/lib/cjs/NativeHost.js.map +1 -1
  58. package/lib/cjs/NavigationRelationship.js.map +1 -1
  59. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  60. package/lib/cjs/PropertyStore.js.map +1 -1
  61. package/lib/cjs/Relationship.js.map +1 -1
  62. package/lib/cjs/RpcBackend.js.map +1 -1
  63. package/lib/cjs/SQLiteDb.js.map +1 -1
  64. package/lib/cjs/Schema.js.map +1 -1
  65. package/lib/cjs/SchemaSync.d.ts +8 -6
  66. package/lib/cjs/SchemaSync.d.ts.map +1 -1
  67. package/lib/cjs/SchemaSync.js +75 -14
  68. package/lib/cjs/SchemaSync.js.map +1 -1
  69. package/lib/cjs/SchemaUtils.js.map +1 -1
  70. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  71. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  72. package/lib/cjs/SqliteStatement.js.map +1 -1
  73. package/lib/cjs/TextAnnotationElement.js.map +1 -1
  74. package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
  75. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  76. package/lib/cjs/Texture.js.map +1 -1
  77. package/lib/cjs/TileStorage.js.map +1 -1
  78. package/lib/cjs/TxnManager.js.map +1 -1
  79. package/lib/cjs/ViewDefinition.js.map +1 -1
  80. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  81. package/lib/cjs/ViewStore.js.map +1 -1
  82. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  83. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +44 -44
  84. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  85. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  86. package/lib/cjs/assets/Settings/backend.setting.json5 +132 -132
  87. package/lib/cjs/core-backend.js.map +1 -1
  88. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  89. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  90. package/lib/cjs/domains/GenericElements.js.map +1 -1
  91. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  92. package/lib/cjs/rpc/multipart.js.map +1 -1
  93. package/lib/cjs/rpc/tracing.js.map +1 -1
  94. package/lib/cjs/rpc/web/logging.js.map +1 -1
  95. package/lib/cjs/rpc/web/request.js.map +1 -1
  96. package/lib/cjs/rpc/web/response.js.map +1 -1
  97. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  98. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  99. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  100. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  101. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  102. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  103. package/lib/cjs/workspace/Settings.js.map +1 -1
  104. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  105. package/lib/cjs/workspace/Workspace.js.map +1 -1
  106. package/package.json +12 -12
@@ -657,7 +657,7 @@ class IModelDb extends core_common_1.IModel {
657
657
  const schemaSyncDbUri = syncAccess.getUri();
658
658
  this.saveChanges();
659
659
  let stat = this.nativeDb.importSchemas(schemaFileNames, { schemaLockHeld: false, ecSchemaXmlContext: maybeCustomNativeContext, schemaSyncDbUri });
660
- if (core_bentley_1.DbResult.BE_SQLITE_ERROR_SchemaLockFailed === stat) {
660
+ if (core_bentley_1.DbResult.BE_SQLITE_ERROR_DataTransformRequired === stat) {
661
661
  this.abandonChanges();
662
662
  if (this.nativeDb.getITwinId() !== core_bentley_1.Guid.empty)
663
663
  await this.acquireSchemaLock();
@@ -697,7 +697,7 @@ class IModelDb extends core_common_1.IModel {
697
697
  const schemaSyncDbUri = syncAccess.getUri();
698
698
  this.saveChanges();
699
699
  let stat = this.nativeDb.importXmlSchemas(serializedXmlSchemas, { schemaLockHeld: false, schemaSyncDbUri });
700
- if (core_bentley_1.DbResult.BE_SQLITE_ERROR_SchemaLockFailed === stat) {
700
+ if (core_bentley_1.DbResult.BE_SQLITE_ERROR_DataTransformRequired === stat) {
701
701
  this.abandonChanges();
702
702
  if (this.nativeDb.getITwinId() !== core_bentley_1.Guid.empty)
703
703
  await this.acquireSchemaLock();
@@ -1827,9 +1827,9 @@ IModelDb._settingPropNamespace = "settings";
1827
1827
  */
1828
1828
  getAspects(elementId, aspectClassFullName, excludedClassFullNames) {
1829
1829
  if (aspectClassFullName === undefined) {
1830
- const allAspects = this.runInstanceQuery(`SELECT $ FROM (
1831
- SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
1832
- UNION ALL
1830
+ const allAspects = this.runInstanceQuery(`SELECT $ FROM (
1831
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
1832
+ UNION ALL
1833
1833
  SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
1834
1834
  if (allAspects.length === 0)
1835
1835
  core_bentley_1.Logger.logInfo(BackendLoggerCategory_1.BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
@@ -1847,7 +1847,7 @@ IModelDb._settingPropNamespace = "settings";
1847
1847
  let classIdList = IModelDb.Elements.classMap.get(aspectClassFullName);
1848
1848
  if (classIdList === undefined) {
1849
1849
  const classIds = [];
1850
- this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
1850
+ this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
1851
1851
  and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name='${fullClassName[0]}')) and SourceECInstanceId != TargetECInstanceId`, (statement) => {
1852
1852
  while (statement.step() === core_bentley_1.DbResult.BE_SQLITE_ROW)
1853
1853
  classIds.push(statement.getValue(0).getId());
@@ -1862,10 +1862,10 @@ IModelDb._settingPropNamespace = "settings";
1862
1862
  return [];
1863
1863
  }
1864
1864
  // Execute an instance query to retrieve all aspects from all the derived classes
1865
- const aspects = this.runInstanceQuery(`SELECT $ FROM (
1866
- SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
1867
- UNION ALL
1868
- SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
1865
+ const aspects = this.runInstanceQuery(`SELECT $ FROM (
1866
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
1867
+ UNION ALL
1868
+ SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
1869
1869
  ) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
1870
1870
  if (aspects.length === 0)
1871
1871
  core_bentley_1.Logger.logInfo(BackendLoggerCategory_1.BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
@@ -2243,9 +2243,30 @@ class BriefcaseDb extends IModelDb {
2243
2243
  }
2244
2244
  /** Upgrades the profile or domain schemas. File must be closed before this call and is always left closed. */
2245
2245
  static async doUpgrade(briefcase, upgradeOptions, description) {
2246
- const nativeDb = this.openDgnDb({ path: briefcase.fileName }, core_bentley_1.OpenMode.ReadWrite, upgradeOptions); // performs the upgrade
2247
- const wasChanges = nativeDb.hasPendingTxns();
2248
- nativeDb.closeFile();
2246
+ let wasChanges = false;
2247
+ const executeUpgrade = () => {
2248
+ const nativeDb = this.openDgnDb({ path: briefcase.fileName }, core_bentley_1.OpenMode.ReadWrite, upgradeOptions); // performs the upgrade
2249
+ wasChanges = nativeDb.hasPendingTxns();
2250
+ nativeDb.closeFile();
2251
+ };
2252
+ const isSchemaSyncEnabled = await withBriefcaseDb(briefcase, async (db) => {
2253
+ await SchemaSync_1.SchemaSync.pull(db);
2254
+ return db.nativeDb.schemaSyncEnabled();
2255
+ });
2256
+ if (isSchemaSyncEnabled) {
2257
+ await SchemaSync_1.SchemaSync.withLockedAccess(briefcase, { openMode: core_bentley_1.OpenMode.Readonly, operationName: "schema sync" }, async (syncAccess) => {
2258
+ const schemaSyncDbUri = syncAccess.getUri();
2259
+ executeUpgrade();
2260
+ await withBriefcaseDb(briefcase, async (db) => {
2261
+ db.nativeDb.schemaSyncPush(schemaSyncDbUri);
2262
+ db.saveChanges();
2263
+ });
2264
+ syncAccess.synchronizeWithCloud();
2265
+ });
2266
+ }
2267
+ else {
2268
+ executeUpgrade();
2269
+ }
2249
2270
  if (wasChanges)
2250
2271
  await withBriefcaseDb(briefcase, async (db) => db.pushChanges({ ...briefcase, description, retainLocks: true }));
2251
2272
  }
@@ -2283,6 +2304,7 @@ class BriefcaseDb extends IModelDb {
2283
2304
  }
2284
2305
  return;
2285
2306
  }
2307
+ throw error;
2286
2308
  }
2287
2309
  try {
2288
2310
  await this.doUpgrade(briefcase, { domain: core_common_1.DomainOptions.Upgrade }, "Upgraded domain schemas");
@@ -2298,6 +2320,7 @@ class BriefcaseDb extends IModelDb {
2298
2320
  await withBriefcaseDb(briefcase, async (db) => db.locks.releaseAllLocks());
2299
2321
  }
2300
2322
  }
2323
+ throw error;
2301
2324
  }
2302
2325
  }
2303
2326
  /** Open a briefcase file and return a new BriefcaseDb to interact with it.
@@ -2377,6 +2400,14 @@ class BriefcaseDb extends IModelDb {
2377
2400
  args.dump();
2378
2401
  }
2379
2402
  else {
2403
+ if (args.tableName === "be_Prop") {
2404
+ if (args.getValueText(0, core_bentley_1.DbChangeStage.Old) === "ec_Db" && args.getValueText(1, core_bentley_1.DbChangeStage.Old) === "localDbInfo") {
2405
+ return core_bentley_1.DbConflictResolution.Replace;
2406
+ }
2407
+ }
2408
+ if (args.tableName.startsWith("ec_")) {
2409
+ return core_bentley_1.DbConflictResolution.Skip;
2410
+ }
2380
2411
  const msg = "UPDATE/DELETE before value do not match with one in db or CASCADE action was triggered.";
2381
2412
  args.setLastError(msg);
2382
2413
  core_bentley_1.Logger.logError(category, msg);
@@ -2396,6 +2427,9 @@ class BriefcaseDb extends IModelDb {
2396
2427
  args.dump();
2397
2428
  }
2398
2429
  else {
2430
+ if (args.tableName.startsWith("ec_")) {
2431
+ return core_bentley_1.DbConflictResolution.Skip;
2432
+ }
2399
2433
  const msg = "PRIMARY KEY INSERT CONFLICT - rejecting this changeset";
2400
2434
  args.setLastError(msg);
2401
2435
  core_bentley_1.Logger.logError(category, msg);
@@ -2505,6 +2539,7 @@ class BriefcaseDb extends IModelDb {
2505
2539
  async pullChanges(arg) {
2506
2540
  await this.executeWritable(async () => {
2507
2541
  await BriefcaseManager_1.BriefcaseManager.pullAndApplyChangesets(this, arg ?? {});
2542
+ await SchemaSync_1.SchemaSync.pull(this);
2508
2543
  this.initializeIModelDb();
2509
2544
  });
2510
2545
  IpcHost_1.IpcHost.notifyTxns(this, "notifyPulledChanges", this.changeset);