@itwin/core-backend 5.9.0-dev.3 → 5.9.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/BriefcaseManager.js +3 -3
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/Category.d.ts +37 -7
- package/lib/cjs/Category.d.ts.map +1 -1
- package/lib/cjs/Category.js +33 -42
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +5 -2
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.d.ts +29 -0
- package/lib/cjs/ChannelControl.d.ts.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/CodeSpecs.d.ts +32 -3
- package/lib/cjs/CodeSpecs.d.ts.map +1 -1
- package/lib/cjs/CodeSpecs.js +48 -20
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/DisplayStyle.d.ts +18 -3
- package/lib/cjs/DisplayStyle.d.ts.map +1 -1
- package/lib/cjs/DisplayStyle.js +10 -21
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/EditTxn.d.ts +262 -0
- package/lib/cjs/EditTxn.d.ts.map +1 -0
- package/lib/cjs/EditTxn.js +548 -0
- package/lib/cjs/EditTxn.js.map +1 -0
- package/lib/cjs/Element.d.ts +74 -5
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +63 -75
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.d.ts +10 -0
- package/lib/cjs/ElementAspect.d.ts.map +1 -1
- package/lib/cjs/ElementAspect.js +21 -12
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.d.ts +56 -3
- package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
- package/lib/cjs/ElementTreeWalker.js +53 -40
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/ExternalSource.d.ts +11 -2
- package/lib/cjs/ExternalSource.d.ts.map +1 -1
- package/lib/cjs/ExternalSource.js +10 -8
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +66 -22
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +174 -288
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +22 -0
- package/lib/cjs/IModelHost.d.ts.map +1 -1
- package/lib/cjs/IModelHost.js +9 -0
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IpcHost.js +2 -2
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.d.ts +47 -7
- package/lib/cjs/LineStyle.d.ts.map +1 -1
- package/lib/cjs/LineStyle.js +38 -33
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/Material.d.ts +8 -1
- package/lib/cjs/Material.d.ts.map +1 -1
- package/lib/cjs/Material.js +6 -12
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.d.ts +59 -20
- package/lib/cjs/Model.d.ts.map +1 -1
- package/lib/cjs/Model.js +38 -80
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/Relationship.d.ts +72 -7
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +39 -21
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/SchemaSync.js +4 -4
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SheetIndex.d.ts +9 -0
- package/lib/cjs/SheetIndex.d.ts.map +1 -1
- package/lib/cjs/SheetIndex.js +38 -35
- package/lib/cjs/SheetIndex.js.map +1 -1
- package/lib/cjs/StashManager.js +1 -1
- package/lib/cjs/StashManager.js.map +1 -1
- package/lib/cjs/Texture.d.ts +6 -0
- package/lib/cjs/Texture.d.ts.map +1 -1
- package/lib/cjs/Texture.js +6 -14
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +5 -5
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +23 -7
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +21 -1
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js +27 -66
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/core-backend.d.ts +1 -0
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +1 -0
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
- package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js +8 -13
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/GenericElements.d.ts +11 -4
- package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
- package/lib/cjs/domains/GenericElements.js +13 -24
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
- package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js +5 -3
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/Symbols.d.ts +4 -0
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +5 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/annotations/fields.d.ts +3 -2
- package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
- package/lib/cjs/internal/annotations/fields.js +7 -6
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/BriefcaseManager.js +3 -3
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/Category.d.ts +37 -7
- package/lib/esm/Category.d.ts.map +1 -1
- package/lib/esm/Category.js +33 -42
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +5 -2
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChannelControl.d.ts +29 -0
- package/lib/esm/ChannelControl.d.ts.map +1 -1
- package/lib/esm/ChannelControl.js.map +1 -1
- package/lib/esm/CheckpointManager.js +1 -1
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/CodeSpecs.d.ts +32 -3
- package/lib/esm/CodeSpecs.d.ts.map +1 -1
- package/lib/esm/CodeSpecs.js +49 -21
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/DisplayStyle.d.ts +18 -3
- package/lib/esm/DisplayStyle.d.ts.map +1 -1
- package/lib/esm/DisplayStyle.js +10 -21
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/EditTxn.d.ts +262 -0
- package/lib/esm/EditTxn.d.ts.map +1 -0
- package/lib/esm/EditTxn.js +543 -0
- package/lib/esm/EditTxn.js.map +1 -0
- package/lib/esm/Element.d.ts +74 -5
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +64 -76
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.d.ts +10 -0
- package/lib/esm/ElementAspect.d.ts.map +1 -1
- package/lib/esm/ElementAspect.js +22 -13
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementTreeWalker.d.ts +56 -3
- package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
- package/lib/esm/ElementTreeWalker.js +53 -40
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/ExternalSource.d.ts +11 -2
- package/lib/esm/ExternalSource.d.ts.map +1 -1
- package/lib/esm/ExternalSource.js +10 -8
- package/lib/esm/ExternalSource.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +66 -22
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +176 -290
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelHost.d.ts +22 -0
- package/lib/esm/IModelHost.d.ts.map +1 -1
- package/lib/esm/IModelHost.js +9 -0
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IpcHost.js +3 -3
- package/lib/esm/IpcHost.js.map +1 -1
- package/lib/esm/LineStyle.d.ts +47 -7
- package/lib/esm/LineStyle.d.ts.map +1 -1
- package/lib/esm/LineStyle.js +38 -33
- package/lib/esm/LineStyle.js.map +1 -1
- package/lib/esm/Material.d.ts +8 -1
- package/lib/esm/Material.d.ts.map +1 -1
- package/lib/esm/Material.js +6 -12
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.d.ts +59 -20
- package/lib/esm/Model.d.ts.map +1 -1
- package/lib/esm/Model.js +39 -81
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/Relationship.d.ts +72 -7
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +40 -22
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/SchemaSync.js +5 -5
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SheetIndex.d.ts +9 -0
- package/lib/esm/SheetIndex.d.ts.map +1 -1
- package/lib/esm/SheetIndex.js +38 -35
- package/lib/esm/SheetIndex.js.map +1 -1
- package/lib/esm/StashManager.js +1 -1
- package/lib/esm/StashManager.js.map +1 -1
- package/lib/esm/Texture.d.ts +6 -0
- package/lib/esm/Texture.d.ts.map +1 -1
- package/lib/esm/Texture.js +6 -14
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +5 -5
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +23 -7
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.d.ts +21 -1
- package/lib/esm/ViewDefinition.d.ts.map +1 -1
- package/lib/esm/ViewDefinition.js +27 -66
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js +6 -5
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/core-backend.d.ts +1 -0
- package/lib/esm/core-backend.d.ts.map +1 -1
- package/lib/esm/core-backend.js +1 -0
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.d.ts +6 -2
- package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
- package/lib/esm/domains/FunctionalElements.js +8 -13
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/GenericElements.d.ts +11 -4
- package/lib/esm/domains/GenericElements.d.ts.map +1 -1
- package/lib/esm/domains/GenericElements.js +13 -24
- package/lib/esm/domains/GenericElements.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
- package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js +6 -4
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/Symbols.d.ts +4 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +4 -0
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/annotations/fields.d.ts +3 -2
- package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
- package/lib/esm/internal/annotations/fields.js +7 -6
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
- package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.js +111 -96
- package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js +56 -2
- package/lib/esm/test/IModelHost.test.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.d.ts +23 -23
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
- package/lib/esm/test/IModelTestUtils.js +466 -449
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/PropertyDb.test.js +2 -2
- package/lib/esm/test/PropertyDb.test.js.map +1 -1
- package/lib/esm/test/SquashSchemaAndDataChanges.test.js +27 -18
- package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js +11 -7
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestEditTxn.d.ts +8 -0
- package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
- package/lib/esm/test/TestEditTxn.js +34 -0
- package/lib/esm/test/TestEditTxn.js.map +1 -0
- package/lib/esm/test/TestUtils.d.ts +1 -0
- package/lib/esm/test/TestUtils.d.ts.map +1 -1
- package/lib/esm/test/TestUtils.js +8 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js +82 -90
- 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/TextAnnotation.test.js +156 -99
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js +5 -3
- 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 +63 -3
- package/lib/esm/test/categories/Category.test.js.map +1 -1
- package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +3 -2
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +2 -2
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +0 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/QueryReaders.test.js +17 -14
- package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
- 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 +159 -143
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +68 -60
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +37 -38
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js +2 -2
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js +40 -38
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js +10 -9
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
- package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
- package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
- package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
- package/lib/esm/test/element/UrlLink.test.js +2 -2
- package/lib/esm/test/element/UrlLink.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +164 -125
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +313 -247
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/hubaccess/SemanticRebase.test.js +322 -247
- package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
- package/lib/esm/test/imodel/Code.test.js +31 -31
- package/lib/esm/test/imodel/Code.test.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +419 -344
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
- package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
- package/lib/esm/test/index.d.ts +1 -0
- package/lib/esm/test/index.d.ts.map +1 -1
- package/lib/esm/test/index.js +1 -0
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/schema/ClassRegistry.test.js +23 -22
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js +114 -94
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js +2 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js +207 -192
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +114 -85
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js +4 -3
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
- package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/EditTxn.test.js +219 -0
- package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
- package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +26 -20
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js +31 -25
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
- package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +184 -142
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
- package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
- package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
- package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
- package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js +21 -19
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/Settings.test.js +7 -4
- package/lib/esm/test/standalone/Settings.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/StandaloneDb.test.js +7 -6
- package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js +5 -4
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js +5 -3
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js +35 -31
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js +700 -653
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js +25 -23
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/package.json +12 -12
|
@@ -6,6 +6,7 @@ import { assert, expect } from "chai";
|
|
|
6
6
|
import * as path from "path";
|
|
7
7
|
import { Guid } from "@itwin/core-bentley";
|
|
8
8
|
import { Code, IModel } from "@itwin/core-common";
|
|
9
|
+
import { withEditTxn } from "../../EditTxn";
|
|
9
10
|
import { ChannelControl, DataTransformationStrategy, IModelJsFs, StandaloneDb } from "../../core-backend";
|
|
10
11
|
import { HubWrappers, IModelTestUtils } from "../IModelTestUtils";
|
|
11
12
|
import { KnownTestLocations } from "../KnownTestLocations";
|
|
@@ -122,37 +123,39 @@ describe("Schema Import Callbacks", () => {
|
|
|
122
123
|
stringProp: "original value of first element",
|
|
123
124
|
intProp: 42,
|
|
124
125
|
};
|
|
125
|
-
const elementId1 = imodel.
|
|
126
|
+
const elementId1 = withEditTxn(imodel, (txn) => txn.insertElement(elementProps));
|
|
126
127
|
const elementIds = [elementId1];
|
|
127
|
-
await imodel
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
128
|
+
await withEditTxn(imodel, "cache callback writes", async (txn) => {
|
|
129
|
+
await imodel.importSchemaStrings([testSchemaV101()], {
|
|
130
|
+
schemaImportCallbacks: {
|
|
131
|
+
preSchemaImportCallback: async (context) => {
|
|
132
|
+
// Create another element before the schema import
|
|
133
|
+
assert.equal(elementIds.length, 1);
|
|
134
|
+
const element = context.iModel.elements.getElementProps(elementIds[0]);
|
|
135
|
+
assert.isDefined(element.stringProp);
|
|
136
|
+
assert.isDefined(element.intProp);
|
|
137
|
+
elementProps.stringProp = "original value of second element";
|
|
138
|
+
elementProps.intProp = 84;
|
|
139
|
+
elementIds.push(txn.insertElement(elementProps));
|
|
140
|
+
const cached = { ids: elementIds };
|
|
141
|
+
return {
|
|
142
|
+
transformStrategy: DataTransformationStrategy.InMemory,
|
|
143
|
+
cachedData: cached,
|
|
144
|
+
};
|
|
145
|
+
},
|
|
146
|
+
postSchemaImportCallback: async (context) => {
|
|
147
|
+
// Use cached data to update element with new property
|
|
148
|
+
assert.isDefined(context.resources.cachedData?.ids);
|
|
149
|
+
const updatedElementProps = context.iModel.elements.getElementProps(context.resources.cachedData.ids[1]);
|
|
150
|
+
assert.isDefined(updatedElementProps.stringProp);
|
|
151
|
+
assert.isDefined(updatedElementProps.intProp);
|
|
152
|
+
assert.isUndefined(updatedElementProps.newProp);
|
|
153
|
+
updatedElementProps.stringProp = "modified in postImport";
|
|
154
|
+
updatedElementProps.newProp = `New Prop Added`;
|
|
155
|
+
txn.updateElement(updatedElementProps);
|
|
156
|
+
},
|
|
154
157
|
},
|
|
155
|
-
}
|
|
158
|
+
});
|
|
156
159
|
});
|
|
157
160
|
// Verify the transformation
|
|
158
161
|
let finalElementProps = imodel.elements.getElementProps(elementIds[0]);
|
|
@@ -192,26 +195,27 @@ describe("Schema Import Callbacks", () => {
|
|
|
192
195
|
stringProp: "snapshot test",
|
|
193
196
|
intProp: 123,
|
|
194
197
|
};
|
|
195
|
-
const elementId = imodel.
|
|
196
|
-
imodel.saveChanges("Insert element before schema upgrade");
|
|
198
|
+
const elementId = withEditTxn(imodel, "Insert element before schema upgrade", (txn) => txn.insertElement(elementProps));
|
|
197
199
|
// Import updated schema with snapshot strategy
|
|
198
200
|
let originalStringValue;
|
|
199
|
-
await imodel
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
201
|
+
await withEditTxn(imodel, "snapshot callback writes", async (txn) => {
|
|
202
|
+
await imodel.importSchemaStrings([testSchemaV101()], {
|
|
203
|
+
schemaImportCallbacks: {
|
|
204
|
+
preSchemaImportCallback: async () => ({ transformStrategy: DataTransformationStrategy.Snapshot }),
|
|
205
|
+
postSchemaImportCallback: async (context) => {
|
|
206
|
+
assert.isDefined(context.resources.snapshot);
|
|
207
|
+
assert.equal(context.resources.snapshot?.getSchemaProps("TestSchema").version, "01.00.00");
|
|
208
|
+
assert.equal(imodel.getSchemaProps("TestSchema").version, "01.00.01");
|
|
209
|
+
// Read original value from snapshot
|
|
210
|
+
const snapshotElementProps = context.resources.snapshot.elements.getElementProps(elementId);
|
|
211
|
+
originalStringValue = snapshotElementProps.stringProp;
|
|
212
|
+
// Update element in main iModel with new property based on snapshot data
|
|
213
|
+
const updatedElementProps = context.iModel.elements.getElementProps(elementId);
|
|
214
|
+
updatedElementProps.newProp = `Original was: ${originalStringValue}`;
|
|
215
|
+
txn.updateElement(updatedElementProps);
|
|
216
|
+
},
|
|
213
217
|
},
|
|
214
|
-
}
|
|
218
|
+
});
|
|
215
219
|
});
|
|
216
220
|
assert.equal(originalStringValue, "snapshot test");
|
|
217
221
|
const finalElement = imodel.elements.getElement(elementId);
|
|
@@ -264,23 +268,24 @@ describe("Schema Import Callbacks", () => {
|
|
|
264
268
|
intProp: 1,
|
|
265
269
|
};
|
|
266
270
|
assert.equal(imodel.getSchemaProps("TestSchema").version, "01.00.00");
|
|
267
|
-
const elementId = imodel.
|
|
268
|
-
imodel.saveChanges("Insert test element");
|
|
271
|
+
const elementId = withEditTxn(imodel, "Insert test element", (txn) => txn.insertElement(elementProps));
|
|
269
272
|
// Try to import with failing callback
|
|
270
273
|
try {
|
|
271
|
-
await imodel
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
274
|
+
await withEditTxn(imodel, "failing callback writes", async (txn) => {
|
|
275
|
+
await imodel.importSchemaStrings([testSchemaV101()], {
|
|
276
|
+
schemaImportCallbacks: {
|
|
277
|
+
postSchemaImportCallback: async (context) => {
|
|
278
|
+
// Make a change
|
|
279
|
+
const updatedElementProps = context.iModel.elements.getElementProps(elementId);
|
|
280
|
+
updatedElementProps.intProp += 1;
|
|
281
|
+
updatedElementProps.stringProp = "should be reverted";
|
|
282
|
+
updatedElementProps.newProp = "should be reverted";
|
|
283
|
+
txn.updateElement(updatedElementProps);
|
|
284
|
+
// Then throw error
|
|
285
|
+
throw new Error("Intentional callback failure");
|
|
286
|
+
},
|
|
282
287
|
},
|
|
283
|
-
}
|
|
288
|
+
});
|
|
284
289
|
});
|
|
285
290
|
assert.fail("Should have thrown error");
|
|
286
291
|
}
|
|
@@ -440,22 +445,23 @@ describe("Schema Import Callbacks", () => {
|
|
|
440
445
|
stringProp: "test element",
|
|
441
446
|
intProp: 100,
|
|
442
447
|
};
|
|
443
|
-
const elementId = imodel.
|
|
444
|
-
imodel.saveChanges("Create test element");
|
|
448
|
+
const elementId = withEditTxn(imodel, "Create test element", (txn) => txn.insertElement(elementProps));
|
|
445
449
|
// Now REMOVE the shared channel permission
|
|
446
450
|
imodel.channels.removeAllowedChannel("shared");
|
|
447
451
|
// Try to import schema and modify element - should fail
|
|
448
452
|
try {
|
|
449
|
-
await imodel
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
453
|
+
await withEditTxn(imodel, "channel validation pre import", async (txn) => {
|
|
454
|
+
await imodel.importSchemaStrings([testSchemaV101()], {
|
|
455
|
+
schemaImportCallbacks: {
|
|
456
|
+
preSchemaImportCallback: async (context) => {
|
|
457
|
+
// This should throw because shared channel is not allowed
|
|
458
|
+
const updatedProps = context.iModel.elements.getElementProps(elementId);
|
|
459
|
+
updatedProps.newProp = "This should fail";
|
|
460
|
+
txn.updateElement(updatedProps); // Should throw here
|
|
461
|
+
return { transformStrategy: DataTransformationStrategy.None };
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
});
|
|
459
465
|
});
|
|
460
466
|
assert.fail("Should have thrown ChannelConstraintViolation");
|
|
461
467
|
}
|
|
@@ -474,22 +480,23 @@ describe("Schema Import Callbacks", () => {
|
|
|
474
480
|
stringProp: "test element",
|
|
475
481
|
intProp: 100,
|
|
476
482
|
};
|
|
477
|
-
const elementId = imodel.
|
|
478
|
-
imodel.saveChanges("Create test element");
|
|
483
|
+
const elementId = withEditTxn(imodel, "Create test element", (txn) => txn.insertElement(elementProps));
|
|
479
484
|
// Now REMOVE the shared channel permission
|
|
480
485
|
imodel.channels.removeAllowedChannel("shared");
|
|
481
486
|
// Try to import schema and modify element - should fail
|
|
482
487
|
try {
|
|
483
|
-
await imodel
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
488
|
+
await withEditTxn(imodel, "channel validation post import", async (txn) => {
|
|
489
|
+
await imodel.importSchemaStrings([testSchemaV101()], {
|
|
490
|
+
schemaImportCallbacks: {
|
|
491
|
+
preSchemaImportCallback: async () => ({ transformStrategy: DataTransformationStrategy.None }),
|
|
492
|
+
postSchemaImportCallback: async (context) => {
|
|
493
|
+
// This should throw because shared channel is not allowed
|
|
494
|
+
const updatedProps = context.iModel.elements.getElementProps(elementId);
|
|
495
|
+
updatedProps.newProp = "This should fail";
|
|
496
|
+
txn.updateElement(updatedProps); // Should throw here
|
|
497
|
+
},
|
|
491
498
|
},
|
|
492
|
-
}
|
|
499
|
+
});
|
|
493
500
|
});
|
|
494
501
|
assert.fail("Should have thrown ChannelConstraintViolation");
|
|
495
502
|
}
|
|
@@ -514,24 +521,25 @@ describe("Schema Import Callbacks", () => {
|
|
|
514
521
|
stringProp: "snapshot test",
|
|
515
522
|
intProp: 123,
|
|
516
523
|
};
|
|
517
|
-
const elementId = imodel.
|
|
518
|
-
imodel.saveChanges("Create test element");
|
|
524
|
+
const elementId = withEditTxn(imodel, "Create test element", (txn) => txn.insertElement(elementProps));
|
|
519
525
|
// Disable channel before schema import with snapshot
|
|
520
526
|
imodel.channels.removeAllowedChannel("shared");
|
|
521
527
|
try {
|
|
522
|
-
await imodel
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
528
|
+
await withEditTxn(imodel, "channel validation snapshot import", async (txn) => {
|
|
529
|
+
await imodel.importSchemaStrings([testSchemaV101()], {
|
|
530
|
+
schemaImportCallbacks: {
|
|
531
|
+
preSchemaImportCallback: async () => ({ transformStrategy: DataTransformationStrategy.Snapshot }),
|
|
532
|
+
postSchemaImportCallback: async (context) => {
|
|
533
|
+
// Can read from snapshot (it's read-only, no channel check)
|
|
534
|
+
const snapshotProps = context.resources.snapshot.elements.getElementProps(elementId);
|
|
535
|
+
assert.equal(snapshotProps.stringProp, "snapshot test");
|
|
536
|
+
// But can't modify in main iModel without channel permission
|
|
537
|
+
const updatedProps = context.iModel.elements.getElementProps(elementId);
|
|
538
|
+
updatedProps.newProp = "This should fail";
|
|
539
|
+
txn.updateElement(updatedProps); // Should throw
|
|
540
|
+
},
|
|
533
541
|
},
|
|
534
|
-
}
|
|
542
|
+
});
|
|
535
543
|
});
|
|
536
544
|
assert.fail("Should have thrown ChannelConstraintViolation");
|
|
537
545
|
}
|
|
@@ -678,16 +686,17 @@ describe("Schema Import Callbacks", () => {
|
|
|
678
686
|
return undefined;
|
|
679
687
|
return aspects[0].asAny.version;
|
|
680
688
|
}
|
|
681
|
-
function setChannelVersion(
|
|
689
|
+
function setChannelVersion(txn, version) {
|
|
690
|
+
const iModel = txn.iModel;
|
|
682
691
|
const aspects = iModel.elements.getAspects(channelRootId, "BisCore:ChannelRootAspect");
|
|
683
692
|
assert.equal(aspects.length, 1, "Should have exactly one ChannelRootAspect");
|
|
684
693
|
const aspect = aspects[0];
|
|
685
694
|
aspect.asAny.version = version;
|
|
686
|
-
|
|
695
|
+
txn.updateAspect(aspect.toJSON());
|
|
687
696
|
}
|
|
688
697
|
// Code that simulates a channel upgrade.
|
|
689
698
|
// This simulates elements being moved to different models as per the new channel organization.
|
|
690
|
-
const channelUpgradeCallback = async (context) => {
|
|
699
|
+
const channelUpgradeCallback = (txn) => async (context) => {
|
|
691
700
|
context.data.elementIds.forEach((id) => {
|
|
692
701
|
const elementProps = context.iModel.elements.getElementProps(id);
|
|
693
702
|
if (elementProps.stringProp === "Material1") {
|
|
@@ -699,11 +708,10 @@ describe("Schema Import Callbacks", () => {
|
|
|
699
708
|
else if (elementProps.stringProp === "Category1") {
|
|
700
709
|
elementProps.modelName = "StyleModel";
|
|
701
710
|
}
|
|
702
|
-
|
|
711
|
+
txn.updateElement(elementProps);
|
|
703
712
|
});
|
|
704
|
-
setChannelVersion(
|
|
713
|
+
setChannelVersion(txn, "1.0.1");
|
|
705
714
|
assert.equal(getChannelVersion(context.iModel), "1.0.1");
|
|
706
|
-
context.iModel.saveChanges();
|
|
707
715
|
};
|
|
708
716
|
it("need for channel reorganization before schema import", async () => {
|
|
709
717
|
// Initial setup: Import v1.0.0 schema
|
|
@@ -712,13 +720,14 @@ describe("Schema Import Callbacks", () => {
|
|
|
712
720
|
const channelKey = "TestChannel";
|
|
713
721
|
imodel.channels.addAllowedChannel(channelKey);
|
|
714
722
|
// Create a channel
|
|
715
|
-
channelRootId = imodel.channels.insertChannelSubject({
|
|
723
|
+
channelRootId = withEditTxn(imodel, (txn) => imodel.channels.insertChannelSubject({
|
|
716
724
|
subjectName: "Test Channel",
|
|
717
725
|
channelKey,
|
|
718
|
-
|
|
726
|
+
txn,
|
|
727
|
+
}));
|
|
719
728
|
assert.isUndefined(getChannelVersion(imodel), "Version should be undefined initially");
|
|
720
729
|
// Set version to 1.0.0
|
|
721
|
-
|
|
730
|
+
withEditTxn(imodel, (txn) => setChannelVersion(txn, "1.0.0"));
|
|
722
731
|
// Enable shared channel and create elements
|
|
723
732
|
imodel.channels.addAllowedChannel("shared");
|
|
724
733
|
const rootModel = imodel.models.getModel(IModel.dictionaryId);
|
|
@@ -734,40 +743,41 @@ describe("Schema Import Callbacks", () => {
|
|
|
734
743
|
intProp: 100 + index * 100,
|
|
735
744
|
modelName: "DefinitionModel"
|
|
736
745
|
};
|
|
737
|
-
elementIds.push(imodel.
|
|
746
|
+
elementIds.push(withEditTxn(imodel, (txn) => txn.insertElement(elementProps)));
|
|
738
747
|
}
|
|
739
|
-
imodel.saveChanges("Create elements in a single model under the root channel structure");
|
|
740
748
|
// Scenario: Let's assume schema has evolved and v1.0.1 expects elements to be in their dedicated models (i.e. it relies on channel v1.0.1)
|
|
741
749
|
// The post schema upgrade code will look for elements in their own models.
|
|
742
750
|
// If the channel is still in version 1.0.0, the callback will obviously fail.
|
|
743
|
-
await imodel
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
schemaImportCallbacks: {
|
|
752
|
-
preSchemaImportCallback: async () => {
|
|
753
|
-
return {
|
|
754
|
-
transformStrategy: DataTransformationStrategy.InMemory,
|
|
755
|
-
cachedData: {
|
|
756
|
-
elementIds,
|
|
757
|
-
},
|
|
758
|
-
};
|
|
751
|
+
await withEditTxn(imodel, "channel reorganization callback writes", async (txn) => {
|
|
752
|
+
await imodel.importSchemaStrings([testSchemaV101()], {
|
|
753
|
+
data: { elementIds },
|
|
754
|
+
channelUpgrade: {
|
|
755
|
+
channelKey,
|
|
756
|
+
fromVersion: "1.0.0",
|
|
757
|
+
toVersion: "1.0.1",
|
|
758
|
+
callback: channelUpgradeCallback(txn),
|
|
759
759
|
},
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
}
|
|
760
|
+
schemaImportCallbacks: {
|
|
761
|
+
preSchemaImportCallback: async () => {
|
|
762
|
+
return {
|
|
763
|
+
transformStrategy: DataTransformationStrategy.InMemory,
|
|
764
|
+
cachedData: {
|
|
765
|
+
elementIds,
|
|
766
|
+
},
|
|
767
|
+
};
|
|
768
|
+
},
|
|
769
|
+
postSchemaImportCallback: async (context) => {
|
|
770
|
+
// Now schema v1.0.1 expects elements to be in their dedicated models.
|
|
771
|
+
const elementIdList = context.resources.cachedData.elementIds;
|
|
772
|
+
assert.equal(imodel.getSchemaProps("TestSchema").version, "01.00.01");
|
|
773
|
+
assert.equal(getChannelVersion(context.iModel), "1.0.1");
|
|
774
|
+
elementIdList.forEach((elementId) => {
|
|
775
|
+
const elementProps = context.iModel.elements.getElementProps(elementId);
|
|
776
|
+
assert.notEqual(elementProps.modelName, "DefinitionModel", "Element should have been moved to new model as part of the channel upgrade");
|
|
777
|
+
});
|
|
778
|
+
},
|
|
769
779
|
},
|
|
770
|
-
}
|
|
780
|
+
});
|
|
771
781
|
});
|
|
772
782
|
});
|
|
773
783
|
});
|
|
@@ -787,10 +797,11 @@ describe("Schema Import Callbacks", () => {
|
|
|
787
797
|
await briefcaseDb.importSchemaStrings([testSchemaV100()]);
|
|
788
798
|
briefcaseDb.channels.addAllowedChannel(channelKey);
|
|
789
799
|
if (briefcaseDb.channels.queryChannelRoot(channelKey) === undefined) {
|
|
790
|
-
briefcaseDb.channels.insertChannelSubject({
|
|
800
|
+
withEditTxn(briefcaseDb, (txn) => briefcaseDb.channels.insertChannelSubject({
|
|
791
801
|
subjectName: "Test Channel",
|
|
792
802
|
channelKey,
|
|
793
|
-
|
|
803
|
+
txn,
|
|
804
|
+
}));
|
|
794
805
|
}
|
|
795
806
|
const model = briefcaseDb.models.getModel(IModel.dictionaryId);
|
|
796
807
|
const elementProps = {
|
|
@@ -800,8 +811,7 @@ describe("Schema Import Callbacks", () => {
|
|
|
800
811
|
stringProp: "test",
|
|
801
812
|
intProp: 100,
|
|
802
813
|
};
|
|
803
|
-
const elementId = briefcaseDb.
|
|
804
|
-
briefcaseDb.saveChanges("Create test element");
|
|
814
|
+
const elementId = withEditTxn(briefcaseDb, "Create test element", (txn) => txn.insertElement(elementProps));
|
|
805
815
|
await briefcaseDb.pushChanges({ description: "Create test element" });
|
|
806
816
|
return [briefcaseDb, elementId];
|
|
807
817
|
}
|
|
@@ -809,41 +819,42 @@ describe("Schema Import Callbacks", () => {
|
|
|
809
819
|
const [briefcaseDb, elementId] = await setupBriefcase();
|
|
810
820
|
// Try to modify without acquiring locks in the callback
|
|
811
821
|
try {
|
|
812
|
-
await briefcaseDb
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
822
|
+
await withEditTxn(briefcaseDb, "channel upgrade without locks", async (txn) => {
|
|
823
|
+
await briefcaseDb.importSchemaStrings([testSchemaV101()], {
|
|
824
|
+
channelUpgrade: {
|
|
825
|
+
channelKey,
|
|
826
|
+
fromVersion: "1.0.0",
|
|
827
|
+
toVersion: "1.0.1",
|
|
828
|
+
callback: async (context) => {
|
|
829
|
+
// Intentionally NOT acquiring locks
|
|
830
|
+
const props = context.iModel.elements.getElementProps(elementId);
|
|
831
|
+
props.stringProp = "should fail";
|
|
832
|
+
txn.updateElement(props);
|
|
833
|
+
},
|
|
823
834
|
},
|
|
824
|
-
}
|
|
835
|
+
});
|
|
825
836
|
});
|
|
826
837
|
assert.fail("Should have thrown error about missing locks");
|
|
827
838
|
}
|
|
828
839
|
catch (err) {
|
|
829
840
|
assert.equal(err.iTwinErrorId.key.name, "Lock Not Held");
|
|
830
|
-
briefcaseDb.abandonChanges();
|
|
831
841
|
}
|
|
832
842
|
// Try again with locks
|
|
833
843
|
try {
|
|
834
|
-
await briefcaseDb
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
844
|
+
await withEditTxn(briefcaseDb, "channel upgrade with locks", async (txn) => {
|
|
845
|
+
await briefcaseDb.importSchemaStrings([testSchemaV101()], {
|
|
846
|
+
channelUpgrade: {
|
|
847
|
+
channelKey,
|
|
848
|
+
fromVersion: "1.0.0",
|
|
849
|
+
toVersion: "1.0.1",
|
|
850
|
+
callback: async (context) => {
|
|
851
|
+
await context.iModel.locks.acquireLocks({ exclusive: elementId });
|
|
852
|
+
const props = context.iModel.elements.getElementProps(elementId);
|
|
853
|
+
props.stringProp = "updated with locks";
|
|
854
|
+
txn.updateElement(props);
|
|
855
|
+
},
|
|
845
856
|
},
|
|
846
|
-
}
|
|
857
|
+
});
|
|
847
858
|
});
|
|
848
859
|
}
|
|
849
860
|
catch (err) {
|
|
@@ -855,36 +866,38 @@ describe("Schema Import Callbacks", () => {
|
|
|
855
866
|
const [briefcaseDb, elementId] = await setupBriefcase();
|
|
856
867
|
// Try to modify without acquiring locks in the callback
|
|
857
868
|
try {
|
|
858
|
-
await briefcaseDb
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
869
|
+
await withEditTxn(briefcaseDb, "pre import without locks", async (txn) => {
|
|
870
|
+
await briefcaseDb.importSchemaStrings([testSchemaV101()], {
|
|
871
|
+
schemaImportCallbacks: {
|
|
872
|
+
preSchemaImportCallback: async (context) => {
|
|
873
|
+
// Intentionally NOT acquiring locks
|
|
874
|
+
const props = context.iModel.elements.getElementProps(elementId);
|
|
875
|
+
props.stringProp = "should fail";
|
|
876
|
+
txn.updateElement(props);
|
|
877
|
+
return { transformStrategy: DataTransformationStrategy.None };
|
|
878
|
+
},
|
|
866
879
|
},
|
|
867
|
-
}
|
|
880
|
+
});
|
|
868
881
|
});
|
|
869
882
|
assert.fail("Should have thrown error about missing locks");
|
|
870
883
|
}
|
|
871
884
|
catch (err) {
|
|
872
885
|
assert.equal(err.name, "Lock Not Held");
|
|
873
|
-
briefcaseDb.abandonChanges();
|
|
874
886
|
}
|
|
875
887
|
// Try again with locks
|
|
876
888
|
try {
|
|
877
|
-
await briefcaseDb
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
889
|
+
await withEditTxn(briefcaseDb, "pre import with locks", async (txn) => {
|
|
890
|
+
await briefcaseDb.importSchemaStrings([testSchemaV101()], {
|
|
891
|
+
schemaImportCallbacks: {
|
|
892
|
+
preSchemaImportCallback: async (context) => {
|
|
893
|
+
await context.iModel.locks.acquireLocks({ exclusive: elementId });
|
|
894
|
+
const props = context.iModel.elements.getElementProps(elementId);
|
|
895
|
+
props.stringProp = "should fail";
|
|
896
|
+
txn.updateElement(props);
|
|
897
|
+
return { transformStrategy: DataTransformationStrategy.None };
|
|
898
|
+
},
|
|
886
899
|
},
|
|
887
|
-
}
|
|
900
|
+
});
|
|
888
901
|
});
|
|
889
902
|
}
|
|
890
903
|
catch (err) {
|
|
@@ -895,16 +908,18 @@ describe("Schema Import Callbacks", () => {
|
|
|
895
908
|
it("lock acquisition is not required during postSchemaImportCallback", async () => {
|
|
896
909
|
const [briefcaseDb, elementId] = await setupBriefcase();
|
|
897
910
|
let postImportCalled = false;
|
|
898
|
-
await briefcaseDb
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
911
|
+
await withEditTxn(briefcaseDb, "post import with schema lock", async (txn) => {
|
|
912
|
+
await briefcaseDb.importSchemaStrings([testSchemaV101()], {
|
|
913
|
+
schemaImportCallbacks: {
|
|
914
|
+
postSchemaImportCallback: async (context) => {
|
|
915
|
+
postImportCalled = true;
|
|
916
|
+
// Schema lock is already held at this point
|
|
917
|
+
const props = context.iModel.elements.getElementProps(elementId);
|
|
918
|
+
props.newProp = "added in postImport with schema lock held";
|
|
919
|
+
txn.updateElement(props);
|
|
920
|
+
},
|
|
906
921
|
},
|
|
907
|
-
}
|
|
922
|
+
});
|
|
908
923
|
});
|
|
909
924
|
assert.isTrue(postImportCalled, "Post-import callback should have been called");
|
|
910
925
|
const finalProps = briefcaseDb.elements.getElementProps(elementId);
|