@itwin/core-backend 5.10.0-dev.19 → 5.10.0-dev.20
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/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.js.map +1 -1
- package/lib/cjs/BlobContainerService.js.map +1 -1
- package/lib/cjs/BriefcaseManager.d.ts +8 -1
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/CatalogDb.js.map +1 -1
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +2 -2
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +248 -248
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChangesetReader.js +3 -3
- package/lib/cjs/ChangesetReader.js.map +1 -1
- package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.d.ts +3 -3
- package/lib/cjs/ClassRegistry.js +8 -8
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeService.js.map +1 -1
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/ECSqlSyncReader.js.map +1 -1
- package/lib/cjs/EditTxn.js.map +1 -1
- package/lib/cjs/Element.d.ts +6 -3
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +6 -3
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.d.ts +13 -5
- package/lib/cjs/Entity.d.ts.map +1 -1
- package/lib/cjs/Entity.js +13 -5
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.js.map +1 -1
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/FontFile.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeographicCRSServices.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +79 -17
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +189 -30
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelDbFonts.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/ImageSourceConversion.js.map +1 -1
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/LocalHub.js +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/LockControl.js.map +1 -1
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PartialChangeUnifier.js +7 -7
- package/lib/cjs/PartialChangeUnifier.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/Relationship.d.ts +3 -1
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +3 -1
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.js.map +1 -1
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SchemaUtils.js.map +1 -1
- package/lib/cjs/SheetIndex.js.map +1 -1
- package/lib/cjs/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/StashManager.js.map +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
- package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +36 -36
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +28 -28
- package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
- package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
- package/lib/cjs/internal/FontFileImpl.js.map +1 -1
- package/lib/cjs/internal/HubMock.js.map +1 -1
- package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
- package/lib/cjs/internal/NativePlatform.js.map +1 -1
- package/lib/cjs/internal/NoLocks.js.map +1 -1
- package/lib/cjs/internal/OnlineStatus.js.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.js +33 -33
- package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/cjs/rpc/multipart.js.map +1 -1
- package/lib/cjs/rpc/tracing.js.map +1 -1
- package/lib/cjs/rpc/web/logging.js.map +1 -1
- package/lib/cjs/rpc/web/request.js.map +1 -1
- package/lib/cjs/rpc/web/response.js.map +1 -1
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsDb.js.map +1 -1
- package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/BackendLoggerCategory.js.map +1 -1
- package/lib/esm/BisCoreSchema.js.map +1 -1
- package/lib/esm/BlobContainerService.js.map +1 -1
- package/lib/esm/BriefcaseManager.d.ts +8 -1
- package/lib/esm/BriefcaseManager.d.ts.map +1 -1
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/CatalogDb.js.map +1 -1
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.js +2 -2
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangedElementsDb.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +248 -248
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChangesetReader.js +3 -3
- package/lib/esm/ChangesetReader.js.map +1 -1
- package/lib/esm/ChangesetReaderTypes.js.map +1 -1
- package/lib/esm/ChannelControl.js.map +1 -1
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/ClassRegistry.d.ts +3 -3
- package/lib/esm/ClassRegistry.js +8 -8
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeService.js.map +1 -1
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/CustomViewState3dCreator.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/ECSqlRowExecutor.js.map +1 -1
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/ECSqlSyncReader.js.map +1 -1
- package/lib/esm/EditTxn.js.map +1 -1
- package/lib/esm/Element.d.ts +6 -3
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +6 -3
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementGraphics.js.map +1 -1
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/Entity.d.ts +13 -5
- package/lib/esm/Entity.d.ts.map +1 -1
- package/lib/esm/Entity.js +13 -5
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/EntityReferences.js.map +1 -1
- package/lib/esm/ExportGraphics.js.map +1 -1
- package/lib/esm/ExternalSource.js.map +1 -1
- package/lib/esm/FontFile.js.map +1 -1
- package/lib/esm/GeoCoordConfig.js.map +1 -1
- package/lib/esm/GeographicCRSServices.js.map +1 -1
- package/lib/esm/GeometrySummary.js +47 -47
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +79 -17
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +190 -31
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelDbFonts.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/esm/IModelJsFs.js.map +1 -1
- package/lib/esm/ImageSourceConversion.js.map +1 -1
- package/lib/esm/IpcHost.js.map +1 -1
- package/lib/esm/LineStyle.js.map +1 -1
- package/lib/esm/LocalHub.js +1 -1
- package/lib/esm/LocalHub.js.map +1 -1
- package/lib/esm/LocalhostIpcHost.js.map +1 -1
- package/lib/esm/LockControl.js.map +1 -1
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/NativeAppStorage.js.map +1 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/NavigationRelationship.js.map +1 -1
- package/lib/esm/PartialChangeUnifier.js +7 -7
- package/lib/esm/PartialChangeUnifier.js.map +1 -1
- package/lib/esm/PromiseMemoizer.js.map +1 -1
- package/lib/esm/PropertyStore.js.map +1 -1
- package/lib/esm/Relationship.d.ts +3 -1
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +3 -1
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/RpcBackend.js.map +1 -1
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/Schema.js.map +1 -1
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SchemaUtils.js.map +1 -1
- package/lib/esm/SheetIndex.js.map +1 -1
- package/lib/esm/SqliteChangesetReader.js.map +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/StashManager.js.map +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/FrameGeometry.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/FunctionalSchema.js.map +1 -1
- package/lib/esm/domains/GenericElements.js.map +1 -1
- package/lib/esm/domains/GenericSchema.js.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/ElementLRUCache.js.map +1 -1
- package/lib/esm/internal/FontFileImpl.js.map +1 -1
- package/lib/esm/internal/HubMock.js.map +1 -1
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/esm/internal/IntegrityCheck.js.map +1 -1
- package/lib/esm/internal/NativePlatform.js.map +1 -1
- package/lib/esm/internal/NoLocks.js.map +1 -1
- package/lib/esm/internal/OnlineStatus.js.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.js +33 -33
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/esm/rpc/multipart.js.map +1 -1
- package/lib/esm/rpc/tracing.js.map +1 -1
- package/lib/esm/rpc/web/logging.js.map +1 -1
- package/lib/esm/rpc/web/request.js.map +1 -1
- package/lib/esm/rpc/web/response.js.map +1 -1
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/esm/test/AdvancedEqual.js.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
- package/lib/esm/test/AttachDb.test.js +11 -11
- package/lib/esm/test/AttachDb.test.js.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.js +23 -23
- package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/GeometryTestUtil.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
- package/lib/esm/test/IpcHost.test.js.map +1 -1
- package/lib/esm/test/KnownTestLocations.js.map +1 -1
- package/lib/esm/test/PrintElementTree.js.map +1 -1
- package/lib/esm/test/PropertyDb.test.js.map +1 -1
- package/lib/esm/test/RevisionUtility.js.map +1 -1
- package/lib/esm/test/SchemaChangesetCanBeReversed.test.js +51 -51
- package/lib/esm/test/SchemaChangesetCanBeReversed.test.js.map +1 -1
- package/lib/esm/test/SchemaUtils.test.js +25 -25
- package/lib/esm/test/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
- package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
- package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestEditTxn.js.map +1 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js +53 -53
- package/lib/esm/test/annotations/Fields.test.js.map +1 -1
- package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
- package/lib/esm/test/categories/Category.test.js.map +1 -1
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
- package/lib/esm/test/ecdb/CTE.test.js +88 -88
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +72 -72
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/QueryReaders.test.js +31 -31
- package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +22 -22
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js +13 -13
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
- package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
- package/lib/esm/test/element/UrlLink.test.js.map +1 -1
- package/lib/esm/test/font/FontFile.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/hubaccess/SemanticRebase.test.js +345 -345
- package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
- package/lib/esm/test/imageData.js.map +1 -1
- package/lib/esm/test/imodel/Code.test.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +46 -44
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
- package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/misc/DevTools.test.js.map +1 -1
- package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
- package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
- package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
- package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
- package/lib/esm/test/rpc/response.test.js.map +1 -1
- package/lib/esm/test/schema/ClassRegistry.test.js +102 -99
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js +11 -9
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
- package/lib/esm/test/schema/SchemaViewHidden.test.d.ts +2 -0
- package/lib/esm/test/schema/SchemaViewHidden.test.d.ts.map +1 -0
- package/lib/esm/test/schema/SchemaViewHidden.test.js +275 -0
- package/lib/esm/test/schema/SchemaViewHidden.test.js.map +1 -0
- package/lib/esm/test/schema/SchemaViewKoQ.test.d.ts +2 -0
- package/lib/esm/test/schema/SchemaViewKoQ.test.d.ts.map +1 -0
- package/lib/esm/test/schema/SchemaViewKoQ.test.js +175 -0
- package/lib/esm/test/schema/SchemaViewKoQ.test.js.map +1 -0
- package/lib/esm/test/schema/SchemaViewLifecycle.test.d.ts +2 -0
- package/lib/esm/test/schema/SchemaViewLifecycle.test.d.ts.map +1 -0
- package/lib/esm/test/schema/SchemaViewLifecycle.test.js +141 -0
- package/lib/esm/test/schema/SchemaViewLifecycle.test.js.map +1 -0
- package/lib/esm/test/schema/SchemaViewValidation.test.d.ts +2 -0
- package/lib/esm/test/schema/SchemaViewValidation.test.d.ts.map +1 -0
- package/lib/esm/test/schema/SchemaViewValidation.test.js +475 -0
- package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -0
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +296 -296
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
- package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
- package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
- package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
- package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
- package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
- package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/Setting.test.js.map +1 -1
- package/lib/esm/test/standalone/Settings.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
- package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
- package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
- package/lib/esm/workspace/Settings.js.map +1 -1
- package/lib/esm/workspace/SettingsDb.js.map +1 -1
- package/lib/esm/workspace/SettingsEditor.js.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +14 -14
package/lib/esm/IModelDb.js
CHANGED
|
@@ -46,7 +46,7 @@ import { IModelNative } from "./internal/NativePlatform";
|
|
|
46
46
|
import { createNoOpLockControl } from "./internal/NoLocks";
|
|
47
47
|
import { createIModelDbFonts } from "./internal/IModelDbFontsImpl";
|
|
48
48
|
import { _activeTxn, _cache, _close, _hubAccess, _implicitTxn, _instanceKeyCache, _nativeDb, _releaseAllLocks, _resetIModelDb } from "./internal/Symbols";
|
|
49
|
-
import { ECVersion, SchemaContext, SchemaJsonLocater } from "@itwin/ecschema-metadata";
|
|
49
|
+
import { ECVersion, SchemaContext, SchemaJsonLocater, SchemaView } from "@itwin/ecschema-metadata";
|
|
50
50
|
import { SchemaMap } from "./Schema";
|
|
51
51
|
import { ElementLRUCache, InstanceKeyLRUCache } from "./internal/ElementLRUCache";
|
|
52
52
|
import { IModelIncrementalSchemaLocater } from "./IModelIncrementalSchemaLocater";
|
|
@@ -162,6 +162,7 @@ export class IModelDb extends IModel {
|
|
|
162
162
|
_jsClassMap;
|
|
163
163
|
_schemaMap;
|
|
164
164
|
_schemaContext;
|
|
165
|
+
_schemasPromise;
|
|
165
166
|
/** @deprecated in 5.0.0 - will not be removed until after 2026-06-13. Use [[fonts]]. */
|
|
166
167
|
_fontMap; // eslint-disable-line @typescript-eslint/no-deprecated
|
|
167
168
|
_fonts = createIModelDbFonts(this);
|
|
@@ -794,6 +795,11 @@ export class IModelDb extends IModel {
|
|
|
794
795
|
this._jsClassMap = undefined;
|
|
795
796
|
this._schemaMap = undefined;
|
|
796
797
|
this._schemaContext = undefined;
|
|
798
|
+
if (this._schemasPromise) {
|
|
799
|
+
const old = this._schemasPromise;
|
|
800
|
+
this._schemasPromise = undefined;
|
|
801
|
+
old.then((view) => view.markOutdated()).catch(() => { });
|
|
802
|
+
}
|
|
797
803
|
this[_nativeDb].clearECDbCache();
|
|
798
804
|
}
|
|
799
805
|
this.elements[_cache].clear();
|
|
@@ -1234,7 +1240,7 @@ export class IModelDb extends IModel {
|
|
|
1234
1240
|
}
|
|
1235
1241
|
/** The registry of entity metadata for this iModel.
|
|
1236
1242
|
* @internal
|
|
1237
|
-
* @deprecated in 5.0 - will not be removed until after 2026-06-13.
|
|
1243
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` from the `iModel` instead.
|
|
1238
1244
|
*
|
|
1239
1245
|
* @example
|
|
1240
1246
|
* ```typescript
|
|
@@ -1242,7 +1248,8 @@ export class IModelDb extends IModel {
|
|
|
1242
1248
|
* const classMetaData: EntityMetaData | undefined = iModel.classMetaDataRegistry.find("SchemaName:ClassName");
|
|
1243
1249
|
*
|
|
1244
1250
|
* // Replacement:
|
|
1245
|
-
* const
|
|
1251
|
+
* const view = await imodel.getSchemaView();
|
|
1252
|
+
* const cls = view.findClass("SchemaName:ClassName");
|
|
1246
1253
|
* ```
|
|
1247
1254
|
*/
|
|
1248
1255
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -1269,7 +1276,11 @@ export class IModelDb extends IModel {
|
|
|
1269
1276
|
return this._schemaMap;
|
|
1270
1277
|
}
|
|
1271
1278
|
/**
|
|
1272
|
-
* Gets the context that allows accessing the metadata (ecschema-metadata package) of this iModel
|
|
1279
|
+
* Gets the context that allows accessing the metadata (`@itwin/ecschema-metadata` package) of this iModel.
|
|
1280
|
+
*
|
|
1281
|
+
* For runtime read-only access - class/property iteration, IS-A checks, navigating relationships, KOQ lookups -
|
|
1282
|
+
* prefer [[getSchemaView]]. `schemaContext` remains the right choice when you need schema authoring
|
|
1283
|
+
* (via `@itwin/ecschema-editing`), custom-attribute deserialization, or the full ecschema-metadata object graph.
|
|
1273
1284
|
* @public @preview
|
|
1274
1285
|
*/
|
|
1275
1286
|
get schemaContext() {
|
|
@@ -1283,6 +1294,55 @@ export class IModelDb extends IModel {
|
|
|
1283
1294
|
}
|
|
1284
1295
|
return this._schemaContext;
|
|
1285
1296
|
}
|
|
1297
|
+
/** Get the schema view for this iModel. The view is built lazily on
|
|
1298
|
+
* first call by fetching compact binary schema data via `PRAGMA schema_view` through
|
|
1299
|
+
* the ConcurrentQuery thread pool. Subsequent calls return the cached view. Multiple
|
|
1300
|
+
* concurrent callers share a single in-flight build.
|
|
1301
|
+
*
|
|
1302
|
+
* The returned `SchemaView` is a lightweight, read-only, synchronous API for
|
|
1303
|
+
* navigating schema metadata - classes, properties, relationships, enumerations, etc.
|
|
1304
|
+
* It is the recommended default for runtime read-only metadata access and is significantly
|
|
1305
|
+
* faster and lower-memory than [[schemaContext]]. Use [[schemaContext]] for schema authoring,
|
|
1306
|
+
* custom-attribute deserialization, or anywhere you need the full ecschema-metadata object graph.
|
|
1307
|
+
* @beta
|
|
1308
|
+
*/
|
|
1309
|
+
async getSchemaView() {
|
|
1310
|
+
if (this._schemasPromise) {
|
|
1311
|
+
const ctx = await this._schemasPromise;
|
|
1312
|
+
if (!ctx.isOutdated)
|
|
1313
|
+
return ctx;
|
|
1314
|
+
}
|
|
1315
|
+
// Capture the in-flight promise locally so the rejection handler only clears
|
|
1316
|
+
// `_schemasPromise` if it still points at this build. A concurrent invalidation +
|
|
1317
|
+
// re-fetch could otherwise replace the field before our hydrate fails, and a naive
|
|
1318
|
+
// `_schemasPromise = undefined` would clobber that newer reference.
|
|
1319
|
+
const inflight = this._hydrateSchemas();
|
|
1320
|
+
this._schemasPromise = inflight;
|
|
1321
|
+
inflight.catch(() => {
|
|
1322
|
+
if (this._schemasPromise === inflight)
|
|
1323
|
+
this._schemasPromise = undefined;
|
|
1324
|
+
});
|
|
1325
|
+
return inflight;
|
|
1326
|
+
}
|
|
1327
|
+
async _hydrateSchemas() {
|
|
1328
|
+
// PRAGMA returns exactly one row with format, formatVersion, data (binary), schemaToken.
|
|
1329
|
+
// Important: only call reader.next() once - do NOT use `for await` on PRAGMA results.
|
|
1330
|
+
// ConcurrentQuery wraps regular ECSQL in LIMIT/OFFSET for pagination but skips this for
|
|
1331
|
+
// PRAGMAs. If the serialized result exceeds the memory threshold, the response is marked
|
|
1332
|
+
// "Partial", and a `for await` loop would re-issue the same PRAGMA forever since PRAGMAs
|
|
1333
|
+
// don't support OFFSET-based pagination.
|
|
1334
|
+
// This implementation uses the non-pinned version of the pragma other than frontend - because backend
|
|
1335
|
+
// is always strictly coupled with the native code.
|
|
1336
|
+
const reader = this.createQueryReader("PRAGMA schema_view");
|
|
1337
|
+
const result = await reader.next();
|
|
1338
|
+
if (result.done)
|
|
1339
|
+
throw new IModelError(DbResult.BE_SQLITE_ERROR, "PRAGMA schema_view returned no rows");
|
|
1340
|
+
const data = result.value.data;
|
|
1341
|
+
const token = result.value.schemaToken;
|
|
1342
|
+
if (data === undefined || data === null)
|
|
1343
|
+
throw new IModelError(DbResult.BE_SQLITE_ERROR, "PRAGMA schema_view returned null data column");
|
|
1344
|
+
return SchemaView.fromBinary(data, token ?? "");
|
|
1345
|
+
}
|
|
1286
1346
|
/** Get the linkTableRelationships for this IModel */
|
|
1287
1347
|
get relationships() {
|
|
1288
1348
|
return this._relationships || (this._relationships = new Relationships(this));
|
|
@@ -1357,7 +1417,7 @@ export class IModelDb extends IModel {
|
|
|
1357
1417
|
}
|
|
1358
1418
|
/** Get metadata for a class. This method will load the metadata from the iModel into the cache as a side-effect, if necessary.
|
|
1359
1419
|
* @throws [[IModelError]] if the metadata cannot be found nor loaded.
|
|
1360
|
-
* @deprecated in 5.0 - will not be removed until after 2026-06-13.
|
|
1420
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` on the iModel and call `view.findClass(...)` instead.
|
|
1361
1421
|
*
|
|
1362
1422
|
* @example
|
|
1363
1423
|
* * ```typescript
|
|
@@ -1365,7 +1425,8 @@ export class IModelDb extends IModel {
|
|
|
1365
1425
|
* const metaData: EntityMetaData = imodel.getMetaData("SchemaName:ClassName");
|
|
1366
1426
|
*
|
|
1367
1427
|
* // Replacement:
|
|
1368
|
-
* const
|
|
1428
|
+
* const view = await imodel.getSchemaView();
|
|
1429
|
+
* const cls = view.findClass("SchemaName:ClassName");
|
|
1369
1430
|
* ```
|
|
1370
1431
|
*/
|
|
1371
1432
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -1383,7 +1444,7 @@ export class IModelDb extends IModel {
|
|
|
1383
1444
|
return metadata;
|
|
1384
1445
|
}
|
|
1385
1446
|
/** Identical to [[getMetaData]], except it returns `undefined` instead of throwing an error if the metadata cannot be found nor loaded.
|
|
1386
|
-
* @deprecated in 5.0 - will not be removed until after 2026-06-13.
|
|
1447
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` on the iModel and call `view.findClass(...)` instead.
|
|
1387
1448
|
*
|
|
1388
1449
|
* @example
|
|
1389
1450
|
* * ```typescript
|
|
@@ -1391,7 +1452,8 @@ export class IModelDb extends IModel {
|
|
|
1391
1452
|
* const metaData: EntityMetaData | undefined = imodel.tryGetMetaData("SchemaName:ClassName");
|
|
1392
1453
|
*
|
|
1393
1454
|
* // Replacement:
|
|
1394
|
-
* const
|
|
1455
|
+
* const view = await imodel.getSchemaView();
|
|
1456
|
+
* const cls = view.findClass("SchemaName:ClassName");
|
|
1395
1457
|
* ```
|
|
1396
1458
|
*/
|
|
1397
1459
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -1411,7 +1473,7 @@ export class IModelDb extends IModel {
|
|
|
1411
1473
|
* @param func The callback to be invoked on each property
|
|
1412
1474
|
* @param includeCustom If true (default), include custom-handled properties in the iteration. Otherwise, skip custom-handled properties.
|
|
1413
1475
|
* @note Custom-handled properties are core properties that have behavior enforced by C++ handlers.
|
|
1414
|
-
* @deprecated in 5.0 - will not be removed until after 2026-06-13.
|
|
1476
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` on the iModel and iterate `view.findClass(classFullName)?.getProperties()` instead.
|
|
1415
1477
|
*
|
|
1416
1478
|
* @example
|
|
1417
1479
|
* ```typescript
|
|
@@ -1421,9 +1483,10 @@ export class IModelDb extends IModel {
|
|
|
1421
1483
|
* }, false);
|
|
1422
1484
|
*
|
|
1423
1485
|
* // Replacement:
|
|
1424
|
-
* await
|
|
1425
|
-
*
|
|
1426
|
-
* },
|
|
1486
|
+
* const view = await imodel.getSchemaView();
|
|
1487
|
+
* for (const property of view.findClass("BisCore:Element")?.getProperties() ?? []) {
|
|
1488
|
+
* console.log(`Property name: ${property.name}, Kind: ${property.kind}`);
|
|
1489
|
+
* }
|
|
1427
1490
|
* ```
|
|
1428
1491
|
*/
|
|
1429
1492
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -1437,7 +1500,7 @@ export class IModelDb extends IModel {
|
|
|
1437
1500
|
* @param func The callback to be invoked on each property
|
|
1438
1501
|
* @param includeCustom If true (default), include custom-handled properties in the iteration. Otherwise, skip custom-handled properties.
|
|
1439
1502
|
* @note Custom-handled properties are core properties that have behavior enforced by C++ handlers.
|
|
1440
|
-
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `
|
|
1503
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `getSchemaView()` on the iModel and iterate `view.findClass(classFullName)?.getProperties()` instead.
|
|
1441
1504
|
*
|
|
1442
1505
|
* @example
|
|
1443
1506
|
* ```typescript
|
|
@@ -1447,9 +1510,10 @@ export class IModelDb extends IModel {
|
|
|
1447
1510
|
* });
|
|
1448
1511
|
*
|
|
1449
1512
|
* // Replacement:
|
|
1450
|
-
*
|
|
1451
|
-
*
|
|
1452
|
-
* });
|
|
1513
|
+
* const view = await imodel.getSchemaView();
|
|
1514
|
+
* for (const property of view.findClass("BisCore:Element")?.getProperties() ?? []) {
|
|
1515
|
+
* console.log(`Property name: ${property.name}, Kind: ${property.kind}`);
|
|
1516
|
+
* }
|
|
1453
1517
|
* ```
|
|
1454
1518
|
*/
|
|
1455
1519
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -2529,9 +2593,9 @@ function processSchemaWriteStatus(status) {
|
|
|
2529
2593
|
*/
|
|
2530
2594
|
getAspects(elementId, aspectClassFullName, excludedClassFullNames) {
|
|
2531
2595
|
if (aspectClassFullName === undefined) {
|
|
2532
|
-
const allAspects = this.runInstanceQuery(`SELECT $ FROM (
|
|
2533
|
-
SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
|
|
2534
|
-
UNION ALL
|
|
2596
|
+
const allAspects = this.runInstanceQuery(`SELECT $ FROM (
|
|
2597
|
+
SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
|
|
2598
|
+
UNION ALL
|
|
2535
2599
|
SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
|
|
2536
2600
|
if (allAspects.length === 0)
|
|
2537
2601
|
Logger.logInfo(BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
|
|
@@ -2551,7 +2615,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2551
2615
|
if (classIdList === undefined) {
|
|
2552
2616
|
const classIds = [];
|
|
2553
2617
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2554
|
-
this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
|
|
2618
|
+
this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
|
|
2555
2619
|
and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name='${fullClassName[0]}')) and SourceECInstanceId != TargetECInstanceId`,
|
|
2556
2620
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2557
2621
|
(statement) => {
|
|
@@ -2568,10 +2632,10 @@ function processSchemaWriteStatus(status) {
|
|
|
2568
2632
|
return [];
|
|
2569
2633
|
}
|
|
2570
2634
|
// Execute an instance query to retrieve all aspects from all the derived classes
|
|
2571
|
-
const aspects = this.runInstanceQuery(`SELECT $ FROM (
|
|
2572
|
-
SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
|
|
2573
|
-
UNION ALL
|
|
2574
|
-
SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
|
|
2635
|
+
const aspects = this.runInstanceQuery(`SELECT $ FROM (
|
|
2636
|
+
SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
|
|
2637
|
+
UNION ALL
|
|
2638
|
+
SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
|
|
2575
2639
|
) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
|
|
2576
2640
|
if (aspects.length === 0)
|
|
2577
2641
|
Logger.logInfo(BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
|
|
@@ -3335,7 +3399,63 @@ export class BriefcaseDb extends IModelDb {
|
|
|
3335
3399
|
async getAllChangesetHealthData() {
|
|
3336
3400
|
return this[_nativeDb].getAllChangesetHealthData();
|
|
3337
3401
|
}
|
|
3338
|
-
/**
|
|
3402
|
+
/**
|
|
3403
|
+
* Whether file-based transactions are enabled for this briefcase.
|
|
3404
|
+
*
|
|
3405
|
+
* When enabled, transaction data is stored in separate temporary `.txn` files rather than in the
|
|
3406
|
+
* briefcase's internal transaction table. This avoids SQLite blob size limits and reduces memory
|
|
3407
|
+
* pressure for very large changesets, at the cost of additional disk I/O.
|
|
3408
|
+
* @see [[enableFileBasedTxns]] to enable, [[disableFileBasedTxns]] to disable.
|
|
3409
|
+
* @internal
|
|
3410
|
+
*/
|
|
3411
|
+
get isFileBasedTxnsEnabled() {
|
|
3412
|
+
return this[_nativeDb].queryLocalValue("fileBasedTxns") === "1";
|
|
3413
|
+
}
|
|
3414
|
+
/**
|
|
3415
|
+
* Enable file-based transactions for this briefcase.
|
|
3416
|
+
* @throws IModelError with [[ChangeSetStatus.HasUncommittedChanges]] if there are unsaved changes.
|
|
3417
|
+
* @throws IModelError with [[ChangeSetStatus.HasLocalChanges]] if there are pending transactions.
|
|
3418
|
+
* @internal
|
|
3419
|
+
*/
|
|
3420
|
+
enableFileBasedTxns() {
|
|
3421
|
+
this._setFileBasedTxnsSetting(true);
|
|
3422
|
+
}
|
|
3423
|
+
/**
|
|
3424
|
+
* Disable file-based transactions for this briefcase, reverting to the default storage mode
|
|
3425
|
+
* (transactions stored within the briefcase's internal transaction table).
|
|
3426
|
+
* @throws IModelError with [[ChangeSetStatus.HasUncommittedChanges]] if there are unsaved changes.
|
|
3427
|
+
* @throws IModelError with [[ChangeSetStatus.HasLocalChanges]] if there are pending transactions.
|
|
3428
|
+
* @internal
|
|
3429
|
+
*/
|
|
3430
|
+
disableFileBasedTxns() {
|
|
3431
|
+
this._setFileBasedTxnsSetting(false);
|
|
3432
|
+
}
|
|
3433
|
+
_setFileBasedTxnsSetting(enabled) {
|
|
3434
|
+
if (this.isFileBasedTxnsEnabled === enabled)
|
|
3435
|
+
return;
|
|
3436
|
+
const nativeDb = this[_nativeDb];
|
|
3437
|
+
if (nativeDb.hasUnsavedChanges())
|
|
3438
|
+
throw new IModelError(ChangeSetStatus.HasUncommittedChanges, "Cannot change file-based transactions setting while there are unsaved changes");
|
|
3439
|
+
if (nativeDb.hasPendingTxns())
|
|
3440
|
+
throw new IModelError(ChangeSetStatus.HasLocalChanges, "Cannot change file-based transactions setting while there are pending transactions");
|
|
3441
|
+
if (enabled)
|
|
3442
|
+
nativeDb.saveLocalValue("fileBasedTxns", "1");
|
|
3443
|
+
else
|
|
3444
|
+
nativeDb.deleteLocalValue("fileBasedTxns");
|
|
3445
|
+
}
|
|
3446
|
+
/**
|
|
3447
|
+
* Revert timeline changes and push the resulting changeset.
|
|
3448
|
+
*
|
|
3449
|
+
* Pulls the latest changes, acquires the schema lock, reverts the inclusive range of
|
|
3450
|
+
* changesets `[toIndex..current]`, and pushes the revert as a new changeset. On failure,
|
|
3451
|
+
* follow the behavior specified by `arg.inCaseOfFailure`, which may discard local changes,
|
|
3452
|
+
* retain local changes, or delete the briefcase.
|
|
3453
|
+
*
|
|
3454
|
+
* @param arg - Arguments specifying the target changeset index, push options, access token, and failure handling behavior.
|
|
3455
|
+
* @throws IModelError with [[ChangeSetStatus.ApplyError]] if `toIndex` is not specified.
|
|
3456
|
+
* @throws IModelError with [[ChangeSetStatus.HasUncommittedChanges]] if there are unsaved changes.
|
|
3457
|
+
* @throws IModelError with [[ChangeSetStatus.HasLocalChanges]] if there are pending transactions.
|
|
3458
|
+
*/
|
|
3339
3459
|
async revertAndPushChanges(arg) {
|
|
3340
3460
|
const nativeDb = this[_nativeDb];
|
|
3341
3461
|
if (arg.toIndex === undefined) {
|
|
@@ -3367,11 +3487,14 @@ export class BriefcaseDb extends IModelDb {
|
|
|
3367
3487
|
if (nativeDb.schemaSyncEnabled()) {
|
|
3368
3488
|
arg.skipSchemaChanges = true;
|
|
3369
3489
|
}
|
|
3490
|
+
// The native side enables file-based txns during revert. Restore the original setting afterward.
|
|
3491
|
+
const wasFileBasedTxnsEnabled = this.isFileBasedTxnsEnabled;
|
|
3492
|
+
const preRevertIndex = this.changeset.index;
|
|
3370
3493
|
try {
|
|
3371
3494
|
await BriefcaseManager.revertTimelineChanges(this, arg);
|
|
3372
|
-
|
|
3495
|
+
nativeDb.saveChanges("Revert changes");
|
|
3373
3496
|
if (!arg.description) {
|
|
3374
|
-
arg.description = `Reverted changes from ${
|
|
3497
|
+
arg.description = `Reverted changes from ${preRevertIndex} to ${arg.toIndex}${arg.skipSchemaChanges ? " (schema changes skipped)" : ""}`;
|
|
3375
3498
|
}
|
|
3376
3499
|
const pushArgs = {
|
|
3377
3500
|
description: arg.description,
|
|
@@ -3386,13 +3509,49 @@ export class BriefcaseDb extends IModelDb {
|
|
|
3386
3509
|
this.clearCaches();
|
|
3387
3510
|
}
|
|
3388
3511
|
catch (err) {
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3512
|
+
const failureAction = arg.inCaseOfFailure ?? "revert";
|
|
3513
|
+
try {
|
|
3514
|
+
switch (failureAction) {
|
|
3515
|
+
case "revert":
|
|
3516
|
+
// Restore the briefcase to its pre-revert state: save any unsaved changes into txns,
|
|
3517
|
+
// reverse all txns, then delete them.
|
|
3518
|
+
nativeDb.saveChanges();
|
|
3519
|
+
if (nativeDb.hasPendingTxns())
|
|
3520
|
+
nativeDb.reverseAll();
|
|
3521
|
+
nativeDb.deleteAllTxns();
|
|
3522
|
+
break;
|
|
3523
|
+
case "delete":
|
|
3524
|
+
// Clear local changes first so lock release can succeed.
|
|
3525
|
+
nativeDb.abandonChanges();
|
|
3526
|
+
nativeDb.deleteAllTxns();
|
|
3527
|
+
if (!arg.retainLocks)
|
|
3528
|
+
await this.locks.releaseAllLocks();
|
|
3529
|
+
const filePath = this.pathName;
|
|
3530
|
+
this.close();
|
|
3531
|
+
await BriefcaseManager.deleteBriefcaseFiles(filePath, arg.accessToken);
|
|
3532
|
+
break;
|
|
3533
|
+
case "retain":
|
|
3534
|
+
// Keep local changes as-is for caller inspection/recovery.
|
|
3535
|
+
nativeDb.saveChanges();
|
|
3536
|
+
break;
|
|
3537
|
+
}
|
|
3538
|
+
}
|
|
3539
|
+
catch (cleanupErr) {
|
|
3540
|
+
Logger.logError(loggerCategory, `Failed to clean up after revert error (action=${failureAction}): ${String(cleanupErr)}`);
|
|
3541
|
+
}
|
|
3542
|
+
if (!arg.retainLocks && this.isOpen) {
|
|
3543
|
+
try {
|
|
3544
|
+
await this.locks.releaseAllLocks();
|
|
3545
|
+
}
|
|
3546
|
+
catch (lockErr) {
|
|
3547
|
+
Logger.logError(loggerCategory, `Failed to release locks after revert failure (action=${failureAction}): ${String(lockErr)}`);
|
|
3548
|
+
}
|
|
3392
3549
|
}
|
|
3550
|
+
throw err;
|
|
3393
3551
|
}
|
|
3394
3552
|
finally {
|
|
3395
|
-
this
|
|
3553
|
+
if (this.isOpen && !wasFileBasedTxnsEnabled && !nativeDb.hasPendingTxns() && !nativeDb.hasUnsavedChanges())
|
|
3554
|
+
this.disableFileBasedTxns();
|
|
3396
3555
|
}
|
|
3397
3556
|
}
|
|
3398
3557
|
/**
|