@itwin/core-backend 5.8.2 → 5.9.0-dev.10
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 +1 -1
- package/lib/cjs/BackendHubAccess.d.ts +38 -0
- package/lib/cjs/BackendHubAccess.d.ts.map +1 -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.js +3 -3
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/CatalogDb.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/ChangeSummaryManager.js +2 -2
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +253 -250
- 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/ClassRegistry.js +5 -5
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts +1 -1
- package/lib/cjs/CloudSqlite.d.ts.map +1 -1
- package/lib/cjs/CloudSqlite.js +68 -13
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeService.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/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 +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/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/ECSqlSyncReader.js.map +1 -1
- package/lib/cjs/EditTxn.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/ElementGraphics.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/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.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/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 +66 -22
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +183 -297
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelDbFonts.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +58 -1
- package/lib/cjs/IModelHost.d.ts.map +1 -1
- package/lib/cjs/IModelHost.js +89 -0
- 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.d.ts.map +1 -1
- package/lib/cjs/IpcHost.js +15 -6
- 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/LocalHub.js +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/LockControl.d.ts +85 -1
- package/lib/cjs/LockControl.d.ts.map +1 -1
- package/lib/cjs/LockControl.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/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.js.map +1 -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 +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/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 +4 -4
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SchemaUtils.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/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.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/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +105 -9
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +194 -15
- 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/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.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/FrameGeometry.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.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/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
- package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +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.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/FunctionalSchema.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/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.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/ElementLRUCache.js.map +1 -1
- package/lib/cjs/internal/FontFileImpl.js.map +1 -1
- package/lib/cjs/internal/HubMock.d.ts +2 -0
- package/lib/cjs/internal/HubMock.d.ts.map +1 -1
- package/lib/cjs/internal/HubMock.js +7 -0
- package/lib/cjs/internal/HubMock.js.map +1 -1
- package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
- package/lib/cjs/internal/NativePlatform.js.map +1 -1
- package/lib/cjs/internal/NoLocks.d.ts.map +1 -1
- package/lib/cjs/internal/NoLocks.js +6 -0
- package/lib/cjs/internal/NoLocks.js.map +1 -1
- package/lib/cjs/internal/OnlineStatus.js.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.d.ts +12 -0
- package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.js +285 -4
- package/lib/cjs/internal/ServerBasedLocks.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/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts +18 -3
- package/lib/cjs/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
- package/lib/cjs/internal/workspace/SettingsEditorImpl.js +49 -242
- package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsImpl.d.ts.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.d.ts +0 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js +70 -41
- 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.d.ts.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.d.ts +11 -5
- package/lib/cjs/workspace/Settings.d.ts.map +1 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsDb.d.ts +20 -99
- package/lib/cjs/workspace/SettingsDb.d.ts.map +1 -1
- package/lib/cjs/workspace/SettingsDb.js +23 -7
- package/lib/cjs/workspace/SettingsDb.js.map +1 -1
- package/lib/cjs/workspace/SettingsEditor.d.ts +40 -226
- package/lib/cjs/workspace/SettingsEditor.d.ts.map +1 -1
- package/lib/cjs/workspace/SettingsEditor.js +86 -25
- package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.d.ts +7 -11
- package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.d.ts +14 -0
- package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.d.ts +38 -0
- package/lib/esm/BackendHubAccess.d.ts.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.js +3 -3
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/CatalogDb.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/ChangeSummaryManager.js +2 -2
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangedElementsDb.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +253 -250
- 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/ClassRegistry.js +5 -5
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/CloudSqlite.d.ts +1 -1
- package/lib/esm/CloudSqlite.d.ts.map +1 -1
- package/lib/esm/CloudSqlite.js +69 -14
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeService.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/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 +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/ECDb.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/ECSqlRowExecutor.js.map +1 -1
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/ECSqlSyncReader.js.map +1 -1
- package/lib/esm/EditTxn.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/ElementGraphics.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/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.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/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 +66 -22
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +185 -299
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelDbFonts.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.d.ts +58 -1
- package/lib/esm/IModelHost.d.ts.map +1 -1
- package/lib/esm/IModelHost.js +91 -2
- 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.d.ts.map +1 -1
- package/lib/esm/IpcHost.js +16 -7
- 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/LocalHub.js +1 -1
- package/lib/esm/LocalHub.js.map +1 -1
- package/lib/esm/LocalhostIpcHost.js.map +1 -1
- package/lib/esm/LockControl.d.ts +85 -1
- package/lib/esm/LockControl.d.ts.map +1 -1
- package/lib/esm/LockControl.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/NativeAppStorage.js.map +1 -1
- package/lib/esm/NativeHost.js.map +1 -1
- 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 +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/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 +5 -5
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SchemaUtils.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/SqliteChangesetReader.js.map +1 -1
- package/lib/esm/SqliteStatement.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/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +105 -9
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +194 -15
- 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/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.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/FrameGeometry.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.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/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
- package/lib/esm/core-backend.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/FunctionalSchema.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/domains/GenericSchema.js.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.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/ElementLRUCache.js.map +1 -1
- package/lib/esm/internal/FontFileImpl.js.map +1 -1
- package/lib/esm/internal/HubMock.d.ts +2 -0
- package/lib/esm/internal/HubMock.d.ts.map +1 -1
- package/lib/esm/internal/HubMock.js +7 -0
- package/lib/esm/internal/HubMock.js.map +1 -1
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/esm/internal/IntegrityCheck.js.map +1 -1
- package/lib/esm/internal/NativePlatform.js.map +1 -1
- package/lib/esm/internal/NoLocks.d.ts.map +1 -1
- package/lib/esm/internal/NoLocks.js +6 -0
- package/lib/esm/internal/NoLocks.js.map +1 -1
- package/lib/esm/internal/OnlineStatus.js.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.d.ts +12 -0
- package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.js +286 -5
- package/lib/esm/internal/ServerBasedLocks.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/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts +18 -3
- package/lib/esm/internal/workspace/SettingsEditorImpl.d.ts.map +1 -1
- package/lib/esm/internal/workspace/SettingsEditorImpl.js +52 -246
- package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsImpl.d.ts.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.d.ts +0 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js +71 -41
- 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.d.ts.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 +20 -19
- package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.js +134 -119
- package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/GeometryTestUtil.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js +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/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 +2 -2
- 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/SquashSchemaAndDataChanges.test.js +156 -147
- 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 +135 -143
- package/lib/esm/test/annotations/Fields.test.js.map +1 -1
- package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +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/CTE.test.js +88 -88
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +72 -72
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +68 -67
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +6 -6
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -333
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/QueryReaders.test.js +47 -44
- 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 +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 +159 -143
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +90 -82
- 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 +176 -177
- 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 +23 -22
- 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/FontFile.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 +194 -155
- 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/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +369 -303
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/hubaccess/SemanticRebase.test.js +467 -392
- package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
- package/lib/esm/test/imageData.js.map +1 -1
- package/lib/esm/test/imodel/Code.test.js +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/GetTextureImage.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +463 -388
- 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/imodel/SchemaXmlImport.test.js +13 -13
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/TestContext.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/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 +122 -121
- 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 +11 -10
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js +226 -211
- 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 +242 -213
- 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 +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/ElementGraphics.test.js.map +1 -1
- 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 +40 -34
- 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 +211 -169
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts +2 -0
- package/lib/esm/test/standalone/ITwinWorkspace.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ITwinWorkspace.test.js +236 -0
- package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -0
- 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/NativeAppStorage.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/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 +7 -7
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js +928 -22
- 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 +26 -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 +27 -26
- 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/ViewStoreDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js +72 -22
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
- package/lib/esm/test/workspace/SettingsDb.test.js +28 -456
- package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
- package/lib/esm/workspace/Settings.d.ts +11 -5
- package/lib/esm/workspace/Settings.d.ts.map +1 -1
- package/lib/esm/workspace/Settings.js.map +1 -1
- package/lib/esm/workspace/SettingsDb.d.ts +20 -99
- package/lib/esm/workspace/SettingsDb.d.ts.map +1 -1
- package/lib/esm/workspace/SettingsDb.js +20 -6
- package/lib/esm/workspace/SettingsDb.js.map +1 -1
- package/lib/esm/workspace/SettingsEditor.d.ts +40 -226
- package/lib/esm/workspace/SettingsEditor.d.ts.map +1 -1
- package/lib/esm/workspace/SettingsEditor.js +85 -24
- package/lib/esm/workspace/SettingsEditor.js.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
- package/lib/esm/workspace/Workspace.d.ts +7 -11
- package/lib/esm/workspace/Workspace.d.ts.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.d.ts +14 -0
- package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +13 -13
- package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts +0 -38
- package/lib/cjs/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
- package/lib/cjs/internal/workspace/SettingsDbImpl.js +0 -108
- package/lib/cjs/internal/workspace/SettingsDbImpl.js.map +0 -1
- package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts +0 -14
- package/lib/cjs/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
- package/lib/cjs/internal/workspace/SettingsSqliteDb.js +0 -40
- package/lib/cjs/internal/workspace/SettingsSqliteDb.js.map +0 -1
- package/lib/esm/internal/workspace/SettingsDbImpl.d.ts +0 -38
- package/lib/esm/internal/workspace/SettingsDbImpl.d.ts.map +0 -1
- package/lib/esm/internal/workspace/SettingsDbImpl.js +0 -104
- package/lib/esm/internal/workspace/SettingsDbImpl.js.map +0 -1
- package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts +0 -14
- package/lib/esm/internal/workspace/SettingsSqliteDb.d.ts.map +0 -1
- package/lib/esm/internal/workspace/SettingsSqliteDb.js +0 -36
- package/lib/esm/internal/workspace/SettingsSqliteDb.js.map +0 -1
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { DbResult, Id64 } from "@itwin/core-bentley";
|
|
6
|
+
import { EditTxn, withEditTxn } from "../../EditTxn";
|
|
6
7
|
import { Code, ColorDef, IModel, IModelVersion, LockState, QueryRowFormat, SchemaState, SubCategoryAppearance, } from "@itwin/core-common";
|
|
7
8
|
import { Arc3d, IModelJson, Point2d, Point3d } from "@itwin/core-geometry";
|
|
8
9
|
import * as chai from "chai";
|
|
@@ -17,15 +18,16 @@ import { HubMock } from "../../internal/HubMock";
|
|
|
17
18
|
import { _nativeDb, BriefcaseDb, BriefcaseManager, ChannelControl, CodeService, DefinitionModel, DocumentListModel, Drawing, DrawingGraphic, SpatialCategory, Subject, } from "../../core-backend";
|
|
18
19
|
import { IModelTestUtils, TestUserType } from "../IModelTestUtils";
|
|
19
20
|
chai.use(chaiAsPromised);
|
|
20
|
-
export async function createNewModelAndCategory(
|
|
21
|
+
export async function createNewModelAndCategory(txn, parent) {
|
|
22
|
+
const rwIModel = txn.iModel;
|
|
21
23
|
// Create a new physical model.
|
|
22
|
-
const [, modelId] = await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(
|
|
24
|
+
const [, modelId] = await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(txn, IModelTestUtils.getUniqueModelCode(rwIModel, "newPhysicalModel"), true, parent);
|
|
23
25
|
// Find or create a SpatialCategory.
|
|
24
26
|
const dictionary = rwIModel.models.getModel(IModel.dictionaryId);
|
|
25
27
|
const newCategoryCode = IModelTestUtils.getUniqueSpatialCategoryCode(dictionary, "ThisTestSpatialCategory");
|
|
26
28
|
const category = SpatialCategory.create(rwIModel, IModel.dictionaryId, newCategoryCode.value);
|
|
27
|
-
const spatialCategoryId =
|
|
28
|
-
category.setDefaultAppearance(new SubCategoryAppearance({ color: 0xff0000 }));
|
|
29
|
+
const spatialCategoryId = txn.insertElement(category.toJSON());
|
|
30
|
+
category.setDefaultAppearance(txn, new SubCategoryAppearance({ color: 0xff0000 }));
|
|
29
31
|
// const spatialCategoryId: Id64String = SpatialCategory.insert(rwIModel, IModel.dictionaryId, newCategoryCode.value!, new SubCategoryAppearance({ color: 0xff0000 }));
|
|
30
32
|
return { modelId, spatialCategoryId };
|
|
31
33
|
}
|
|
@@ -33,9 +35,11 @@ describe("IModelWriteTest", () => {
|
|
|
33
35
|
let managerAccessToken;
|
|
34
36
|
let superAccessToken;
|
|
35
37
|
let iTwinId;
|
|
36
|
-
before(() => {
|
|
38
|
+
before(async () => {
|
|
37
39
|
HubMock.startup("IModelWriteTest", KnownTestLocations.outputDir);
|
|
38
40
|
iTwinId = HubMock.iTwinId;
|
|
41
|
+
managerAccessToken = await HubWrappers.getAccessToken(TestUserType.Manager);
|
|
42
|
+
superAccessToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);
|
|
39
43
|
});
|
|
40
44
|
after(() => HubMock.shutdown());
|
|
41
45
|
it("Check busyTimeout option", async () => {
|
|
@@ -60,14 +64,16 @@ describe("IModelWriteTest", () => {
|
|
|
60
64
|
};
|
|
61
65
|
const seconds = (s) => s * 1000;
|
|
62
66
|
const db = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
|
|
63
|
-
db
|
|
67
|
+
const dbTxn = new EditTxn(db, "imodel write");
|
|
68
|
+
dbTxn.start();
|
|
69
|
+
dbTxn.saveChanges();
|
|
64
70
|
// lock db so another connection cannot write to it.
|
|
65
|
-
|
|
71
|
+
dbTxn.saveFileProperty({ name: "test", namespace: "test" }, "");
|
|
66
72
|
assert.isAtMost(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(0) }), seconds(1), "open should fail with busy error instantly");
|
|
67
73
|
assert.isAtLeast(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(1) }), seconds(1), "open should fail with atleast 1 sec delay due to retry");
|
|
68
74
|
assert.isAtLeast(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(2) }), seconds(2), "open should fail with atleast 2 sec delay due to retry");
|
|
69
75
|
assert.isAtLeast(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(3) }), seconds(3), "open should fail with atleast 3 sec delay due to retry");
|
|
70
|
-
|
|
76
|
+
dbTxn.end("abandon");
|
|
71
77
|
db.close();
|
|
72
78
|
});
|
|
73
79
|
it("WatchForChanges", async () => {
|
|
@@ -87,26 +93,34 @@ describe("IModelWriteTest", () => {
|
|
|
87
93
|
return fsWatcher;
|
|
88
94
|
};
|
|
89
95
|
const watchStubResult = sinon.stub(fs, "watch").callsFake(watchStub);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
96
|
+
let bc;
|
|
97
|
+
let roBC;
|
|
98
|
+
try {
|
|
99
|
+
bc = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
|
|
100
|
+
bc.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
101
|
+
roBC = await BriefcaseDb.open({ fileName: briefcaseProps.fileName, watchForChanges: true });
|
|
102
|
+
const bcTxn = new EditTxn(bc, "imodel write");
|
|
103
|
+
bcTxn.start();
|
|
104
|
+
const code1 = IModelTestUtils.getUniqueModelCode(bc, "newPhysicalModel1");
|
|
105
|
+
await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bcTxn, code1, true);
|
|
106
|
+
bcTxn.end();
|
|
107
|
+
// immediately after save changes the current txnId in the writeable briefcase changes, but it isn't reflected
|
|
108
|
+
// in the readonly briefcase until the file watcher fires.
|
|
109
|
+
expect(bc[_nativeDb].getCurrentTxnId()).not.equal(roBC[_nativeDb].getCurrentTxnId());
|
|
110
|
+
// trigger watcher via stub
|
|
111
|
+
fsWatcher.callback();
|
|
112
|
+
// now they should match because restartDefaultTxn in the readonly briefcase reads the changes from the writeable connection
|
|
113
|
+
expect(bc[_nativeDb].getCurrentTxnId()).equal(roBC[_nativeDb].getCurrentTxnId());
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
roBC?.close();
|
|
117
|
+
bc?.close();
|
|
118
|
+
// NOTE: Since HubMock.startup() is called in the before() block and not beforeEach(), we CANNOT
|
|
119
|
+
// call sinon.restore() here. This is because sinon.restore() will restore the stubs for
|
|
120
|
+
// CloudSqlite that HubMock.startup() put in place.
|
|
121
|
+
watchStubResult.restore();
|
|
122
|
+
}
|
|
104
123
|
expect(nClosed).equal(1);
|
|
105
|
-
bc.close();
|
|
106
|
-
// NOTE: Since HubMock.startup() is called in the before() block and not beforeEach(), we CANNOT
|
|
107
|
-
// call sinon.restore() here. This is because sinon.restore() will restore the stubs for
|
|
108
|
-
// CloudSqlite that HubMock.startup() put in place.
|
|
109
|
-
watchStubResult.restore();
|
|
110
124
|
});
|
|
111
125
|
function expectEqualChangesets(a, b) {
|
|
112
126
|
expect(a.id).to.equal(b.id);
|
|
@@ -130,42 +144,49 @@ describe("IModelWriteTest", () => {
|
|
|
130
144
|
return fsWatcher;
|
|
131
145
|
};
|
|
132
146
|
const watchStubResult = sinon.stub(fs, "watch").callsFake(watchStub);
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
147
|
+
let bc;
|
|
148
|
+
let roBC;
|
|
149
|
+
try {
|
|
150
|
+
bc = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
|
|
151
|
+
bc.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
152
|
+
roBC = await BriefcaseDb.open({ fileName: briefcaseProps.fileName, watchForChanges: true });
|
|
153
|
+
const bcTxn = new EditTxn(bc, "imodel write");
|
|
154
|
+
bcTxn.start();
|
|
155
|
+
const code1 = IModelTestUtils.getUniqueModelCode(bc, "newPhysicalModel1");
|
|
156
|
+
await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bcTxn, code1, true);
|
|
157
|
+
bcTxn.end();
|
|
158
|
+
// immediately after save changes the current txnId in the writeable briefcase changes, but it isn't reflected
|
|
159
|
+
// in the readonly briefcase until the file watcher fires.
|
|
160
|
+
expect(bc[_nativeDb].getCurrentTxnId()).not.equal(roBC[_nativeDb].getCurrentTxnId());
|
|
161
|
+
// trigger watcher via stub
|
|
162
|
+
fsWatcher.callback();
|
|
163
|
+
// now they should match because restartDefaultTxn in the readonly briefcase reads the changes from the writeable connection
|
|
164
|
+
expect(bc[_nativeDb].getCurrentTxnId()).equal(roBC[_nativeDb].getCurrentTxnId());
|
|
165
|
+
const prePushChangeset = bc.changeset;
|
|
166
|
+
let eventRaised = false;
|
|
167
|
+
roBC.onChangesetChanged.addOnce((prevCS) => {
|
|
168
|
+
expectEqualChangesets(prevCS, prePushChangeset);
|
|
169
|
+
eventRaised = true;
|
|
170
|
+
});
|
|
171
|
+
await bc.pushChanges({ accessToken: adminAccessToken, description: "test" });
|
|
172
|
+
const postPushChangeset = bc.changeset;
|
|
173
|
+
assert(!!postPushChangeset);
|
|
174
|
+
expect(prePushChangeset !== postPushChangeset, "changes should be pushed");
|
|
175
|
+
// trigger watcher via stub
|
|
176
|
+
fsWatcher.callback();
|
|
177
|
+
expectEqualChangesets(roBC.changeset, postPushChangeset);
|
|
178
|
+
expect(roBC[_nativeDb].getCurrentTxnId(), "txn should be updated").equal(bc[_nativeDb].getCurrentTxnId());
|
|
179
|
+
expect(eventRaised).to.be.true;
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
roBC?.close();
|
|
183
|
+
bc?.close();
|
|
184
|
+
// NOTE: Since HubMock.startup() is called in the before() block and not beforeEach(), we CANNOT
|
|
185
|
+
// call sinon.restore() here. This is because sinon.restore() will restore the stubs for
|
|
186
|
+
// CloudSqlite that HubMock.startup() put in place.
|
|
187
|
+
watchStubResult.restore();
|
|
188
|
+
}
|
|
163
189
|
expect(nClosed).equal(1);
|
|
164
|
-
bc.close();
|
|
165
|
-
// NOTE: Since HubMock.startup() is called in the before() block and not beforeEach(), we CANNOT
|
|
166
|
-
// call sinon.restore() here. This is because sinon.restore() will restore the stubs for
|
|
167
|
-
// CloudSqlite that HubMock.startup() put in place.
|
|
168
|
-
watchStubResult.restore();
|
|
169
190
|
});
|
|
170
191
|
it("WatchForChanges - pull", async () => {
|
|
171
192
|
const adminAccessToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);
|
|
@@ -176,19 +197,6 @@ describe("IModelWriteTest", () => {
|
|
|
176
197
|
const args = { iTwinId, iModelId };
|
|
177
198
|
const initialDb = await BriefcaseManager.downloadBriefcase({ accessToken: adminAccessToken, ...args });
|
|
178
199
|
const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: adminAccessToken, ...args });
|
|
179
|
-
// Push some changes - prep for pull workflow.
|
|
180
|
-
const bc1 = await BriefcaseDb.open({ fileName: initialDb.fileName });
|
|
181
|
-
bc1.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
182
|
-
const code2 = IModelTestUtils.getUniqueModelCode(bc1, "newPhysicalModel2");
|
|
183
|
-
await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bc1, code2, true);
|
|
184
|
-
const prePushChangeset = bc1.changeset;
|
|
185
|
-
bc1.saveChanges();
|
|
186
|
-
await bc1.pushChanges({ accessToken: adminAccessToken, description: "test" });
|
|
187
|
-
const postPushChangeset = bc1.changeset;
|
|
188
|
-
assert(!!prePushChangeset);
|
|
189
|
-
expect(prePushChangeset !== postPushChangeset, "changes should be pushed");
|
|
190
|
-
bc1.close();
|
|
191
|
-
// Writer that pulls + watcher.
|
|
192
200
|
let nClosed = 0;
|
|
193
201
|
const fsWatcher = {
|
|
194
202
|
callback: () => { },
|
|
@@ -198,32 +206,53 @@ describe("IModelWriteTest", () => {
|
|
|
198
206
|
fsWatcher.callback = fn;
|
|
199
207
|
return fsWatcher;
|
|
200
208
|
};
|
|
209
|
+
// Push some changes - prep for pull workflow.
|
|
210
|
+
let bc1;
|
|
211
|
+
let bc;
|
|
212
|
+
let roBC;
|
|
201
213
|
const watchStubResult = sinon.stub(fs, "watch").callsFake(watchStub);
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
214
|
+
try {
|
|
215
|
+
bc1 = await BriefcaseDb.open({ fileName: initialDb.fileName });
|
|
216
|
+
bc1.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
217
|
+
const bc1Txn = new EditTxn(bc1, "imodel write");
|
|
218
|
+
bc1Txn.start();
|
|
219
|
+
const code2 = IModelTestUtils.getUniqueModelCode(bc1, "newPhysicalModel2");
|
|
220
|
+
await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bc1Txn, code2, true);
|
|
221
|
+
const prePushChangeset = bc1.changeset;
|
|
222
|
+
bc1Txn.end();
|
|
223
|
+
await bc1.pushChanges({ accessToken: adminAccessToken, description: "test" });
|
|
224
|
+
const postPushChangeset = bc1.changeset;
|
|
225
|
+
assert(!!prePushChangeset);
|
|
226
|
+
expect(prePushChangeset !== postPushChangeset, "changes should be pushed");
|
|
227
|
+
bc = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
|
|
228
|
+
bc.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
229
|
+
roBC = await BriefcaseDb.open({ fileName: briefcaseProps.fileName, watchForChanges: true });
|
|
230
|
+
const prePullChangeset = bc.changeset;
|
|
231
|
+
let eventRaised = false;
|
|
232
|
+
roBC.onChangesetChanged.addOnce((prevCS) => {
|
|
233
|
+
expectEqualChangesets(prevCS, prePushChangeset);
|
|
234
|
+
eventRaised = true;
|
|
235
|
+
});
|
|
236
|
+
await bc.pullChanges();
|
|
237
|
+
const postPullChangeset = bc.changeset;
|
|
238
|
+
assert(!!postPullChangeset);
|
|
239
|
+
expect(prePullChangeset !== postPullChangeset, "changes should be pulled");
|
|
240
|
+
// trigger watcher via stub
|
|
241
|
+
fsWatcher.callback();
|
|
242
|
+
expectEqualChangesets(roBC.changeset, postPullChangeset);
|
|
243
|
+
expect(roBC[_nativeDb].getCurrentTxnId(), "txn should be updated").equal(bc[_nativeDb].getCurrentTxnId());
|
|
244
|
+
expect(eventRaised).to.be.true;
|
|
245
|
+
}
|
|
246
|
+
finally {
|
|
247
|
+
roBC?.close();
|
|
248
|
+
bc?.close();
|
|
249
|
+
bc1?.close();
|
|
250
|
+
// NOTE: Since HubMock.startup() is called in the before() block and not beforeEach(), we CANNOT
|
|
251
|
+
// call sinon.restore() here. This is because sinon.restore() will restore the stubs for
|
|
252
|
+
// CloudSqlite that HubMock.startup() put in place.
|
|
253
|
+
watchStubResult.restore();
|
|
254
|
+
}
|
|
221
255
|
expect(nClosed).equal(1);
|
|
222
|
-
bc.close();
|
|
223
|
-
// NOTE: Since HubMock.startup() is called in the before() block and not beforeEach(), we CANNOT
|
|
224
|
-
// call sinon.restore() here. This is because sinon.restore() will restore the stubs for
|
|
225
|
-
// CloudSqlite that HubMock.startup() put in place.
|
|
226
|
-
watchStubResult.restore();
|
|
227
256
|
});
|
|
228
257
|
it("should handle undo/redo", async () => {
|
|
229
258
|
const adminAccessToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);
|
|
@@ -233,13 +262,15 @@ describe("IModelWriteTest", () => {
|
|
|
233
262
|
const rwIModelId = await HubMock.createNewIModel({ accessToken: adminAccessToken, iTwinId, iModelName, description: "TestSubject" });
|
|
234
263
|
assert.isNotEmpty(rwIModelId);
|
|
235
264
|
const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: adminAccessToken, iTwinId, iModelId: rwIModelId });
|
|
265
|
+
const rwTxn = new EditTxn(rwIModel, "imodel write");
|
|
266
|
+
rwTxn.start();
|
|
236
267
|
rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
237
268
|
// create and insert a new model with code1
|
|
238
269
|
const code1 = IModelTestUtils.getUniqueModelCode(rwIModel, "newPhysicalModel1");
|
|
239
|
-
await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(
|
|
270
|
+
await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(rwTxn, code1, true);
|
|
240
271
|
assert.isTrue(rwIModel.elements.getElement(code1) !== undefined); // throws if element is not found
|
|
241
272
|
// create a local txn with that change
|
|
242
|
-
|
|
273
|
+
rwTxn.saveChanges("inserted newPhysicalModel");
|
|
243
274
|
// Reverse that local txn
|
|
244
275
|
rwIModel.txns.reverseSingleTxn();
|
|
245
276
|
try {
|
|
@@ -253,8 +284,8 @@ describe("IModelWriteTest", () => {
|
|
|
253
284
|
}
|
|
254
285
|
// Create and insert a model with code2
|
|
255
286
|
const code2 = IModelTestUtils.getUniqueModelCode(rwIModel, "newPhysicalModel2");
|
|
256
|
-
await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(
|
|
257
|
-
|
|
287
|
+
await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(rwTxn, code2, true);
|
|
288
|
+
rwTxn.end("save", "inserted generic objects");
|
|
258
289
|
// The iModel should have a model with code1 and not code2
|
|
259
290
|
assert.isTrue(rwIModel.elements.getElement(code2) !== undefined); // throws if element is not found
|
|
260
291
|
// Push the changes to the hub
|
|
@@ -324,18 +355,19 @@ describe("IModelWriteTest", () => {
|
|
|
324
355
|
const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject", accessToken: adminToken });
|
|
325
356
|
assert.isNotEmpty(rwIModelId);
|
|
326
357
|
const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
|
|
358
|
+
const rwTxn = new EditTxn(rwIModel, "imodel write");
|
|
327
359
|
assert.equal(rwIModel[_nativeDb].enableChangesetSizeStats(true), DbResult.BE_SQLITE_OK);
|
|
328
|
-
const schema = `<?xml version="1.0" encoding="UTF-8"?>
|
|
329
|
-
<ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
330
|
-
<ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
|
|
331
|
-
<ECEntityClass typeName="Test2dElement">
|
|
332
|
-
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
333
|
-
<ECProperty propertyName="s" typeName="string"/>
|
|
334
|
-
</ECEntityClass>
|
|
360
|
+
const schema = `<?xml version="1.0" encoding="UTF-8"?>
|
|
361
|
+
<ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
362
|
+
<ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
|
|
363
|
+
<ECEntityClass typeName="Test2dElement">
|
|
364
|
+
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
365
|
+
<ECProperty propertyName="s" typeName="string"/>
|
|
366
|
+
</ECEntityClass>
|
|
335
367
|
</ECSchema>`;
|
|
336
368
|
await rwIModel.importSchemaStrings([schema]);
|
|
337
369
|
rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
338
|
-
|
|
370
|
+
rwTxn.start();
|
|
339
371
|
if (true || "push changes") {
|
|
340
372
|
// Push the changes to the hub
|
|
341
373
|
const prePushChangeSetId = rwIModel.changeset.id;
|
|
@@ -350,11 +382,11 @@ describe("IModelWriteTest", () => {
|
|
|
350
382
|
const codeProps = Code.createEmpty();
|
|
351
383
|
codeProps.value = "DrawingModel";
|
|
352
384
|
let totalEl = 0;
|
|
353
|
-
const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(
|
|
385
|
+
const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwTxn, codeProps, true);
|
|
354
386
|
let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, "MyDrawingCategory");
|
|
355
387
|
if (undefined === drawingCategoryId)
|
|
356
|
-
drawingCategoryId = DrawingCategory.insert(
|
|
357
|
-
const insertElements = (
|
|
388
|
+
drawingCategoryId = DrawingCategory.insert(rwTxn, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
|
|
389
|
+
const insertElements = (txn, className = "Test2dElement", noOfElements = 10, userProp) => {
|
|
358
390
|
for (let m = 0; m < noOfElements; ++m) {
|
|
359
391
|
const geomArray = [
|
|
360
392
|
Arc3d.createXY(Point3d.create(0, 0), 5),
|
|
@@ -376,16 +408,16 @@ describe("IModelWriteTest", () => {
|
|
|
376
408
|
geom: geometryStream,
|
|
377
409
|
...prop,
|
|
378
410
|
};
|
|
379
|
-
const id =
|
|
411
|
+
const id = txn.insertElement(geomElement);
|
|
380
412
|
assert.isTrue(Id64.isValidId64(id), "insert worked");
|
|
381
413
|
}
|
|
382
414
|
};
|
|
383
415
|
const str = new Array(1024).join("x");
|
|
384
|
-
insertElements(
|
|
416
|
+
insertElements(rwTxn, "Test2dElement", 1024, () => {
|
|
385
417
|
return { s: str };
|
|
386
418
|
});
|
|
387
419
|
assert.equal(1357648, rwIModel[_nativeDb].getChangesetSize());
|
|
388
|
-
|
|
420
|
+
rwTxn.saveChanges("user 1: data");
|
|
389
421
|
assert.equal(0, rwIModel[_nativeDb].getChangesetSize());
|
|
390
422
|
await rwIModel.pushChanges({ description: "schema changeset", accessToken: adminToken });
|
|
391
423
|
rwIModel.close();
|
|
@@ -404,6 +436,8 @@ describe("IModelWriteTest", () => {
|
|
|
404
436
|
};
|
|
405
437
|
const briefcaseDb = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
|
|
406
438
|
briefcaseDb.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
439
|
+
const briefcaseDbTxn = new EditTxn(briefcaseDb, "imodel write");
|
|
440
|
+
briefcaseDbTxn.start();
|
|
407
441
|
let firstNonRootElement = { id: undefined, codeValue: "test" };
|
|
408
442
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
409
443
|
briefcaseDb.withPreparedStatement("SELECT * from Bis.Element LIMIT 1 OFFSET 1", (stmt) => {
|
|
@@ -413,16 +447,16 @@ describe("IModelWriteTest", () => {
|
|
|
413
447
|
});
|
|
414
448
|
// make change to the briefcaseDb that does not affect code, e.g., save file property
|
|
415
449
|
// expect no error from verifyCode
|
|
416
|
-
expect(() =>
|
|
450
|
+
expect(() => briefcaseDbTxn.saveFileProperty({ name: "codeServiceProp", namespace: "codeService", id: 1, subId: 1 }, "codeService test")).to.not.throw();
|
|
417
451
|
// make change to the briefcaseDb that affects code that will invoke verifyCode, e.g., update an element with a non-null code
|
|
418
452
|
// expect error from verifyCode
|
|
419
453
|
let newProps = { id: firstNonRootElement.id, code: { ...Code.createEmpty(), value: firstNonRootElement.codeValue }, classFullName: undefined, model: undefined };
|
|
420
454
|
await briefcaseDb.locks.acquireLocks({ exclusive: firstNonRootElement.id });
|
|
421
|
-
expect(() =>
|
|
455
|
+
expect(() => briefcaseDbTxn.updateElement(newProps)).to.throw(CodeService.Error);
|
|
422
456
|
// make change to the briefcaseDb that will invoke verifyCode with a null(empty) code, e.g., update an element with a null(empty) code
|
|
423
457
|
// expect no error from verifyCode
|
|
424
458
|
newProps = { id: firstNonRootElement.id, code: Code.createEmpty(), classFullName: undefined, model: undefined };
|
|
425
|
-
expect(() =>
|
|
459
|
+
expect(() => briefcaseDbTxn.updateElement(newProps)).to.not.throw();
|
|
426
460
|
briefcaseDb.close();
|
|
427
461
|
// throw "NoCodeIndex", this error should get ignored because it means the iModel isn't enforcing codes. updating an element with an empty code and a non empty code should work without issue.
|
|
428
462
|
CodeService.createForIModel = async () => {
|
|
@@ -430,13 +464,15 @@ describe("IModelWriteTest", () => {
|
|
|
430
464
|
};
|
|
431
465
|
const briefcaseDb2 = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });
|
|
432
466
|
briefcaseDb2.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
467
|
+
const briefcaseDb2Txn = new EditTxn(briefcaseDb2, "imodel write");
|
|
468
|
+
briefcaseDb2Txn.start();
|
|
433
469
|
await briefcaseDb2.locks.acquireLocks({ exclusive: firstNonRootElement.id });
|
|
434
470
|
// expect no error from verifyCode for empty code
|
|
435
|
-
expect(() =>
|
|
471
|
+
expect(() => briefcaseDb2Txn.updateElement(newProps)).to.not.throw();
|
|
436
472
|
newProps = { id: firstNonRootElement.id, code: { ...Code.createEmpty(), value: firstNonRootElement.codeValue }, classFullName: undefined, model: undefined };
|
|
437
473
|
// make change to the briefcaseDb that affects code that will invoke verifyCode, e.g., update an element with a non-null code
|
|
438
474
|
// expect no error from verifyCode
|
|
439
|
-
expect(() =>
|
|
475
|
+
expect(() => briefcaseDb2Txn.updateElement(newProps)).to.not.throw();
|
|
440
476
|
// clean up
|
|
441
477
|
CodeService.createForIModel = originalCreateForIModel;
|
|
442
478
|
briefcaseDb2.close();
|
|
@@ -450,22 +486,25 @@ describe("IModelWriteTest", () => {
|
|
|
450
486
|
const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: "TestSubject" });
|
|
451
487
|
assert.isNotEmpty(rwIModelId);
|
|
452
488
|
const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });
|
|
489
|
+
const rwTxn = new EditTxn(rwIModel, "imodel write");
|
|
453
490
|
const rwIModel2 = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: userToken });
|
|
491
|
+
const rwTxn2 = new EditTxn(rwIModel2, "imodel write");
|
|
492
|
+
rwTxn2.start();
|
|
454
493
|
// enable change tracking
|
|
455
494
|
assert.equal(rwIModel[_nativeDb].enableChangesetSizeStats(true), DbResult.BE_SQLITE_OK);
|
|
456
495
|
assert.equal(rwIModel2[_nativeDb].enableChangesetSizeStats(true), DbResult.BE_SQLITE_OK);
|
|
457
|
-
const schema = `<?xml version="1.0" encoding="UTF-8"?>
|
|
458
|
-
<ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
459
|
-
<ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
|
|
460
|
-
<ECEntityClass typeName="Test2dElement">
|
|
461
|
-
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
462
|
-
<ECProperty propertyName="s" typeName="string"/>
|
|
463
|
-
</ECEntityClass>
|
|
496
|
+
const schema = `<?xml version="1.0" encoding="UTF-8"?>
|
|
497
|
+
<ECSchema schemaName="TestDomain" alias="ts" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
498
|
+
<ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
|
|
499
|
+
<ECEntityClass typeName="Test2dElement">
|
|
500
|
+
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
501
|
+
<ECProperty propertyName="s" typeName="string"/>
|
|
502
|
+
</ECEntityClass>
|
|
464
503
|
</ECSchema>`;
|
|
465
504
|
await rwIModel.importSchemaStrings([schema]);
|
|
466
505
|
rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
467
506
|
rwIModel2.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
468
|
-
|
|
507
|
+
rwTxn.start();
|
|
469
508
|
if (true || "push changes") {
|
|
470
509
|
// Push the changes to the hub
|
|
471
510
|
const prePushChangeSetId = rwIModel.changeset.id;
|
|
@@ -480,11 +519,11 @@ describe("IModelWriteTest", () => {
|
|
|
480
519
|
codeProps.value = "DrawingModel";
|
|
481
520
|
let totalEl = 0;
|
|
482
521
|
await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });
|
|
483
|
-
const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(
|
|
522
|
+
const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwTxn, codeProps, true);
|
|
484
523
|
let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, "MyDrawingCategory");
|
|
485
524
|
if (undefined === drawingCategoryId)
|
|
486
|
-
drawingCategoryId = DrawingCategory.insert(
|
|
487
|
-
const insertElements = (
|
|
525
|
+
drawingCategoryId = DrawingCategory.insert(rwTxn, IModel.dictionaryId, "MyDrawingCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
|
|
526
|
+
const insertElements = (txn, className = "Test2dElement", noOfElements = 10, userProp) => {
|
|
488
527
|
for (let m = 0; m < noOfElements; ++m) {
|
|
489
528
|
const geomArray = [
|
|
490
529
|
Arc3d.createXY(Point3d.create(0, 0), 5),
|
|
@@ -506,15 +545,15 @@ describe("IModelWriteTest", () => {
|
|
|
506
545
|
geom: geometryStream,
|
|
507
546
|
...prop,
|
|
508
547
|
};
|
|
509
|
-
const id =
|
|
548
|
+
const id = txn.insertElement(geomElement);
|
|
510
549
|
assert.isTrue(Id64.isValidId64(id), "insert worked");
|
|
511
550
|
}
|
|
512
551
|
};
|
|
513
|
-
insertElements(
|
|
552
|
+
insertElements(rwTxn, "Test2dElement", 10, (n) => {
|
|
514
553
|
return { s: `s-${n}` };
|
|
515
554
|
});
|
|
516
555
|
assert.equal(3889, rwIModel[_nativeDb].getChangesetSize());
|
|
517
|
-
|
|
556
|
+
rwTxn.saveChanges("user 1: data changeset");
|
|
518
557
|
if (true || "push changes") {
|
|
519
558
|
// Push the changes to the hub
|
|
520
559
|
const prePushChangeSetId = rwIModel.changeset.id;
|
|
@@ -560,11 +599,11 @@ describe("IModelWriteTest", () => {
|
|
|
560
599
|
assert.equal(rows.map((r) => r.s).filter((v) => v).length, 10);
|
|
561
600
|
// create some element and push those changes
|
|
562
601
|
await rwIModel2.locks.acquireLocks({ shared: drawingModelId });
|
|
563
|
-
insertElements(
|
|
602
|
+
insertElements(rwTxn2, "Test2dElement", 10, (n) => {
|
|
564
603
|
return { s: `s-${n}` };
|
|
565
604
|
});
|
|
566
605
|
assert.equal(0, rwIModel[_nativeDb].getChangesetSize());
|
|
567
|
-
|
|
606
|
+
rwTxn2.saveChanges("user 2: data changeset");
|
|
568
607
|
if (true || "push changes") {
|
|
569
608
|
// Push the changes to the hub
|
|
570
609
|
const prePushChangeSetId = rwIModel2.changeset.id;
|
|
@@ -578,23 +617,22 @@ describe("IModelWriteTest", () => {
|
|
|
578
617
|
}
|
|
579
618
|
await rwIModel.pullChanges({ accessToken: adminToken });
|
|
580
619
|
// second schema import ==============================================================
|
|
581
|
-
const schemaV2 = `<?xml version="1.0" encoding="UTF-8"?>
|
|
582
|
-
<ECSchema schemaName="TestDomain" alias="ts" version="01.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
583
|
-
<ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
|
|
584
|
-
<ECEntityClass typeName="Test2dElement">
|
|
585
|
-
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
586
|
-
<ECProperty propertyName="s" typeName="string"/>
|
|
587
|
-
<ECProperty propertyName="v" typeName="string"/>
|
|
588
|
-
</ECEntityClass>
|
|
589
|
-
<ECEntityClass typeName="Test2dElement2nd">
|
|
590
|
-
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
591
|
-
<ECProperty propertyName="t" typeName="string"/>
|
|
592
|
-
<ECProperty propertyName="r" typeName="string"/>
|
|
593
|
-
</ECEntityClass>
|
|
620
|
+
const schemaV2 = `<?xml version="1.0" encoding="UTF-8"?>
|
|
621
|
+
<ECSchema schemaName="TestDomain" alias="ts" version="01.01" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
622
|
+
<ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
|
|
623
|
+
<ECEntityClass typeName="Test2dElement">
|
|
624
|
+
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
625
|
+
<ECProperty propertyName="s" typeName="string"/>
|
|
626
|
+
<ECProperty propertyName="v" typeName="string"/>
|
|
627
|
+
</ECEntityClass>
|
|
628
|
+
<ECEntityClass typeName="Test2dElement2nd">
|
|
629
|
+
<BaseClass>bis:GraphicalElement2d</BaseClass>
|
|
630
|
+
<ECProperty propertyName="t" typeName="string"/>
|
|
631
|
+
<ECProperty propertyName="r" typeName="string"/>
|
|
632
|
+
</ECEntityClass>
|
|
594
633
|
</ECSchema>`;
|
|
595
634
|
await rwIModel.importSchemaStrings([schemaV2]);
|
|
596
635
|
assert.equal(0, rwIModel[_nativeDb].getChangesetSize());
|
|
597
|
-
rwIModel.saveChanges("user 1: schema changeset2");
|
|
598
636
|
if (true || "push changes") {
|
|
599
637
|
// Push the changes to the hub
|
|
600
638
|
const prePushChangeSetId = rwIModel.changeset.id;
|
|
@@ -607,19 +645,19 @@ describe("IModelWriteTest", () => {
|
|
|
607
645
|
}
|
|
608
646
|
// create some element and push those changes
|
|
609
647
|
await rwIModel.locks.acquireLocks({ shared: drawingModelId });
|
|
610
|
-
insertElements(
|
|
648
|
+
insertElements(rwTxn, "Test2dElement", 10, (n) => {
|
|
611
649
|
return {
|
|
612
650
|
s: `s-${n}`, v: `v-${n}`,
|
|
613
651
|
};
|
|
614
652
|
});
|
|
615
653
|
// create some element and push those changes
|
|
616
|
-
insertElements(
|
|
654
|
+
insertElements(rwTxn, "Test2dElement2nd", 10, (n) => {
|
|
617
655
|
return {
|
|
618
656
|
t: `t-${n}`, r: `r-${n}`,
|
|
619
657
|
};
|
|
620
658
|
});
|
|
621
659
|
assert.equal(6266, rwIModel[_nativeDb].getChangesetSize());
|
|
622
|
-
|
|
660
|
+
rwTxn.saveChanges("user 1: data changeset");
|
|
623
661
|
if (true || "push changes") {
|
|
624
662
|
// Push the changes to the hub
|
|
625
663
|
const prePushChangeSetId = rwIModel.changeset.id;
|
|
@@ -767,8 +805,7 @@ describe("IModelWriteTest", () => {
|
|
|
767
805
|
newExtents.low.y += 100;
|
|
768
806
|
newExtents.high.x += 100;
|
|
769
807
|
newExtents.high.y += 100;
|
|
770
|
-
iModel.updateProjectExtents(newExtents);
|
|
771
|
-
iModel.saveChanges("update project extents");
|
|
808
|
+
withEditTxn(iModel, "update project extents", (txn) => txn.updateProjectExtents(newExtents));
|
|
772
809
|
await iModel.pushChanges({ description: "update project extents" });
|
|
773
810
|
await HubWrappers.closeAndDeleteBriefcaseDb(accessToken, iModel);
|
|
774
811
|
const iModelBeforeExtentsChange = await HubWrappers.downloadAndOpenBriefcase({ accessToken, iTwinId, iModelId, asOf: IModelVersion.asOfChangeSet(changesetIdBeforeExtentsChange).toJSON() });
|
|
@@ -792,14 +829,16 @@ describe("IModelWriteTest", () => {
|
|
|
792
829
|
const iModelId = await HubMock.createNewIModel({ iTwinId, iModelName: "subModelCoveredByParentLockTest", version0 });
|
|
793
830
|
let iModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId });
|
|
794
831
|
iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
832
|
+
const iModelTxn = new EditTxn(iModel, "imodel write");
|
|
833
|
+
iModelTxn.start();
|
|
795
834
|
/*
|
|
796
835
|
Job Subject
|
|
797
836
|
+- DefinitionPartition -- [DefinitionModel]
|
|
798
837
|
*/
|
|
799
838
|
await iModel.locks.acquireLocks({ shared: IModel.repositoryModelId });
|
|
800
|
-
const jobSubjectId = IModelTestUtils.createJobSubjectElement(iModel, "JobSubject").insert();
|
|
801
|
-
const definitionModelId = DefinitionModel.insert(
|
|
802
|
-
|
|
839
|
+
const jobSubjectId = IModelTestUtils.createJobSubjectElement(iModel, "JobSubject").insert(iModelTxn);
|
|
840
|
+
const definitionModelId = DefinitionModel.insert(iModelTxn, jobSubjectId, "Definition");
|
|
841
|
+
iModelTxn.end();
|
|
803
842
|
const locks = iModel.locks;
|
|
804
843
|
expect(locks.isServerBased).true;
|
|
805
844
|
await iModel.pushChanges({ description: "create model" });
|
|
@@ -813,16 +852,17 @@ describe("IModelWriteTest", () => {
|
|
|
813
852
|
assert.isFalse(iModel.locks.holdsExclusiveLock(jobSubjectId));
|
|
814
853
|
assert.isFalse(iModel.locks.holdsExclusiveLock(definitionModelId));
|
|
815
854
|
assert.isFalse(iModel.locks.holdsSharedLock(definitionModelId));
|
|
855
|
+
iModelTxn.start();
|
|
816
856
|
await iModel.locks.acquireLocks({ exclusive: jobSubjectId });
|
|
817
857
|
iModel.locks.checkExclusiveLock(jobSubjectId, "", "");
|
|
818
858
|
iModel.locks.checkSharedLock(jobSubjectId, "", "");
|
|
819
859
|
iModel.locks.checkSharedLock(definitionModelId, "", "");
|
|
820
860
|
iModel.locks.checkExclusiveLock(definitionModelId, "", "");
|
|
821
|
-
const spatialCategoryId = SpatialCategory.insert(
|
|
822
|
-
const drawingCategoryId = DrawingCategory.insert(
|
|
861
|
+
const spatialCategoryId = SpatialCategory.insert(iModelTxn, definitionModelId, "SpatialCategory", new SubCategoryAppearance()); // throws if we get locking error
|
|
862
|
+
const drawingCategoryId = DrawingCategory.insert(iModelTxn, definitionModelId, "DrawingCategory", new SubCategoryAppearance());
|
|
823
863
|
assert.isTrue(iModel.elements.getElement(spatialCategoryId).model === definitionModelId);
|
|
824
864
|
assert.isTrue(iModel.elements.getElement(drawingCategoryId).model === definitionModelId);
|
|
825
|
-
|
|
865
|
+
iModelTxn.end();
|
|
826
866
|
await iModel.pushChanges({ description: "insert category" });
|
|
827
867
|
/*
|
|
828
868
|
Create some more nesting.
|
|
@@ -837,19 +877,20 @@ describe("IModelWriteTest", () => {
|
|
|
837
877
|
assert.isFalse(iModel.locks.holdsExclusiveLock(jobSubjectId));
|
|
838
878
|
assert.isFalse(iModel.locks.holdsExclusiveLock(definitionModelId));
|
|
839
879
|
assert.isFalse(iModel.locks.holdsSharedLock(definitionModelId));
|
|
880
|
+
iModelTxn.start();
|
|
840
881
|
await iModel.locks.acquireLocks({ exclusive: jobSubjectId });
|
|
841
882
|
iModel.locks.checkExclusiveLock(jobSubjectId, "", "");
|
|
842
883
|
iModel.locks.checkSharedLock(IModel.repositoryModelId, "", "");
|
|
843
|
-
const childSubjectId = Subject.insert(
|
|
844
|
-
const documentListModelId = DocumentListModel.insert(
|
|
884
|
+
const childSubjectId = Subject.insert(iModelTxn, jobSubjectId, "Child Subject");
|
|
885
|
+
const documentListModelId = DocumentListModel.insert(iModelTxn, childSubjectId, "Document"); // creates DocumentList and DocumentListModel
|
|
845
886
|
assert.isTrue(Id64.isValidId64(documentListModelId));
|
|
846
|
-
const drawingModelId = Drawing.insert(
|
|
887
|
+
const drawingModelId = Drawing.insert(iModelTxn, documentListModelId, "Drawing"); // creates Drawing and DrawingModel
|
|
847
888
|
assert.isTrue(iModel.elements.getElement(childSubjectId).parent?.id === jobSubjectId);
|
|
848
889
|
assert.isTrue(iModel.elements.getElement(childSubjectId).model === IModel.repositoryModelId);
|
|
849
890
|
assert.isTrue(iModel.elements.getElement(documentListModelId).parent?.id === childSubjectId);
|
|
850
891
|
assert.isTrue(iModel.elements.getElement(documentListModelId).model === IModel.repositoryModelId);
|
|
851
892
|
assert.isTrue(iModel.elements.getElement(drawingModelId).model === documentListModelId);
|
|
852
|
-
|
|
893
|
+
iModelTxn.end();
|
|
853
894
|
await iModel.pushChanges({ description: "insert doc list with nested drawing model" });
|
|
854
895
|
/*
|
|
855
896
|
Verify that even a deeply nested insertion is covered by the exclusive lock on the top-level parent.
|
|
@@ -867,6 +908,7 @@ describe("IModelWriteTest", () => {
|
|
|
867
908
|
assert.isFalse(iModel.locks.holdsSharedLock(definitionModelId));
|
|
868
909
|
assert.isFalse(iModel.locks.holdsSharedLock(documentListModelId));
|
|
869
910
|
assert.isFalse(iModel.locks.holdsSharedLock(drawingModelId));
|
|
911
|
+
iModelTxn.start();
|
|
870
912
|
await iModel.locks.acquireLocks({ exclusive: jobSubjectId });
|
|
871
913
|
iModel.locks.checkExclusiveLock(jobSubjectId, "", "");
|
|
872
914
|
iModel.locks.checkSharedLock(IModel.repositoryModelId, "", "");
|
|
@@ -881,9 +923,9 @@ describe("IModelWriteTest", () => {
|
|
|
881
923
|
geom: IModelTestUtils.createRectangle(Point2d.create(1, 1)),
|
|
882
924
|
placement: { origin: Point2d.create(2, 2), angle: 0 },
|
|
883
925
|
};
|
|
884
|
-
const drawingGraphicId1 =
|
|
926
|
+
const drawingGraphicId1 = iModelTxn.insertElement(drawingGraphicProps1);
|
|
885
927
|
assert.isTrue(iModel.elements.getElement(drawingGraphicId1).model === drawingModelId);
|
|
886
|
-
|
|
928
|
+
iModelTxn.end();
|
|
887
929
|
expect(iModel.locks.holdsExclusiveLock(drawingModelId)).true;
|
|
888
930
|
const fileName = iModel[_nativeDb].getFilePath();
|
|
889
931
|
iModel.close(); // close rw
|