@itwin/core-backend 5.3.0-dev.9 → 5.3.1
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 +60 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.js.map +1 -1
- package/lib/cjs/BlobContainerService.js.map +1 -1
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js +14 -0
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/CatalogDb.js.map +1 -1
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +2 -2
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +248 -248
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.js +5 -5
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts +2 -0
- package/lib/cjs/CloudSqlite.d.ts.map +1 -1
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeService.js.map +1 -1
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.d.ts +2 -2
- package/lib/cjs/DisplayStyle.d.ts.map +1 -1
- package/lib/cjs/DisplayStyle.js +4 -4
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.js +1 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.d.ts +31 -3
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +55 -3
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.d.ts +24 -1
- package/lib/cjs/ElementAspect.d.ts.map +1 -1
- package/lib/cjs/ElementAspect.js +102 -1
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.js.map +1 -1
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/FontFile.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeographicCRSServices.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +28 -4
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +76 -14
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelDbFonts.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 +2 -2
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/ImageSourceConversion.js.map +1 -1
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/LocalHub.js +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/LockControl.js.map +1 -1
- package/lib/cjs/Material.d.ts +1 -1
- package/lib/cjs/Material.d.ts.map +1 -1
- package/lib/cjs/Material.js +2 -2
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.d.ts +15 -0
- package/lib/cjs/NavigationRelationship.d.ts.map +1 -1
- package/lib/cjs/NavigationRelationship.js +22 -1
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/Relationship.d.ts +5 -0
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +7 -0
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.js.map +1 -1
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SchemaUtils.js.map +1 -1
- package/lib/cjs/SheetIndex.js.map +1 -1
- package/lib/cjs/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/StashManager.js.map +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +25 -0
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +61 -4
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +1 -1
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js +2 -2
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +15 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +36 -23
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.d.ts +13 -1
- package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js +88 -10
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts +6 -5
- package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js +33 -14
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js +2 -1
- package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
- package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
- package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
- package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
- package/lib/cjs/internal/FontFileImpl.js.map +1 -1
- package/lib/cjs/internal/HubMock.js.map +1 -1
- package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/cjs/internal/NativePlatform.js.map +1 -1
- package/lib/cjs/internal/NoLocks.js.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.js.map +1 -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 +12 -5
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/cjs/rpc/multipart.js.map +1 -1
- package/lib/cjs/rpc/tracing.js.map +1 -1
- package/lib/cjs/rpc/web/logging.js.map +1 -1
- package/lib/cjs/rpc/web/request.js.map +1 -1
- package/lib/cjs/rpc/web/response.js.map +1 -1
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/BackendLoggerCategory.js.map +1 -1
- package/lib/esm/BisCoreSchema.js.map +1 -1
- package/lib/esm/BlobContainerService.js.map +1 -1
- package/lib/esm/BriefcaseManager.d.ts.map +1 -1
- package/lib/esm/BriefcaseManager.js +14 -0
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/CatalogDb.js.map +1 -1
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.js +2 -2
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangedElementsDb.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +248 -248
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChannelControl.js.map +1 -1
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/ClassRegistry.js +5 -5
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/CloudSqlite.d.ts +2 -0
- package/lib/esm/CloudSqlite.d.ts.map +1 -1
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeService.js.map +1 -1
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/CustomViewState3dCreator.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyle.d.ts +2 -2
- package/lib/esm/DisplayStyle.d.ts.map +1 -1
- package/lib/esm/DisplayStyle.js +4 -4
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/ECDb.js +1 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/Element.d.ts +31 -3
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +55 -4
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.d.ts +24 -1
- package/lib/esm/ElementAspect.d.ts.map +1 -1
- package/lib/esm/ElementAspect.js +101 -1
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementGraphics.js.map +1 -1
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/EntityReferences.js.map +1 -1
- package/lib/esm/ExportGraphics.js.map +1 -1
- package/lib/esm/ExternalSource.js.map +1 -1
- package/lib/esm/FontFile.js.map +1 -1
- package/lib/esm/GeoCoordConfig.js.map +1 -1
- package/lib/esm/GeographicCRSServices.js.map +1 -1
- package/lib/esm/GeometrySummary.js +47 -47
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +28 -4
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +76 -14
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelDbFonts.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 +2 -2
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/esm/IModelJsFs.js.map +1 -1
- package/lib/esm/ImageSourceConversion.js.map +1 -1
- package/lib/esm/IpcHost.js.map +1 -1
- package/lib/esm/LineStyle.js.map +1 -1
- package/lib/esm/LocalHub.js +1 -1
- package/lib/esm/LocalHub.js.map +1 -1
- package/lib/esm/LocalhostIpcHost.js.map +1 -1
- package/lib/esm/LockControl.js.map +1 -1
- package/lib/esm/Material.d.ts +1 -1
- package/lib/esm/Material.d.ts.map +1 -1
- package/lib/esm/Material.js +2 -2
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/NativeAppStorage.js.map +1 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/NavigationRelationship.d.ts +15 -0
- package/lib/esm/NavigationRelationship.d.ts.map +1 -1
- package/lib/esm/NavigationRelationship.js +19 -0
- package/lib/esm/NavigationRelationship.js.map +1 -1
- package/lib/esm/PromiseMemoizer.js.map +1 -1
- package/lib/esm/PropertyStore.js.map +1 -1
- package/lib/esm/Relationship.d.ts +5 -0
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +7 -0
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/RpcBackend.js.map +1 -1
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/Schema.js.map +1 -1
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SchemaUtils.js.map +1 -1
- package/lib/esm/SheetIndex.js.map +1 -1
- package/lib/esm/SqliteChangesetReader.js.map +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/StashManager.js.map +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +25 -0
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +61 -4
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.d.ts +1 -1
- package/lib/esm/ViewDefinition.d.ts.map +1 -1
- package/lib/esm/ViewDefinition.js +2 -2
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +15 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +37 -24
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/FrameGeometry.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.d.ts +13 -1
- package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js +89 -12
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts +6 -5
- package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js +33 -14
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js +2 -1
- package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/FunctionalSchema.js.map +1 -1
- package/lib/esm/domains/GenericElements.js.map +1 -1
- package/lib/esm/domains/GenericSchema.js.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/ElementLRUCache.js.map +1 -1
- package/lib/esm/internal/FontFileImpl.js.map +1 -1
- package/lib/esm/internal/HubMock.js.map +1 -1
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/esm/internal/NativePlatform.js.map +1 -1
- package/lib/esm/internal/NoLocks.js.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
- 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 +11 -5
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/esm/rpc/multipart.js.map +1 -1
- package/lib/esm/rpc/tracing.js.map +1 -1
- package/lib/esm/rpc/web/logging.js.map +1 -1
- package/lib/esm/rpc/web/request.js.map +1 -1
- package/lib/esm/rpc/web/response.js.map +1 -1
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/esm/test/AdvancedEqual.js.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
- package/lib/esm/test/AttachDb.test.js +11 -11
- package/lib/esm/test/AttachDb.test.js.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.d.ts +93 -0
- package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -0
- package/lib/esm/test/ElementDrivesElement.test.js +862 -0
- package/lib/esm/test/ElementDrivesElement.test.js.map +1 -0
- package/lib/esm/test/ElementLRUCache.test.js +13 -0
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/GeometryTestUtil.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
- package/lib/esm/test/IpcHost.test.js.map +1 -1
- package/lib/esm/test/KnownTestLocations.js.map +1 -1
- package/lib/esm/test/PrintElementTree.js.map +1 -1
- package/lib/esm/test/PropertyDb.test.js.map +1 -1
- package/lib/esm/test/RevisionUtility.js.map +1 -1
- package/lib/esm/test/SchemaUtils.test.js +25 -25
- package/lib/esm/test/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js +81 -37
- package/lib/esm/test/annotations/Fields.test.js.map +1 -1
- package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js +47 -2
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +120 -31
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
- package/lib/esm/test/categories/Category.test.js.map +1 -1
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
- package/lib/esm/test/ecdb/CTE.test.js +88 -88
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js +17 -17
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +72 -72
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +359 -328
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +22 -22
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js +13 -13
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/ProjectInformationRecord.test.d.ts +2 -0
- package/lib/esm/test/element/ProjectInformationRecord.test.d.ts.map +1 -0
- package/lib/esm/test/element/ProjectInformationRecord.test.js +80 -0
- package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -0
- package/lib/esm/test/element/SheetInformationAspect.test.d.ts +2 -0
- package/lib/esm/test/element/SheetInformationAspect.test.d.ts.map +1 -0
- package/lib/esm/test/element/SheetInformationAspect.test.js +182 -0
- package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -0
- package/lib/esm/test/element/UrlLink.test.js.map +1 -1
- package/lib/esm/test/font/FontFile.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +387 -36
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/imageData.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +219 -46
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/misc/DevTools.test.js.map +1 -1
- package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
- package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
- package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
- package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
- package/lib/esm/test/rpc/response.test.js.map +1 -1
- package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +187 -184
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js +6 -6
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementGraphics.test.js +75 -6
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js +4 -4
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
- package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
- package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/Setting.test.js.map +1 -1
- package/lib/esm/test/standalone/Settings.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js +33 -5
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/workspace/Settings.js.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +14 -14
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { Guid } from "@itwin/core-bentley";
|
|
6
|
+
import { Code, IModel, QueryBinder, SubCategoryAppearance } from "@itwin/core-common";
|
|
5
7
|
import * as chai from "chai";
|
|
6
8
|
import * as chaiAsPromised from "chai-as-promised";
|
|
7
9
|
import { HubWrappers, IModelTestUtils, KnownTestLocations } from "..";
|
|
8
|
-
import { BriefcaseManager, ChannelControl, DrawingCategory, IModelHost, SqliteChangesetReader } from "../../core-backend";
|
|
10
|
+
import { BriefcaseManager, ChangesetECAdaptor, ChannelControl, DrawingCategory, IModelHost, SqliteChangesetReader } from "../../core-backend";
|
|
9
11
|
import { HubMock } from "../../internal/HubMock";
|
|
10
|
-
import { Code, IModel, SubCategoryAppearance } from "@itwin/core-common";
|
|
11
|
-
import { Guid } from "@itwin/core-bentley";
|
|
12
12
|
import { StashManager } from "../../StashManager";
|
|
13
|
+
import { existsSync, unlinkSync, writeFileSync } from "fs";
|
|
14
|
+
import * as path from "path";
|
|
13
15
|
chai.use(chaiAsPromised);
|
|
14
16
|
class TestIModel {
|
|
15
17
|
iModelId = "";
|
|
@@ -24,22 +26,22 @@ class TestIModel {
|
|
|
24
26
|
const b1 = await HubWrappers.downloadAndOpenBriefcase({ iTwinId: HubMock.iTwinId, iModelId: this.iModelId });
|
|
25
27
|
b1.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
26
28
|
b1.saveChanges();
|
|
27
|
-
const schema1 = `<?xml version="1.0" encoding="UTF-8"?>
|
|
28
|
-
<ECSchema schemaName="TestDomain" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
29
|
-
<ECSchemaReference name="BisCore" version="01.00.00" alias="bis"/>
|
|
30
|
-
<ECEntityClass typeName="a1">
|
|
31
|
-
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
32
|
-
<ECProperty propertyName="prop1" typeName="string" />
|
|
33
|
-
</ECEntityClass>
|
|
34
|
-
<ECRelationshipClass typeName="A1OwnsA1" modifier="None" strength="embedding">
|
|
35
|
-
<BaseClass>bis:ElementOwnsChildElements</BaseClass>
|
|
36
|
-
<Source multiplicity="(0..1)" roleLabel="owns" polymorphic="true">
|
|
37
|
-
<Class class="a1"/>
|
|
38
|
-
</Source>
|
|
39
|
-
<Target multiplicity="(0..*)" roleLabel="is owned by" polymorphic="false">
|
|
40
|
-
<Class class="a1"/>
|
|
41
|
-
</Target>
|
|
42
|
-
</ECRelationshipClass>
|
|
29
|
+
const schema1 = `<?xml version="1.0" encoding="UTF-8"?>
|
|
30
|
+
<ECSchema schemaName="TestDomain" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
31
|
+
<ECSchemaReference name="BisCore" version="01.00.00" alias="bis"/>
|
|
32
|
+
<ECEntityClass typeName="a1">
|
|
33
|
+
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
34
|
+
<ECProperty propertyName="prop1" typeName="string" />
|
|
35
|
+
</ECEntityClass>
|
|
36
|
+
<ECRelationshipClass typeName="A1OwnsA1" modifier="None" strength="embedding">
|
|
37
|
+
<BaseClass>bis:ElementOwnsChildElements</BaseClass>
|
|
38
|
+
<Source multiplicity="(0..1)" roleLabel="owns" polymorphic="true">
|
|
39
|
+
<Class class="a1"/>
|
|
40
|
+
</Source>
|
|
41
|
+
<Target multiplicity="(0..*)" roleLabel="is owned by" polymorphic="false">
|
|
42
|
+
<Class class="a1"/>
|
|
43
|
+
</Target>
|
|
44
|
+
</ECRelationshipClass>
|
|
43
45
|
</ECSchema>`;
|
|
44
46
|
await b1.importSchemaStrings([schema1]);
|
|
45
47
|
chai.expect(b1.txns.hasPendingTxns).to.be.true;
|
|
@@ -359,6 +361,131 @@ describe("rebase changes & stashing api", function () {
|
|
|
359
361
|
StashManager.dropAllStashes(b1);
|
|
360
362
|
chai.expect(StashManager.getStashes(b1)).to.have.lengthOf(0);
|
|
361
363
|
});
|
|
364
|
+
it("recursively calling withIndirectTxnMode()", async () => {
|
|
365
|
+
const b1 = await testIModel.openBriefcase();
|
|
366
|
+
chai.expect(b1.txns.getMode()).to.equal("direct");
|
|
367
|
+
b1.txns.withIndirectTxnMode(() => {
|
|
368
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
369
|
+
});
|
|
370
|
+
chai.expect(b1.txns.getMode()).to.equal("direct");
|
|
371
|
+
b1.txns.withIndirectTxnMode(() => {
|
|
372
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
373
|
+
b1.txns.withIndirectTxnMode(() => {
|
|
374
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
375
|
+
b1.txns.withIndirectTxnMode(() => {
|
|
376
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
377
|
+
b1.txns.withIndirectTxnMode(() => {
|
|
378
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
379
|
+
});
|
|
380
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
381
|
+
});
|
|
382
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
chai.expect(b1.txns.getMode()).to.equal("direct");
|
|
386
|
+
chai.expect(() => b1.txns.withIndirectTxnMode(() => {
|
|
387
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
388
|
+
throw new Error("Test error");
|
|
389
|
+
})).to.throw();
|
|
390
|
+
chai.expect(b1.txns.getMode()).to.equal("direct");
|
|
391
|
+
});
|
|
392
|
+
it("should fail to importSchemas() & importSchemaStrings() in indirect scope", async () => {
|
|
393
|
+
const b1 = await testIModel.openBriefcase();
|
|
394
|
+
const schema = `<?xml version="1.0" encoding="UTF-8"?>
|
|
395
|
+
<ECSchema schemaName="MySchema" alias="ms1" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
396
|
+
<ECSchemaReference name="BisCore" version="01.00.00" alias="bis"/>
|
|
397
|
+
<ECEntityClass typeName="my_class">
|
|
398
|
+
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
399
|
+
<ECProperty propertyName="prop1" typeName="string" />
|
|
400
|
+
</ECEntityClass>
|
|
401
|
+
</ECSchema>`;
|
|
402
|
+
const schemaFile = path.join(KnownTestLocations.outputDir, "MySchema.01.00.00.ecschema.xml");
|
|
403
|
+
if (existsSync(schemaFile)) {
|
|
404
|
+
unlinkSync(schemaFile);
|
|
405
|
+
}
|
|
406
|
+
writeFileSync(schemaFile, schema, { encoding: "utf8" });
|
|
407
|
+
await chai.expect(b1.txns.withIndirectTxnModeAsync(async () => {
|
|
408
|
+
await b1.importSchemas([schema]);
|
|
409
|
+
})).to.be.rejectedWith("Cannot import schemas while in an indirect change scope");
|
|
410
|
+
b1.abandonChanges();
|
|
411
|
+
await chai.expect(b1.txns.withIndirectTxnModeAsync(async () => {
|
|
412
|
+
await b1.importSchemaStrings([schema]);
|
|
413
|
+
})).to.be.rejectedWith("Cannot import schemas while in an indirect change scope");
|
|
414
|
+
b1.abandonChanges();
|
|
415
|
+
await b1.importSchemaStrings([schema]);
|
|
416
|
+
b1.saveChanges();
|
|
417
|
+
await b1.pushChanges({ description: "import schema" });
|
|
418
|
+
});
|
|
419
|
+
it("should fail to saveChanges() & pushChanges() in indirect scope", async () => {
|
|
420
|
+
const b1 = await testIModel.openBriefcase();
|
|
421
|
+
await testIModel.insertElement(b1);
|
|
422
|
+
await chai.expect(b1.txns.withIndirectTxnModeAsync(async () => {
|
|
423
|
+
b1.saveChanges();
|
|
424
|
+
})).to.be.rejectedWith("Cannot save changes while in an indirect change scope");
|
|
425
|
+
chai.expect(() => b1.txns.withIndirectTxnMode(() => {
|
|
426
|
+
b1.saveChanges();
|
|
427
|
+
})).to.be.throws("Cannot save changes while in an indirect change scope");
|
|
428
|
+
b1.saveChanges();
|
|
429
|
+
await chai.expect(b1.txns.withIndirectTxnModeAsync(async () => {
|
|
430
|
+
await b1.pushChanges({ description: "test" });
|
|
431
|
+
})).to.be.rejectedWith("Cannot push changeset while in an indirect change scope");
|
|
432
|
+
await b1.pushChanges({ description: "test" });
|
|
433
|
+
});
|
|
434
|
+
it("should fail to saveFileProperty/deleteFileProperty in indirect scope", async () => {
|
|
435
|
+
// pull/push/saveFileProperty/deleteFileProperty should be called inside indirect change scope.
|
|
436
|
+
const b1 = await testIModel.openBriefcase();
|
|
437
|
+
b1.saveFileProperty({ namespace: "test", name: "test" }, "Hello, World");
|
|
438
|
+
await chai.expect(b1.txns.withIndirectTxnModeAsync(async () => {
|
|
439
|
+
b1.saveFileProperty({ namespace: "test", name: "test" }, "This should fail 1");
|
|
440
|
+
})).to.be.rejectedWith("Cannot save file property while in an indirect change scope");
|
|
441
|
+
chai.expect(b1.queryFilePropertyString({ namespace: "test", name: "test" })).to.equal("Hello, World");
|
|
442
|
+
await chai.expect(b1.txns.withIndirectTxnModeAsync(async () => {
|
|
443
|
+
b1.deleteFileProperty({ namespace: "test", name: "test" });
|
|
444
|
+
})).to.be.rejectedWith("Cannot delete file property while in an indirect change scope");
|
|
445
|
+
chai.expect(b1.queryFilePropertyString({ namespace: "test", name: "test" })).to.equal("Hello, World");
|
|
446
|
+
chai.expect(() => b1.txns.withIndirectTxnMode(() => {
|
|
447
|
+
b1.saveFileProperty({ namespace: "test", name: "test" }, "This should fail 2");
|
|
448
|
+
})).to.be.throws("Cannot save file property while in an indirect change scope");
|
|
449
|
+
chai.expect(b1.queryFilePropertyString({ namespace: "test", name: "test" })).to.equal("Hello, World");
|
|
450
|
+
chai.expect(() => b1.txns.withIndirectTxnMode(() => {
|
|
451
|
+
b1.deleteFileProperty({ namespace: "test", name: "test" });
|
|
452
|
+
})).to.be.throws("Cannot delete file property while in an indirect change scope");
|
|
453
|
+
b1.saveChanges();
|
|
454
|
+
});
|
|
455
|
+
it("recursively calling withIndirectTxnModeAsync()", async () => {
|
|
456
|
+
const b1 = await testIModel.openBriefcase();
|
|
457
|
+
chai.expect(b1.txns.getMode()).to.equal("direct");
|
|
458
|
+
await b1.txns.withIndirectTxnModeAsync(async () => {
|
|
459
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
460
|
+
});
|
|
461
|
+
chai.expect(b1.txns.getMode()).to.equal("direct");
|
|
462
|
+
await b1.txns.withIndirectTxnModeAsync(async () => {
|
|
463
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
464
|
+
await b1.txns.withIndirectTxnModeAsync(async () => {
|
|
465
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
466
|
+
await b1.txns.withIndirectTxnModeAsync(async () => {
|
|
467
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
468
|
+
await b1.txns.withIndirectTxnModeAsync(async () => {
|
|
469
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
470
|
+
await b1.txns.withIndirectTxnModeAsync(async () => {
|
|
471
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
472
|
+
});
|
|
473
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
474
|
+
});
|
|
475
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
476
|
+
});
|
|
477
|
+
});
|
|
478
|
+
b1.txns.withIndirectTxnMode(() => {
|
|
479
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
480
|
+
});
|
|
481
|
+
});
|
|
482
|
+
chai.expect(b1.txns.getMode()).to.equal("direct");
|
|
483
|
+
await chai.expect(b1.txns.withIndirectTxnModeAsync(async () => {
|
|
484
|
+
chai.expect(b1.txns.getMode()).to.equal("indirect");
|
|
485
|
+
throw new Error("Test error");
|
|
486
|
+
})).rejectedWith(Error);
|
|
487
|
+
chai.expect(b1.txns.getMode()).to.equal("direct");
|
|
488
|
+
});
|
|
362
489
|
it("should restore mutually exclusive stashes", async () => {
|
|
363
490
|
const b1 = await testIModel.openBriefcase();
|
|
364
491
|
// stash 1
|
|
@@ -551,23 +678,23 @@ describe("rebase changes & stashing api", function () {
|
|
|
551
678
|
});
|
|
552
679
|
it("schema change should not be stashed", async () => {
|
|
553
680
|
const b1 = await testIModel.openBriefcase();
|
|
554
|
-
const schema1 = `<?xml version="1.0" encoding="UTF-8"?>
|
|
555
|
-
<ECSchema schemaName="TestDomain" alias="ts" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
556
|
-
<ECSchemaReference name="BisCore" version="01.00.00" alias="bis"/>
|
|
557
|
-
<ECEntityClass typeName="a1">
|
|
558
|
-
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
559
|
-
<ECProperty propertyName="prop1" typeName="string" />
|
|
560
|
-
<ECProperty propertyName="prop2" typeName="string" />
|
|
561
|
-
</ECEntityClass>
|
|
562
|
-
<ECRelationshipClass typeName="A1OwnsA1" modifier="None" strength="embedding">
|
|
563
|
-
<BaseClass>bis:ElementOwnsChildElements</BaseClass>
|
|
564
|
-
<Source multiplicity="(0..1)" roleLabel="owns" polymorphic="true">
|
|
565
|
-
<Class class="a1"/>
|
|
566
|
-
</Source>
|
|
567
|
-
<Target multiplicity="(0..*)" roleLabel="is owned by" polymorphic="false">
|
|
568
|
-
<Class class="a1"/>
|
|
569
|
-
</Target>
|
|
570
|
-
</ECRelationshipClass>
|
|
681
|
+
const schema1 = `<?xml version="1.0" encoding="UTF-8"?>
|
|
682
|
+
<ECSchema schemaName="TestDomain" alias="ts" version="01.00.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
683
|
+
<ECSchemaReference name="BisCore" version="01.00.00" alias="bis"/>
|
|
684
|
+
<ECEntityClass typeName="a1">
|
|
685
|
+
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
686
|
+
<ECProperty propertyName="prop1" typeName="string" />
|
|
687
|
+
<ECProperty propertyName="prop2" typeName="string" />
|
|
688
|
+
</ECEntityClass>
|
|
689
|
+
<ECRelationshipClass typeName="A1OwnsA1" modifier="None" strength="embedding">
|
|
690
|
+
<BaseClass>bis:ElementOwnsChildElements</BaseClass>
|
|
691
|
+
<Source multiplicity="(0..1)" roleLabel="owns" polymorphic="true">
|
|
692
|
+
<Class class="a1"/>
|
|
693
|
+
</Source>
|
|
694
|
+
<Target multiplicity="(0..*)" roleLabel="is owned by" polymorphic="false">
|
|
695
|
+
<Class class="a1"/>
|
|
696
|
+
</Target>
|
|
697
|
+
</ECRelationshipClass>
|
|
571
698
|
</ECSchema>`;
|
|
572
699
|
await b1.importSchemaStrings([schema1]);
|
|
573
700
|
b1.saveChanges();
|
|
@@ -612,6 +739,41 @@ describe("rebase changes & stashing api", function () {
|
|
|
612
739
|
chai.expect(b2.elements.tryGetElementProps(e3)).to.undefined; // add by rebase so should not exist either
|
|
613
740
|
chai.expect(BriefcaseManager.containsRestorePoint(b2, BriefcaseManager.PULL_MERGE_RESTORE_POINT_NAME)).is.false;
|
|
614
741
|
});
|
|
742
|
+
it("calling discardChanges() from inside indirect scope is not allowed", async () => {
|
|
743
|
+
const b1 = await testIModel.openBriefcase();
|
|
744
|
+
await testIModel.insertElement(b1);
|
|
745
|
+
b1.saveChanges();
|
|
746
|
+
const p1 = b1.txns.withIndirectTxnModeAsync(async () => {
|
|
747
|
+
await b1.discardChanges();
|
|
748
|
+
});
|
|
749
|
+
await chai.expect(p1).to.be.rejectedWith("Cannot discard changes when there are indirect changes");
|
|
750
|
+
b1.saveChanges();
|
|
751
|
+
});
|
|
752
|
+
it("calling discardChanges() during rebasing is not allowed", async () => {
|
|
753
|
+
const b1 = await testIModel.openBriefcase();
|
|
754
|
+
const b2 = await testIModel.openBriefcase();
|
|
755
|
+
await testIModel.insertElement(b1);
|
|
756
|
+
await testIModel.insertElement(b1);
|
|
757
|
+
b1.saveChanges();
|
|
758
|
+
await b1.pushChanges({ description: "inserted element" });
|
|
759
|
+
await testIModel.insertElement(b2);
|
|
760
|
+
await testIModel.insertElement(b2);
|
|
761
|
+
b2.saveChanges();
|
|
762
|
+
b2.txns.rebaser.setCustomHandler({
|
|
763
|
+
shouldReinstate: (_txnProps) => {
|
|
764
|
+
return true;
|
|
765
|
+
},
|
|
766
|
+
recompute: async (_txnProps) => {
|
|
767
|
+
chai.expect(b2.txns.rebaser.isAborting).is.false;
|
|
768
|
+
await b2.discardChanges();
|
|
769
|
+
},
|
|
770
|
+
});
|
|
771
|
+
chai.expect(b2.txns.rebaser.isAborting).is.false;
|
|
772
|
+
const p1 = b2.pullChanges();
|
|
773
|
+
await chai.expect(p1).to.be.rejectedWith("Cannot discard changes while a rebase is in progress");
|
|
774
|
+
chai.expect(b2.txns.rebaser.canAbort()).is.true;
|
|
775
|
+
await b2.txns.rebaser.abort();
|
|
776
|
+
});
|
|
615
777
|
it("getStash() should throw exception", async () => {
|
|
616
778
|
const b1 = await testIModel.openBriefcase();
|
|
617
779
|
chai.expect(() => StashManager.getStash({ db: b1, stash: "invalid_stash" })).to.throw("Invalid stash");
|
|
@@ -636,5 +798,194 @@ describe("rebase changes & stashing api", function () {
|
|
|
636
798
|
await chai.expect(b2.pushChanges({ description: `deleted child ${childId} and inserted grandchild ${grandChildId}` }))
|
|
637
799
|
.to.be.rejectedWith("Foreign key conflicts in ChangeSet. Aborting rebase.");
|
|
638
800
|
});
|
|
801
|
+
it("ECSqlReader unable to read updates after saveChanges()", async () => {
|
|
802
|
+
const b1 = await testIModel.openBriefcase();
|
|
803
|
+
const findElement = async (id) => {
|
|
804
|
+
const reader = b1.createQueryReader(`SELECT ECInstanceId, ec_className(ECClassId), Prop1 FROM ts.A1 WHERE ECInstanceId = ${id}`, QueryBinder.from([id]));
|
|
805
|
+
if (await reader.step())
|
|
806
|
+
return { id: reader.current[0], className: reader.current[1], prop1: reader.current[2] };
|
|
807
|
+
return undefined;
|
|
808
|
+
};
|
|
809
|
+
const runQuery = async (query) => {
|
|
810
|
+
const reader = b1.createQueryReader(query);
|
|
811
|
+
let rows = 0;
|
|
812
|
+
while (await reader.step()) {
|
|
813
|
+
rows++;
|
|
814
|
+
}
|
|
815
|
+
return rows;
|
|
816
|
+
};
|
|
817
|
+
const runQueryParallel = async (query, times = 1) => {
|
|
818
|
+
return Promise.all(new Array(times).fill(query).map(runQuery));
|
|
819
|
+
};
|
|
820
|
+
// Following query have open cached statement against BisCore.Element that will prevent
|
|
821
|
+
// updates from being visible until the statement is finalized.
|
|
822
|
+
await runQueryParallel(`SELECT $ FROM BisCore.Element`, 10);
|
|
823
|
+
const e1 = await testIModel.insertElement(b1);
|
|
824
|
+
chai.expect(await findElement(e1)).to.be.undefined;
|
|
825
|
+
b1.saveChanges("insert element");
|
|
826
|
+
const e1Props = await findElement(e1);
|
|
827
|
+
chai.expect(e1Props).to.exist;
|
|
828
|
+
await runQueryParallel(`SELECT $ FROM BisCore.Element`, 10);
|
|
829
|
+
const e2 = await testIModel.insertElement(b1);
|
|
830
|
+
chai.expect(await findElement(e2)).to.be.undefined;
|
|
831
|
+
b1.saveChanges("insert second element");
|
|
832
|
+
const e2Props = await findElement(e2);
|
|
833
|
+
chai.expect(e2Props).to.exist;
|
|
834
|
+
await runQueryParallel(`SELECT $ FROM BisCore.Element`, 10);
|
|
835
|
+
const e3 = await testIModel.insertElement(b1);
|
|
836
|
+
chai.expect(await findElement(e3)).to.be.undefined;
|
|
837
|
+
b1.saveChanges("insert third element");
|
|
838
|
+
const e3Props = await findElement(e3);
|
|
839
|
+
chai.expect(e3Props).to.exist;
|
|
840
|
+
});
|
|
841
|
+
it("enum txn changes in recompute", async () => {
|
|
842
|
+
const b1 = await testIModel.openBriefcase();
|
|
843
|
+
const b2 = await testIModel.openBriefcase();
|
|
844
|
+
const e1 = await testIModel.insertElement(b1);
|
|
845
|
+
const e2 = await testIModel.insertElement(b1, true);
|
|
846
|
+
b1.saveChanges();
|
|
847
|
+
await b1.pushChanges({ description: "insert element 1 direct and 1 indirect" });
|
|
848
|
+
await b2.pullChanges();
|
|
849
|
+
await testIModel.updateElement(b1, e1);
|
|
850
|
+
await testIModel.updateElement(b1, e2, true);
|
|
851
|
+
b1.saveChanges();
|
|
852
|
+
await b1.pushChanges({ description: "update element 1 direct and 1 indirect" });
|
|
853
|
+
await testIModel.insertElement(b2);
|
|
854
|
+
await testIModel.insertElement(b2, true);
|
|
855
|
+
b2.saveChanges("first change");
|
|
856
|
+
await testIModel.insertElement(b2);
|
|
857
|
+
await testIModel.insertElement(b2, true);
|
|
858
|
+
b2.saveChanges("second change");
|
|
859
|
+
await testIModel.insertElement(b2);
|
|
860
|
+
await testIModel.insertElement(b2, true);
|
|
861
|
+
b2.saveChanges("third change");
|
|
862
|
+
let txnVerified = 0;
|
|
863
|
+
b2.txns.rebaser.setCustomHandler({
|
|
864
|
+
shouldReinstate: (_txn) => {
|
|
865
|
+
return true;
|
|
866
|
+
},
|
|
867
|
+
recompute: async (txn) => {
|
|
868
|
+
const reader = SqliteChangesetReader.openTxn({ txnId: txn.id, db: b2, disableSchemaCheck: true });
|
|
869
|
+
const adaptor = new ChangesetECAdaptor(reader);
|
|
870
|
+
adaptor.acceptClass("TestDomain:a1");
|
|
871
|
+
const ids = new Set();
|
|
872
|
+
while (adaptor.step()) {
|
|
873
|
+
if (!adaptor.reader.isIndirect)
|
|
874
|
+
ids.add(adaptor.inserted?.ECInstanceId || adaptor.deleted?.ECInstanceId);
|
|
875
|
+
}
|
|
876
|
+
adaptor.close();
|
|
877
|
+
if (txn.props.description === "first change") {
|
|
878
|
+
chai.expect(Array.from(ids.keys())).deep.equal(["0x40000000001"]);
|
|
879
|
+
txnVerified++;
|
|
880
|
+
}
|
|
881
|
+
else if (txn.props.description === "second change") {
|
|
882
|
+
chai.expect(Array.from(ids.keys())).deep.equal(["0x40000000003"]);
|
|
883
|
+
txnVerified++;
|
|
884
|
+
}
|
|
885
|
+
else if (txn.props.description === "third change") {
|
|
886
|
+
chai.expect(Array.from(ids.keys())).deep.equal(["0x40000000005"]);
|
|
887
|
+
txnVerified++;
|
|
888
|
+
}
|
|
889
|
+
else {
|
|
890
|
+
txnVerified++;
|
|
891
|
+
}
|
|
892
|
+
},
|
|
893
|
+
});
|
|
894
|
+
await b2.pullChanges();
|
|
895
|
+
chai.expect(txnVerified).to.equal(3);
|
|
896
|
+
});
|
|
897
|
+
it("before and after rebase events", async () => {
|
|
898
|
+
const b1 = await testIModel.openBriefcase();
|
|
899
|
+
const b2 = await testIModel.openBriefcase();
|
|
900
|
+
const e1 = await testIModel.insertElement(b1);
|
|
901
|
+
const e2 = await testIModel.insertElement(b1, true);
|
|
902
|
+
b1.saveChanges();
|
|
903
|
+
await b1.pushChanges({ description: "insert element 1 direct and 1 indirect" });
|
|
904
|
+
await b2.pullChanges();
|
|
905
|
+
await testIModel.updateElement(b1, e1);
|
|
906
|
+
await testIModel.updateElement(b1, e2, true);
|
|
907
|
+
b1.saveChanges();
|
|
908
|
+
await b1.pushChanges({ description: "update element 1 direct and 1 indirect" });
|
|
909
|
+
await testIModel.insertElement(b2);
|
|
910
|
+
await testIModel.insertElement(b2, true);
|
|
911
|
+
b2.saveChanges("first change");
|
|
912
|
+
await testIModel.insertElement(b2);
|
|
913
|
+
await testIModel.insertElement(b2, true);
|
|
914
|
+
b2.saveChanges("second change");
|
|
915
|
+
await testIModel.insertElement(b2);
|
|
916
|
+
await testIModel.insertElement(b2, true);
|
|
917
|
+
b2.saveChanges("third change");
|
|
918
|
+
const events = {
|
|
919
|
+
onRebase: {
|
|
920
|
+
beginCount: 0,
|
|
921
|
+
endCount: 0,
|
|
922
|
+
beginIds: [],
|
|
923
|
+
},
|
|
924
|
+
onRebaseTxn: {
|
|
925
|
+
beginTxns: [],
|
|
926
|
+
endTxns: [],
|
|
927
|
+
},
|
|
928
|
+
rebaseHandler: {
|
|
929
|
+
shouldReinstate: [],
|
|
930
|
+
recompute: [],
|
|
931
|
+
}
|
|
932
|
+
};
|
|
933
|
+
const resetEvent = () => {
|
|
934
|
+
events.onRebase.beginCount = 0;
|
|
935
|
+
events.onRebase.endCount = 0;
|
|
936
|
+
events.onRebase.beginIds = [];
|
|
937
|
+
events.onRebaseTxn.beginTxns = [];
|
|
938
|
+
events.onRebaseTxn.endTxns = [];
|
|
939
|
+
events.rebaseHandler.shouldReinstate = [];
|
|
940
|
+
events.rebaseHandler.recompute = [];
|
|
941
|
+
};
|
|
942
|
+
b2.txns.onRebaseBegin.addListener((ids) => {
|
|
943
|
+
events.onRebase.beginCount++;
|
|
944
|
+
events.onRebase.beginIds.push(...ids);
|
|
945
|
+
});
|
|
946
|
+
b2.txns.onRebaseEnd.addListener(() => {
|
|
947
|
+
events.onRebase.endCount++;
|
|
948
|
+
});
|
|
949
|
+
b2.txns.onRebaseTxnBegin.addListener((txn) => {
|
|
950
|
+
events.onRebaseTxn.beginTxns.push(txn);
|
|
951
|
+
});
|
|
952
|
+
b2.txns.onRebaseTxnEnd.addListener((txn) => {
|
|
953
|
+
events.onRebaseTxn.endTxns.push(txn);
|
|
954
|
+
});
|
|
955
|
+
b2.txns.rebaser.setCustomHandler({
|
|
956
|
+
shouldReinstate: (_txn) => {
|
|
957
|
+
events.rebaseHandler.shouldReinstate.push(_txn);
|
|
958
|
+
return true;
|
|
959
|
+
},
|
|
960
|
+
recompute: async (_txn) => {
|
|
961
|
+
events.rebaseHandler.recompute.push(_txn);
|
|
962
|
+
},
|
|
963
|
+
});
|
|
964
|
+
resetEvent();
|
|
965
|
+
await b2.pullChanges();
|
|
966
|
+
chai.expect(events.onRebase.beginCount).to.equal(1);
|
|
967
|
+
chai.expect(events.onRebase.endCount).to.equal(1);
|
|
968
|
+
chai.expect(events.onRebase.beginIds).to.deep.equal(["0x100000000", "0x100000001", "0x100000002"]);
|
|
969
|
+
chai.expect(events.onRebaseTxn.beginTxns.map((txn) => txn.id)).to.deep.equal(["0x100000000", "0x100000001", "0x100000002"]);
|
|
970
|
+
chai.expect(events.onRebaseTxn.endTxns.map((txn) => txn.id)).to.deep.equal(["0x100000000", "0x100000001", "0x100000002"]);
|
|
971
|
+
chai.expect(events.rebaseHandler.shouldReinstate.map((txn) => txn.id)).to.deep.equal(["0x100000000", "0x100000001", "0x100000002"]);
|
|
972
|
+
chai.expect(events.rebaseHandler.recompute.map((txn) => txn.id)).to.deep.equal(["0x100000000", "0x100000001", "0x100000002"]);
|
|
973
|
+
await testIModel.updateElement(b1, e1);
|
|
974
|
+
await testIModel.updateElement(b1, e2, true);
|
|
975
|
+
b1.saveChanges();
|
|
976
|
+
await b1.pushChanges({ description: "update element 1 direct and 1 indirect" });
|
|
977
|
+
await testIModel.insertElement(b2);
|
|
978
|
+
await testIModel.insertElement(b2, true);
|
|
979
|
+
b2.saveChanges("forth change");
|
|
980
|
+
resetEvent();
|
|
981
|
+
await b2.pullChanges();
|
|
982
|
+
chai.expect(events.onRebase.beginCount).to.equal(1);
|
|
983
|
+
chai.expect(events.onRebase.endCount).to.equal(1);
|
|
984
|
+
chai.expect(events.onRebase.beginIds).to.deep.equal(["0x100000000", "0x100000001", "0x100000002", "0x100000003"]);
|
|
985
|
+
chai.expect(events.onRebaseTxn.beginTxns.map((txn) => txn.id)).to.deep.equal(["0x100000000", "0x100000001", "0x100000002", "0x100000003"]);
|
|
986
|
+
chai.expect(events.onRebaseTxn.endTxns.map((txn) => txn.id)).to.deep.equal(["0x100000000", "0x100000001", "0x100000002", "0x100000003"]);
|
|
987
|
+
chai.expect(events.rebaseHandler.shouldReinstate.map((txn) => txn.id)).to.deep.equal(["0x100000000", "0x100000001", "0x100000002", "0x100000003"]);
|
|
988
|
+
chai.expect(events.rebaseHandler.recompute.map((txn) => txn.id)).to.deep.equal(["0x100000000", "0x100000001", "0x100000002", "0x100000003"]);
|
|
989
|
+
});
|
|
639
990
|
});
|
|
640
991
|
//# sourceMappingURL=Rebase.test.js.map
|