@itwin/core-backend 5.0.0-dev.98 → 5.0.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 +109 -1
- package/lib/cjs/BackendHubAccess.d.ts +1 -1
- package/lib/cjs/BackendHubAccess.js +1 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BriefcaseManager.d.ts +10 -2
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js +12 -0
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/CatalogDb.d.ts +103 -0
- package/lib/cjs/CatalogDb.d.ts.map +1 -0
- package/lib/cjs/CatalogDb.js +271 -0
- package/lib/cjs/CatalogDb.js.map +1 -0
- package/lib/cjs/Category.d.ts +41 -4
- package/lib/cjs/Category.d.ts.map +1 -1
- package/lib/cjs/Category.js +77 -4
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +12 -5
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +1 -0
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/CheckpointManager.d.ts +12 -10
- package/lib/cjs/CheckpointManager.d.ts.map +1 -1
- package/lib/cjs/CheckpointManager.js +17 -41
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.d.ts +1 -1
- package/lib/cjs/ClassRegistry.js +1 -1
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts +104 -20
- package/lib/cjs/CloudSqlite.d.ts.map +1 -1
- package/lib/cjs/CloudSqlite.js +157 -46
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeSpecs.d.ts +1 -1
- package/lib/cjs/CodeSpecs.js +1 -1
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/DisplayStyle.d.ts +9 -4
- package/lib/cjs/DisplayStyle.d.ts.map +1 -1
- package/lib/cjs/DisplayStyle.js +30 -3
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.d.ts +38 -2
- package/lib/cjs/ECDb.d.ts.map +1 -1
- package/lib/cjs/ECDb.js +82 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.d.ts +1 -1
- package/lib/cjs/ECSchemaXmlContext.js +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlStatement.d.ts +182 -3
- package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
- package/lib/cjs/ECSqlStatement.js +225 -6
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.d.ts +217 -61
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +561 -60
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.d.ts +8 -8
- package/lib/cjs/ElementAspect.d.ts.map +1 -1
- package/lib/cjs/ElementAspect.js +9 -8
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
- package/lib/cjs/ElementTreeWalker.js +4 -0
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.d.ts +52 -8
- package/lib/cjs/Entity.d.ts.map +1 -1
- package/lib/cjs/Entity.js +63 -5
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/ExportGraphics.d.ts +54 -8
- package/lib/cjs/ExportGraphics.d.ts.map +1 -1
- package/lib/cjs/ExportGraphics.js +158 -59
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +42 -50
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +189 -90
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
- package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +16 -3
- package/lib/cjs/IModelHost.d.ts.map +1 -1
- package/lib/cjs/IModelHost.js +9 -3
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/Material.d.ts +20 -1
- package/lib/cjs/Material.d.ts.map +1 -1
- package/lib/cjs/Material.js +30 -1
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.d.ts +64 -28
- package/lib/cjs/Model.d.ts.map +1 -1
- package/lib/cjs/Model.js +115 -27
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeHost.d.ts.map +1 -1
- package/lib/cjs/NativeHost.js +4 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +2 -0
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/SQLiteDb.d.ts +1 -1
- package/lib/cjs/SQLiteDb.d.ts.map +1 -1
- package/lib/cjs/SQLiteDb.js +6 -5
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/SqliteStatement.d.ts +1 -1
- package/lib/cjs/SqliteStatement.d.ts.map +1 -1
- package/lib/cjs/SqliteStatement.js +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/TextAnnotationElement.d.ts +2 -2
- package/lib/cjs/TextAnnotationElement.js +2 -2
- package/lib/cjs/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/Texture.d.ts +1 -1
- package/lib/cjs/Texture.js +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +4 -4
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +2 -1
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +114 -14
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js +222 -14
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.js +3 -3
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.d.ts.map +1 -1
- package/lib/cjs/ViewStore.js +29 -28
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/core-backend.d.ts +1 -1
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +21 -1
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js +6 -4
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/ElementLRUCache.d.ts +28 -0
- package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -0
- package/lib/cjs/internal/ElementLRUCache.js +120 -0
- package/lib/cjs/internal/ElementLRUCache.js.map +1 -0
- package/lib/cjs/{HubMock.d.ts → internal/HubMock.d.ts} +4 -5
- package/lib/cjs/internal/HubMock.d.ts.map +1 -0
- package/lib/cjs/{HubMock.js → internal/HubMock.js} +22 -11
- package/lib/cjs/internal/HubMock.js.map +1 -0
- package/lib/cjs/internal/Symbols.d.ts +2 -2
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +3 -3
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +2 -16
- package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js +35 -104
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +4 -3
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Workspace.d.ts +6 -13
- package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.d.ts +2 -7
- package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.d.ts +1 -1
- package/lib/esm/BackendHubAccess.js +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/BriefcaseManager.d.ts +10 -2
- package/lib/esm/BriefcaseManager.d.ts.map +1 -1
- package/lib/esm/BriefcaseManager.js +12 -0
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/CatalogDb.d.ts +103 -0
- package/lib/esm/CatalogDb.d.ts.map +1 -0
- package/lib/esm/CatalogDb.js +267 -0
- package/lib/esm/CatalogDb.js.map +1 -0
- package/lib/esm/Category.d.ts +41 -4
- package/lib/esm/Category.d.ts.map +1 -1
- package/lib/esm/Category.js +77 -4
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.d.ts.map +1 -1
- package/lib/esm/ChangeSummaryManager.js +12 -5
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +1 -0
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/CheckpointManager.d.ts +12 -10
- package/lib/esm/CheckpointManager.d.ts.map +1 -1
- package/lib/esm/CheckpointManager.js +18 -42
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/ClassRegistry.d.ts +1 -1
- package/lib/esm/ClassRegistry.js +1 -1
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/CloudSqlite.d.ts +104 -20
- package/lib/esm/CloudSqlite.d.ts.map +1 -1
- package/lib/esm/CloudSqlite.js +157 -46
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeSpecs.d.ts +1 -1
- package/lib/esm/CodeSpecs.js +1 -1
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/DisplayStyle.d.ts +9 -4
- package/lib/esm/DisplayStyle.d.ts.map +1 -1
- package/lib/esm/DisplayStyle.js +30 -3
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/ECDb.d.ts +38 -2
- package/lib/esm/ECDb.d.ts.map +1 -1
- package/lib/esm/ECDb.js +83 -2
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.d.ts +1 -1
- package/lib/esm/ECSchemaXmlContext.js +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/ECSqlStatement.d.ts +182 -3
- package/lib/esm/ECSqlStatement.d.ts.map +1 -1
- package/lib/esm/ECSqlStatement.js +223 -5
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/Element.d.ts +217 -61
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +564 -63
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.d.ts +8 -8
- package/lib/esm/ElementAspect.d.ts.map +1 -1
- package/lib/esm/ElementAspect.js +9 -8
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
- package/lib/esm/ElementTreeWalker.js +4 -0
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/Entity.d.ts +52 -8
- package/lib/esm/Entity.d.ts.map +1 -1
- package/lib/esm/Entity.js +63 -5
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/ExportGraphics.d.ts +54 -8
- package/lib/esm/ExportGraphics.d.ts.map +1 -1
- package/lib/esm/ExportGraphics.js +156 -58
- package/lib/esm/ExportGraphics.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +42 -50
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +192 -93
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.d.ts +1 -1
- package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
- package/lib/esm/IModelElementCloneContext.js +1 -1
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.d.ts +16 -3
- package/lib/esm/IModelHost.d.ts.map +1 -1
- package/lib/esm/IModelHost.js +9 -3
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/Material.d.ts +20 -1
- package/lib/esm/Material.d.ts.map +1 -1
- package/lib/esm/Material.js +31 -2
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.d.ts +64 -28
- package/lib/esm/Model.d.ts.map +1 -1
- package/lib/esm/Model.js +116 -28
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/NativeHost.d.ts.map +1 -1
- package/lib/esm/NativeHost.js +4 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +2 -0
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/SQLiteDb.d.ts +1 -1
- package/lib/esm/SQLiteDb.d.ts.map +1 -1
- package/lib/esm/SQLiteDb.js +6 -5
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/SqliteStatement.d.ts +1 -1
- package/lib/esm/SqliteStatement.d.ts.map +1 -1
- package/lib/esm/SqliteStatement.js +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/TextAnnotationElement.d.ts +2 -2
- package/lib/esm/TextAnnotationElement.js +2 -2
- package/lib/esm/TextAnnotationElement.js.map +1 -1
- package/lib/esm/Texture.d.ts +1 -1
- package/lib/esm/Texture.js +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +4 -4
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +2 -1
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.d.ts +114 -14
- package/lib/esm/ViewDefinition.d.ts.map +1 -1
- package/lib/esm/ViewDefinition.js +223 -15
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/ViewStateHydrator.js +3 -3
- package/lib/esm/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.d.ts.map +1 -1
- package/lib/esm/ViewStore.js +30 -29
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/core-backend.d.ts +1 -1
- package/lib/esm/core-backend.d.ts.map +1 -1
- package/lib/esm/core-backend.js +21 -1
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js +7 -5
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/ElementLRUCache.d.ts +28 -0
- package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -0
- package/lib/esm/internal/ElementLRUCache.js +116 -0
- package/lib/esm/internal/ElementLRUCache.js.map +1 -0
- package/lib/esm/{HubMock.d.ts → internal/HubMock.d.ts} +4 -5
- package/lib/esm/internal/HubMock.d.ts.map +1 -0
- package/lib/esm/{HubMock.js → internal/HubMock.js} +22 -11
- package/lib/esm/internal/HubMock.js.map +1 -0
- package/lib/esm/internal/Symbols.d.ts +2 -2
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +2 -2
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +2 -16
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js +36 -100
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js +4 -3
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.d.ts +2 -0
- package/lib/esm/test/ElementLRUCache.test.d.ts.map +1 -0
- package/lib/esm/test/ElementLRUCache.test.js +212 -0
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -0
- package/lib/esm/test/IModelTestUtils.d.ts +6 -2
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
- package/lib/esm/test/IModelTestUtils.js +37 -6
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/PrintElementTree.js +1 -0
- package/lib/esm/test/PrintElementTree.js.map +1 -1
- package/lib/esm/test/SchemaUtils.test.js +2 -0
- package/lib/esm/test/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js +1 -1
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestUtils.d.ts +1 -1
- package/lib/esm/test/TestUtils.d.ts.map +1 -1
- package/lib/esm/test/TestUtils.js +1 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +12 -1
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js +4 -4
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +1 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +6 -23
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +253 -163
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +5 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +10 -0
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js +4 -3
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js +1 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +65 -13
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js +1 -0
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +2 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +58 -41
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js +49 -1
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js +1 -1
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.d.ts +2 -0
- package/lib/esm/test/standalone/IModelLimits.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/IModelLimits.test.js +103 -0
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -0
- package/lib/esm/test/standalone/IModelWrite.test.js +8 -1
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js +1 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js +25 -5
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js +4 -3
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/workspace/Workspace.d.ts +6 -13
- package/lib/esm/workspace/Workspace.d.ts.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.d.ts +2 -7
- package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +13 -13
- package/lib/cjs/HubMock.d.ts.map +0 -1
- package/lib/cjs/HubMock.js.map +0 -1
- package/lib/esm/HubMock.d.ts.map +0 -1
- package/lib/esm/HubMock.js.map +0 -1
- package/lib/esm/test/CloudSqliteMock.d.ts +0 -37
- package/lib/esm/test/CloudSqliteMock.d.ts.map +0 -1
- package/lib/esm/test/CloudSqliteMock.js +0 -117
- package/lib/esm/test/CloudSqliteMock.js.map +0 -1
package/lib/esm/IModelDb.js
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
import * as fs from "fs";
|
|
9
9
|
import { join } from "path";
|
|
10
10
|
import * as touch from "touch";
|
|
11
|
-
import { assert, BeEvent, BentleyStatus, ChangeSetStatus, DbChangeStage, DbConflictCause, DbConflictResolution, DbResult, Guid, Id64, IModelStatus, JsonUtils, Logger, LogLevel,
|
|
12
|
-
import { BriefcaseIdValue, Code, DomainOptions, ECJsNames, ECSqlReader, EntityMetaData, FontMap, IModel, IModelError, IModelNotFoundResponse, ProfileOptions, QueryRowFormat, SchemaState, ViewStoreRpc
|
|
11
|
+
import { assert, BeEvent, BentleyStatus, ChangeSetStatus, DbChangeStage, DbConflictCause, DbConflictResolution, DbResult, Guid, Id64, IModelStatus, JsonUtils, Logger, LogLevel, LRUMap, OpenMode } from "@itwin/core-bentley";
|
|
12
|
+
import { BriefcaseIdValue, Code, DomainOptions, ECJsNames, ECSqlReader, EntityMetaData, FontMap, IModel, IModelError, IModelNotFoundResponse, ProfileOptions, QueryRowFormat, SchemaState, ViewStoreRpc } from "@itwin/core-common";
|
|
13
13
|
import { Range2d, Range3d } from "@itwin/core-geometry";
|
|
14
14
|
import { BackendLoggerCategory } from "./BackendLoggerCategory";
|
|
15
15
|
import { BriefcaseManager } from "./BriefcaseManager";
|
|
@@ -44,9 +44,10 @@ import { SettingsImpl } from "./internal/workspace/SettingsImpl";
|
|
|
44
44
|
import { IModelNative } from "./internal/NativePlatform";
|
|
45
45
|
import { createNoOpLockControl } from "./internal/NoLocks";
|
|
46
46
|
import { createIModelDbFonts } from "./internal/IModelDbFontsImpl";
|
|
47
|
-
import { _close, _hubAccess, _nativeDb, _releaseAllLocks } from "./internal/Symbols";
|
|
47
|
+
import { _cache, _close, _hubAccess, _nativeDb, _releaseAllLocks } from "./internal/Symbols";
|
|
48
48
|
import { SchemaContext, SchemaJsonLocater } from "@itwin/ecschema-metadata";
|
|
49
49
|
import { SchemaMap } from "./Schema";
|
|
50
|
+
import { ElementLRUCache } from "./internal/ElementLRUCache";
|
|
50
51
|
// spell:ignore fontid fontmap
|
|
51
52
|
const loggerCategory = BackendLoggerCategory.IModelDb;
|
|
52
53
|
/** @internal */
|
|
@@ -97,6 +98,7 @@ export class IModelDb extends IModel {
|
|
|
97
98
|
/** @beta */
|
|
98
99
|
channels = createChannelControl(this);
|
|
99
100
|
_relationships;
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
100
102
|
_statementCache = new StatementCache();
|
|
101
103
|
_sqliteStatementCache = new StatementCache();
|
|
102
104
|
_codeSpecs;
|
|
@@ -105,7 +107,7 @@ export class IModelDb extends IModel {
|
|
|
105
107
|
_jsClassMap;
|
|
106
108
|
_schemaMap;
|
|
107
109
|
_schemaContext;
|
|
108
|
-
/** @deprecated in 5.0.0. Use [[fonts]]. */
|
|
110
|
+
/** @deprecated in 5.0.0 - will not be removed until after 2026-06-13. Use [[fonts]]. */
|
|
109
111
|
_fontMap; // eslint-disable-line @typescript-eslint/no-deprecated
|
|
110
112
|
_fonts = createIModelDbFonts(this);
|
|
111
113
|
_workspace;
|
|
@@ -132,6 +134,13 @@ export class IModelDb extends IModel {
|
|
|
132
134
|
this._workspace = constructWorkspace(new IModelSettings());
|
|
133
135
|
return this._workspace;
|
|
134
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* get the cloud container for this iModel, if it was opened from one
|
|
139
|
+
* @beta
|
|
140
|
+
*/
|
|
141
|
+
get cloudContainer() {
|
|
142
|
+
return this[_nativeDb].cloudContainer;
|
|
143
|
+
}
|
|
135
144
|
/** Acquire the exclusive schema lock on this iModel.
|
|
136
145
|
* @note: To acquire the schema lock, all other briefcases must first release *all* their locks. No other briefcases
|
|
137
146
|
* will be able to acquire *any* locks while the schema lock is held.
|
|
@@ -154,7 +163,7 @@ export class IModelDb extends IModel {
|
|
|
154
163
|
restartDefaultTxn() {
|
|
155
164
|
this[_nativeDb].restartDefaultTxn();
|
|
156
165
|
}
|
|
157
|
-
/** @deprecated in 5.0.0. Use [[fonts]]. */
|
|
166
|
+
/** @deprecated in 5.0.0 - will not be removed until after 2026-06-13. Use [[fonts]]. */
|
|
158
167
|
get fontMap() {
|
|
159
168
|
return this._fontMap ?? (this._fontMap = new FontMap(this[_nativeDb].readFontMap())); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
160
169
|
}
|
|
@@ -331,8 +340,11 @@ export class IModelDb extends IModel {
|
|
|
331
340
|
* @returns the value returned by `callback`.
|
|
332
341
|
* @see [[withStatement]]
|
|
333
342
|
* @public
|
|
343
|
+
* @deprecated in 4.11 - will not be removed until after 2026-06-13. Use [[createQueryReader]] instead.
|
|
334
344
|
*/
|
|
345
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
335
346
|
withPreparedStatement(ecsql, callback, logErrors = true) {
|
|
347
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
336
348
|
const stmt = this._statementCache.findAndRemove(ecsql) ?? this.prepareStatement(ecsql, logErrors);
|
|
337
349
|
const release = () => this._statementCache.addOrDispose(stmt);
|
|
338
350
|
try {
|
|
@@ -360,8 +372,11 @@ export class IModelDb extends IModel {
|
|
|
360
372
|
* @returns the value returned by `callback`.
|
|
361
373
|
* @see [[withPreparedStatement]]
|
|
362
374
|
* @public
|
|
375
|
+
* @deprecated in 4.11 - will not be removed until after 2026-06-13. Use [[createQueryReader]] instead.
|
|
363
376
|
*/
|
|
377
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
364
378
|
withStatement(ecsql, callback, logErrors = true) {
|
|
379
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
365
380
|
const stmt = this.prepareStatement(ecsql, logErrors);
|
|
366
381
|
const release = () => stmt[Symbol.dispose]();
|
|
367
382
|
try {
|
|
@@ -539,6 +554,7 @@ export class IModelDb extends IModel {
|
|
|
539
554
|
if (typeof params.offset === "number" && params.offset > 0)
|
|
540
555
|
sql += ` OFFSET ${params.offset}`;
|
|
541
556
|
const ids = new Set();
|
|
557
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
542
558
|
this.withPreparedStatement(sql, (stmt) => {
|
|
543
559
|
if (params.bindings)
|
|
544
560
|
stmt.bindValues(params.bindings);
|
|
@@ -561,6 +577,8 @@ export class IModelDb extends IModel {
|
|
|
561
577
|
this._jsClassMap = undefined;
|
|
562
578
|
this._schemaMap = undefined;
|
|
563
579
|
this._schemaContext = undefined;
|
|
580
|
+
this.elements[_cache].clear();
|
|
581
|
+
this.models[_cache].clear();
|
|
564
582
|
}
|
|
565
583
|
/** Update the project extents for this iModel.
|
|
566
584
|
* <p><em>Example:</em>
|
|
@@ -616,6 +634,7 @@ export class IModelDb extends IModel {
|
|
|
616
634
|
* @note This will not delete Txns that have already been saved, even if they have not yet been pushed.
|
|
617
635
|
*/
|
|
618
636
|
abandonChanges() {
|
|
637
|
+
this.clearCaches();
|
|
619
638
|
this[_nativeDb].abandonChanges();
|
|
620
639
|
}
|
|
621
640
|
/**
|
|
@@ -629,11 +648,14 @@ export class IModelDb extends IModel {
|
|
|
629
648
|
performCheckpoint() {
|
|
630
649
|
if (!this.isReadonly) {
|
|
631
650
|
this.saveChanges();
|
|
651
|
+
this.clearCaches();
|
|
652
|
+
this[_nativeDb].concurrentQueryShutdown();
|
|
653
|
+
this[_nativeDb].clearECDbCache();
|
|
632
654
|
this[_nativeDb].performCheckpoint();
|
|
633
655
|
}
|
|
634
656
|
}
|
|
635
657
|
/** @internal
|
|
636
|
-
* @deprecated in 4.8. Use `txns.reverseTxns`.
|
|
658
|
+
* @deprecated in 4.8 - will not be removed until after 2026-06-13. Use `txns.reverseTxns`.
|
|
637
659
|
*/
|
|
638
660
|
reverseTxns(numOperations) {
|
|
639
661
|
return this[_nativeDb].reverseTxns(numOperations);
|
|
@@ -859,7 +881,7 @@ export class IModelDb extends IModel {
|
|
|
859
881
|
}
|
|
860
882
|
/** The registry of entity metadata for this iModel.
|
|
861
883
|
* @internal
|
|
862
|
-
* @deprecated in 5.0. Please use `schemaContext` from the `iModel` instead.
|
|
884
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Please use `schemaContext` from the `iModel` instead.
|
|
863
885
|
*
|
|
864
886
|
* @example
|
|
865
887
|
* ```typescript
|
|
@@ -895,7 +917,7 @@ export class IModelDb extends IModel {
|
|
|
895
917
|
}
|
|
896
918
|
/**
|
|
897
919
|
* Gets the context that allows accessing the metadata (ecschema-metadata package) of this iModel
|
|
898
|
-
* @
|
|
920
|
+
* @public @preview
|
|
899
921
|
*/
|
|
900
922
|
get schemaContext() {
|
|
901
923
|
if (this._schemaContext === undefined) {
|
|
@@ -919,8 +941,11 @@ export class IModelDb extends IModel {
|
|
|
919
941
|
* @param sql The ECSQL statement to prepare
|
|
920
942
|
* @param logErrors Determines if error will be logged if statement fail to prepare
|
|
921
943
|
* @throws [[IModelError]] if there is a problem preparing the statement.
|
|
944
|
+
* @deprecated in 4.11 - will not be removed until after 2026-06-13. Use [IModelDb.createQueryReader]($backend) or [ECDb.createQueryReader]($backend) to query.
|
|
922
945
|
*/
|
|
946
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
923
947
|
prepareStatement(sql, logErrors = true) {
|
|
948
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
924
949
|
const stmt = new ECSqlStatement();
|
|
925
950
|
stmt.prepare(this[_nativeDb], sql, logErrors);
|
|
926
951
|
return stmt;
|
|
@@ -928,8 +953,11 @@ export class IModelDb extends IModel {
|
|
|
928
953
|
/** Prepare an ECSQL statement.
|
|
929
954
|
* @param sql The ECSQL statement to prepare
|
|
930
955
|
* @returns `undefined` if there is a problem preparing the statement.
|
|
956
|
+
* @deprecated in 4.11 - will not be removed until after 2026-06-13. Use [IModelDb.createQueryReader]($backend) or [ECDb.createQueryReader]($backend) to query.
|
|
931
957
|
*/
|
|
958
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
932
959
|
tryPrepareStatement(sql) {
|
|
960
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
933
961
|
const statement = new ECSqlStatement();
|
|
934
962
|
const result = statement.tryPrepare(this[_nativeDb], sql);
|
|
935
963
|
return DbResult.BE_SQLITE_OK === result.status ? statement : undefined;
|
|
@@ -955,9 +983,27 @@ export class IModelDb extends IModel {
|
|
|
955
983
|
return ClassRegistry.getClass(classFullName, this);
|
|
956
984
|
}
|
|
957
985
|
}
|
|
986
|
+
/** Constructs a ResolveInstanceKeyArgs from given parameters
|
|
987
|
+
* @throws [[IModelError]] if the combination of supplied parameters is invalid.
|
|
988
|
+
* @internal
|
|
989
|
+
*/
|
|
990
|
+
getInstanceArgs(instanceId, baseClassName, federationGuid, code) {
|
|
991
|
+
if (instanceId && baseClassName) {
|
|
992
|
+
return { partialKey: { id: instanceId, baseClassName } };
|
|
993
|
+
}
|
|
994
|
+
else if (federationGuid) {
|
|
995
|
+
return { federationGuid };
|
|
996
|
+
}
|
|
997
|
+
else if (code) {
|
|
998
|
+
return { code };
|
|
999
|
+
}
|
|
1000
|
+
else {
|
|
1001
|
+
throw new IModelError(IModelStatus.InvalidId, "Either instanceId and baseClassName or federationGuid or code must be specified");
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
958
1004
|
/** Get metadata for a class. This method will load the metadata from the iModel into the cache as a side-effect, if necessary.
|
|
959
1005
|
* @throws [[IModelError]] if the metadata cannot be found nor loaded.
|
|
960
|
-
* @deprecated in 5.0. Please use `getSchemaItem` from `SchemaContext` class instead.
|
|
1006
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Please use `getSchemaItem` from `SchemaContext` class instead.
|
|
961
1007
|
*
|
|
962
1008
|
* @example
|
|
963
1009
|
* * ```typescript
|
|
@@ -983,7 +1029,7 @@ export class IModelDb extends IModel {
|
|
|
983
1029
|
return metadata;
|
|
984
1030
|
}
|
|
985
1031
|
/** Identical to [[getMetaData]], except it returns `undefined` instead of throwing an error if the metadata cannot be found nor loaded.
|
|
986
|
-
* @deprecated in 5.0. Please use `getSchemaItem` from `SchemaContext` class instead.
|
|
1032
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Please use `getSchemaItem` from `SchemaContext` class instead.
|
|
987
1033
|
*
|
|
988
1034
|
* @example
|
|
989
1035
|
* * ```typescript
|
|
@@ -1011,7 +1057,7 @@ export class IModelDb extends IModel {
|
|
|
1011
1057
|
* @param func The callback to be invoked on each property
|
|
1012
1058
|
* @param includeCustom If true (default), include custom-handled properties in the iteration. Otherwise, skip custom-handled properties.
|
|
1013
1059
|
* @note Custom-handled properties are core properties that have behavior enforced by C++ handlers.
|
|
1014
|
-
* @deprecated in 5.0. Please use `forEachProperty` instead.
|
|
1060
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Please use `forEachProperty` instead.
|
|
1015
1061
|
*
|
|
1016
1062
|
* @example
|
|
1017
1063
|
* ```typescript
|
|
@@ -1037,7 +1083,7 @@ export class IModelDb extends IModel {
|
|
|
1037
1083
|
* @param func The callback to be invoked on each property
|
|
1038
1084
|
* @param includeCustom If true (default), include custom-handled properties in the iteration. Otherwise, skip custom-handled properties.
|
|
1039
1085
|
* @note Custom-handled properties are core properties that have behavior enforced by C++ handlers.
|
|
1040
|
-
* @deprecated in 5.0. Use `forEachProperty` from `SchemaContext` class instead.
|
|
1086
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `forEachProperty` from `SchemaContext` class instead.
|
|
1041
1087
|
*
|
|
1042
1088
|
* @example
|
|
1043
1089
|
* ```typescript
|
|
@@ -1067,7 +1113,7 @@ export class IModelDb extends IModel {
|
|
|
1067
1113
|
}
|
|
1068
1114
|
/**
|
|
1069
1115
|
* @internal
|
|
1070
|
-
* @deprecated in 5.0. Please use `schemaContext` from `iModel` instead to get metadata.
|
|
1116
|
+
* @deprecated in 5.0 - will not be removed until after 2026-06-13. Please use `schemaContext` from `iModel` instead to get metadata.
|
|
1071
1117
|
*/
|
|
1072
1118
|
loadMetaData(classFullName) {
|
|
1073
1119
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -1112,6 +1158,7 @@ export class IModelDb extends IModel {
|
|
|
1112
1158
|
*/
|
|
1113
1159
|
querySchemaVersion(schemaName) {
|
|
1114
1160
|
const sql = `SELECT VersionMajor,VersionWrite,VersionMinor FROM ECDbMeta.ECSchemaDef WHERE Name=:schemaName LIMIT 1`;
|
|
1161
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1115
1162
|
return this.withPreparedStatement(sql, (statement) => {
|
|
1116
1163
|
statement.bindString("schemaName", schemaName);
|
|
1117
1164
|
if (DbResult.BE_SQLITE_ROW === statement.step()) {
|
|
@@ -1431,11 +1478,13 @@ function processSchemaWriteStatus(status) {
|
|
|
1431
1478
|
/** @public */
|
|
1432
1479
|
(function (IModelDb) {
|
|
1433
1480
|
/** The collection of models in an [[IModelDb]].
|
|
1434
|
-
* @public
|
|
1481
|
+
* @public @preview
|
|
1435
1482
|
*/
|
|
1436
1483
|
class Models {
|
|
1437
1484
|
_iModel;
|
|
1438
1485
|
/** @internal */
|
|
1486
|
+
[_cache] = new LRUMap(500);
|
|
1487
|
+
/** @internal */
|
|
1439
1488
|
constructor(_iModel) {
|
|
1440
1489
|
this._iModel = _iModel;
|
|
1441
1490
|
}
|
|
@@ -1445,7 +1494,10 @@ function processSchemaWriteStatus(status) {
|
|
|
1445
1494
|
* @see tryGetModelProps
|
|
1446
1495
|
*/
|
|
1447
1496
|
getModelProps(id) {
|
|
1448
|
-
|
|
1497
|
+
const model = this.tryGetModelProps(id);
|
|
1498
|
+
if (undefined === model)
|
|
1499
|
+
throw new IModelError(IModelStatus.NotFound, `Model=${id}`);
|
|
1500
|
+
return model;
|
|
1449
1501
|
}
|
|
1450
1502
|
/** Get the ModelProps with the specified identifier.
|
|
1451
1503
|
* @param modelId The Model identifier.
|
|
@@ -1455,7 +1507,25 @@ function processSchemaWriteStatus(status) {
|
|
|
1455
1507
|
* @see getModelProps
|
|
1456
1508
|
*/
|
|
1457
1509
|
tryGetModelProps(id) {
|
|
1458
|
-
|
|
1510
|
+
try {
|
|
1511
|
+
if (IModelHost.configuration?.disableThinnedNativeInstanceWorkflow) {
|
|
1512
|
+
return this._iModel[_nativeDb].getModel({ id });
|
|
1513
|
+
}
|
|
1514
|
+
const cachedMdl = this[_cache].get(id);
|
|
1515
|
+
if (cachedMdl) {
|
|
1516
|
+
return cachedMdl;
|
|
1517
|
+
}
|
|
1518
|
+
const options = { useJsNames: true };
|
|
1519
|
+
const instanceKey = this.resolveModelKey({ id });
|
|
1520
|
+
const rawInstance = this._iModel[_nativeDb].readInstance(instanceKey, options);
|
|
1521
|
+
const classDef = this._iModel.getJsClass(rawInstance.classFullName);
|
|
1522
|
+
const modelProps = classDef.deserialize({ row: rawInstance, iModel: this._iModel });
|
|
1523
|
+
this[_cache].set(id, modelProps);
|
|
1524
|
+
return modelProps;
|
|
1525
|
+
}
|
|
1526
|
+
catch {
|
|
1527
|
+
return undefined;
|
|
1528
|
+
}
|
|
1459
1529
|
}
|
|
1460
1530
|
/** Query for the last modified time for a [[Model]].
|
|
1461
1531
|
* @param modelId The Id of the model.
|
|
@@ -1463,6 +1533,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1463
1533
|
*/
|
|
1464
1534
|
queryLastModifiedTime(modelId) {
|
|
1465
1535
|
const sql = `SELECT LastMod FROM ${Model.classFullName} WHERE ECInstanceId=:modelId`;
|
|
1536
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1466
1537
|
return this._iModel.withPreparedStatement(sql, (statement) => {
|
|
1467
1538
|
statement.bindId("modelId", modelId);
|
|
1468
1539
|
if (DbResult.BE_SQLITE_ROW === statement.step()) {
|
|
@@ -1501,32 +1572,22 @@ function processSchemaWriteStatus(status) {
|
|
|
1501
1572
|
return model; // modelClass was not specified, cannot call instanceof to validate
|
|
1502
1573
|
return model instanceof modelClass ? model : undefined;
|
|
1503
1574
|
}
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
* @internal
|
|
1510
|
-
*/
|
|
1511
|
-
getModelJson(modelIdArg) {
|
|
1512
|
-
const modelJson = this.tryGetModelJson(modelIdArg);
|
|
1513
|
-
if (undefined === modelJson) {
|
|
1514
|
-
throw new IModelError(IModelStatus.NotFound, `Model=(id: ${modelIdArg.id}, code: ${modelIdArg.code})`);
|
|
1575
|
+
resolveModelKey(modelIdArg) {
|
|
1576
|
+
const baseClassName = "BisCore:Model";
|
|
1577
|
+
let args;
|
|
1578
|
+
if (modelIdArg.id) {
|
|
1579
|
+
args = { partialKey: { id: modelIdArg.id, baseClassName } };
|
|
1515
1580
|
}
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
* @see getModelJson
|
|
1522
|
-
*/
|
|
1523
|
-
tryGetModelJson(modelIdArg) {
|
|
1524
|
-
try {
|
|
1525
|
-
return this._iModel[_nativeDb].getModel(modelIdArg);
|
|
1581
|
+
else if (modelIdArg.code) {
|
|
1582
|
+
const modelId = this._iModel.elements.getElementProps({ code: modelIdArg.code }).id;
|
|
1583
|
+
if (!modelId)
|
|
1584
|
+
throw new IModelError(IModelStatus.NotFound, `Model not found with code: [spec:${modelIdArg.code.spec}, scope:${modelIdArg.code.scope}, value:${modelIdArg.code.value}])`);
|
|
1585
|
+
args = { partialKey: { id: modelId, baseClassName } };
|
|
1526
1586
|
}
|
|
1527
|
-
|
|
1528
|
-
|
|
1587
|
+
else {
|
|
1588
|
+
throw new IModelError(IModelStatus.InvalidId, `Invalid model identifier: ${JSON.stringify(modelIdArg)}`);
|
|
1529
1589
|
}
|
|
1590
|
+
return this._iModel[_nativeDb].resolveInstanceKey(args);
|
|
1530
1591
|
}
|
|
1531
1592
|
/** Get the sub-model of the specified Element.
|
|
1532
1593
|
* See [[IModelDb.Elements.queryElementIdByCode]] for more on how to find an element by Code.
|
|
@@ -1579,6 +1640,8 @@ function processSchemaWriteStatus(status) {
|
|
|
1579
1640
|
*/
|
|
1580
1641
|
updateModel(props) {
|
|
1581
1642
|
try {
|
|
1643
|
+
if (props.id)
|
|
1644
|
+
this[_cache].delete(props.id);
|
|
1582
1645
|
this._iModel[_nativeDb].updateModel(props);
|
|
1583
1646
|
}
|
|
1584
1647
|
catch (err) {
|
|
@@ -1595,6 +1658,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1595
1658
|
* @see [[TxnManager.onModelGeometryChanged]] for the event emitted in response to such a change.
|
|
1596
1659
|
*/
|
|
1597
1660
|
updateGeometryGuid(modelId) {
|
|
1661
|
+
this._iModel.models[_cache].delete(modelId);
|
|
1598
1662
|
const error = this._iModel[_nativeDb].updateModelGeometryGuid(modelId);
|
|
1599
1663
|
if (error !== IModelStatus.Success)
|
|
1600
1664
|
throw new IModelError(error, `updating geometry guid for model ${modelId}`);
|
|
@@ -1606,6 +1670,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1606
1670
|
deleteModel(ids) {
|
|
1607
1671
|
Id64.toIdSet(ids).forEach((id) => {
|
|
1608
1672
|
try {
|
|
1673
|
+
this[_cache].delete(id);
|
|
1609
1674
|
this._iModel[_nativeDb].deleteModel(id);
|
|
1610
1675
|
}
|
|
1611
1676
|
catch (err) {
|
|
@@ -1639,11 +1704,13 @@ function processSchemaWriteStatus(status) {
|
|
|
1639
1704
|
}
|
|
1640
1705
|
IModelDb.Models = Models;
|
|
1641
1706
|
/** The collection of elements in an [[IModelDb]].
|
|
1642
|
-
* @public
|
|
1707
|
+
* @public @preview
|
|
1643
1708
|
*/
|
|
1644
1709
|
class Elements {
|
|
1645
1710
|
_iModel;
|
|
1646
1711
|
/** @internal */
|
|
1712
|
+
[_cache] = new ElementLRUCache();
|
|
1713
|
+
/** @internal */
|
|
1647
1714
|
constructor(_iModel) {
|
|
1648
1715
|
this._iModel = _iModel;
|
|
1649
1716
|
}
|
|
@@ -1659,50 +1726,40 @@ function processSchemaWriteStatus(status) {
|
|
|
1659
1726
|
return !stmt.nextRow() ? undefined : stmt.getValueId(0);
|
|
1660
1727
|
}) : undefined;
|
|
1661
1728
|
}
|
|
1662
|
-
/** Read element data from the iModel as JSON
|
|
1663
|
-
* @param elementIdArg a json string with the identity of the element to load. Must have one of "id", "federationGuid", or "code".
|
|
1664
|
-
* @returns The JSON properties of the element.
|
|
1665
|
-
* @throws [[IModelError]] if the element is not found or cannot be loaded.
|
|
1666
|
-
* @see tryGetElementJson
|
|
1667
|
-
* @internal
|
|
1668
|
-
*/
|
|
1669
|
-
getElementJson(elementId) {
|
|
1670
|
-
const elementProps = this.tryGetElementJson(elementId);
|
|
1671
|
-
if (undefined === elementProps)
|
|
1672
|
-
throw new IModelError(IModelStatus.NotFound, `reading element={id: ${elementId.id} federationGuid: ${elementId.federationGuid}, code: ${elementId.code}}`);
|
|
1673
|
-
return elementProps;
|
|
1674
|
-
}
|
|
1675
|
-
/** Read element data from the iModel as JSON
|
|
1676
|
-
* @param loadProps - a json string with the identity of the element to load. Must have one of "id", "federationGuid", or "code".
|
|
1677
|
-
* @returns The JSON properties of the element or `undefined` if the element is not found.
|
|
1678
|
-
* @throws [[IModelError]] if the element exists, but cannot be loaded.
|
|
1679
|
-
* @see getElementJson
|
|
1680
|
-
*/
|
|
1681
|
-
tryGetElementJson(loadProps) {
|
|
1682
|
-
try {
|
|
1683
|
-
return this._iModel[_nativeDb].getElement(loadProps);
|
|
1684
|
-
}
|
|
1685
|
-
catch {
|
|
1686
|
-
return undefined;
|
|
1687
|
-
}
|
|
1688
|
-
}
|
|
1689
1729
|
/** Get properties of an Element by Id, FederationGuid, or Code
|
|
1690
1730
|
* @throws [[IModelError]] if the element is not found or cannot be loaded.
|
|
1691
1731
|
* @see tryGetElementProps
|
|
1692
1732
|
*/
|
|
1693
1733
|
getElementProps(props) {
|
|
1734
|
+
const elProp = this.tryGetElementProps(props);
|
|
1735
|
+
if (undefined === elProp)
|
|
1736
|
+
throw new IModelError(IModelStatus.NotFound, `element not found`);
|
|
1737
|
+
return elProp;
|
|
1738
|
+
}
|
|
1739
|
+
resolveElementKey(props) {
|
|
1740
|
+
const baseClassName = "BisCore:Element";
|
|
1741
|
+
let args;
|
|
1694
1742
|
if (typeof props === "string") {
|
|
1695
|
-
|
|
1743
|
+
args = Id64.isId64(props) ? { partialKey: { id: props, baseClassName } } : { federationGuid: props };
|
|
1696
1744
|
}
|
|
1697
1745
|
else if (props instanceof Code) {
|
|
1698
|
-
|
|
1746
|
+
args = { code: props };
|
|
1699
1747
|
}
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1748
|
+
else {
|
|
1749
|
+
if (props.id) {
|
|
1750
|
+
args = { partialKey: { id: props.id, baseClassName } };
|
|
1751
|
+
}
|
|
1752
|
+
else if (props.federationGuid) {
|
|
1753
|
+
args = { federationGuid: props.federationGuid };
|
|
1754
|
+
}
|
|
1755
|
+
else if (props.code) {
|
|
1756
|
+
args = { code: props.code };
|
|
1757
|
+
}
|
|
1758
|
+
else {
|
|
1759
|
+
throw new IModelError(IModelStatus.InvalidId, "Element Id or FederationGuid or Code is required");
|
|
1760
|
+
}
|
|
1705
1761
|
}
|
|
1762
|
+
return this._iModel[_nativeDb].resolveInstanceKey(args);
|
|
1706
1763
|
}
|
|
1707
1764
|
/** Get properties of an Element by Id, FederationGuid, or Code
|
|
1708
1765
|
* @returns The properties of the element or `undefined` if the element is not found.
|
|
@@ -1710,14 +1767,32 @@ function processSchemaWriteStatus(status) {
|
|
|
1710
1767
|
* @note Useful for cases when an element may or may not exist and throwing an `Error` would be overkill.
|
|
1711
1768
|
* @see getElementProps
|
|
1712
1769
|
*/
|
|
1713
|
-
tryGetElementProps(
|
|
1714
|
-
if (typeof
|
|
1715
|
-
|
|
1770
|
+
tryGetElementProps(props) {
|
|
1771
|
+
if (typeof props === "string") {
|
|
1772
|
+
props = Id64.isId64(props) ? { id: props } : { federationGuid: props };
|
|
1716
1773
|
}
|
|
1717
|
-
else if (
|
|
1718
|
-
|
|
1774
|
+
else if (props instanceof Code) {
|
|
1775
|
+
props = { code: props };
|
|
1776
|
+
}
|
|
1777
|
+
try {
|
|
1778
|
+
if (IModelHost.configuration?.disableThinnedNativeInstanceWorkflow) {
|
|
1779
|
+
return this._iModel[_nativeDb].getElement(props);
|
|
1780
|
+
}
|
|
1781
|
+
const cachedElm = this[_cache].get(props);
|
|
1782
|
+
if (cachedElm) {
|
|
1783
|
+
return cachedElm.elProps;
|
|
1784
|
+
}
|
|
1785
|
+
const options = { ...props, useJsNames: true };
|
|
1786
|
+
const instanceKey = this.resolveElementKey(props);
|
|
1787
|
+
const rawInstance = this._iModel[_nativeDb].readInstance(instanceKey, options);
|
|
1788
|
+
const classDef = this._iModel.getJsClass(rawInstance.classFullName);
|
|
1789
|
+
const elementProps = classDef.deserialize({ row: rawInstance, iModel: this._iModel, options: { element: props } });
|
|
1790
|
+
this[_cache].set({ elProps: elementProps, loadOptions: props });
|
|
1791
|
+
return elementProps;
|
|
1792
|
+
}
|
|
1793
|
+
catch {
|
|
1794
|
+
return undefined;
|
|
1719
1795
|
}
|
|
1720
|
-
return this.tryGetElementJson(elementId);
|
|
1721
1796
|
}
|
|
1722
1797
|
/** Get an element by Id, FederationGuid, or Code
|
|
1723
1798
|
* @param elementId either the element's Id, Code, or FederationGuid, or an ElementLoadProps
|
|
@@ -1750,7 +1825,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1750
1825
|
elementId = { code: elementId };
|
|
1751
1826
|
else
|
|
1752
1827
|
elementId.onlyBaseProperties = false; // we must load all properties to construct the element.
|
|
1753
|
-
const elementProps = this.
|
|
1828
|
+
const elementProps = this.tryGetElementProps(elementId);
|
|
1754
1829
|
if (undefined === elementProps)
|
|
1755
1830
|
return undefined; // no Element with that elementId found
|
|
1756
1831
|
const element = this._iModel.constructEntity(elementProps);
|
|
@@ -1774,6 +1849,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1774
1849
|
throw new IModelError(IModelStatus.InvalidCodeSpec, "Invalid CodeSpec");
|
|
1775
1850
|
if (code.value === undefined)
|
|
1776
1851
|
throw new IModelError(IModelStatus.InvalidCode, "Invalid Code");
|
|
1852
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1777
1853
|
return this._iModel.withPreparedStatement("SELECT ECInstanceId FROM BisCore:Element WHERE CodeSpec.Id=? AND CodeScope.Id=? AND CodeValue=?", (stmt) => {
|
|
1778
1854
|
stmt.bindId(1, code.spec);
|
|
1779
1855
|
stmt.bindId(2, Id64.fromString(code.scope));
|
|
@@ -1789,6 +1865,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1789
1865
|
*/
|
|
1790
1866
|
queryLastModifiedTime(elementId) {
|
|
1791
1867
|
const sql = "SELECT LastMod FROM BisCore:Element WHERE ECInstanceId=:elementId";
|
|
1868
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1792
1869
|
return this._iModel.withPreparedStatement(sql, (statement) => {
|
|
1793
1870
|
statement.bindId("elementId", elementId);
|
|
1794
1871
|
if (DbResult.BE_SQLITE_ROW === statement.step())
|
|
@@ -1812,6 +1889,11 @@ function processSchemaWriteStatus(status) {
|
|
|
1812
1889
|
*/
|
|
1813
1890
|
insertElement(elProps, options) {
|
|
1814
1891
|
try {
|
|
1892
|
+
this[_cache].delete({
|
|
1893
|
+
id: elProps.id,
|
|
1894
|
+
federationGuid: elProps.federationGuid,
|
|
1895
|
+
code: elProps.code,
|
|
1896
|
+
});
|
|
1815
1897
|
return elProps.id = this._iModel[_nativeDb].insertElement(elProps, options);
|
|
1816
1898
|
}
|
|
1817
1899
|
catch (err) {
|
|
@@ -1833,6 +1915,11 @@ function processSchemaWriteStatus(status) {
|
|
|
1833
1915
|
*/
|
|
1834
1916
|
updateElement(elProps) {
|
|
1835
1917
|
try {
|
|
1918
|
+
this[_cache].delete({
|
|
1919
|
+
id: elProps.id,
|
|
1920
|
+
federationGuid: elProps.federationGuid,
|
|
1921
|
+
code: elProps.code,
|
|
1922
|
+
});
|
|
1836
1923
|
this._iModel[_nativeDb].updateElement(elProps);
|
|
1837
1924
|
}
|
|
1838
1925
|
catch (err) {
|
|
@@ -1850,6 +1937,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1850
1937
|
const iModel = this._iModel;
|
|
1851
1938
|
Id64.toIdSet(ids).forEach((id) => {
|
|
1852
1939
|
try {
|
|
1940
|
+
this[_cache].delete({ id });
|
|
1853
1941
|
iModel[_nativeDb].deleteElement(id);
|
|
1854
1942
|
}
|
|
1855
1943
|
catch (err) {
|
|
@@ -1940,6 +2028,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1940
2028
|
*/
|
|
1941
2029
|
queryChildren(elementId) {
|
|
1942
2030
|
const sql = "SELECT ECInstanceId FROM BisCore:Element WHERE Parent.Id=:elementId";
|
|
2031
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1943
2032
|
return this._iModel.withPreparedStatement(sql, (statement) => {
|
|
1944
2033
|
statement.bindId("elementId", elementId);
|
|
1945
2034
|
const childIds = [];
|
|
@@ -1955,6 +2044,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1955
2044
|
* @throws [[IModelError]] if the element does not exist
|
|
1956
2045
|
*/
|
|
1957
2046
|
queryParent(elementId) {
|
|
2047
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1958
2048
|
return this._iModel.withPreparedStatement(`select parent.id from ${Element.classFullName} where ecinstanceid=?`, (stmt) => {
|
|
1959
2049
|
stmt.bindId(1, elementId);
|
|
1960
2050
|
if (stmt.step() !== DbResult.BE_SQLITE_ROW)
|
|
@@ -1971,6 +2061,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1971
2061
|
return false; // Special case since the RepositoryModel does not sub-model the root Subject
|
|
1972
2062
|
// A sub-model will have the same Id value as the element it is describing
|
|
1973
2063
|
const sql = "SELECT ECInstanceId FROM BisCore:Model WHERE ECInstanceId=:elementId";
|
|
2064
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1974
2065
|
return this._iModel.withPreparedStatement(sql, (statement) => {
|
|
1975
2066
|
statement.bindId("elementId", elementId);
|
|
1976
2067
|
return DbResult.BE_SQLITE_ROW === statement.step();
|
|
@@ -1985,6 +2076,7 @@ function processSchemaWriteStatus(status) {
|
|
|
1985
2076
|
*/
|
|
1986
2077
|
_queryAspects(elementId, fromClassFullName, excludedClassFullNames) {
|
|
1987
2078
|
const sql = `SELECT ECInstanceId,ECClassId FROM ${fromClassFullName} WHERE Element.Id=:elementId ORDER BY ECClassId,ECInstanceId`; // ORDER BY to maximize statement reuse
|
|
2079
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1988
2080
|
return this._iModel.withPreparedStatement(sql, (statement) => {
|
|
1989
2081
|
statement.bindId("elementId", elementId);
|
|
1990
2082
|
const aspects = [];
|
|
@@ -2003,6 +2095,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2003
2095
|
*/
|
|
2004
2096
|
_queryAspect(aspectInstanceId, aspectClassName) {
|
|
2005
2097
|
const sql = `SELECT * FROM ${aspectClassName} WHERE ECInstanceId=:aspectInstanceId`;
|
|
2098
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2006
2099
|
const aspect = this._iModel.withPreparedStatement(sql, (statement) => {
|
|
2007
2100
|
statement.bindId("aspectInstanceId", aspectInstanceId);
|
|
2008
2101
|
if (DbResult.BE_SQLITE_ROW === statement.step()) {
|
|
@@ -2023,6 +2116,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2023
2116
|
*/
|
|
2024
2117
|
getAspect(aspectInstanceId) {
|
|
2025
2118
|
const sql = "SELECT ECClassId FROM BisCore:ElementAspect WHERE ECInstanceId=:aspectInstanceId";
|
|
2119
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2026
2120
|
const aspectClassFullName = this._iModel.withPreparedStatement(sql, (statement) => {
|
|
2027
2121
|
statement.bindId("aspectInstanceId", aspectInstanceId);
|
|
2028
2122
|
return (DbResult.BE_SQLITE_ROW === statement.step()) ? statement.getValue(0).getClassNameForClassId().replace(".", ":") : undefined;
|
|
@@ -2034,6 +2128,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2034
2128
|
}
|
|
2035
2129
|
static classMap = new Map();
|
|
2036
2130
|
runInstanceQuery(sql, elementId, excludedClassFullNames) {
|
|
2131
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2037
2132
|
return this._iModel.withPreparedStatement(sql, (statement) => {
|
|
2038
2133
|
statement.bindId("elementId", elementId);
|
|
2039
2134
|
const aspects = [];
|
|
@@ -2083,8 +2178,11 @@ function processSchemaWriteStatus(status) {
|
|
|
2083
2178
|
let classIdList = IModelDb.Elements.classMap.get(aspectClassFullName);
|
|
2084
2179
|
if (classIdList === undefined) {
|
|
2085
2180
|
const classIds = [];
|
|
2181
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2086
2182
|
this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
|
|
2087
|
-
and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name='${fullClassName[0]}')) and SourceECInstanceId != TargetECInstanceId`,
|
|
2183
|
+
and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name='${fullClassName[0]}')) and SourceECInstanceId != TargetECInstanceId`,
|
|
2184
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2185
|
+
(statement) => {
|
|
2088
2186
|
while (statement.step() === DbResult.BE_SQLITE_ROW)
|
|
2089
2187
|
classIds.push(statement.getValue(0).getId());
|
|
2090
2188
|
});
|
|
@@ -2152,7 +2250,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2152
2250
|
}
|
|
2153
2251
|
IModelDb.Elements = Elements;
|
|
2154
2252
|
/** The collection of views in an [[IModelDb]].
|
|
2155
|
-
* @public
|
|
2253
|
+
* @public @preview
|
|
2156
2254
|
*/
|
|
2157
2255
|
class Views {
|
|
2158
2256
|
_iModel;
|
|
@@ -2328,7 +2426,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2328
2426
|
}
|
|
2329
2427
|
/** Set the default view property the iModel.
|
|
2330
2428
|
* @param viewId The Id of the ViewDefinition to use as the default
|
|
2331
|
-
* @deprecated in 4.2.x. Avoid setting this property - it is not practical for one single view to serve the needs of the many applications
|
|
2429
|
+
* @deprecated in 4.2.x - will not be removed until after 2026-06-13. Avoid setting this property - it is not practical for one single view to serve the needs of the many applications
|
|
2332
2430
|
* that might wish to view the contents of the iModel.
|
|
2333
2431
|
*/
|
|
2334
2432
|
setDefaultViewId(viewId) {
|
|
@@ -2342,9 +2440,9 @@ function processSchemaWriteStatus(status) {
|
|
|
2342
2440
|
}
|
|
2343
2441
|
IModelDb.Views = Views;
|
|
2344
2442
|
/** Represents the current state of a pollable tile content request.
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2443
|
+
* Note: lack of a "completed" state because polling a completed request returns the content as a Uint8Array.
|
|
2444
|
+
* @internal
|
|
2445
|
+
*/
|
|
2348
2446
|
let TileContentState;
|
|
2349
2447
|
(function (TileContentState) {
|
|
2350
2448
|
TileContentState[TileContentState["New"] = 0] = "New";
|
|
@@ -2584,7 +2682,7 @@ export class BriefcaseDb extends IModelDb {
|
|
|
2584
2682
|
const file = { path: args.fileName, key: args.key };
|
|
2585
2683
|
const openMode = (args.readonly || args.watchForChanges) ? OpenMode.Readonly : OpenMode.ReadWrite;
|
|
2586
2684
|
const nativeDb = this.openDgnDb(file, openMode, undefined, args);
|
|
2587
|
-
const briefcaseDb = new
|
|
2685
|
+
const briefcaseDb = new this({ nativeDb, key: file.key ?? Guid.createValue(), openMode, briefcaseId: nativeDb.getBriefcaseId() });
|
|
2588
2686
|
// If they asked to watch for changes, set an fs.watch on the "-watch" file (only it is modified while we hold this connection.)
|
|
2589
2687
|
// Whenever there are changes, restart our defaultTxn. That loads the changes from the other connection and sends
|
|
2590
2688
|
// notifications as if they happened on this connection. Note: the watcher is called only when the backend event loop cycles.
|
|
@@ -2593,6 +2691,7 @@ export class BriefcaseDb extends IModelDb {
|
|
|
2593
2691
|
touch.sync(briefcaseDb.watchFilePathName);
|
|
2594
2692
|
// Restart default txn to trigger events when watch file is changed by some other process.
|
|
2595
2693
|
const watcher = fs.watch(briefcaseDb.watchFilePathName, { persistent: false }, () => {
|
|
2694
|
+
nativeDb.clearECDbCache();
|
|
2596
2695
|
nativeDb.restartDefaultTxn();
|
|
2597
2696
|
briefcaseDb.changeset = briefcaseDb[_nativeDb].getCurrentChangeset();
|
|
2598
2697
|
});
|
|
@@ -2932,7 +3031,7 @@ class RefreshV2CheckpointSas {
|
|
|
2932
3031
|
Logger.logInfo(BackendLoggerCategory.Authorization, "attempting to refresh sasToken for checkpoint");
|
|
2933
3032
|
try {
|
|
2934
3033
|
// this exchanges the supplied user accessToken for an expiring blob-store token to read the checkpoint.
|
|
2935
|
-
const container = iModel
|
|
3034
|
+
const container = iModel.cloudContainer;
|
|
2936
3035
|
if (!container)
|
|
2937
3036
|
throw new Error("checkpoint is not from a cloud container");
|
|
2938
3037
|
assert(undefined !== iModel.iTwinId);
|
|
@@ -3058,7 +3157,7 @@ export class SnapshotDb extends IModelDb {
|
|
|
3058
3157
|
file.key = `${nativeDb.getIModelId()}:${nativeDb.getCurrentChangeset().id}`;
|
|
3059
3158
|
}
|
|
3060
3159
|
assert(undefined !== file.key);
|
|
3061
|
-
const db = new
|
|
3160
|
+
const db = new this(nativeDb, file.key);
|
|
3062
3161
|
this.onOpened.raiseEvent(db);
|
|
3063
3162
|
return db;
|
|
3064
3163
|
}
|
|
@@ -3084,7 +3183,7 @@ export class SnapshotDb extends IModelDb {
|
|
|
3084
3183
|
snapshot._restartDefaultTxnTimer = setTimeout(() => {
|
|
3085
3184
|
snapshot.restartDefaultTxn();
|
|
3086
3185
|
}, (10 * 60) * 1000).unref(); // 10 minutes
|
|
3087
|
-
const cloudContainer = snapshot
|
|
3186
|
+
const cloudContainer = snapshot.cloudContainer;
|
|
3088
3187
|
if (cloudContainer !== undefined) {
|
|
3089
3188
|
snapshot._refreshSas = new RefreshV2CheckpointSas(cloudContainer.accessToken, checkpoint.reattachSafetySeconds);
|
|
3090
3189
|
}
|
|
@@ -3158,7 +3257,7 @@ export class StandaloneDb extends BriefcaseDb {
|
|
|
3158
3257
|
nativeDb.setITwinId(Guid.empty);
|
|
3159
3258
|
nativeDb.resetBriefcaseId(BriefcaseIdValue.Unassigned);
|
|
3160
3259
|
nativeDb.saveChanges();
|
|
3161
|
-
const db = new
|
|
3260
|
+
const db = new this({ nativeDb, key: Guid.createValue(), briefcaseId: BriefcaseIdValue.Unassigned, openMode: OpenMode.ReadWrite });
|
|
3162
3261
|
db.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
3163
3262
|
return db;
|
|
3164
3263
|
}
|
|
@@ -3204,7 +3303,7 @@ export class StandaloneDb extends BriefcaseDb {
|
|
|
3204
3303
|
if (iTwinId !== Guid.empty) // a "standalone" iModel means it is not associated with an iTwin
|
|
3205
3304
|
throw new IModelError(IModelStatus.WrongIModel, `${filePath} is not a Standalone iModel. iTwinId=${iTwinId}`);
|
|
3206
3305
|
assert(undefined !== file.key);
|
|
3207
|
-
const db = new
|
|
3306
|
+
const db = new this({ nativeDb, key: file.key, openMode, briefcaseId: BriefcaseIdValue.Unassigned });
|
|
3208
3307
|
return db;
|
|
3209
3308
|
}
|
|
3210
3309
|
catch (error) {
|