@itwin/core-backend 5.0.0-dev.90 → 5.0.0-dev.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/BackendHubAccess.d.ts +215 -0
- package/lib/esm/BackendHubAccess.d.ts.map +1 -0
- package/lib/esm/BackendHubAccess.js +41 -0
- package/lib/esm/BackendHubAccess.js.map +1 -0
- package/lib/esm/BackendLoggerCategory.d.ts +88 -0
- package/lib/esm/BackendLoggerCategory.d.ts.map +1 -0
- package/lib/esm/BackendLoggerCategory.js +93 -0
- package/lib/esm/BackendLoggerCategory.js.map +1 -0
- package/lib/esm/BisCoreSchema.d.ts +22 -0
- package/lib/esm/BisCoreSchema.d.ts.map +1 -0
- package/lib/esm/BisCoreSchema.js +61 -0
- package/lib/esm/BisCoreSchema.js.map +1 -0
- package/lib/esm/BlobContainerService.d.ts +159 -0
- package/lib/esm/BlobContainerService.d.ts.map +1 -0
- package/lib/esm/BlobContainerService.js +15 -0
- package/lib/esm/BlobContainerService.js.map +1 -0
- package/lib/esm/BriefcaseManager.d.ts +213 -0
- package/lib/esm/BriefcaseManager.d.ts.map +1 -0
- package/lib/esm/BriefcaseManager.js +520 -0
- package/lib/esm/BriefcaseManager.js.map +1 -0
- package/lib/esm/Category.d.ts +136 -0
- package/lib/esm/Category.d.ts.map +1 -0
- package/lib/esm/Category.js +224 -0
- package/lib/esm/Category.js.map +1 -0
- package/lib/esm/ChangeSummaryManager.d.ts +161 -0
- package/lib/esm/ChangeSummaryManager.d.ts.map +1 -0
- package/lib/esm/ChangeSummaryManager.js +414 -0
- package/lib/esm/ChangeSummaryManager.js.map +1 -0
- package/lib/esm/ChangedElementsDb.d.ts +101 -0
- package/lib/esm/ChangedElementsDb.d.ts.map +1 -0
- package/lib/esm/ChangedElementsDb.js +165 -0
- package/lib/esm/ChangedElementsDb.js.map +1 -0
- package/lib/esm/ChangesetECAdaptor.d.ts +203 -0
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -0
- package/lib/esm/ChangesetECAdaptor.js +814 -0
- package/lib/esm/ChangesetECAdaptor.js.map +1 -0
- package/lib/esm/ChannelControl.d.ts +68 -0
- package/lib/esm/ChannelControl.d.ts.map +1 -0
- package/lib/esm/ChannelControl.js +15 -0
- package/lib/esm/ChannelControl.js.map +1 -0
- package/lib/esm/CheckpointManager.d.ts +123 -0
- package/lib/esm/CheckpointManager.d.ts.map +1 -0
- package/lib/esm/CheckpointManager.js +375 -0
- package/lib/esm/CheckpointManager.js.map +1 -0
- package/lib/esm/ClassRegistry.d.ts +134 -0
- package/lib/esm/ClassRegistry.d.ts.map +1 -0
- package/lib/esm/ClassRegistry.js +324 -0
- package/lib/esm/ClassRegistry.js.map +1 -0
- package/lib/esm/CloudSqlite.d.ts +682 -0
- package/lib/esm/CloudSqlite.d.ts.map +1 -0
- package/lib/esm/CloudSqlite.js +511 -0
- package/lib/esm/CloudSqlite.js.map +1 -0
- package/lib/esm/CodeService.d.ts +402 -0
- package/lib/esm/CodeService.d.ts.map +1 -0
- package/lib/esm/CodeService.js +65 -0
- package/lib/esm/CodeService.js.map +1 -0
- package/lib/esm/CodeSpecs.d.ts +59 -0
- package/lib/esm/CodeSpecs.d.ts.map +1 -0
- package/lib/esm/CodeSpecs.js +152 -0
- package/lib/esm/CodeSpecs.js.map +1 -0
- package/lib/esm/ConcurrentQuery.d.ts +14 -0
- package/lib/esm/ConcurrentQuery.d.ts.map +1 -0
- package/lib/esm/ConcurrentQuery.js +33 -0
- package/lib/esm/ConcurrentQuery.js.map +1 -0
- package/lib/esm/CustomViewState3dCreator.d.ts +22 -0
- package/lib/esm/CustomViewState3dCreator.d.ts.map +1 -0
- package/lib/esm/CustomViewState3dCreator.js +78 -0
- package/lib/esm/CustomViewState3dCreator.js.map +1 -0
- package/lib/esm/DevTools.d.ts +73 -0
- package/lib/esm/DevTools.d.ts.map +1 -0
- package/lib/esm/DevTools.js +153 -0
- package/lib/esm/DevTools.js.map +1 -0
- package/lib/esm/DisplayStyle.d.ts +99 -0
- package/lib/esm/DisplayStyle.d.ts.map +1 -0
- package/lib/esm/DisplayStyle.js +264 -0
- package/lib/esm/DisplayStyle.js.map +1 -0
- package/lib/esm/ECDb.d.ts +170 -0
- package/lib/esm/ECDb.d.ts.map +1 -0
- package/lib/esm/ECDb.js +329 -0
- package/lib/esm/ECDb.js.map +1 -0
- package/lib/esm/ECSchemaXmlContext.d.ts +46 -0
- package/lib/esm/ECSchemaXmlContext.d.ts.map +1 -0
- package/lib/esm/ECSchemaXmlContext.js +66 -0
- package/lib/esm/ECSchemaXmlContext.js.map +1 -0
- package/lib/esm/ECSqlStatement.d.ts +492 -0
- package/lib/esm/ECSqlStatement.d.ts.map +1 -0
- package/lib/esm/ECSqlStatement.js +810 -0
- package/lib/esm/ECSqlStatement.js.map +1 -0
- package/lib/esm/Element.d.ts +987 -0
- package/lib/esm/Element.d.ts.map +1 -0
- package/lib/esm/Element.js +1337 -0
- package/lib/esm/Element.js.map +1 -0
- package/lib/esm/ElementAspect.d.ts +164 -0
- package/lib/esm/ElementAspect.d.ts.map +1 -0
- package/lib/esm/ElementAspect.js +204 -0
- package/lib/esm/ElementAspect.js.map +1 -0
- package/lib/esm/ElementGraphics.d.ts +7 -0
- package/lib/esm/ElementGraphics.d.ts.map +1 -0
- package/lib/esm/ElementGraphics.js +36 -0
- package/lib/esm/ElementGraphics.js.map +1 -0
- package/lib/esm/ElementTreeWalker.d.ts +182 -0
- package/lib/esm/ElementTreeWalker.d.ts.map +1 -0
- package/lib/esm/ElementTreeWalker.js +421 -0
- package/lib/esm/ElementTreeWalker.js.map +1 -0
- package/lib/esm/Entity.d.ts +142 -0
- package/lib/esm/Entity.d.ts.map +1 -0
- package/lib/esm/Entity.js +186 -0
- package/lib/esm/Entity.js.map +1 -0
- package/lib/esm/EntityReferences.d.ts +50 -0
- package/lib/esm/EntityReferences.d.ts.map +1 -0
- package/lib/esm/EntityReferences.js +92 -0
- package/lib/esm/EntityReferences.js.map +1 -0
- package/lib/esm/ExportGraphics.d.ts +318 -0
- package/lib/esm/ExportGraphics.d.ts.map +1 -0
- package/lib/esm/ExportGraphics.js +209 -0
- package/lib/esm/ExportGraphics.js.map +1 -0
- package/lib/esm/ExternalSource.d.ts +89 -0
- package/lib/esm/ExternalSource.d.ts.map +1 -0
- package/lib/esm/ExternalSource.js +139 -0
- package/lib/esm/ExternalSource.js.map +1 -0
- package/lib/esm/FontFile.d.ts +68 -0
- package/lib/esm/FontFile.d.ts.map +1 -0
- package/lib/esm/FontFile.js +33 -0
- package/lib/esm/FontFile.js.map +1 -0
- package/lib/esm/GeoCoordConfig.d.ts +30 -0
- package/lib/esm/GeoCoordConfig.d.ts.map +1 -0
- package/lib/esm/GeoCoordConfig.js +78 -0
- package/lib/esm/GeoCoordConfig.js.map +1 -0
- package/lib/esm/GeographicCRSServices.d.ts +40 -0
- package/lib/esm/GeographicCRSServices.d.ts.map +1 -0
- package/lib/esm/GeographicCRSServices.js +17 -0
- package/lib/esm/GeographicCRSServices.js.map +1 -0
- package/lib/esm/GeometrySummary.d.ts +5 -0
- package/lib/esm/GeometrySummary.d.ts.map +1 -0
- package/lib/esm/GeometrySummary.js +381 -0
- package/lib/esm/GeometrySummary.js.map +1 -0
- package/lib/esm/HubMock.d.ts +95 -0
- package/lib/esm/HubMock.d.ts.map +1 -0
- package/lib/esm/HubMock.js +220 -0
- package/lib/esm/HubMock.js.map +1 -0
- package/lib/esm/IModelDb.d.ts +1398 -0
- package/lib/esm/IModelDb.d.ts.map +1 -0
- package/lib/esm/IModelDb.js +3230 -0
- package/lib/esm/IModelDb.js.map +1 -0
- package/lib/esm/IModelDbFonts.d.ts +54 -0
- package/lib/esm/IModelDbFonts.d.ts.map +1 -0
- package/lib/esm/IModelDbFonts.js +9 -0
- package/lib/esm/IModelDbFonts.js.map +1 -0
- package/lib/esm/IModelElementCloneContext.d.ts +92 -0
- package/lib/esm/IModelElementCloneContext.d.ts.map +1 -0
- package/lib/esm/IModelElementCloneContext.js +168 -0
- package/lib/esm/IModelElementCloneContext.js.map +1 -0
- package/lib/esm/IModelHost.d.ts +387 -0
- package/lib/esm/IModelHost.d.ts.map +1 -0
- package/lib/esm/IModelHost.js +502 -0
- package/lib/esm/IModelHost.js.map +1 -0
- package/lib/esm/IModelJsFs.d.ts +62 -0
- package/lib/esm/IModelJsFs.d.ts.map +1 -0
- package/lib/esm/IModelJsFs.js +151 -0
- package/lib/esm/IModelJsFs.js.map +1 -0
- package/lib/esm/ImageSourceConversion.d.ts +49 -0
- package/lib/esm/ImageSourceConversion.d.ts.map +1 -0
- package/lib/esm/ImageSourceConversion.js +33 -0
- package/lib/esm/ImageSourceConversion.js.map +1 -0
- package/lib/esm/IpcHost.d.ts +111 -0
- package/lib/esm/IpcHost.d.ts.map +1 -0
- package/lib/esm/IpcHost.js +311 -0
- package/lib/esm/IpcHost.js.map +1 -0
- package/lib/esm/LineStyle.d.ts +312 -0
- package/lib/esm/LineStyle.d.ts.map +1 -0
- package/lib/esm/LineStyle.js +293 -0
- package/lib/esm/LineStyle.js.map +1 -0
- package/lib/esm/LocalHub.d.ts +163 -0
- package/lib/esm/LocalHub.d.ts.map +1 -0
- package/lib/esm/LocalHub.js +583 -0
- package/lib/esm/LocalHub.js.map +1 -0
- package/lib/esm/LocalhostIpcHost.d.ts +22 -0
- package/lib/esm/LocalhostIpcHost.d.ts.map +1 -0
- package/lib/esm/LocalhostIpcHost.js +74 -0
- package/lib/esm/LocalhostIpcHost.js.map +1 -0
- package/lib/esm/LockControl.d.ts +73 -0
- package/lib/esm/LockControl.d.ts.map +1 -0
- package/lib/esm/LockControl.js +9 -0
- package/lib/esm/LockControl.js.map +1 -0
- package/lib/esm/Material.d.ts +131 -0
- package/lib/esm/Material.d.ts.map +1 -0
- package/lib/esm/Material.js +235 -0
- package/lib/esm/Material.js.map +1 -0
- package/lib/esm/Model.d.ts +375 -0
- package/lib/esm/Model.d.ts.map +1 -0
- package/lib/esm/Model.js +484 -0
- package/lib/esm/Model.js.map +1 -0
- package/lib/esm/NativeAppStorage.d.ts +52 -0
- package/lib/esm/NativeAppStorage.d.ts.map +1 -0
- package/lib/esm/NativeAppStorage.js +205 -0
- package/lib/esm/NativeAppStorage.js.map +1 -0
- package/lib/esm/NativeHost.d.ts +53 -0
- package/lib/esm/NativeHost.d.ts.map +1 -0
- package/lib/esm/NativeHost.js +158 -0
- package/lib/esm/NativeHost.js.map +1 -0
- package/lib/esm/NavigationRelationship.d.ts +185 -0
- package/lib/esm/NavigationRelationship.d.ts.map +1 -0
- package/lib/esm/NavigationRelationship.js +238 -0
- package/lib/esm/NavigationRelationship.js.map +1 -0
- package/lib/esm/PromiseMemoizer.d.ts +48 -0
- package/lib/esm/PromiseMemoizer.d.ts.map +1 -0
- package/lib/esm/PromiseMemoizer.js +101 -0
- package/lib/esm/PromiseMemoizer.js.map +1 -0
- package/lib/esm/PropertyStore.d.ts +134 -0
- package/lib/esm/PropertyStore.d.ts.map +1 -0
- package/lib/esm/PropertyStore.js +177 -0
- package/lib/esm/PropertyStore.js.map +1 -0
- package/lib/esm/Relationship.d.ts +399 -0
- package/lib/esm/Relationship.d.ts.map +1 -0
- package/lib/esm/Relationship.js +474 -0
- package/lib/esm/Relationship.js.map +1 -0
- package/lib/esm/RpcBackend.d.ts +6 -0
- package/lib/esm/RpcBackend.d.ts.map +1 -0
- package/lib/esm/RpcBackend.js +28 -0
- package/lib/esm/RpcBackend.js.map +1 -0
- package/lib/esm/SQLiteDb.d.ts +324 -0
- package/lib/esm/SQLiteDb.d.ts.map +1 -0
- package/lib/esm/SQLiteDb.js +379 -0
- package/lib/esm/SQLiteDb.js.map +1 -0
- package/lib/esm/Schema.d.ts +79 -0
- package/lib/esm/Schema.d.ts.map +1 -0
- package/lib/esm/Schema.js +113 -0
- package/lib/esm/Schema.js.map +1 -0
- package/lib/esm/SchemaSync.d.ts +47 -0
- package/lib/esm/SchemaSync.d.ts.map +1 -0
- package/lib/esm/SchemaSync.js +148 -0
- package/lib/esm/SchemaSync.js.map +1 -0
- package/lib/esm/SchemaUtils.d.ts +19 -0
- package/lib/esm/SchemaUtils.d.ts.map +1 -0
- package/lib/esm/SchemaUtils.js +37 -0
- package/lib/esm/SchemaUtils.js.map +1 -0
- package/lib/esm/SheetIndex.d.ts +148 -0
- package/lib/esm/SheetIndex.d.ts.map +1 -0
- package/lib/esm/SheetIndex.js +228 -0
- package/lib/esm/SheetIndex.js.map +1 -0
- package/lib/esm/SqliteChangesetReader.d.ts +278 -0
- package/lib/esm/SqliteChangesetReader.d.ts.map +1 -0
- package/lib/esm/SqliteChangesetReader.js +337 -0
- package/lib/esm/SqliteChangesetReader.js.map +1 -0
- package/lib/esm/SqliteStatement.d.ts +375 -0
- package/lib/esm/SqliteStatement.d.ts.map +1 -0
- package/lib/esm/SqliteStatement.js +615 -0
- package/lib/esm/SqliteStatement.js.map +1 -0
- package/lib/esm/TextAnnotationElement.d.ts +54 -0
- package/lib/esm/TextAnnotationElement.d.ts.map +1 -0
- package/lib/esm/TextAnnotationElement.js +89 -0
- package/lib/esm/TextAnnotationElement.js.map +1 -0
- package/lib/esm/TextAnnotationGeometry.d.ts +32 -0
- package/lib/esm/TextAnnotationGeometry.d.ts.map +1 -0
- package/lib/esm/TextAnnotationGeometry.js +181 -0
- package/lib/esm/TextAnnotationGeometry.js.map +1 -0
- package/lib/esm/TextAnnotationLayout.d.ts +177 -0
- package/lib/esm/TextAnnotationLayout.d.ts.map +1 -0
- package/lib/esm/TextAnnotationLayout.js +513 -0
- package/lib/esm/TextAnnotationLayout.js.map +1 -0
- package/lib/esm/Texture.d.ts +58 -0
- package/lib/esm/Texture.d.ts.map +1 -0
- package/lib/esm/Texture.js +81 -0
- package/lib/esm/Texture.js.map +1 -0
- package/lib/esm/TileStorage.d.ts +59 -0
- package/lib/esm/TileStorage.d.ts.map +1 -0
- package/lib/esm/TileStorage.js +158 -0
- package/lib/esm/TileStorage.js.map +1 -0
- package/lib/esm/TxnManager.d.ts +296 -0
- package/lib/esm/TxnManager.d.ts.map +1 -0
- package/lib/esm/TxnManager.js +619 -0
- package/lib/esm/TxnManager.js.map +1 -0
- package/lib/esm/ViewDefinition.d.ts +392 -0
- package/lib/esm/ViewDefinition.d.ts.map +1 -0
- package/lib/esm/ViewDefinition.js +638 -0
- package/lib/esm/ViewDefinition.js.map +1 -0
- package/lib/esm/ViewStateHydrator.d.ts +14 -0
- package/lib/esm/ViewStateHydrator.d.ts.map +1 -0
- package/lib/esm/ViewStateHydrator.js +89 -0
- package/lib/esm/ViewStateHydrator.js.map +1 -0
- package/lib/esm/ViewStore.d.ts +502 -0
- package/lib/esm/ViewStore.d.ts.map +1 -0
- package/lib/esm/ViewStore.js +1259 -0
- package/lib/esm/ViewStore.js.map +1 -0
- package/lib/esm/core-backend.d.ts +183 -0
- package/lib/esm/core-backend.d.ts.map +1 -0
- package/lib/esm/core-backend.js +187 -0
- package/lib/esm/core-backend.js.map +1 -0
- package/lib/esm/domains/FunctionalElements.d.ts +86 -0
- package/lib/esm/domains/FunctionalElements.d.ts.map +1 -0
- package/lib/esm/domains/FunctionalElements.js +117 -0
- package/lib/esm/domains/FunctionalElements.js.map +1 -0
- package/lib/esm/domains/FunctionalSchema.d.ts +14 -0
- package/lib/esm/domains/FunctionalSchema.d.ts.map +1 -0
- package/lib/esm/domains/FunctionalSchema.js +37 -0
- package/lib/esm/domains/FunctionalSchema.js.map +1 -0
- package/lib/esm/domains/GenericElements.d.ts +160 -0
- package/lib/esm/domains/GenericElements.d.ts.map +1 -0
- package/lib/esm/domains/GenericElements.js +225 -0
- package/lib/esm/domains/GenericElements.js.map +1 -0
- package/lib/esm/domains/GenericSchema.d.ts +11 -0
- package/lib/esm/domains/GenericSchema.d.ts.map +1 -0
- package/lib/esm/domains/GenericSchema.js +25 -0
- package/lib/esm/domains/GenericSchema.js.map +1 -0
- package/lib/esm/internal/ChangesetConflictArgs.d.ts +62 -0
- package/lib/esm/internal/ChangesetConflictArgs.d.ts.map +1 -0
- package/lib/esm/internal/ChangesetConflictArgs.js +104 -0
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -0
- package/lib/esm/internal/ChannelAdmin.d.ts +34 -0
- package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -0
- package/lib/esm/internal/ChannelAdmin.js +122 -0
- package/lib/esm/internal/ChannelAdmin.js.map +1 -0
- package/lib/esm/internal/FontFileImpl.d.ts +34 -0
- package/lib/esm/internal/FontFileImpl.d.ts.map +1 -0
- package/lib/esm/internal/FontFileImpl.js +135 -0
- package/lib/esm/internal/FontFileImpl.js.map +1 -0
- package/lib/esm/internal/IModelDbFontsImpl.d.ts +7 -0
- package/lib/esm/internal/IModelDbFontsImpl.d.ts.map +1 -0
- package/lib/esm/internal/IModelDbFontsImpl.js +183 -0
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -0
- package/lib/esm/internal/NativePlatform.d.ts +15 -0
- package/lib/esm/internal/NativePlatform.d.ts.map +1 -0
- package/lib/esm/internal/NativePlatform.js +43 -0
- package/lib/esm/internal/NativePlatform.js.map +1 -0
- package/lib/esm/internal/NoLocks.d.ts +6 -0
- package/lib/esm/internal/NoLocks.d.ts.map +1 -0
- package/lib/esm/internal/NoLocks.js +24 -0
- package/lib/esm/internal/NoLocks.js.map +1 -0
- package/lib/esm/internal/ServerBasedLocks.d.ts +52 -0
- package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -0
- package/lib/esm/internal/ServerBasedLocks.js +175 -0
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -0
- package/lib/esm/internal/Symbols.d.ts +18 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -0
- package/lib/esm/internal/Symbols.js +25 -0
- package/lib/esm/internal/Symbols.js.map +1 -0
- package/lib/esm/internal/cross-package.d.ts +4 -0
- package/lib/esm/internal/cross-package.d.ts.map +1 -0
- package/lib/esm/internal/cross-package.js +8 -0
- package/lib/esm/internal/cross-package.js.map +1 -0
- package/lib/esm/internal/workspace/SettingsImpl.d.ts +43 -0
- package/lib/esm/internal/workspace/SettingsImpl.d.ts.map +1 -0
- package/lib/esm/internal/workspace/SettingsImpl.js +154 -0
- package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -0
- package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts +6 -0
- package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -0
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js +268 -0
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -0
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +41 -0
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -0
- package/lib/esm/internal/workspace/WorkspaceImpl.js +691 -0
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -0
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.d.ts +10 -0
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.d.ts.map +1 -0
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js +35 -0
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -0
- package/lib/esm/rpc/multipart.d.ts +12 -0
- package/lib/esm/rpc/multipart.d.ts.map +1 -0
- package/lib/esm/rpc/multipart.js +67 -0
- package/lib/esm/rpc/multipart.js.map +1 -0
- package/lib/esm/rpc/tracing.d.ts +29 -0
- package/lib/esm/rpc/tracing.d.ts.map +1 -0
- package/lib/esm/rpc/tracing.js +71 -0
- package/lib/esm/rpc/tracing.js.map +1 -0
- package/lib/esm/rpc/web/logging.d.ts +10 -0
- package/lib/esm/rpc/web/logging.d.ts.map +1 -0
- package/lib/esm/rpc/web/logging.js +41 -0
- package/lib/esm/rpc/web/logging.js.map +1 -0
- package/lib/esm/rpc/web/request.d.ts +7 -0
- package/lib/esm/rpc/web/request.d.ts.map +1 -0
- package/lib/esm/rpc/web/request.js +71 -0
- package/lib/esm/rpc/web/request.js.map +1 -0
- package/lib/esm/rpc/web/response.d.ts +7 -0
- package/lib/esm/rpc/web/response.d.ts.map +1 -0
- package/lib/esm/rpc/web/response.js +136 -0
- package/lib/esm/rpc/web/response.js.map +1 -0
- package/lib/esm/rpc-impl/DevToolsRpcImpl.d.ts +16 -0
- package/lib/esm/rpc-impl/DevToolsRpcImpl.d.ts.map +1 -0
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js +29 -0
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -0
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +51 -0
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -0
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js +313 -0
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -0
- package/lib/esm/rpc-impl/IModelTileRpcImpl.d.ts +21 -0
- package/lib/esm/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -0
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js +193 -0
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -0
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +45 -0
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -0
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js +166 -0
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -0
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +18 -0
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts.map +1 -0
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +41 -0
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -0
- package/lib/esm/test/AdvancedEqual.d.ts +38 -0
- package/lib/esm/test/AdvancedEqual.d.ts.map +1 -0
- package/lib/esm/test/AdvancedEqual.js +67 -0
- package/lib/esm/test/AdvancedEqual.js.map +1 -0
- package/lib/esm/test/AttachDb.test.d.ts +2 -0
- package/lib/esm/test/AttachDb.test.d.ts.map +1 -0
- package/lib/esm/test/AttachDb.test.js +157 -0
- package/lib/esm/test/AttachDb.test.js.map +1 -0
- package/lib/esm/test/GeometryTestUtil.d.ts +7 -0
- package/lib/esm/test/GeometryTestUtil.d.ts.map +1 -0
- package/lib/esm/test/GeometryTestUtil.js +25 -0
- package/lib/esm/test/GeometryTestUtil.js.map +1 -0
- package/lib/esm/test/IModelHost.test.d.ts +2 -0
- package/lib/esm/test/IModelHost.test.d.ts.map +1 -0
- package/lib/esm/test/IModelHost.test.js +187 -0
- package/lib/esm/test/IModelHost.test.js.map +1 -0
- package/lib/esm/test/IModelTestUtils.d.ts +173 -0
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -0
- package/lib/esm/test/IModelTestUtils.js +1113 -0
- package/lib/esm/test/IModelTestUtils.js.map +1 -0
- package/lib/esm/test/ImageSourceConversion.test.d.ts +2 -0
- package/lib/esm/test/ImageSourceConversion.test.d.ts.map +1 -0
- package/lib/esm/test/ImageSourceConversion.test.js +171 -0
- package/lib/esm/test/ImageSourceConversion.test.js.map +1 -0
- package/lib/esm/test/IpcHost.test.d.ts +2 -0
- package/lib/esm/test/IpcHost.test.d.ts.map +1 -0
- package/lib/esm/test/IpcHost.test.js +55 -0
- package/lib/esm/test/IpcHost.test.js.map +1 -0
- package/lib/esm/test/KnownTestLocations.d.ts +7 -0
- package/lib/esm/test/KnownTestLocations.d.ts.map +1 -0
- package/lib/esm/test/KnownTestLocations.js +27 -0
- package/lib/esm/test/KnownTestLocations.js.map +1 -0
- package/lib/esm/test/PrintElementTree.d.ts +7 -0
- package/lib/esm/test/PrintElementTree.d.ts.map +1 -0
- package/lib/esm/test/PrintElementTree.js +35 -0
- package/lib/esm/test/PrintElementTree.js.map +1 -0
- package/lib/esm/test/PropertyDb.test.d.ts +2 -0
- package/lib/esm/test/PropertyDb.test.d.ts.map +1 -0
- package/lib/esm/test/PropertyDb.test.js +71 -0
- package/lib/esm/test/PropertyDb.test.js.map +1 -0
- package/lib/esm/test/RevisionUtility.d.ts +33 -0
- package/lib/esm/test/RevisionUtility.d.ts.map +1 -0
- package/lib/esm/test/RevisionUtility.js +52 -0
- package/lib/esm/test/RevisionUtility.js.map +1 -0
- package/lib/esm/test/SchemaUtils.test.d.ts +2 -0
- package/lib/esm/test/SchemaUtils.test.d.ts.map +1 -0
- package/lib/esm/test/SchemaUtils.test.js +97 -0
- package/lib/esm/test/SchemaUtils.test.js.map +1 -0
- package/lib/esm/test/SequentialLogMatcher.d.ts +35 -0
- package/lib/esm/test/SequentialLogMatcher.d.ts.map +1 -0
- package/lib/esm/test/SequentialLogMatcher.js +130 -0
- package/lib/esm/test/SequentialLogMatcher.js.map +1 -0
- package/lib/esm/test/TestChangeSetUtility.d.ts +23 -0
- package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -0
- package/lib/esm/test/TestChangeSetUtility.js +65 -0
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -0
- package/lib/esm/test/TestUtils.d.ts +38 -0
- package/lib/esm/test/TestUtils.d.ts.map +1 -0
- package/lib/esm/test/TestUtils.js +99 -0
- package/lib/esm/test/TestUtils.js.map +1 -0
- package/lib/esm/test/annotations/TextAnnotation.test.d.ts +2 -0
- package/lib/esm/test/annotations/TextAnnotation.test.d.ts.map +1 -0
- package/lib/esm/test/annotations/TextAnnotation.test.js +1135 -0
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -0
- package/lib/esm/test/categories/Category.test.d.ts +2 -0
- package/lib/esm/test/categories/Category.test.d.ts.map +1 -0
- package/lib/esm/test/categories/Category.test.js +51 -0
- package/lib/esm/test/categories/Category.test.js.map +1 -0
- package/lib/esm/test/codespec/CodeSpec.test.d.ts +2 -0
- package/lib/esm/test/codespec/CodeSpec.test.d.ts.map +1 -0
- package/lib/esm/test/codespec/CodeSpec.test.js +51 -0
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -0
- package/lib/esm/test/ecdb/CTE.test.d.ts +2 -0
- package/lib/esm/test/ecdb/CTE.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/CTE.test.js +177 -0
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -0
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +167 -0
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECDb.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECDb.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECDb.test.js +642 -0
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECDbTestHelper.d.ts +5 -0
- package/lib/esm/test/ecdb/ECDbTestHelper.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECDbTestHelper.js +28 -0
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -0
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js +63 -0
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.d.ts +5 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.js +971 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECSqlQuery.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECSqlQuery.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +770 -0
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECSqlReader.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECSqlReader.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSqlReader.test.js +669 -0
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.d.ts +2 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +3239 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.d.ts +2 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.js +508 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -0
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts +4 -0
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -0
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +127 -0
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.d.ts +2 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.d.ts.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +196 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestParser.d.ts +66 -0
- package/lib/esm/test/ecsql/src/ECSqlTestParser.d.ts.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js +420 -0
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.d.ts +2 -0
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.d.ts.map +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +365 -0
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -0
- package/lib/esm/test/element/DeleteDefinitionElements.test.d.ts +2 -0
- package/lib/esm/test/element/DeleteDefinitionElements.test.d.ts.map +1 -0
- package/lib/esm/test/element/DeleteDefinitionElements.test.js +208 -0
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -0
- package/lib/esm/test/element/ElementAspect.test.d.ts +2 -0
- package/lib/esm/test/element/ElementAspect.test.d.ts.map +1 -0
- package/lib/esm/test/element/ElementAspect.test.js +363 -0
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -0
- package/lib/esm/test/element/ElementDependencyGraph.test.d.ts +2 -0
- package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -0
- package/lib/esm/test/element/ElementDependencyGraph.test.js +383 -0
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -0
- package/lib/esm/test/element/ElementRoundTrip.test.d.ts +2 -0
- package/lib/esm/test/element/ElementRoundTrip.test.d.ts.map +1 -0
- package/lib/esm/test/element/ElementRoundTrip.test.js +916 -0
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -0
- package/lib/esm/test/element/ExcludedElements.test.d.ts +2 -0
- package/lib/esm/test/element/ExcludedElements.test.d.ts.map +1 -0
- package/lib/esm/test/element/ExcludedElements.test.js +57 -0
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -0
- package/lib/esm/test/element/ExternalSource.test.d.ts +2 -0
- package/lib/esm/test/element/ExternalSource.test.d.ts.map +1 -0
- package/lib/esm/test/element/ExternalSource.test.js +107 -0
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -0
- package/lib/esm/test/element/NullStructArray.test.d.ts +2 -0
- package/lib/esm/test/element/NullStructArray.test.d.ts.map +1 -0
- package/lib/esm/test/element/NullStructArray.test.js +77 -0
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -0
- package/lib/esm/test/element/UrlLink.test.d.ts +2 -0
- package/lib/esm/test/element/UrlLink.test.d.ts.map +1 -0
- package/lib/esm/test/element/UrlLink.test.js +36 -0
- package/lib/esm/test/element/UrlLink.test.js.map +1 -0
- package/lib/esm/test/font/FontFile.test.d.ts +2 -0
- package/lib/esm/test/font/FontFile.test.d.ts.map +1 -0
- package/lib/esm/test/font/FontFile.test.js +139 -0
- package/lib/esm/test/font/FontFile.test.js.map +1 -0
- package/lib/esm/test/font/IModelDbFonts.test.d.ts +2 -0
- package/lib/esm/test/font/IModelDbFonts.test.d.ts.map +1 -0
- package/lib/esm/test/font/IModelDbFonts.test.js +264 -0
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.d.ts +2 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.d.ts.map +1 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +165 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -0
- package/lib/esm/test/hubaccess/CheckpointManager.test.d.ts +2 -0
- package/lib/esm/test/hubaccess/CheckpointManager.test.d.ts.map +1 -0
- package/lib/esm/test/hubaccess/CheckpointManager.test.js +137 -0
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -0
- package/lib/esm/test/imageData.d.ts +9 -0
- package/lib/esm/test/imageData.d.ts.map +1 -0
- package/lib/esm/test/imageData.js +16 -0
- package/lib/esm/test/imageData.js.map +1 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.d.ts +2 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.js +382 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -0
- package/lib/esm/test/imodel/GetTextureImage.test.d.ts +2 -0
- package/lib/esm/test/imodel/GetTextureImage.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/GetTextureImage.test.js +29 -0
- package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -0
- package/lib/esm/test/imodel/IModel.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModel.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModel.test.js +2601 -0
- package/lib/esm/test/imodel/IModel.test.js.map +1 -0
- package/lib/esm/test/imodel/ProjectExtents.test.d.ts +2 -0
- package/lib/esm/test/imodel/ProjectExtents.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/ProjectExtents.test.js +66 -0
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -0
- package/lib/esm/test/imodel/SchemaXmlImport.test.d.ts +2 -0
- package/lib/esm/test/imodel/SchemaXmlImport.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/SchemaXmlImport.test.js +74 -0
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -0
- package/lib/esm/test/index.d.ts +7 -0
- package/lib/esm/test/index.d.ts.map +1 -0
- package/lib/esm/test/index.js +11 -0
- package/lib/esm/test/index.js.map +1 -0
- package/lib/esm/test/misc/DevTools.test.d.ts +2 -0
- package/lib/esm/test/misc/DevTools.test.d.ts.map +1 -0
- package/lib/esm/test/misc/DevTools.test.js +72 -0
- package/lib/esm/test/misc/DevTools.test.js.map +1 -0
- package/lib/esm/test/misc/EntitySubClasses.test.d.ts +2 -0
- package/lib/esm/test/misc/EntitySubClasses.test.d.ts.map +1 -0
- package/lib/esm/test/misc/EntitySubClasses.test.js +106 -0
- package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -0
- package/lib/esm/test/misc/GeoServices.test.d.ts +2 -0
- package/lib/esm/test/misc/GeoServices.test.d.ts.map +1 -0
- package/lib/esm/test/misc/GeoServices.test.js +850 -0
- package/lib/esm/test/misc/GeoServices.test.js.map +1 -0
- package/lib/esm/test/misc/PromiseMemoizer.test.d.ts +2 -0
- package/lib/esm/test/misc/PromiseMemoizer.test.d.ts.map +1 -0
- package/lib/esm/test/misc/PromiseMemoizer.test.js +111 -0
- package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -0
- package/lib/esm/test/native/DgnDbWorker.test.d.ts +2 -0
- package/lib/esm/test/native/DgnDbWorker.test.d.ts.map +1 -0
- package/lib/esm/test/native/DgnDbWorker.test.js +159 -0
- package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -0
- package/lib/esm/test/rpc/response.test.d.ts +2 -0
- package/lib/esm/test/rpc/response.test.d.ts.map +1 -0
- package/lib/esm/test/rpc/response.test.js +112 -0
- package/lib/esm/test/rpc/response.test.js.map +1 -0
- package/lib/esm/test/schema/ClassRegistry.test.d.ts +2 -0
- package/lib/esm/test/schema/ClassRegistry.test.d.ts.map +1 -0
- package/lib/esm/test/schema/ClassRegistry.test.js +679 -0
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -0
- package/lib/esm/test/schema/FunctionalDomain.test.d.ts +2 -0
- package/lib/esm/test/schema/FunctionalDomain.test.d.ts.map +1 -0
- package/lib/esm/test/schema/FunctionalDomain.test.js +490 -0
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -0
- package/lib/esm/test/schema/GenericDomain.test.d.ts +2 -0
- package/lib/esm/test/schema/GenericDomain.test.d.ts.map +1 -0
- package/lib/esm/test/schema/GenericDomain.test.js +132 -0
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -0
- package/lib/esm/test/schema/IModelSchemaContext.test.d.ts +2 -0
- package/lib/esm/test/schema/IModelSchemaContext.test.d.ts.map +1 -0
- package/lib/esm/test/schema/IModelSchemaContext.test.js +95 -0
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -0
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +4 -0
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -0
- package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -0
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -0
- package/lib/esm/test/standalone/ChangeMerge.test.d.ts +2 -0
- package/lib/esm/test/standalone/ChangeMerge.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ChangeMerge.test.js +413 -0
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -0
- package/lib/esm/test/standalone/ChangesetReader.test.d.ts +2 -0
- package/lib/esm/test/standalone/ChangesetReader.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ChangesetReader.test.js +890 -0
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -0
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.d.ts +2 -0
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js +49 -0
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -0
- package/lib/esm/test/standalone/DisplayStyle.test.d.ts +2 -0
- package/lib/esm/test/standalone/DisplayStyle.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/DisplayStyle.test.js +136 -0
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -0
- package/lib/esm/test/standalone/ElementGraphics.test.d.ts +2 -0
- package/lib/esm/test/standalone/ElementGraphics.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ElementGraphics.test.js +127 -0
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -0
- package/lib/esm/test/standalone/ElementMesh.test.d.ts +2 -0
- package/lib/esm/test/standalone/ElementMesh.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ElementMesh.test.js +142 -0
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -0
- package/lib/esm/test/standalone/ExportGraphics.test.d.ts +2 -0
- package/lib/esm/test/standalone/ExportGraphics.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ExportGraphics.test.js +1040 -0
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -0
- package/lib/esm/test/standalone/GeometryChangeEvents.test.d.ts +2 -0
- package/lib/esm/test/standalone/GeometryChangeEvents.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js +139 -0
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -0
- package/lib/esm/test/standalone/GeometryStream.test.d.ts +2 -0
- package/lib/esm/test/standalone/GeometryStream.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/GeometryStream.test.js +2869 -0
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -0
- package/lib/esm/test/standalone/HubMock.test.d.ts +2 -0
- package/lib/esm/test/standalone/HubMock.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/HubMock.test.js +343 -0
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -0
- package/lib/esm/test/standalone/IModelWrite.test.d.ts +7 -0
- package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/IModelWrite.test.js +859 -0
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -0
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.d.ts +2 -0
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +417 -0
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -0
- package/lib/esm/test/standalone/MergeConflict.test.d.ts +7 -0
- package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/MergeConflict.test.js +345 -0
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -0
- package/lib/esm/test/standalone/NativeAppStorage.test.d.ts +2 -0
- package/lib/esm/test/standalone/NativeAppStorage.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/NativeAppStorage.test.js +121 -0
- package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.d.ts +2 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.js +398 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -0
- package/lib/esm/test/standalone/RenderTimeline.test.d.ts +2 -0
- package/lib/esm/test/standalone/RenderTimeline.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/RenderTimeline.test.js +71 -0
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -0
- package/lib/esm/test/standalone/SQLiteDb.test.d.ts +2 -0
- package/lib/esm/test/standalone/SQLiteDb.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SQLiteDb.test.js +63 -0
- package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -0
- package/lib/esm/test/standalone/SchemaUtils.test.d.ts +2 -0
- package/lib/esm/test/standalone/SchemaUtils.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SchemaUtils.test.js +25 -0
- package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -0
- package/lib/esm/test/standalone/SectionDrawing.test.d.ts +2 -0
- package/lib/esm/test/standalone/SectionDrawing.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SectionDrawing.test.js +83 -0
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -0
- package/lib/esm/test/standalone/ServerBasedLocks.test.d.ts +2 -0
- package/lib/esm/test/standalone/ServerBasedLocks.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ServerBasedLocks.test.js +279 -0
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -0
- package/lib/esm/test/standalone/Setting.test.d.ts +2 -0
- package/lib/esm/test/standalone/Setting.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/Setting.test.js +76 -0
- package/lib/esm/test/standalone/Setting.test.js.map +1 -0
- package/lib/esm/test/standalone/Settings.test.d.ts +2 -0
- package/lib/esm/test/standalone/Settings.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/Settings.test.js +349 -0
- package/lib/esm/test/standalone/Settings.test.js.map +1 -0
- package/lib/esm/test/standalone/SettingsSchemas.test.d.ts +2 -0
- package/lib/esm/test/standalone/SettingsSchemas.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SettingsSchemas.test.js +31 -0
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -0
- package/lib/esm/test/standalone/SnapshotDb.test.d.ts +2 -0
- package/lib/esm/test/standalone/SnapshotDb.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SnapshotDb.test.js +153 -0
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -0
- package/lib/esm/test/standalone/Texture.test.d.ts +2 -0
- package/lib/esm/test/standalone/Texture.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/Texture.test.js +90 -0
- package/lib/esm/test/standalone/Texture.test.js.map +1 -0
- package/lib/esm/test/standalone/TileCache.test.d.ts +9 -0
- package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/TileCache.test.js +127 -0
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -0
- package/lib/esm/test/standalone/TileTree.test.d.ts +2 -0
- package/lib/esm/test/standalone/TileTree.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/TileTree.test.js +241 -0
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -0
- package/lib/esm/test/standalone/TxnManager.test.d.ts +2 -0
- package/lib/esm/test/standalone/TxnManager.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/TxnManager.test.js +878 -0
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -0
- package/lib/esm/test/standalone/ViewDefinition.test.d.ts +2 -0
- package/lib/esm/test/standalone/ViewDefinition.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ViewDefinition.test.js +279 -0
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.d.ts +2 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.js +288 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -0
- package/lib/esm/test/standalone/Workspace.test.d.ts +2 -0
- package/lib/esm/test/standalone/Workspace.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/Workspace.test.js +161 -0
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -0
- package/lib/esm/workspace/Settings.d.ts +216 -0
- package/lib/esm/workspace/Settings.d.ts.map +1 -0
- package/lib/esm/workspace/Settings.js +83 -0
- package/lib/esm/workspace/Settings.js.map +1 -0
- package/lib/esm/workspace/SettingsSchemas.d.ts +135 -0
- package/lib/esm/workspace/SettingsSchemas.d.ts.map +1 -0
- package/lib/esm/workspace/SettingsSchemas.js +9 -0
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -0
- package/lib/esm/workspace/Workspace.d.ts +507 -0
- package/lib/esm/workspace/Workspace.d.ts.map +1 -0
- package/lib/esm/workspace/Workspace.js +97 -0
- package/lib/esm/workspace/Workspace.js.map +1 -0
- package/lib/esm/workspace/WorkspaceEditor.d.ts +245 -0
- package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -0
- package/lib/esm/workspace/WorkspaceEditor.js +31 -0
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -0
- package/package.json +18 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IModelWrite.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/IModelWrite.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { AccessToken, DbResult, GuidString, Id64, Id64String } from \"@itwin/core-bentley\";\nimport {\n ChangesetIdWithIndex, Code, ColorDef,\n GeometricElement2dProps, GeometryStreamProps, IModel, LockState, QueryRowFormat, RequestNewBriefcaseProps, SchemaState, SubCategoryAppearance,\n} from \"@itwin/core-common\";\nimport { Arc3d, IModelJson, Point2d, Point3d } from \"@itwin/core-geometry\";\nimport * as chai from \"chai\";\nimport { assert, expect } from \"chai\";\nimport * as chaiAsPromised from \"chai-as-promised\";\nimport * as fs from \"fs\";\nimport * as semver from \"semver\";\nimport * as sinon from \"sinon\";\nimport { HubWrappers, KnownTestLocations } from \"../\";\nimport { DrawingCategory } from \"../../Category\";\nimport { ECSqlStatement } from \"../../ECSqlStatement\";\nimport { HubMock } from \"../../HubMock\";\nimport {\n _nativeDb,\n BriefcaseDb,\n BriefcaseManager,\n ChannelControl,\n CodeService, DefinitionModel, DictionaryModel, DocumentListModel, Drawing, DrawingGraphic, OpenBriefcaseArgs, SpatialCategory, Subject,\n} from \"../../core-backend\";\nimport { IModelTestUtils, TestUserType } from \"../IModelTestUtils\";\nimport { ServerBasedLocks } from \"../../internal/ServerBasedLocks\";\n\nchai.use(chaiAsPromised);\n\nexport async function createNewModelAndCategory(rwIModel: BriefcaseDb, parent?: Id64String) {\n // Create a new physical model.\n const [, modelId] = await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(rwIModel, IModelTestUtils.getUniqueModelCode(rwIModel, \"newPhysicalModel\"), true, parent);\n\n // Find or create a SpatialCategory.\n const dictionary: DictionaryModel = rwIModel.models.getModel<DictionaryModel>(IModel.dictionaryId);\n const newCategoryCode = IModelTestUtils.getUniqueSpatialCategoryCode(dictionary, \"ThisTestSpatialCategory\");\n const category = SpatialCategory.create(rwIModel, IModel.dictionaryId, newCategoryCode.value);\n const spatialCategoryId = rwIModel.elements.insertElement(category.toJSON());\n category.setDefaultAppearance(new SubCategoryAppearance({ color: 0xff0000 }));\n // const spatialCategoryId: Id64String = SpatialCategory.insert(rwIModel, IModel.dictionaryId, newCategoryCode.value!, new SubCategoryAppearance({ color: 0xff0000 }));\n\n return { modelId, spatialCategoryId };\n}\n\ndescribe(\"IModelWriteTest\", () => {\n let managerAccessToken: AccessToken;\n let superAccessToken: AccessToken;\n let iTwinId: GuidString;\n\n before(() => {\n HubMock.startup(\"IModelWriteTest\", KnownTestLocations.outputDir);\n iTwinId = HubMock.iTwinId;\n });\n after(() => HubMock.shutdown());\n\n it(\"Check busyTimeout option\", async () => {\n const iModelProps = {\n iModelName: \"ReadWriteTest\",\n iTwinId,\n };\n\n const iModelId = await HubMock.createNewIModel(iModelProps);\n const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: \"test token\", iTwinId, iModelId });\n\n const tryOpen = async (args: OpenBriefcaseArgs) => {\n const start = performance.now();\n let didThrow = false;\n try {\n await BriefcaseDb.open(args);\n\n } catch (e: any) {\n assert.strictEqual(e.errorNumber, DbResult.BE_SQLITE_BUSY, \"Expect error 'Db is busy'\");\n didThrow = true;\n }\n assert.isTrue(didThrow);\n return performance.now() - start;\n };\n const seconds = (s: number) => s * 1000;\n\n const db = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });\n db.saveChanges();\n // lock db so another connection cannot write to it.\n db.saveFileProperty({ name: \"test\", namespace: \"test\" }, \"\");\n\n assert.isAtMost(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(0) }), seconds(1), \"open should fail with busy error instantly\");\n assert.isAtLeast(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(1) }), seconds(1), \"open should fail with atleast 1 sec delay due to retry\");\n assert.isAtLeast(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(2) }), seconds(2), \"open should fail with atleast 2 sec delay due to retry\");\n assert.isAtLeast(await tryOpen({ fileName: briefcaseProps.fileName, busyTimeout: seconds(3) }), seconds(3), \"open should fail with atleast 3 sec delay due to retry\");\n\n db.abandonChanges();\n db.close();\n });\n\n it(\"WatchForChanges\", async () => {\n const iModelProps = {\n iModelName: \"ReadWriteTest\",\n iTwinId,\n };\n\n const iModelId = await HubMock.createNewIModel(iModelProps);\n const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: \"test token\", iTwinId, iModelId });\n\n let nClosed = 0;\n const fsWatcher = {\n callback: () => { },\n close: () => ++nClosed,\n };\n const watchStub: any = (_filename: fs.PathLike, _opts: fs.WatchOptions, fn: () => void) => {\n fsWatcher.callback = fn;\n return fsWatcher;\n };\n sinon.stub(fs, \"watch\").callsFake(watchStub);\n\n const bc = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });\n bc.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n const roBC = await BriefcaseDb.open({ fileName: briefcaseProps.fileName, watchForChanges: true });\n\n const code1 = IModelTestUtils.getUniqueModelCode(bc, \"newPhysicalModel1\");\n await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bc, code1, true);\n bc.saveChanges();\n\n // immediately after save changes the current txnId in the writeable briefcase changes, but it isn't reflected\n // in the readonly briefcase until the file watcher fires.\n expect(bc[_nativeDb].getCurrentTxnId()).not.equal(roBC[_nativeDb].getCurrentTxnId());\n\n // trigger watcher via stub\n fsWatcher.callback();\n\n // now they should match because restartDefaultTxn in the readonly briefcase reads the changes from the writeable connection\n expect(bc[_nativeDb].getCurrentTxnId()).equal(roBC[_nativeDb].getCurrentTxnId());\n\n roBC.close();\n expect(nClosed).equal(1);\n\n bc.close();\n sinon.restore();\n });\n\n function expectEqualChangesets(a: ChangesetIdWithIndex, b: ChangesetIdWithIndex): void {\n expect(a.id).to.equal(b.id);\n expect(a.index).to.equal(b.index);\n }\n\n it(\"WatchForChanges - push\", async () => {\n const adminAccessToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);\n const iModelProps = {\n iModelName: \"ReadWriteTest\",\n iTwinId,\n };\n\n const iModelId = await HubMock.createNewIModel(iModelProps);\n const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: adminAccessToken, iTwinId, iModelId });\n\n let nClosed = 0;\n const fsWatcher = {\n callback: () => { },\n close: () => ++nClosed,\n };\n const watchStub: any = (_filename: fs.PathLike, _opts: fs.WatchOptions, fn: () => void) => {\n fsWatcher.callback = fn;\n return fsWatcher;\n };\n sinon.stub(fs, \"watch\").callsFake(watchStub);\n\n const bc = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });\n bc.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n const roBC = await BriefcaseDb.open({ fileName: briefcaseProps.fileName, watchForChanges: true });\n\n const code1 = IModelTestUtils.getUniqueModelCode(bc, \"newPhysicalModel1\");\n await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bc, code1, true);\n bc.saveChanges();\n\n // immediately after save changes the current txnId in the writeable briefcase changes, but it isn't reflected\n // in the readonly briefcase until the file watcher fires.\n expect(bc[_nativeDb].getCurrentTxnId()).not.equal(roBC[_nativeDb].getCurrentTxnId());\n\n // trigger watcher via stub\n fsWatcher.callback();\n\n // now they should match because restartDefaultTxn in the readonly briefcase reads the changes from the writeable connection\n expect(bc[_nativeDb].getCurrentTxnId()).equal(roBC[_nativeDb].getCurrentTxnId());\n\n // Push the changes to the hub\n\n const prePushChangeset = bc.changeset;\n let eventRaised = false;\n roBC.onChangesetChanged.addOnce((prevCS) => {\n expectEqualChangesets(prevCS, prePushChangeset);\n eventRaised = true;\n });\n\n await bc.pushChanges({ accessToken: adminAccessToken, description: \"test\" });\n const postPushChangeset = bc.changeset;\n assert(!!postPushChangeset);\n expect(prePushChangeset !== postPushChangeset, \"changes should be pushed\");\n\n // trigger watcher via stub\n fsWatcher.callback();\n\n expectEqualChangesets(roBC.changeset, postPushChangeset);\n expect(roBC[_nativeDb].getCurrentTxnId(), \"txn should be updated\").equal(bc[_nativeDb].getCurrentTxnId());\n expect(eventRaised).to.be.true;\n\n roBC.close();\n expect(nClosed).equal(1);\n\n bc.close();\n sinon.restore();\n });\n\n it(\"WatchForChanges - pull\", async () => {\n const adminAccessToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);\n\n const pathname = IModelTestUtils.resolveAssetFile(\"CompatibilityTestSeed.bim\");\n const hubName = \"CompatibilityTest\";\n const iModelId = await HubWrappers.pushIModel(managerAccessToken, iTwinId, pathname, hubName, true);\n\n // Download two copies of the briefcase - manager and super\n const args: RequestNewBriefcaseProps = { iTwinId, iModelId };\n const initialDb = await BriefcaseManager.downloadBriefcase({ accessToken: adminAccessToken, ...args });\n const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: adminAccessToken, ...args });\n\n // Push some changes - prep for pull workflow.\n const bc1 = await BriefcaseDb.open({ fileName: initialDb.fileName });\n bc1.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n const code2 = IModelTestUtils.getUniqueModelCode(bc1, \"newPhysicalModel2\");\n await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(bc1, code2, true);\n const prePushChangeset = bc1.changeset;\n bc1.saveChanges();\n await bc1.pushChanges({ accessToken: adminAccessToken, description: \"test\" });\n const postPushChangeset = bc1.changeset;\n assert(!!prePushChangeset);\n expect(prePushChangeset !== postPushChangeset, \"changes should be pushed\");\n\n bc1.close();\n\n // Writer that pulls + watcher.\n let nClosed = 0;\n const fsWatcher = {\n callback: () => { },\n close: () => ++nClosed,\n };\n const watchStub: any = (_filename: fs.PathLike, _opts: fs.WatchOptions, fn: () => void) => {\n fsWatcher.callback = fn;\n return fsWatcher;\n };\n sinon.stub(fs, \"watch\").callsFake(watchStub);\n\n const bc = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });\n bc.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n const roBC = await BriefcaseDb.open({ fileName: briefcaseProps.fileName, watchForChanges: true });\n\n const prePullChangeset = bc.changeset;\n let eventRaised = false;\n roBC.onChangesetChanged.addOnce((prevCS) => {\n expectEqualChangesets(prevCS, prePushChangeset);\n eventRaised = true;\n });\n\n await bc.pullChanges();\n\n const postPullChangeset = bc.changeset;\n assert(!!postPullChangeset);\n expect(prePullChangeset !== postPullChangeset, \"changes should be pulled\");\n\n // trigger watcher via stub\n fsWatcher.callback();\n\n expectEqualChangesets(roBC.changeset, postPullChangeset);\n expect(roBC[_nativeDb].getCurrentTxnId(), \"txn should be updated\").equal(bc[_nativeDb].getCurrentTxnId());\n expect(eventRaised).to.be.true;\n\n roBC.close();\n expect(nClosed).equal(1);\n\n bc.close();\n sinon.restore();\n });\n\n it(\"should handle undo/redo\", async () => {\n const adminAccessToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);\n // Delete any existing iModels with the same name as the read-write test iModel\n const iModelName = \"CodesUndoRedoPushTest\";\n\n // Create a new empty iModel on the Hub & obtain a briefcase\n const rwIModelId = await HubMock.createNewIModel({ accessToken: adminAccessToken, iTwinId, iModelName, description: \"TestSubject\" });\n assert.isNotEmpty(rwIModelId);\n const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: adminAccessToken, iTwinId, iModelId: rwIModelId });\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n // create and insert a new model with code1\n const code1 = IModelTestUtils.getUniqueModelCode(rwIModel, \"newPhysicalModel1\");\n await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(rwIModel, code1, true);\n assert.isTrue(rwIModel.elements.getElement(code1) !== undefined); // throws if element is not found\n\n // create a local txn with that change\n rwIModel.saveChanges(\"inserted newPhysicalModel\");\n\n // Reverse that local txn\n rwIModel.txns.reverseSingleTxn();\n\n try {\n // The model that I just created with code1 should no longer be there.\n const theNewModel = rwIModel.elements.getElement(code1); // throws if element is not found\n assert.isTrue(theNewModel === undefined); // really should not be here.\n assert.fail(); // should not be here.\n } catch {\n // this is what I expect\n }\n\n // Create and insert a model with code2\n const code2 = IModelTestUtils.getUniqueModelCode(rwIModel, \"newPhysicalModel2\");\n await IModelTestUtils.createAndInsertPhysicalPartitionAndModelAsync(rwIModel, code2, true);\n rwIModel.saveChanges(\"inserted generic objects\");\n\n // The iModel should have a model with code1 and not code2\n assert.isTrue(rwIModel.elements.getElement(code2) !== undefined); // throws if element is not found\n\n // Push the changes to the hub\n const prePushChangeset = rwIModel.changeset;\n await rwIModel.pushChanges({ accessToken: adminAccessToken, description: \"test\" });\n const postPushChangeset = rwIModel.changeset;\n assert(!!postPushChangeset);\n expect(prePushChangeset !== postPushChangeset);\n\n rwIModel.close();\n });\n\n it(\"should be able to upgrade a briefcase with an older schema\", async () => {\n /**\n * Test validates that -\n * - User \"manager\" upgrades the BisCore schema in the briefcase from version 1.0.0 to 1.0.10+\n * - User \"super\" can get the upgrade \"manager\" made\n */\n\n /* Setup test - Push an iModel with an old BisCore schema up to the Hub */\n const pathname = IModelTestUtils.resolveAssetFile(\"CompatibilityTestSeed.bim\");\n const hubName = \"CompatibilityTest\";\n const iModelId = await HubWrappers.pushIModel(managerAccessToken, iTwinId, pathname, hubName, true);\n\n // Download two copies of the briefcase - manager and super\n const args: RequestNewBriefcaseProps = { iTwinId, iModelId };\n const managerBriefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: managerAccessToken, ...args });\n const superBriefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: superAccessToken, ...args });\n\n /* User \"manager\" upgrades the briefcase */\n\n // Validate the original state of the BisCore schema in the briefcase\n let iModel = await BriefcaseDb.open({ fileName: managerBriefcaseProps.fileName });\n const beforeVersion = iModel.querySchemaVersion(\"BisCore\");\n assert.isTrue(semver.satisfies(beforeVersion!, \"= 1.0.0\"));\n assert.isFalse(iModel[_nativeDb].hasPendingTxns());\n iModel.close();\n\n // Validate that the BisCore schema is recognized as a recommended upgrade\n let schemaState = BriefcaseDb.validateSchemas(managerBriefcaseProps.fileName, true);\n assert.strictEqual(schemaState, SchemaState.UpgradeRecommended);\n\n // Upgrade the schemas\n await BriefcaseDb.upgradeSchemas(managerBriefcaseProps);\n\n // Validate state after upgrade\n iModel = await BriefcaseDb.open({ fileName: managerBriefcaseProps.fileName });\n const afterVersion = iModel.querySchemaVersion(\"BisCore\");\n assert.isTrue(semver.satisfies(afterVersion!, \">= 1.0.10\"));\n assert.isFalse(iModel[_nativeDb].hasPendingTxns());\n assert.isFalse(iModel.holdsSchemaLock);\n assert.isFalse(iModel[_nativeDb].hasUnsavedChanges());\n iModel.close();\n\n /* User \"super\" can get the upgrade \"manager\" made */\n\n // Validate that the BisCore schema is recognized as a recommended upgrade\n schemaState = BriefcaseDb.validateSchemas(superBriefcaseProps.fileName, true);\n assert.strictEqual(schemaState, SchemaState.UpgradeRecommended);\n\n // Open briefcase and pull change sets to upgrade\n const superIModel = await BriefcaseDb.open({ fileName: superBriefcaseProps.fileName });\n (superBriefcaseProps.changeset as any) = await superIModel.pullChanges({ accessToken: superAccessToken });\n const superVersion = superIModel.querySchemaVersion(\"BisCore\");\n assert.isTrue(semver.satisfies(superVersion!, \">= 1.0.10\"));\n assert.isFalse(superIModel[_nativeDb].hasUnsavedChanges()); // Validate no changes were made\n assert.isFalse(superIModel[_nativeDb].hasPendingTxns()); // Validate no changes were made\n superIModel.close();\n\n // Validate that there are no upgrades required\n schemaState = BriefcaseDb.validateSchemas(superBriefcaseProps.fileName, true);\n assert.strictEqual(schemaState, SchemaState.UpToDate);\n\n // Upgrade the schemas - ensure this is a no-op\n await BriefcaseDb.upgradeSchemas(superBriefcaseProps);\n await HubMock.deleteIModel({ accessToken: managerAccessToken, iTwinId, iModelId });\n });\n\n it(\"changeset size and ec schema version change\", async () => {\n const adminToken = \"super manager token\";\n const iModelName = \"changeset_size\";\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: \"TestSubject\", accessToken: adminToken });\n assert.isNotEmpty(rwIModelId);\n const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n assert.equal(rwIModel[_nativeDb].enableChangesetSizeStats(true), DbResult.BE_SQLITE_OK);\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"s\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`;\n await rwIModel.importSchemaStrings([schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n rwIModel.saveChanges(\"user 1: schema changeset\");\n if (true || \"push changes\") {\n // Push the changes to the hub\n const prePushChangeSetId = rwIModel.changeset.id;\n await rwIModel.pushChanges({ description: \"push schema changeset\", accessToken: adminToken });\n const postPushChangeSetId = rwIModel.changeset.id;\n assert(!!postPushChangeSetId);\n expect(prePushChangeSetId !== postPushChangeSetId);\n const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });\n assert.equal(changesets.length, 1);\n }\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrawingModel\";\n let totalEl = 0;\n const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwIModel, codeProps, true);\n let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"MyDrawingCategory\");\n if (undefined === drawingCategoryId)\n drawingCategoryId = DrawingCategory.insert(rwIModel, IModel.dictionaryId, \"MyDrawingCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n const insertElements = (imodel: BriefcaseDb, className: string = \"Test2dElement\", noOfElements: number = 10, userProp: (n: number) => object) => {\n for (let m = 0; m < noOfElements; ++m) {\n const geomArray: Arc3d[] = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n Arc3d.createXY(Point3d.create(5, 5), 2),\n Arc3d.createXY(Point3d.create(-5, -5), 20),\n ];\n const geometryStream: GeometryStreamProps = [];\n for (const geom of geomArray) {\n const arcData = IModelJson.Writer.toIModelJson(geom);\n geometryStream.push(arcData);\n }\n const prop = userProp(++totalEl);\n // Create props\n const geomElement = {\n classFullName: `TestDomain:${className}`,\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n geom: geometryStream,\n ...prop,\n };\n const id = imodel.elements.insertElement(geomElement);\n assert.isTrue(Id64.isValidId64(id), \"insert worked\");\n }\n };\n const str = new Array(1024).join(\"x\");\n insertElements(rwIModel, \"Test2dElement\", 1024, () => {\n return { s: str };\n });\n assert.equal(1357648, rwIModel[_nativeDb].getChangesetSize());\n\n rwIModel.saveChanges(\"user 1: data\");\n assert.equal(0, rwIModel[_nativeDb].getChangesetSize());\n await rwIModel.pushChanges({ description: \"schema changeset\", accessToken: adminToken });\n rwIModel.close();\n });\n\n it(\"should set a fake verifyCode for codeService that throws error for operations that affect code, if failed to open codeService \", async () => {\n const iModelProps = {\n iModelName: \"codeServiceTest\",\n iTwinId,\n };\n const iModelId = await HubMock.createNewIModel(iModelProps);\n const briefcaseProps = await BriefcaseManager.downloadBriefcase({ accessToken: \"codeServiceTest\", iTwinId, iModelId });\n const originalCreateForIModel = CodeService.createForIModel;\n // can be any errors except 'NoCodeIndex'\n CodeService.createForIModel = async () => {\n throw new CodeService.Error(\"MissingCode\", 0x10000 + 1, \" \");\n };\n const briefcaseDb = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });\n briefcaseDb.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n let firstNonRootElement = { id: undefined, codeValue: \"test\" };\n briefcaseDb.withPreparedStatement(\"SELECT * from Bis.Element LIMIT 1 OFFSET 1\", (stmt: ECSqlStatement) => {\n if (stmt.step() === DbResult.BE_SQLITE_ROW) {\n firstNonRootElement = stmt.getRow();\n }\n });\n // make change to the briefcaseDb that does not affect code, e.g., save file property\n // expect no error from verifyCode\n expect(() => briefcaseDb.saveFileProperty({ name: \"codeServiceProp\", namespace: \"codeService\", id: 1, subId: 1 }, \"codeService test\")).to.not.throw();\n // make change to the briefcaseDb that affects code that will invoke verifyCode, e.g., update an element with a non-null code\n // expect error from verifyCode\n let newProps = { id: firstNonRootElement.id, code: { ...Code.createEmpty(), value: firstNonRootElement.codeValue }, classFullName: undefined, model: undefined };\n await briefcaseDb.locks.acquireLocks({ exclusive: firstNonRootElement.id });\n expect(() => briefcaseDb.elements.updateElement(newProps)).to.throw(CodeService.Error);\n // make change to the briefcaseDb that will invoke verifyCode with a null(empty) code, e.g., update an element with a null(empty) code\n // expect no error from verifyCode\n newProps = { id: firstNonRootElement.id, code: Code.createEmpty(), classFullName: undefined, model: undefined };\n expect(() => briefcaseDb.elements.updateElement(newProps)).to.not.throw();\n briefcaseDb.close();\n // 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.\n CodeService.createForIModel = async () => {\n throw new CodeService.Error(\"NoCodeIndex\", 0x10000 + 1, \" \");\n };\n const briefcaseDb2 = await BriefcaseDb.open({ fileName: briefcaseProps.fileName });\n briefcaseDb2.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n await briefcaseDb2.locks.acquireLocks({ exclusive: firstNonRootElement.id });\n // expect no error from verifyCode for empty code\n expect(() => briefcaseDb2.elements.updateElement(newProps)).to.not.throw();\n newProps = { id: firstNonRootElement.id, code: { ...Code.createEmpty(), value: firstNonRootElement.codeValue }, classFullName: undefined, model: undefined };\n // make change to the briefcaseDb that affects code that will invoke verifyCode, e.g., update an element with a non-null code\n // expect no error from verifyCode\n expect(() => briefcaseDb2.elements.updateElement(newProps)).to.not.throw();\n // clean up\n CodeService.createForIModel = originalCreateForIModel;\n briefcaseDb2.close();\n });\n\n it(\"clear cache on schema changes\", async () => {\n const adminToken = await HubWrappers.getAccessToken(TestUserType.SuperManager);\n const userToken = await HubWrappers.getAccessToken(TestUserType.Super);\n // Delete any existing iModels with the same name as the OptimisticConcurrencyTest iModel\n const iModelName = \"SchemaChanges\";\n\n // Create a new empty iModel on the Hub & obtain a briefcase\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName, description: \"TestSubject\" });\n assert.isNotEmpty(rwIModelId);\n const rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n\n const rwIModel2 = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: userToken });\n\n // enable change tracking\n assert.equal(rwIModel[_nativeDb].enableChangesetSizeStats(true), DbResult.BE_SQLITE_OK);\n assert.equal(rwIModel2[_nativeDb].enableChangesetSizeStats(true), DbResult.BE_SQLITE_OK);\n\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"s\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`;\n await rwIModel.importSchemaStrings([schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n rwIModel2.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n rwIModel.saveChanges(\"user 1: schema changeset\");\n if (true || \"push changes\") {\n // Push the changes to the hub\n const prePushChangeSetId = rwIModel.changeset.id;\n await rwIModel.pushChanges({ description: \"schema changeset\", accessToken: adminToken });\n const postPushChangeSetId = rwIModel.changeset.id;\n assert(!!postPushChangeSetId);\n expect(prePushChangeSetId !== postPushChangeSetId);\n const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });\n assert.equal(changesets.length, 1);\n }\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrawingModel\";\n let totalEl = 0;\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(rwIModel, codeProps, true);\n let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"MyDrawingCategory\");\n if (undefined === drawingCategoryId)\n drawingCategoryId = DrawingCategory.insert(rwIModel, IModel.dictionaryId, \"MyDrawingCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n const insertElements = (imodel: BriefcaseDb, className: string = \"Test2dElement\", noOfElements: number = 10, userProp: (n: number) => object) => {\n for (let m = 0; m < noOfElements; ++m) {\n const geomArray: Arc3d[] = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n Arc3d.createXY(Point3d.create(5, 5), 2),\n Arc3d.createXY(Point3d.create(-5, -5), 20),\n ];\n const geometryStream: GeometryStreamProps = [];\n for (const geom of geomArray) {\n const arcData = IModelJson.Writer.toIModelJson(geom);\n geometryStream.push(arcData);\n }\n const prop = userProp(++totalEl);\n // Create props\n const geomElement = {\n classFullName: `TestDomain:${className}`,\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n geom: geometryStream,\n ...prop,\n };\n const id = imodel.elements.insertElement(geomElement);\n assert.isTrue(Id64.isValidId64(id), \"insert worked\");\n }\n };\n\n insertElements(rwIModel, \"Test2dElement\", 10, (n: number) => {\n return { s: `s-${n}` };\n });\n\n assert.equal(3889, rwIModel[_nativeDb].getChangesetSize());\n rwIModel.saveChanges(\"user 1: data changeset\");\n\n if (true || \"push changes\") {\n // Push the changes to the hub\n const prePushChangeSetId = rwIModel.changeset.id;\n await rwIModel.pushChanges({ description: \"10 instances of test2dElement\", accessToken: adminToken });\n const postPushChangeSetId = rwIModel.changeset.id;\n assert(!!postPushChangeSetId);\n expect(prePushChangeSetId !== postPushChangeSetId);\n const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });\n assert.equal(changesets.length, 2);\n }\n let rows: any[] = [];\n rwIModel.withPreparedStatement(\"SELECT * FROM TestDomain.Test2dElement\", (stmt: ECSqlStatement) => {\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rows.push(stmt.getRow());\n }\n });\n assert.equal(rows.length, 10);\n assert.equal(rows.map((r) => r.s).filter((v) => v).length, 10);\n rows = [];\n for await (const queryRow of rwIModel.createQueryReader(\"SELECT * FROM TestDomain.Test2dElement\", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n rows.push(queryRow.toRow());\n }\n assert.equal(rows.length, 10);\n assert.equal(rows.map((r) => r.s).filter((v) => v).length, 10);\n if (true || \"user pull/merge\") {\n // pull and merge changes\n await rwIModel2.pullChanges({ accessToken: userToken });\n rows = [];\n rwIModel2.withPreparedStatement(\"SELECT * FROM TestDomain.Test2dElement\", (stmt: ECSqlStatement) => {\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rows.push(stmt.getRow());\n }\n });\n assert.equal(rows.length, 10);\n assert.equal(rows.map((r) => r.s).filter((v) => v).length, 10);\n rows = [];\n for await (const queryRow of rwIModel2.createQueryReader(\"SELECT * FROM TestDomain.Test2dElement\", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n rows.push(queryRow.toRow());\n }\n assert.equal(rows.length, 10);\n assert.equal(rows.map((r) => r.s).filter((v) => v).length, 10);\n // create some element and push those changes\n await rwIModel2.locks.acquireLocks({ shared: drawingModelId });\n insertElements(rwIModel2, \"Test2dElement\", 10, (n: number) => {\n return { s: `s-${n}` };\n });\n assert.equal(0, rwIModel[_nativeDb].getChangesetSize());\n rwIModel2.saveChanges(\"user 2: data changeset\");\n\n if (true || \"push changes\") {\n // Push the changes to the hub\n const prePushChangeSetId = rwIModel2.changeset.id;\n await rwIModel2.pushChanges({ accessToken: userToken, description: \"10 instances of test2dElement\" });\n const postPushChangeSetId = rwIModel2.changeset.id;\n assert(!!postPushChangeSetId);\n expect(prePushChangeSetId !== postPushChangeSetId);\n const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: userToken });\n assert.equal(changesets.length, 3);\n }\n }\n await rwIModel.pullChanges({ accessToken: adminToken });\n // second schema import ==============================================================\n const schemaV2 = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.01\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"s\" typeName=\"string\"/>\n <ECProperty propertyName=\"v\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"Test2dElement2nd\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"t\" typeName=\"string\"/>\n <ECProperty propertyName=\"r\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`;\n await rwIModel.importSchemaStrings([schemaV2]);\n assert.equal(0, rwIModel[_nativeDb].getChangesetSize());\n rwIModel.saveChanges(\"user 1: schema changeset2\");\n if (true || \"push changes\") {\n // Push the changes to the hub\n const prePushChangeSetId = rwIModel.changeset.id;\n await rwIModel.pushChanges({ accessToken: adminToken, description: \"schema changeset\" });\n const postPushChangeSetId = rwIModel.changeset.id;\n assert(!!postPushChangeSetId);\n expect(prePushChangeSetId !== postPushChangeSetId);\n const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });\n assert.equal(changesets.length, 4);\n }\n // create some element and push those changes\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n insertElements(rwIModel, \"Test2dElement\", 10, (n: number) => {\n return {\n s: `s-${n}`, v: `v-${n}`,\n };\n });\n\n // create some element and push those changes\n insertElements(rwIModel, \"Test2dElement2nd\", 10, (n: number) => {\n return {\n t: `t-${n}`, r: `r-${n}`,\n };\n });\n assert.equal(6266, rwIModel[_nativeDb].getChangesetSize());\n rwIModel.saveChanges(\"user 1: data changeset\");\n\n if (true || \"push changes\") {\n // Push the changes to the hub\n const prePushChangeSetId = rwIModel.changeset.id;\n await rwIModel.pushChanges({ accessToken: adminToken, description: \"10 instances of test2dElement\" });\n const postPushChangeSetId = rwIModel.changeset.id;\n assert(!!postPushChangeSetId);\n expect(prePushChangeSetId !== postPushChangeSetId);\n const changesets = await HubMock.queryChangesets({ iModelId: rwIModelId, accessToken: superAccessToken });\n assert.equal(changesets.length, 5);\n }\n rows = [];\n rwIModel.withPreparedStatement(\"SELECT * FROM TestDomain.Test2dElement\", (stmt: ECSqlStatement) => {\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rows.push(stmt.getRow());\n }\n });\n assert.equal(rows.length, 30);\n assert.equal(rows.map((r) => r.s).filter((v) => v).length, 30);\n assert.equal(rows.map((r) => r.v).filter((v) => v).length, 10);\n rows = [];\n for await (const queryRow of rwIModel.createQueryReader(\"SELECT * FROM TestDomain.Test2dElement\", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n rows.push(queryRow.toRow());\n }\n assert.equal(rows.length, 30);\n assert.equal(rows.map((r) => r.s).filter((v) => v).length, 30);\n assert.equal(rows.map((r) => r.v).filter((v) => v).length, 10);\n\n rows = [];\n rwIModel.withPreparedStatement(\"SELECT * FROM TestDomain.Test2dElement2nd\", (stmt: ECSqlStatement) => {\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rows.push(stmt.getRow());\n }\n });\n assert.equal(rows.length, 10);\n assert.equal(rows.map((r) => r.t).filter((v) => v).length, 10);\n assert.equal(rows.map((r) => r.r).filter((v) => v).length, 10);\n rows = [];\n for await (const queryRow of rwIModel.createQueryReader(\"SELECT * FROM TestDomain.Test2dElement2nd\", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n rows.push(queryRow.toRow());\n }\n assert.equal(rows.length, 10);\n assert.equal(rows.map((r) => r.t).filter((v) => v).length, 10);\n assert.equal(rows.map((r) => r.r).filter((v) => v).length, 10);\n\n if (true || \"user pull/merge\") {\n // pull and merge changes\n await rwIModel2.pullChanges({ accessToken: userToken });\n rows = [];\n // Following fail without the fix in briefcase manager where we clear statement cache on schema changeset apply\n rwIModel2.withPreparedStatement(\"SELECT * FROM TestDomain.Test2dElement\", (stmt: ECSqlStatement) => {\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rows.push(stmt.getRow());\n }\n });\n assert.equal(rows.length, 30);\n assert.equal(rows.map((r) => r.s).filter((v) => v).length, 30);\n assert.equal(rows.map((r) => r.v).filter((v) => v).length, 10);\n rows = [];\n // Following fail without native side fix where we clear concurrent query cache on schema changeset apply\n for await (const queryRow of rwIModel2.createQueryReader(\"SELECT * FROM TestDomain.Test2dElement\", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n rows.push(queryRow.toRow());\n }\n assert.equal(rows.length, 30);\n assert.equal(rows.map((r) => r.s).filter((v) => v).length, 30);\n assert.equal(rows.map((r) => r.v).filter((v) => v).length, 10);\n for (const row of rows) {\n const el: any = rwIModel2.elements.getElementProps(row.id);\n assert.isDefined(el);\n if (row.s) {\n assert.equal(row.s, el.s);\n } else {\n assert.isUndefined(el.s);\n }\n if (row.v) {\n assert.equal(row.v, el.v);\n } else {\n assert.isUndefined(el.v);\n }\n }\n rows = [];\n rwIModel2.withPreparedStatement(\"SELECT * FROM TestDomain.Test2dElement2nd\", (stmt: ECSqlStatement) => {\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n rows.push(stmt.getRow());\n }\n });\n assert.equal(rows.length, 10);\n assert.equal(rows.map((r) => r.t).filter((v) => v).length, 10);\n assert.equal(rows.map((r) => r.r).filter((v) => v).length, 10);\n for (const row of rows) {\n const el: any = rwIModel2.elements.getElementProps(row.id);\n assert.isDefined(el);\n if (row.s) {\n assert.equal(row.s, el.s);\n } else {\n assert.isUndefined(el.s);\n }\n if (row.v) {\n assert.equal(row.v, el.v);\n } else {\n assert.isUndefined(el.v);\n }\n }\n rows = [];\n for await (const queryRow of rwIModel2.createQueryReader(\"SELECT * FROM TestDomain.Test2dElement2nd\", undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n rows.push(queryRow.toRow());\n }\n assert.equal(rows.length, 10);\n assert.equal(rows.map((r) => r.t).filter((v) => v).length, 10);\n assert.equal(rows.map((r) => r.r).filter((v) => v).length, 10);\n for (const row of rows) {\n const el: any = rwIModel2.elements.getElementProps(row.id);\n assert.isDefined(el);\n if (row.t) {\n assert.equal(row.t, el.t);\n } else {\n assert.isUndefined(el.t);\n }\n if (row.r) {\n assert.equal(row.r, el.r);\n } else {\n assert.isUndefined(el.r);\n }\n }\n }\n rwIModel.close();\n rwIModel2.close();\n });\n\n it(\"parent lock should suffice when inserting into deeply nested sub-model\", async () => {\n const version0 = IModelTestUtils.resolveAssetFile(\"test.bim\");\n const iModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"subModelCoveredByParentLockTest\", version0 });\n let iModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId });\n iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n /*\n Job Subject\n +- DefinitionPartition -- [DefinitionModel]\n */\n\n await iModel.locks.acquireLocks({ shared: IModel.repositoryModelId });\n const jobSubjectId = IModelTestUtils.createJobSubjectElement(iModel, \"JobSubject\").insert();\n const definitionModelId = DefinitionModel.insert(iModel, jobSubjectId, \"Definition\");\n\n iModel.saveChanges();\n const locks = iModel.locks;\n expect(locks.isServerBased).true;\n await iModel.pushChanges({ description: \"create model\" });\n expect(iModel.locks).equal(locks); // pushing should not change your locks\n\n /*\n Job Subject <--- Lock this\n +- DefinitionPartition -- [DefinitionModel]\n SpatialCategory <=== insert this\n DrawingCategory \"\n */\n assert.isFalse(iModel.locks.holdsExclusiveLock(jobSubjectId));\n assert.isFalse(iModel.locks.holdsExclusiveLock(definitionModelId));\n assert.isFalse(iModel.locks.holdsSharedLock(definitionModelId));\n await iModel.locks.acquireLocks({ exclusive: jobSubjectId });\n iModel.locks.checkExclusiveLock(jobSubjectId, \"\", \"\");\n iModel.locks.checkSharedLock(jobSubjectId, \"\", \"\");\n iModel.locks.checkSharedLock(definitionModelId, \"\", \"\");\n iModel.locks.checkExclusiveLock(definitionModelId, \"\", \"\");\n\n const spatialCategoryId = SpatialCategory.insert(iModel, definitionModelId, \"SpatialCategory\", new SubCategoryAppearance()); // throws if we get locking error\n const drawingCategoryId = DrawingCategory.insert(iModel, definitionModelId, \"DrawingCategory\", new SubCategoryAppearance());\n\n assert.isTrue(iModel.elements.getElement(spatialCategoryId).model === definitionModelId);\n assert.isTrue(iModel.elements.getElement(drawingCategoryId).model === definitionModelId);\n\n iModel.saveChanges();\n await iModel.pushChanges({ description: \"insert category\" });\n\n /*\n Create some more nesting.\n\n Job Subject <--- Lock this\n +- DefinitionPartition -- [DefinitionModel]\n | SpatialCategory\n +- Child Subject <== Insert\n +- DocumentList -- [DocumentListModel] \"\n Drawing -- [DrawingModel] \"\n */\n assert.isFalse(iModel.locks.holdsExclusiveLock(jobSubjectId));\n assert.isFalse(iModel.locks.holdsExclusiveLock(definitionModelId));\n assert.isFalse(iModel.locks.holdsSharedLock(definitionModelId));\n await iModel.locks.acquireLocks({ exclusive: jobSubjectId });\n iModel.locks.checkExclusiveLock(jobSubjectId, \"\", \"\");\n iModel.locks.checkSharedLock(IModel.repositoryModelId, \"\", \"\");\n\n const childSubjectId = Subject.insert(iModel, jobSubjectId, \"Child Subject\");\n\n const documentListModelId = DocumentListModel.insert(iModel, childSubjectId, \"Document\"); // creates DocumentList and DocumentListModel\n assert.isTrue(Id64.isValidId64(documentListModelId));\n const drawingModelId = Drawing.insert(iModel, documentListModelId, \"Drawing\"); // creates Drawing and DrawingModel\n\n assert.isTrue(iModel.elements.getElement(childSubjectId).parent?.id === jobSubjectId);\n assert.isTrue(iModel.elements.getElement(childSubjectId).model === IModel.repositoryModelId);\n assert.isTrue(iModel.elements.getElement(documentListModelId).parent?.id === childSubjectId);\n assert.isTrue(iModel.elements.getElement(documentListModelId).model === IModel.repositoryModelId);\n assert.isTrue(iModel.elements.getElement(drawingModelId).model === documentListModelId);\n\n iModel.saveChanges();\n await iModel.pushChanges({ description: \"insert doc list with nested drawing model\" });\n\n /*\n Verify that even a deeply nested insertion is covered by the exclusive lock on the top-level parent.\n\n Job Subject <--- Lock this\n +- DefinitionPartition -- DefinitionModel\n | SpatialCategory\n +- Child Subject\n +- DocumentList -- [DocumentListModel]\n Drawing -- [DrawingModel]\n DrawingGraphic <== Insert this\n */\n assert.isFalse(iModel.locks.holdsExclusiveLock(jobSubjectId));\n assert.isFalse(iModel.locks.holdsExclusiveLock(definitionModelId));\n assert.isFalse(iModel.locks.holdsSharedLock(definitionModelId));\n assert.isFalse(iModel.locks.holdsSharedLock(documentListModelId));\n assert.isFalse(iModel.locks.holdsSharedLock(drawingModelId));\n await iModel.locks.acquireLocks({ exclusive: jobSubjectId });\n iModel.locks.checkExclusiveLock(jobSubjectId, \"\", \"\");\n iModel.locks.checkSharedLock(IModel.repositoryModelId, \"\", \"\");\n iModel.locks.checkSharedLock(documentListModelId, \"\", \"\");\n iModel.locks.checkSharedLock(drawingModelId, \"\", \"\");\n\n const drawingGraphicProps1: GeometricElement2dProps = {\n classFullName: DrawingGraphic.classFullName,\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n userLabel: \"DrawingGraphic1\",\n geom: IModelTestUtils.createRectangle(Point2d.create(1, 1)),\n placement: { origin: Point2d.create(2, 2), angle: 0 },\n };\n const drawingGraphicId1 = iModel.elements.insertElement(drawingGraphicProps1);\n\n assert.isTrue(iModel.elements.getElement(drawingGraphicId1).model === drawingModelId);\n iModel.saveChanges();\n expect(iModel.locks.holdsExclusiveLock(drawingModelId)).true;\n\n const fileName = iModel[_nativeDb].getFilePath();\n iModel.close(); // close rw\n iModel = await BriefcaseDb.open({ fileName, readonly: true }); // reopen readonly\n expect(iModel.locks.isServerBased).false; // readonly sessions should not have server based locks\n\n // verify we can push changes from a readonly briefcase\n await iModel.pushChanges({ description: \"insert graphic into nested sub-model\" });\n\n // try it again to verify we can get the ServerBasedLocks again\n await iModel.pushChanges({ description: \"should do nothing\" });\n iModel.close();\n\n // reopen readwrite to verify we released all locks from readonly briefcase\n iModel = await BriefcaseDb.open({ fileName });\n expect(iModel.locks.isServerBased).true;\n const serverLocks = iModel.locks as ServerBasedLocks;\n expect(serverLocks.holdsExclusiveLock(drawingModelId)).false;\n expect(serverLocks.getLockCount(LockState.Shared)).equal(0);\n expect(serverLocks.getLockCount(LockState.Exclusive)).equal(0);\n iModel.close();\n\n });\n\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineGeometryPartReferences.test.d.ts","sourceRoot":"","sources":["../../../../src/test/standalone/InlineGeometryPartReferences.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { expect } from "chai";
|
|
6
|
+
import { Guid, Id64 } from "@itwin/core-bentley";
|
|
7
|
+
import { LineString3d, Loop, Point3d } from "@itwin/core-geometry";
|
|
8
|
+
import { AreaPattern, Code, ColorDef, GeometryParams, GeometryStreamBuilder, GeometryStreamIterator, IModel, } from "@itwin/core-common";
|
|
9
|
+
import { _nativeDb, GenericSchema, GeometricElement3d, GeometryPart, PhysicalModel, PhysicalObject, PhysicalPartition, RenderMaterialElement, SnapshotDb, SpatialCategory, SubCategory, SubjectOwnsPartitionElements, } from "../../core-backend";
|
|
10
|
+
import { IModelTestUtils } from "../IModelTestUtils";
|
|
11
|
+
function makeGeomParams(symb) {
|
|
12
|
+
const params = new GeometryParams(symb.categoryId ?? Id64.invalid, symb.subCategoryId);
|
|
13
|
+
params.lineColor = symb.color;
|
|
14
|
+
params.materialId = symb.materialId;
|
|
15
|
+
if (symb.patternOrigin)
|
|
16
|
+
params.pattern = AreaPattern.Params.fromJSON({ origin: [symb.patternOrigin, 0, 0] });
|
|
17
|
+
return params;
|
|
18
|
+
}
|
|
19
|
+
class GeomWriter {
|
|
20
|
+
builder;
|
|
21
|
+
constructor(symbology) {
|
|
22
|
+
this.builder = new GeometryStreamBuilder();
|
|
23
|
+
if (symbology)
|
|
24
|
+
this.append(symbology);
|
|
25
|
+
}
|
|
26
|
+
append(entry) {
|
|
27
|
+
if (entry.partId)
|
|
28
|
+
this.builder.appendGeometryPart3d(entry.partId, new Point3d(entry.origin, 0, 0));
|
|
29
|
+
else if (entry.subCategoryId || entry.categoryId || entry.color || entry.materialId || entry.patternOrigin)
|
|
30
|
+
this.builder.appendGeometryParamsChange(makeGeomParams(entry));
|
|
31
|
+
else if (undefined !== entry.pos)
|
|
32
|
+
this.builder.appendGeometry(Loop.createPolygon([new Point3d(entry.pos, 0, 0), new Point3d(entry.pos + 1, 0, 0), new Point3d(entry.pos + 1, 1, 0), new Point3d(entry.pos, 1, 0)]));
|
|
33
|
+
else if (undefined !== entry.appendSubRanges)
|
|
34
|
+
this.builder.appendGeometryRanges();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function readGeomStream(iter) {
|
|
38
|
+
const result = [];
|
|
39
|
+
for (const entry of iter) {
|
|
40
|
+
const symb = { categoryId: entry.geomParams.categoryId, subCategoryId: entry.geomParams.subCategoryId };
|
|
41
|
+
if (undefined !== entry.geomParams.lineColor)
|
|
42
|
+
symb.color = entry.geomParams.lineColor;
|
|
43
|
+
if (undefined !== entry.geomParams.materialId)
|
|
44
|
+
symb.materialId = entry.geomParams.materialId;
|
|
45
|
+
if (entry.geomParams.pattern) {
|
|
46
|
+
expect(entry.geomParams.pattern.origin).not.to.be.undefined;
|
|
47
|
+
symb.patternOrigin = entry.geomParams.pattern.origin.x;
|
|
48
|
+
}
|
|
49
|
+
result.push(symb);
|
|
50
|
+
if (entry.localRange) {
|
|
51
|
+
expect(entry.localRange.low.y).to.equal(0);
|
|
52
|
+
expect(entry.localRange.low.z).to.equal(0);
|
|
53
|
+
expect(entry.localRange.high.y).to.equal(1);
|
|
54
|
+
expect(entry.localRange.high.z).to.equal(0);
|
|
55
|
+
expect(entry.localRange.high.x - entry.localRange.low.x).to.equal(1);
|
|
56
|
+
result.push({ low: entry.localRange.low.x });
|
|
57
|
+
}
|
|
58
|
+
if (entry.primitive.type === "geometryQuery") {
|
|
59
|
+
expect(entry.primitive.geometry.geometryCategory).to.equal("curveCollection");
|
|
60
|
+
if (entry.primitive.geometry.geometryCategory === "curveCollection") {
|
|
61
|
+
expect(entry.primitive.geometry.children.length).to.equal(1);
|
|
62
|
+
expect(entry.primitive.geometry.children[0]).instanceOf(LineString3d);
|
|
63
|
+
const pts = entry.primitive.geometry.children[0].points;
|
|
64
|
+
expect(pts.length).to.equal(5);
|
|
65
|
+
expect(pts[1].x).to.equal(pts[0].x + 1);
|
|
66
|
+
result.push({ pos: pts[0].x });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
expect(entry.primitive.type).to.equal("partReference");
|
|
71
|
+
if (entry.primitive.type === "partReference") {
|
|
72
|
+
const partRef = { partId: entry.primitive.part.id };
|
|
73
|
+
if (entry.primitive.part.toLocal)
|
|
74
|
+
partRef.origin = entry.primitive.part.toLocal.origin.x;
|
|
75
|
+
result.push(partRef);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
result.viewIndependent = iter.isViewIndependent;
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
describe("DgnDb.inlineGeometryPartReferences", () => {
|
|
83
|
+
let imodel;
|
|
84
|
+
let modelId;
|
|
85
|
+
let categoryId;
|
|
86
|
+
let blueSubCategoryId;
|
|
87
|
+
let redSubCategoryId;
|
|
88
|
+
let materialId;
|
|
89
|
+
beforeEach(() => {
|
|
90
|
+
imodel = SnapshotDb.createEmpty(IModelTestUtils.prepareOutputFile("InlineGeomParts", `${Guid.createValue()}.bim`), {
|
|
91
|
+
rootSubject: { name: "InlineGeomParts", description: "InlineGeomParts" },
|
|
92
|
+
});
|
|
93
|
+
GenericSchema.registerSchema();
|
|
94
|
+
const partitionId = imodel.elements.insertElement({
|
|
95
|
+
classFullName: PhysicalPartition.classFullName,
|
|
96
|
+
model: IModel.repositoryModelId,
|
|
97
|
+
parent: new SubjectOwnsPartitionElements(IModel.rootSubjectId),
|
|
98
|
+
code: PhysicalPartition.createCode(imodel, IModel.rootSubjectId, `PhysicalPartition_${Guid.createValue()}`),
|
|
99
|
+
});
|
|
100
|
+
expect(Id64.isValidId64(partitionId)).to.be.true;
|
|
101
|
+
const model = imodel.models.createModel({
|
|
102
|
+
classFullName: PhysicalModel.classFullName,
|
|
103
|
+
modeledElement: { id: partitionId },
|
|
104
|
+
});
|
|
105
|
+
expect(model).instanceOf(PhysicalModel);
|
|
106
|
+
modelId = imodel.models.insertModel(model.toJSON());
|
|
107
|
+
expect(Id64.isValidId64(modelId)).to.be.true;
|
|
108
|
+
categoryId = SpatialCategory.insert(imodel, IModel.dictionaryId, "ctgry", { color: ColorDef.blue.toJSON() });
|
|
109
|
+
expect(Id64.isValidId64(categoryId)).to.be.true;
|
|
110
|
+
blueSubCategoryId = IModel.getDefaultSubCategoryId(categoryId);
|
|
111
|
+
redSubCategoryId = SubCategory.insert(imodel, categoryId, "red", { color: ColorDef.red.toJSON() });
|
|
112
|
+
expect(Id64.isValidId64(redSubCategoryId)).to.be.true;
|
|
113
|
+
materialId = RenderMaterialElement.insert(imodel, IModel.dictionaryId, "mat", { paletteName: "pal" });
|
|
114
|
+
expect(Id64.isValidId64(materialId)).to.be.true;
|
|
115
|
+
});
|
|
116
|
+
afterEach(() => {
|
|
117
|
+
imodel.close();
|
|
118
|
+
});
|
|
119
|
+
function insertGeometryPart(geom) {
|
|
120
|
+
const writer = new GeomWriter();
|
|
121
|
+
for (const entry of geom)
|
|
122
|
+
writer.append(entry);
|
|
123
|
+
const props = {
|
|
124
|
+
classFullName: GeometryPart.classFullName,
|
|
125
|
+
model: IModel.dictionaryId,
|
|
126
|
+
code: GeometryPart.createCode(imodel, IModel.dictionaryId, Guid.createValue()),
|
|
127
|
+
geom: writer.builder.geometryStream,
|
|
128
|
+
};
|
|
129
|
+
const partId = imodel.elements.insertElement(props);
|
|
130
|
+
expect(Id64.isValidId64(partId)).to.be.true;
|
|
131
|
+
return partId;
|
|
132
|
+
}
|
|
133
|
+
function insertElement(geom, viewIndependent = false) {
|
|
134
|
+
const writer = new GeomWriter({ categoryId });
|
|
135
|
+
if (viewIndependent)
|
|
136
|
+
writer.builder.isViewIndependent = true;
|
|
137
|
+
for (const entry of geom)
|
|
138
|
+
writer.append(entry);
|
|
139
|
+
const props = {
|
|
140
|
+
classFullName: PhysicalObject.classFullName,
|
|
141
|
+
model: modelId,
|
|
142
|
+
code: Code.createEmpty(),
|
|
143
|
+
category: categoryId,
|
|
144
|
+
geom: writer.builder.geometryStream,
|
|
145
|
+
placement: {
|
|
146
|
+
origin: [0, 0, 0],
|
|
147
|
+
angles: {},
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
const elemId = imodel.elements.insertElement(props);
|
|
151
|
+
expect(Id64.isValidId64(elemId)).to.be.true;
|
|
152
|
+
return elemId;
|
|
153
|
+
}
|
|
154
|
+
function readElementGeom(id) {
|
|
155
|
+
let iter;
|
|
156
|
+
const elem = imodel.elements.getElement({ id, wantGeometry: true });
|
|
157
|
+
if (elem instanceof GeometryPart) {
|
|
158
|
+
iter = GeometryStreamIterator.fromGeometryPart(elem);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
expect(elem).instanceOf(GeometricElement3d);
|
|
162
|
+
iter = GeometryStreamIterator.fromGeometricElement3d(elem);
|
|
163
|
+
}
|
|
164
|
+
return readGeomStream(iter);
|
|
165
|
+
}
|
|
166
|
+
function expectGeom(actual, expected) {
|
|
167
|
+
expect(actual).to.deep.equal(expected);
|
|
168
|
+
}
|
|
169
|
+
function inlinePartRefs() {
|
|
170
|
+
const result = imodel[_nativeDb].inlineGeometryPartReferences();
|
|
171
|
+
expect(result.numCandidateParts).to.equal(result.numPartsDeleted);
|
|
172
|
+
expect(result.numRefsInlined).to.equal(result.numCandidateParts);
|
|
173
|
+
return result.numRefsInlined;
|
|
174
|
+
}
|
|
175
|
+
it("inlines and deletes a simple unique part reference", () => {
|
|
176
|
+
// Create single reference to a part and perform sanity checks on our geometry validation code.
|
|
177
|
+
const partId = insertGeometryPart([{ pos: 123 }]);
|
|
178
|
+
expectGeom(readElementGeom(partId), [
|
|
179
|
+
{ categoryId: "0", subCategoryId: "0" },
|
|
180
|
+
{ pos: 123 },
|
|
181
|
+
]);
|
|
182
|
+
const elemId = insertElement([{ partId }]);
|
|
183
|
+
expectGeom(readElementGeom(elemId), [
|
|
184
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
185
|
+
{ partId },
|
|
186
|
+
]);
|
|
187
|
+
// Inline and delete the part.
|
|
188
|
+
expect(inlinePartRefs()).to.equal(1);
|
|
189
|
+
expect(imodel.elements.tryGetElement(partId)).to.be.undefined;
|
|
190
|
+
const geom = readElementGeom(elemId);
|
|
191
|
+
expect(geom.viewIndependent).to.be.false;
|
|
192
|
+
expectGeom(geom, [
|
|
193
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
194
|
+
{ low: 123 },
|
|
195
|
+
{ pos: 123 },
|
|
196
|
+
]);
|
|
197
|
+
});
|
|
198
|
+
it("inlines and deletes unique parts, ignoring non-unique parts", () => {
|
|
199
|
+
const part1 = insertGeometryPart([{ pos: 1 }]);
|
|
200
|
+
const part2 = insertGeometryPart([{ pos: 2 }]);
|
|
201
|
+
const part3 = insertGeometryPart([{ pos: 3 }]);
|
|
202
|
+
const part4 = insertGeometryPart([{ pos: 4 }]);
|
|
203
|
+
const elem1 = insertElement([{ partId: part1 }]);
|
|
204
|
+
const elem2 = insertElement([{ partId: part2 }, { partId: part3 }]);
|
|
205
|
+
const elem3 = insertElement([{ partId: part3 }]);
|
|
206
|
+
const elem4 = insertElement([{ partId: part4 }]);
|
|
207
|
+
const elem5 = insertElement([{ partId: part4 }]);
|
|
208
|
+
expect(inlinePartRefs()).to.equal(2);
|
|
209
|
+
const symb = { categoryId, subCategoryId: blueSubCategoryId };
|
|
210
|
+
expectGeom(readElementGeom(elem1), [symb, { low: 1 }, { pos: 1 }]);
|
|
211
|
+
expectGeom(readElementGeom(elem2), [symb, { low: 2 }, { pos: 2 }, symb, { partId: part3 }]);
|
|
212
|
+
expectGeom(readElementGeom(elem3), [symb, { partId: part3 }]);
|
|
213
|
+
expectGeom(readElementGeom(elem4), [symb, { partId: part4 }]);
|
|
214
|
+
expectGeom(readElementGeom(elem5), [symb, { partId: part4 }]);
|
|
215
|
+
});
|
|
216
|
+
it("applies part transform", () => {
|
|
217
|
+
const partId = insertGeometryPart([{ pos: -8 }]);
|
|
218
|
+
const elemId = insertElement([{ partId, origin: 50 }]);
|
|
219
|
+
expect(inlinePartRefs()).to.equal(1);
|
|
220
|
+
expectGeom(readElementGeom(elemId), [
|
|
221
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
222
|
+
{ low: 42 },
|
|
223
|
+
{ pos: 42 },
|
|
224
|
+
]);
|
|
225
|
+
});
|
|
226
|
+
it("applies element symbology to part and resets element symbology after embedding part", () => {
|
|
227
|
+
const part1 = insertGeometryPart([
|
|
228
|
+
{ pos: 1 },
|
|
229
|
+
{ color: ColorDef.green },
|
|
230
|
+
{ pos: 1.5 },
|
|
231
|
+
]);
|
|
232
|
+
const part2 = insertGeometryPart([
|
|
233
|
+
{ pos: 2 },
|
|
234
|
+
{ materialId },
|
|
235
|
+
{ pos: 2.5 },
|
|
236
|
+
]);
|
|
237
|
+
// Sanity check.
|
|
238
|
+
expectGeom(readElementGeom(part2), [
|
|
239
|
+
{ categoryId: "0", subCategoryId: "0" },
|
|
240
|
+
{ pos: 2 },
|
|
241
|
+
{ categoryId: "0", subCategoryId: "0", materialId },
|
|
242
|
+
{ pos: 2.5 },
|
|
243
|
+
]);
|
|
244
|
+
const part3 = insertGeometryPart([
|
|
245
|
+
{ pos: 3 },
|
|
246
|
+
{ materialId: "0" },
|
|
247
|
+
{ pos: 3.5 },
|
|
248
|
+
]);
|
|
249
|
+
const elemId = insertElement([
|
|
250
|
+
{ pos: -1 },
|
|
251
|
+
{ subCategoryId: redSubCategoryId },
|
|
252
|
+
{ partId: part1 },
|
|
253
|
+
{ pos: -2 },
|
|
254
|
+
{ color: ColorDef.black },
|
|
255
|
+
{ partId: part2 },
|
|
256
|
+
{ pos: -3 },
|
|
257
|
+
{ materialId, color: ColorDef.white },
|
|
258
|
+
{ partId: part3 },
|
|
259
|
+
{ pos: -4 },
|
|
260
|
+
]);
|
|
261
|
+
expect(inlinePartRefs()).to.equal(3);
|
|
262
|
+
expectGeom(readElementGeom(elemId), [
|
|
263
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
264
|
+
{ pos: -1 },
|
|
265
|
+
{ categoryId, subCategoryId: redSubCategoryId },
|
|
266
|
+
{ low: 1 },
|
|
267
|
+
{ pos: 1 },
|
|
268
|
+
{ categoryId, subCategoryId: redSubCategoryId, color: ColorDef.green },
|
|
269
|
+
{ low: 1.5 },
|
|
270
|
+
{ pos: 1.5 },
|
|
271
|
+
{ categoryId, subCategoryId: redSubCategoryId },
|
|
272
|
+
{ low: -2 },
|
|
273
|
+
{ pos: -2 },
|
|
274
|
+
{ categoryId, subCategoryId: redSubCategoryId, color: ColorDef.black },
|
|
275
|
+
{ low: 2 },
|
|
276
|
+
{ pos: 2 },
|
|
277
|
+
{ categoryId, subCategoryId: redSubCategoryId, materialId },
|
|
278
|
+
{ low: 2.5 },
|
|
279
|
+
{ pos: 2.5 },
|
|
280
|
+
{ categoryId, subCategoryId: redSubCategoryId, color: ColorDef.black },
|
|
281
|
+
{ low: -3 },
|
|
282
|
+
{ pos: -3 },
|
|
283
|
+
{ categoryId, subCategoryId: redSubCategoryId, color: ColorDef.white, materialId },
|
|
284
|
+
{ low: 3 },
|
|
285
|
+
{ pos: 3 },
|
|
286
|
+
{ categoryId, subCategoryId: redSubCategoryId, materialId: "0" },
|
|
287
|
+
{ low: 3.5 },
|
|
288
|
+
{ pos: 3.5 },
|
|
289
|
+
{ categoryId, subCategoryId: redSubCategoryId, color: ColorDef.white, materialId },
|
|
290
|
+
{ low: -4 },
|
|
291
|
+
{ pos: -4 },
|
|
292
|
+
]);
|
|
293
|
+
});
|
|
294
|
+
it("inserts subgraphic ranges for parts", () => {
|
|
295
|
+
const part1 = insertGeometryPart([{ pos: 1 }]);
|
|
296
|
+
const part2 = insertGeometryPart([{ pos: 2 }]);
|
|
297
|
+
const elem = insertElement([
|
|
298
|
+
{ pos: -1 },
|
|
299
|
+
{ partId: part1 },
|
|
300
|
+
{ partId: part2, origin: 5 },
|
|
301
|
+
]);
|
|
302
|
+
expect(inlinePartRefs()).to.equal(2);
|
|
303
|
+
expectGeom(readElementGeom(elem), [
|
|
304
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
305
|
+
{ pos: -1 },
|
|
306
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
307
|
+
{ low: 1 },
|
|
308
|
+
{ pos: 1 },
|
|
309
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
310
|
+
{ low: 7 },
|
|
311
|
+
{ pos: 7 },
|
|
312
|
+
]);
|
|
313
|
+
});
|
|
314
|
+
it("preserves existing subgraphic ranges", () => {
|
|
315
|
+
const partId = insertGeometryPart([{ pos: 0 }]);
|
|
316
|
+
const elem = insertElement([
|
|
317
|
+
{ appendSubRanges: true },
|
|
318
|
+
{ pos: -1 },
|
|
319
|
+
{ partId },
|
|
320
|
+
{ pos: 1 },
|
|
321
|
+
]);
|
|
322
|
+
expectGeom(readElementGeom(elem), [
|
|
323
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
324
|
+
{ low: -1 },
|
|
325
|
+
{ pos: -1 },
|
|
326
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
327
|
+
{ partId },
|
|
328
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
329
|
+
{ low: 1 },
|
|
330
|
+
{ pos: 1 },
|
|
331
|
+
]);
|
|
332
|
+
expect(inlinePartRefs()).to.equal(1);
|
|
333
|
+
expectGeom(readElementGeom(elem), [
|
|
334
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
335
|
+
{ low: -1 },
|
|
336
|
+
{ pos: -1 },
|
|
337
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
338
|
+
{ low: 0 },
|
|
339
|
+
{ pos: 0 },
|
|
340
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
341
|
+
{ low: 1 },
|
|
342
|
+
{ pos: 1 },
|
|
343
|
+
]);
|
|
344
|
+
});
|
|
345
|
+
it("inserts subgraphic ranges geometry following part", () => {
|
|
346
|
+
const partId = insertGeometryPart([{ pos: 1 }]);
|
|
347
|
+
const elem = insertElement([
|
|
348
|
+
{ pos: 0 },
|
|
349
|
+
{ partId },
|
|
350
|
+
{ pos: 2 },
|
|
351
|
+
]);
|
|
352
|
+
expect(inlinePartRefs()).to.equal(1);
|
|
353
|
+
expectGeom(readElementGeom(elem), [
|
|
354
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
355
|
+
{ pos: 0 },
|
|
356
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
357
|
+
{ low: 1 },
|
|
358
|
+
{ pos: 1 },
|
|
359
|
+
{ categoryId, subCategoryId: blueSubCategoryId },
|
|
360
|
+
{ low: 2 },
|
|
361
|
+
{ pos: 2 },
|
|
362
|
+
]);
|
|
363
|
+
});
|
|
364
|
+
it("applies transform to patterns", () => {
|
|
365
|
+
const part1 = insertGeometryPart([{ pos: 1 }]);
|
|
366
|
+
const part2 = insertGeometryPart([{ patternOrigin: 123 }, { pos: 2 }]);
|
|
367
|
+
expectGeom(readElementGeom(part2), [
|
|
368
|
+
{ categoryId: "0", subCategoryId: "0", patternOrigin: 123 },
|
|
369
|
+
{ pos: 2 },
|
|
370
|
+
]);
|
|
371
|
+
const elemId = insertElement([
|
|
372
|
+
{ patternOrigin: 456 },
|
|
373
|
+
{ pos: -1 },
|
|
374
|
+
{ partId: part1, origin: 8 },
|
|
375
|
+
{ pos: -2 },
|
|
376
|
+
{ partId: part2, origin: 12 },
|
|
377
|
+
{ pos: -3 },
|
|
378
|
+
]);
|
|
379
|
+
expectGeom(readElementGeom(elemId), [
|
|
380
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 456 },
|
|
381
|
+
{ pos: -1 },
|
|
382
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 456 },
|
|
383
|
+
{ partId: part1, origin: 8 },
|
|
384
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 456 },
|
|
385
|
+
{ pos: -2 },
|
|
386
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 456 },
|
|
387
|
+
{ partId: part2, origin: 12 },
|
|
388
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 456 },
|
|
389
|
+
{ pos: -3 },
|
|
390
|
+
]);
|
|
391
|
+
expect(inlinePartRefs()).to.equal(2);
|
|
392
|
+
expectGeom(readElementGeom(elemId), [
|
|
393
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 456 },
|
|
394
|
+
{ pos: -1 },
|
|
395
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 456 },
|
|
396
|
+
{ low: 1 + 8 },
|
|
397
|
+
{ pos: 1 + 8 },
|
|
398
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 456 },
|
|
399
|
+
{ low: -2 },
|
|
400
|
+
{ pos: -2 },
|
|
401
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 123 + 12 },
|
|
402
|
+
{ low: 2 + 12 },
|
|
403
|
+
{ pos: 2 + 12 },
|
|
404
|
+
{ categoryId, subCategoryId: blueSubCategoryId, patternOrigin: 456 },
|
|
405
|
+
{ low: -3 },
|
|
406
|
+
{ pos: -3 },
|
|
407
|
+
]);
|
|
408
|
+
});
|
|
409
|
+
it("preserves element header flags", () => {
|
|
410
|
+
const partId = insertGeometryPart([{ pos: 1 }]);
|
|
411
|
+
const elemId = insertElement([{ partId }], true);
|
|
412
|
+
expect(readElementGeom(elemId).viewIndependent).to.be.true;
|
|
413
|
+
expect(inlinePartRefs()).to.equal(1);
|
|
414
|
+
expect(readElementGeom(elemId).viewIndependent).to.be.true;
|
|
415
|
+
});
|
|
416
|
+
});
|
|
417
|
+
//# sourceMappingURL=InlineGeometryPartReferences.test.js.map
|