@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,490 @@
|
|
|
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 { assert, expect } from "chai";
|
|
6
|
+
import { join } from "path";
|
|
7
|
+
import { restore as sinonRestore, spy as sinonSpy } from "sinon";
|
|
8
|
+
import { Guid, Id64 } from "@itwin/core-bentley";
|
|
9
|
+
import { CodeScopeSpec, CodeSpec, IModel } from "@itwin/core-common";
|
|
10
|
+
import { ClassRegistry } from "../../ClassRegistry";
|
|
11
|
+
import { ElementUniqueAspect } from "../../ElementAspect";
|
|
12
|
+
import { _nativeDb, ChannelControl, FunctionalBreakdownElement, FunctionalComponentElement, FunctionalModel, FunctionalPartition, FunctionalSchema, InformationPartitionElement, Schemas, StandaloneDb, } from "../../core-backend";
|
|
13
|
+
import { ElementOwnsChildElements, ElementOwnsUniqueAspect, SubjectOwnsPartitionElements } from "../../NavigationRelationship";
|
|
14
|
+
import { IModelTestUtils } from "../IModelTestUtils";
|
|
15
|
+
import { KnownTestLocations } from "../KnownTestLocations";
|
|
16
|
+
let iModelDb;
|
|
17
|
+
const insertedLabel = "inserted label";
|
|
18
|
+
const updatedLabel = "updated label";
|
|
19
|
+
/** test schema for supplying element/model/aspect classes */
|
|
20
|
+
class TestSchema extends FunctionalSchema {
|
|
21
|
+
static get schemaName() { return "TestFunctional"; }
|
|
22
|
+
}
|
|
23
|
+
/** partition element for testing `Element.onSubModelXxx` methods */
|
|
24
|
+
class TestFuncPartition extends InformationPartitionElement {
|
|
25
|
+
static get className() { return "TestFuncPartition"; }
|
|
26
|
+
static onSubModelInsert(arg) {
|
|
27
|
+
super.onSubModelInsert(arg);
|
|
28
|
+
assert.equal(arg.iModel, iModelDb);
|
|
29
|
+
assert.equal(arg.subModelProps.classFullName, TestFuncModel.classFullName);
|
|
30
|
+
}
|
|
31
|
+
static onSubModelInserted(arg) {
|
|
32
|
+
super.onSubModelInserted(arg);
|
|
33
|
+
assert.equal(arg.iModel, iModelDb);
|
|
34
|
+
}
|
|
35
|
+
static onSubModelDelete(arg) {
|
|
36
|
+
super.onSubModelDelete(arg);
|
|
37
|
+
assert.equal(arg.iModel, iModelDb);
|
|
38
|
+
}
|
|
39
|
+
static onSubModelDeleted(arg) {
|
|
40
|
+
super.onSubModelDeleted(arg);
|
|
41
|
+
assert.equal(arg.iModel, iModelDb);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** for testing `Model.onXxx` methods */
|
|
45
|
+
class TestFuncModel extends FunctionalModel {
|
|
46
|
+
static get className() { return "TestFuncModel"; }
|
|
47
|
+
static dontDelete = "";
|
|
48
|
+
static onInsert(arg) {
|
|
49
|
+
super.onInsert(arg);
|
|
50
|
+
assert.equal(arg.iModel, iModelDb);
|
|
51
|
+
assert.equal(arg.props.classFullName, this.classFullName);
|
|
52
|
+
}
|
|
53
|
+
static onInserted(arg) {
|
|
54
|
+
super.onInserted(arg);
|
|
55
|
+
assert.equal(arg.iModel, iModelDb);
|
|
56
|
+
}
|
|
57
|
+
static onUpdate(arg) {
|
|
58
|
+
super.onUpdate(arg);
|
|
59
|
+
assert.equal(arg.iModel, iModelDb);
|
|
60
|
+
}
|
|
61
|
+
static onUpdated(arg) {
|
|
62
|
+
super.onUpdated(arg);
|
|
63
|
+
assert.equal(arg.iModel, iModelDb);
|
|
64
|
+
}
|
|
65
|
+
static onDelete(arg) {
|
|
66
|
+
super.onDelete(arg);
|
|
67
|
+
assert.equal(arg.iModel, iModelDb);
|
|
68
|
+
}
|
|
69
|
+
static onDeleted(arg) {
|
|
70
|
+
super.onDeleted(arg);
|
|
71
|
+
assert.equal(arg.iModel, iModelDb);
|
|
72
|
+
}
|
|
73
|
+
static onInsertElement(arg) {
|
|
74
|
+
super.onInsertElement(arg);
|
|
75
|
+
assert.equal(arg.iModel, iModelDb);
|
|
76
|
+
if (arg.elementProps.code.value === "badval")
|
|
77
|
+
throw new Error("bad element");
|
|
78
|
+
}
|
|
79
|
+
static onInsertedElement(arg) {
|
|
80
|
+
super.onInsertedElement(arg);
|
|
81
|
+
assert.equal(arg.iModel, iModelDb);
|
|
82
|
+
}
|
|
83
|
+
static onUpdateElement(arg) {
|
|
84
|
+
super.onUpdateElement(arg);
|
|
85
|
+
assert.equal(arg.iModel, iModelDb);
|
|
86
|
+
}
|
|
87
|
+
static onUpdatedElement(arg) {
|
|
88
|
+
super.onUpdatedElement(arg);
|
|
89
|
+
assert.equal(arg.iModel, iModelDb);
|
|
90
|
+
}
|
|
91
|
+
static onDeleteElement(arg) {
|
|
92
|
+
super.onDeleteElement(arg);
|
|
93
|
+
assert.equal(arg.iModel, iModelDb);
|
|
94
|
+
if (arg.elementId === this.dontDelete)
|
|
95
|
+
throw new Error("dont delete my element");
|
|
96
|
+
}
|
|
97
|
+
static onDeletedElement(arg) {
|
|
98
|
+
super.onDeletedElement(arg);
|
|
99
|
+
assert.equal(arg.iModel, iModelDb);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** for testing `Element.onXxx` methods */
|
|
103
|
+
class Breakdown extends FunctionalBreakdownElement {
|
|
104
|
+
static get className() { return "Breakdown"; }
|
|
105
|
+
static dontDeleteChild = "";
|
|
106
|
+
static onInsert(arg) {
|
|
107
|
+
arg.props.userLabel = insertedLabel;
|
|
108
|
+
super.onInsert(arg);
|
|
109
|
+
assert.equal(arg.iModel, iModelDb);
|
|
110
|
+
assert.equal(arg.props.classFullName, this.classFullName);
|
|
111
|
+
}
|
|
112
|
+
static onInserted(arg) {
|
|
113
|
+
super.onInserted(arg);
|
|
114
|
+
assert.equal(arg.iModel, iModelDb);
|
|
115
|
+
}
|
|
116
|
+
static onUpdate(arg) {
|
|
117
|
+
arg.props.userLabel = updatedLabel;
|
|
118
|
+
super.onUpdate(arg);
|
|
119
|
+
assert.equal(arg.iModel, iModelDb);
|
|
120
|
+
assert.equal(arg.props.classFullName, this.classFullName);
|
|
121
|
+
}
|
|
122
|
+
static onUpdated(arg) {
|
|
123
|
+
super.onUpdated(arg);
|
|
124
|
+
assert.equal(arg.iModel, iModelDb);
|
|
125
|
+
}
|
|
126
|
+
static onDelete(arg) {
|
|
127
|
+
super.onDelete(arg);
|
|
128
|
+
assert.equal(arg.iModel, iModelDb);
|
|
129
|
+
}
|
|
130
|
+
static onDeleted(arg) {
|
|
131
|
+
super.onDeleted(arg);
|
|
132
|
+
assert.equal(arg.iModel, iModelDb);
|
|
133
|
+
}
|
|
134
|
+
static onChildDelete(arg) {
|
|
135
|
+
super.onChildDelete(arg);
|
|
136
|
+
assert.equal(arg.iModel, iModelDb);
|
|
137
|
+
if (arg.childId === this.dontDeleteChild)
|
|
138
|
+
throw new Error("dont delete my child");
|
|
139
|
+
}
|
|
140
|
+
static onChildDeleted(arg) {
|
|
141
|
+
super.onChildDeleted(arg);
|
|
142
|
+
assert.equal(arg.iModel, iModelDb);
|
|
143
|
+
}
|
|
144
|
+
static onChildInsert(arg) {
|
|
145
|
+
super.onChildInsert(arg);
|
|
146
|
+
assert.equal(arg.iModel, iModelDb);
|
|
147
|
+
}
|
|
148
|
+
static onChildInserted(arg) {
|
|
149
|
+
super.onChildInserted(arg);
|
|
150
|
+
assert.equal(arg.iModel, iModelDb);
|
|
151
|
+
}
|
|
152
|
+
static onChildUpdate(arg) {
|
|
153
|
+
super.onChildUpdate(arg);
|
|
154
|
+
assert.equal(arg.iModel, iModelDb);
|
|
155
|
+
}
|
|
156
|
+
static onChildUpdated(arg) {
|
|
157
|
+
super.onChildUpdated(arg);
|
|
158
|
+
assert.equal(arg.iModel, iModelDb);
|
|
159
|
+
}
|
|
160
|
+
static onChildAdd(arg) {
|
|
161
|
+
super.onChildAdd(arg);
|
|
162
|
+
assert.equal(arg.iModel, iModelDb);
|
|
163
|
+
}
|
|
164
|
+
static onChildAdded(arg) {
|
|
165
|
+
super.onChildAdded(arg);
|
|
166
|
+
assert.equal(arg.iModel, iModelDb);
|
|
167
|
+
}
|
|
168
|
+
static onChildDrop(arg) {
|
|
169
|
+
super.onChildDrop(arg);
|
|
170
|
+
assert.equal(arg.iModel, iModelDb);
|
|
171
|
+
}
|
|
172
|
+
static onChildDropped(arg) {
|
|
173
|
+
super.onChildDropped(arg);
|
|
174
|
+
assert.equal(arg.iModel, iModelDb);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/** for testing `ElementAspect.onXxx` methods */
|
|
178
|
+
class TestFuncAspect extends ElementUniqueAspect {
|
|
179
|
+
static get className() { return "TestFuncAspect"; }
|
|
180
|
+
static expectedVal = "";
|
|
181
|
+
static onInsert(arg) {
|
|
182
|
+
super.onInsert(arg);
|
|
183
|
+
assert.equal(arg.iModel, iModelDb);
|
|
184
|
+
assert.equal(arg.props.strProp, this.expectedVal);
|
|
185
|
+
}
|
|
186
|
+
static onInserted(arg) {
|
|
187
|
+
super.onInserted(arg);
|
|
188
|
+
assert.equal(arg.iModel, iModelDb);
|
|
189
|
+
assert.equal(arg.props.strProp, this.expectedVal);
|
|
190
|
+
}
|
|
191
|
+
static onUpdate(arg) {
|
|
192
|
+
super.onUpdate(arg);
|
|
193
|
+
assert.equal(arg.iModel, iModelDb);
|
|
194
|
+
assert.equal(arg.props.strProp, this.expectedVal);
|
|
195
|
+
}
|
|
196
|
+
static onUpdated(arg) {
|
|
197
|
+
super.onUpdated(arg);
|
|
198
|
+
assert.equal(arg.iModel, iModelDb);
|
|
199
|
+
assert.equal(arg.props.strProp, this.expectedVal);
|
|
200
|
+
}
|
|
201
|
+
static onDelete(arg) {
|
|
202
|
+
super.onDelete(arg);
|
|
203
|
+
assert.equal(arg.iModel, iModelDb);
|
|
204
|
+
}
|
|
205
|
+
static onDeleted(arg) {
|
|
206
|
+
super.onDeleted(arg);
|
|
207
|
+
assert.equal(arg.iModel, iModelDb);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
class Component extends FunctionalComponentElement {
|
|
211
|
+
static get className() { return "Component"; }
|
|
212
|
+
}
|
|
213
|
+
describe("Functional Domain", () => {
|
|
214
|
+
afterEach(() => {
|
|
215
|
+
sinonRestore();
|
|
216
|
+
});
|
|
217
|
+
it("should populate FunctionalModel and test Element, Model, and ElementAspect callbacks", async () => {
|
|
218
|
+
iModelDb = StandaloneDb.createEmpty(IModelTestUtils.prepareOutputFile("FunctionalDomain", "FunctionalTest.bim"), {
|
|
219
|
+
rootSubject: { name: "FunctionalTest", description: "Test of the Functional domain schema." },
|
|
220
|
+
client: "Functional",
|
|
221
|
+
globalOrigin: { x: 0, y: 0 },
|
|
222
|
+
projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },
|
|
223
|
+
guid: Guid.createValue(),
|
|
224
|
+
});
|
|
225
|
+
iModelDb[_nativeDb].resetBriefcaseId(100);
|
|
226
|
+
// Import the Functional schema
|
|
227
|
+
FunctionalSchema.registerSchema();
|
|
228
|
+
Schemas.registerSchema(TestSchema);
|
|
229
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
230
|
+
ClassRegistry.registerModule({ TestFuncPartition, TestFuncModel, Breakdown, Component, TestFuncAspect }, TestSchema);
|
|
231
|
+
await FunctionalSchema.importSchema(iModelDb);
|
|
232
|
+
let commits = 0;
|
|
233
|
+
let committed = 0;
|
|
234
|
+
const elements = iModelDb.elements;
|
|
235
|
+
const dropCommit = iModelDb.txns.onCommit.addListener(() => commits++);
|
|
236
|
+
const dropCommitted = iModelDb.txns.onCommitted.addListener(() => committed++);
|
|
237
|
+
iModelDb.saveChanges("Import Functional schema");
|
|
238
|
+
assert.equal(commits, 1);
|
|
239
|
+
assert.equal(committed, 1);
|
|
240
|
+
dropCommit();
|
|
241
|
+
dropCommitted();
|
|
242
|
+
IModelTestUtils.flushTxns(iModelDb); // importSchema below will fail if this is not called to flush local changes
|
|
243
|
+
await iModelDb.importSchemas([join(KnownTestLocations.assetsDir, "TestFunctional.ecschema.xml")]);
|
|
244
|
+
iModelDb.saveChanges("Import TestFunctional schema");
|
|
245
|
+
assert.equal(commits, 1);
|
|
246
|
+
assert.equal(committed, 1);
|
|
247
|
+
const testChannelKey1 = "channel 1 for tests";
|
|
248
|
+
const testChannelKey2 = "channel 2 for tests";
|
|
249
|
+
function testChannel(channelKey, fn, spies) {
|
|
250
|
+
iModelDb.channels.removeAllowedChannel(channelKey);
|
|
251
|
+
expect(fn).throws("not allowed");
|
|
252
|
+
iModelDb.channels.addAllowedChannel(channelKey);
|
|
253
|
+
spies.forEach((s) => s.resetHistory());
|
|
254
|
+
return fn();
|
|
255
|
+
}
|
|
256
|
+
const spy = {
|
|
257
|
+
model: {
|
|
258
|
+
onInsert: sinonSpy(TestFuncModel, "onInsert"),
|
|
259
|
+
onInserted: sinonSpy(TestFuncModel, "onInserted"),
|
|
260
|
+
onUpdate: sinonSpy(TestFuncModel, "onUpdate"),
|
|
261
|
+
onUpdated: sinonSpy(TestFuncModel, "onUpdated"),
|
|
262
|
+
onDelete: sinonSpy(TestFuncModel, "onDelete"),
|
|
263
|
+
onDeleted: sinonSpy(TestFuncModel, "onDeleted"),
|
|
264
|
+
onInsertElement: sinonSpy(TestFuncModel, "onInsertElement"),
|
|
265
|
+
onInsertedElement: sinonSpy(TestFuncModel, "onInsertedElement"),
|
|
266
|
+
onUpdateElement: sinonSpy(TestFuncModel, "onUpdateElement"),
|
|
267
|
+
onUpdatedElement: sinonSpy(TestFuncModel, "onUpdatedElement"),
|
|
268
|
+
onDeleteElement: sinonSpy(TestFuncModel, "onDeleteElement"),
|
|
269
|
+
onDeletedElement: sinonSpy(TestFuncModel, "onDeletedElement"),
|
|
270
|
+
},
|
|
271
|
+
partition: {
|
|
272
|
+
onSubModelInsert: sinonSpy(TestFuncPartition, "onSubModelInsert"),
|
|
273
|
+
onSubModelInserted: sinonSpy(TestFuncPartition, "onSubModelInserted"),
|
|
274
|
+
onSubModelDelete: sinonSpy(TestFuncPartition, "onSubModelDelete"),
|
|
275
|
+
onSubModelDeleted: sinonSpy(TestFuncPartition, "onSubModelDeleted"),
|
|
276
|
+
},
|
|
277
|
+
breakdown: {
|
|
278
|
+
onInsert: sinonSpy(Breakdown, "onInsert"),
|
|
279
|
+
onInserted: sinonSpy(Breakdown, "onInserted"),
|
|
280
|
+
onUpdate: sinonSpy(Breakdown, "onUpdate"),
|
|
281
|
+
onUpdated: sinonSpy(Breakdown, "onUpdated"),
|
|
282
|
+
onDelete: sinonSpy(Breakdown, "onDelete"),
|
|
283
|
+
onDeleted: sinonSpy(Breakdown, "onDeleted"),
|
|
284
|
+
onChildDelete: sinonSpy(Breakdown, "onChildDelete"),
|
|
285
|
+
onChildDeleted: sinonSpy(Breakdown, "onChildDeleted"),
|
|
286
|
+
onChildInsert: sinonSpy(Breakdown, "onChildInsert"),
|
|
287
|
+
onChildInserted: sinonSpy(Breakdown, "onChildInserted"),
|
|
288
|
+
onChildUpdate: sinonSpy(Breakdown, "onChildUpdate"),
|
|
289
|
+
onChildUpdated: sinonSpy(Breakdown, "onChildUpdated"),
|
|
290
|
+
onChildAdd: sinonSpy(Breakdown, "onChildAdd"),
|
|
291
|
+
onChildAdded: sinonSpy(Breakdown, "onChildAdded"),
|
|
292
|
+
onChildDrop: sinonSpy(Breakdown, "onChildDrop"),
|
|
293
|
+
onChildDropped: sinonSpy(Breakdown, "onChildDropped"),
|
|
294
|
+
},
|
|
295
|
+
aspect: {
|
|
296
|
+
onInsert: sinonSpy(TestFuncAspect, "onInsert"),
|
|
297
|
+
onInserted: sinonSpy(TestFuncAspect, "onInserted"),
|
|
298
|
+
onUpdate: sinonSpy(TestFuncAspect, "onUpdate"),
|
|
299
|
+
onUpdated: sinonSpy(TestFuncAspect, "onUpdated"),
|
|
300
|
+
onDelete: sinonSpy(TestFuncAspect, "onDelete"),
|
|
301
|
+
onDeleted: sinonSpy(TestFuncAspect, "onDeleted"),
|
|
302
|
+
},
|
|
303
|
+
};
|
|
304
|
+
assert.equal(iModelDb.channels.queryChannelRoot(ChannelControl.sharedChannelName), IModel.rootSubjectId);
|
|
305
|
+
const codeSpec = CodeSpec.create(iModelDb, "Test Functional Elements", CodeScopeSpec.Type.Model);
|
|
306
|
+
iModelDb.codeSpecs.insert(codeSpec);
|
|
307
|
+
assert.isTrue(Id64.isValidId64(codeSpec.id));
|
|
308
|
+
// create a channel for all elements in this test
|
|
309
|
+
assert.isUndefined(iModelDb.channels.queryChannelRoot(testChannelKey1));
|
|
310
|
+
const subject1Id = iModelDb.channels.insertChannelSubject({ subjectName: "Test Functional Subject", channelKey: testChannelKey1 });
|
|
311
|
+
assert.equal(iModelDb.channels.queryChannelRoot(testChannelKey1), subject1Id);
|
|
312
|
+
const partitionCode = FunctionalPartition.createCode(iModelDb, subject1Id, "Test Functional Model");
|
|
313
|
+
const partitionProps = {
|
|
314
|
+
classFullName: TestFuncPartition.classFullName, model: IModel.repositoryModelId,
|
|
315
|
+
parent: new SubjectOwnsPartitionElements(subject1Id), code: partitionCode,
|
|
316
|
+
};
|
|
317
|
+
iModelDb.channels.addAllowedChannel(testChannelKey1);
|
|
318
|
+
let partitionId = iModelDb.elements.insertElement(partitionProps);
|
|
319
|
+
const modelId = testChannel(testChannelKey1, () => iModelDb.models.insertModel({ classFullName: TestFuncModel.classFullName, modeledElement: { id: partitionId } }), [spy.model.onInsert]);
|
|
320
|
+
assert.isTrue(Id64.isValidId64(modelId));
|
|
321
|
+
assert.isTrue(spy.model.onInsert.calledOnce);
|
|
322
|
+
assert.isTrue(spy.model.onInserted.calledOnce);
|
|
323
|
+
assert.equal(spy.model.onInserted.getCall(0).args[0].id, modelId);
|
|
324
|
+
assert.isFalse(spy.model.onUpdate.called, "model insert should not call onUpdate");
|
|
325
|
+
assert.isFalse(spy.model.onUpdated.called, "model insert should not call onUpdated");
|
|
326
|
+
assert.isTrue(spy.partition.onSubModelInsert.calledOnce);
|
|
327
|
+
assert.isTrue(spy.partition.onSubModelInserted.calledOnce);
|
|
328
|
+
assert.equal(spy.partition.onSubModelInserted.getCall(0).args[0].subModelId, modelId, "Element.onSubModelInserted should have correct subModelId");
|
|
329
|
+
expect(() => iModelDb.channels.insertChannelSubject({ subjectName: "Test Functional Subject 2", channelKey: testChannelKey1 })).to.throw(`Channel ${testChannelKey1} root already exist`);
|
|
330
|
+
const subject2Id = iModelDb.channels.insertChannelSubject({ subjectName: "Test Functional Subject 2", channelKey: testChannelKey2 });
|
|
331
|
+
iModelDb.channels.addAllowedChannel(testChannelKey2);
|
|
332
|
+
expect(() => iModelDb.channels.insertChannelSubject({ subjectName: "Nested Subject", parentSubjectId: subject2Id, channelKey: "nested channel" })).to.throw("may not nest");
|
|
333
|
+
partitionProps.code.value = "Test Func 2";
|
|
334
|
+
partitionProps.parent = new SubjectOwnsPartitionElements(subject2Id);
|
|
335
|
+
partitionId = iModelDb.elements.insertElement(partitionProps);
|
|
336
|
+
const modelId2 = iModelDb.models.insertModel({ classFullName: TestFuncModel.classFullName, modeledElement: { id: partitionId } });
|
|
337
|
+
assert.isTrue(Id64.isValidId64(modelId2));
|
|
338
|
+
assert.equal(spy.model.onInserted.getCall(1).args[0].id, modelId2, "second insert should set new id");
|
|
339
|
+
assert.equal(spy.model.onInsert.callCount, 2);
|
|
340
|
+
assert.equal(spy.model.onInserted.callCount, 2);
|
|
341
|
+
assert.equal(spy.partition.onSubModelInserted.getCall(1).args[0].subModelId, modelId2, "Element.onSubModelInserted should have correct subModelId");
|
|
342
|
+
const model2 = iModelDb.models.getModel(modelId2);
|
|
343
|
+
testChannel(testChannelKey2, () => model2.update(), []);
|
|
344
|
+
assert.equal(spy.model.onUpdated.getCall(0).args[0].id, modelId2);
|
|
345
|
+
assert.equal(spy.model.onUpdate.callCount, 2);
|
|
346
|
+
assert.equal(spy.model.onUpdated.callCount, 1);
|
|
347
|
+
testChannel(testChannelKey2, () => model2.delete(), [spy.model.onDelete, spy.partition.onSubModelDelete]);
|
|
348
|
+
assert.isTrue(spy.model.onDelete.calledOnce);
|
|
349
|
+
assert.isTrue(spy.model.onDeleted.calledOnce);
|
|
350
|
+
assert.equal(spy.model.onDeleted.getCall(0).args[0].id, modelId2);
|
|
351
|
+
assert.isTrue(spy.partition.onSubModelDelete.calledOnce);
|
|
352
|
+
assert.isTrue(spy.partition.onSubModelDeleted.calledOnce);
|
|
353
|
+
assert.equal(spy.partition.onSubModelDeleted.getCall(0).args[0].subModelId, modelId2);
|
|
354
|
+
const breakdownProps = { classFullName: Breakdown.classFullName, model: modelId, code: { spec: codeSpec.id, scope: modelId, value: "Breakdown1" } };
|
|
355
|
+
const breakdownId = testChannel(testChannelKey1, () => elements.insertElement(breakdownProps), [spy.model.onInsertElement, spy.breakdown.onInsert]);
|
|
356
|
+
assert.isTrue(Id64.isValidId64(breakdownId));
|
|
357
|
+
assert.isTrue(spy.model.onInsertElement.calledOnce);
|
|
358
|
+
assert.isTrue(spy.model.onInsertedElement.calledOnce);
|
|
359
|
+
assert.equal(spy.model.onInsertedElement.getCall(0).args[0].elementId, breakdownId);
|
|
360
|
+
assert.isTrue(spy.breakdown.onInsert.calledOnce);
|
|
361
|
+
assert.isTrue(spy.breakdown.onInserted.calledOnce);
|
|
362
|
+
assert.equal(spy.breakdown.onInserted.getCall(0).args[0].id, breakdownId);
|
|
363
|
+
assert.equal(spy.breakdown.onInsert.getCall(0).args[0].props, breakdownProps);
|
|
364
|
+
const breakdown2Props = { classFullName: Breakdown.classFullName, model: modelId, code: { spec: codeSpec.id, scope: modelId, value: "badval" } };
|
|
365
|
+
// TestFuncModel.onInsertElement throws for this code.value
|
|
366
|
+
expect(() => elements.insertElement(breakdown2Props)).to.throw("bad element");
|
|
367
|
+
breakdown2Props.code.value = "Breakdown2";
|
|
368
|
+
breakdown2Props.userLabel = "start label"; // gets overwritten in `onInsert`
|
|
369
|
+
const bd2 = elements.insertElement(breakdown2Props);
|
|
370
|
+
const aspect = { classFullName: TestFuncAspect.classFullName, element: new ElementOwnsUniqueAspect(bd2), strProp: "prop 1" };
|
|
371
|
+
TestFuncAspect.expectedVal = aspect.strProp;
|
|
372
|
+
testChannel(testChannelKey1, () => elements.insertAspect(aspect), [spy.aspect.onInsert]);
|
|
373
|
+
assert.isTrue(spy.aspect.onInsert.calledOnce);
|
|
374
|
+
assert.isTrue(spy.aspect.onInserted.calledOnce);
|
|
375
|
+
assert.isFalse(spy.aspect.onUpdate.called);
|
|
376
|
+
assert.isFalse(spy.aspect.onUpdated.called);
|
|
377
|
+
assert.equal(spy.aspect.onInserted.getCall(0).args[0].props.element.id, bd2, "elemId from ElementAspect.onInserted");
|
|
378
|
+
aspect.strProp = "prop 2";
|
|
379
|
+
TestFuncAspect.expectedVal = aspect.strProp;
|
|
380
|
+
testChannel(testChannelKey1, () => elements.updateAspect(aspect), [spy.aspect.onUpdate]);
|
|
381
|
+
assert.equal(spy.aspect.onInsert.callCount, 1, "ElementAspect.onInsert should not be called on update");
|
|
382
|
+
assert.equal(spy.aspect.onInserted.callCount, 1, "ElementAspect.onInserted should should not be called on update");
|
|
383
|
+
assert.equal(spy.aspect.onUpdate.callCount, 1);
|
|
384
|
+
assert.equal(spy.aspect.onUpdated.callCount, 1);
|
|
385
|
+
assert.equal(spy.aspect.onUpdated.getCall(0).args[0].props.element.id, bd2, "from ElementAspect.onUpdated");
|
|
386
|
+
const aspects = elements.getAspects(bd2, TestFuncAspect.classFullName);
|
|
387
|
+
assert.equal(aspects.length, 1);
|
|
388
|
+
testChannel(testChannelKey1, () => elements.deleteAspect(aspects[0].id), [spy.aspect.onDelete]);
|
|
389
|
+
assert.equal(spy.aspect.onDelete.callCount, 1);
|
|
390
|
+
assert.equal(spy.aspect.onDeleted.callCount, 1);
|
|
391
|
+
assert.equal(spy.aspect.onDelete.getCall(0).args[0].aspectId, aspects[0].id);
|
|
392
|
+
assert.equal(spy.aspect.onDeleted.getCall(0).args[0].aspectId, aspects[0].id);
|
|
393
|
+
let bd2el = elements.getElement(bd2);
|
|
394
|
+
assert.equal(bd2el.userLabel, insertedLabel, "label was modified by onInsert");
|
|
395
|
+
expect(iModelDb.channels.getChannelKey(bd2)).equals(testChannelKey1);
|
|
396
|
+
bd2el.userLabel = "nothing";
|
|
397
|
+
testChannel(testChannelKey1, () => bd2el.update(), [spy.breakdown.onUpdate, spy.breakdown.onUpdated]);
|
|
398
|
+
bd2el = elements.getElement(bd2);
|
|
399
|
+
assert.equal(bd2el.userLabel, updatedLabel, "label was modified in onUpdate");
|
|
400
|
+
assert.equal(spy.breakdown.onUpdate.callCount, 1);
|
|
401
|
+
assert.equal(spy.breakdown.onUpdated.callCount, 1);
|
|
402
|
+
assert.equal(spy.breakdown.onUpdate.getCall(0).args[0].props.id, bd2);
|
|
403
|
+
assert.equal(spy.breakdown.onUpdated.getCall(0).args[0].id, bd2);
|
|
404
|
+
testChannel(testChannelKey1, () => bd2el.delete(), [spy.breakdown.onDelete]);
|
|
405
|
+
assert.equal(spy.breakdown.onDelete.callCount, 1);
|
|
406
|
+
assert.equal(spy.breakdown.onDeleted.callCount, 1);
|
|
407
|
+
const deleteArg = spy.breakdown.onDelete.getCall(0).args[0];
|
|
408
|
+
assert.equal(deleteArg.id, bd2);
|
|
409
|
+
assert.equal(deleteArg.model, bd2el.model);
|
|
410
|
+
assert.equal(deleteArg.federationGuid, bd2el.federationGuid);
|
|
411
|
+
assert.equal(spy.breakdown.onDeleted.getCall(0).args[0].id, bd2);
|
|
412
|
+
const breakdown3Props = {
|
|
413
|
+
classFullName: Breakdown.classFullName,
|
|
414
|
+
model: modelId,
|
|
415
|
+
code: { spec: codeSpec.id, scope: modelId, value: "bd3" },
|
|
416
|
+
};
|
|
417
|
+
const bd3 = elements.insertElement(breakdown3Props);
|
|
418
|
+
const componentProps = {
|
|
419
|
+
classFullName: Component.classFullName,
|
|
420
|
+
model: modelId,
|
|
421
|
+
parent: { id: breakdownId, relClassName: ElementOwnsChildElements.classFullName },
|
|
422
|
+
code: { spec: codeSpec.id, scope: modelId, value: "Component1" },
|
|
423
|
+
};
|
|
424
|
+
const componentId = testChannel(testChannelKey1, () => elements.insertElement(componentProps), []);
|
|
425
|
+
assert.isTrue(Id64.isValidId64(componentId));
|
|
426
|
+
assert.equal(spy.breakdown.onChildInserted.callCount, 1);
|
|
427
|
+
assert.equal(spy.breakdown.onChildInserted.getCall(0).args[0].childId, componentId);
|
|
428
|
+
// test model and element callbacks for updateElement
|
|
429
|
+
const component1 = elements.getElement(componentId);
|
|
430
|
+
testChannel(testChannelKey1, () => component1.update(), [spy.model.onUpdateElement, spy.model.onUpdatedElement]);
|
|
431
|
+
assert.equal(spy.model.onUpdateElement.callCount, 1);
|
|
432
|
+
assert.equal(spy.model.onUpdatedElement.callCount, 1);
|
|
433
|
+
assert.equal(spy.model.onUpdatedElement.getCall(0).args[0].elementId, componentId);
|
|
434
|
+
assert.equal(spy.breakdown.onChildUpdate.callCount, 1);
|
|
435
|
+
assert.equal(spy.breakdown.onChildUpdated.callCount, 1);
|
|
436
|
+
assert.equal(spy.breakdown.onChildUpdate.getCall(0).args[0].parentId, breakdownId);
|
|
437
|
+
assert.equal(spy.breakdown.onChildUpdated.getCall(0).args[0].childId, componentId);
|
|
438
|
+
componentProps.code.value = "comp2";
|
|
439
|
+
const comp2 = elements.insertElement(componentProps);
|
|
440
|
+
assert.equal(spy.breakdown.onChildInserted.callCount, 2);
|
|
441
|
+
assert.equal(spy.breakdown.onChildInserted.getCall(1).args[0].childId, comp2);
|
|
442
|
+
const el2 = elements.getElement(comp2);
|
|
443
|
+
spy.model.onDeleteElement.resetHistory();
|
|
444
|
+
spy.model.onDeletedElement.resetHistory();
|
|
445
|
+
TestFuncModel.dontDelete = comp2; // block deletion through model
|
|
446
|
+
expect(() => el2.delete()).to.throw("dont delete my element");
|
|
447
|
+
TestFuncModel.dontDelete = ""; // allow deletion through model
|
|
448
|
+
Breakdown.dontDeleteChild = comp2; // but block through parent
|
|
449
|
+
expect(() => el2.delete()).to.throw("dont delete my child"); // nope
|
|
450
|
+
assert.equal(spy.model.onDeleteElement.callCount, 2, "Model.onElementDelete gets called even though element is not really deleted");
|
|
451
|
+
assert.equal(spy.model.onDeletedElement.callCount, 0, "make sure Model.onElementDeleted did not get called");
|
|
452
|
+
Breakdown.dontDeleteChild = ""; // now fully allow delete
|
|
453
|
+
el2.delete();
|
|
454
|
+
assert.equal(spy.model.onDeleteElement.callCount, 3, "Model.onElementDelete should be called again");
|
|
455
|
+
assert.equal(spy.model.onDeletedElement.callCount, 1);
|
|
456
|
+
assert.equal(spy.model.onDeletedElement.getCall(0).args[0].elementId, comp2);
|
|
457
|
+
assert.equal(spy.breakdown.onChildDeleted.callCount, 1);
|
|
458
|
+
assert.equal(spy.breakdown.onChildDeleted.getCall(0).args[0].childId, comp2);
|
|
459
|
+
// next we make sure that changing the parent of an element calls the "onChildAdd/Drop/Added/Dropped" callbacks.
|
|
460
|
+
// To do this we switch a component's parent from "breakDownId" to "bc3"
|
|
461
|
+
componentProps.parent.id = bd3;
|
|
462
|
+
const comp3 = elements.insertElement(componentProps);
|
|
463
|
+
const compEl3 = elements.getElementProps(comp3);
|
|
464
|
+
compEl3.parent.id = breakdownId;
|
|
465
|
+
testChannel(testChannelKey1, () => elements.updateElement(compEl3), []);
|
|
466
|
+
assert.equal(spy.breakdown.onChildAdd.callCount, 1);
|
|
467
|
+
assert.equal(spy.breakdown.onChildAdd.getCall(0).args[0].parentId, breakdownId);
|
|
468
|
+
assert.equal(spy.breakdown.onChildAdd.getCall(0).args[0].childProps.id, comp3);
|
|
469
|
+
assert.equal(spy.breakdown.onChildDrop.callCount, 1);
|
|
470
|
+
assert.equal(spy.breakdown.onChildDrop.getCall(0).args[0].parentId, bd3);
|
|
471
|
+
assert.equal(spy.breakdown.onChildDrop.getCall(0).args[0].childId, comp3);
|
|
472
|
+
assert.equal(spy.breakdown.onChildAdded.callCount, 1);
|
|
473
|
+
assert.equal(spy.breakdown.onChildAdded.getCall(0).args[0].parentId, breakdownId);
|
|
474
|
+
assert.equal(spy.breakdown.onChildAdded.getCall(0).args[0].childId, comp3);
|
|
475
|
+
assert.equal(spy.breakdown.onChildDropped.callCount, 1);
|
|
476
|
+
assert.equal(spy.breakdown.onChildDropped.getCall(0).args[0].parentId, bd3);
|
|
477
|
+
assert.equal(spy.breakdown.onChildDropped.getCall(0).args[0].childId, comp3);
|
|
478
|
+
iModelDb.saveChanges("Insert Functional elements");
|
|
479
|
+
// unregister test schema to make sure it will throw exceptions if it is not present (since it has the "SchemaHasBehavior" custom attribute)
|
|
480
|
+
Schemas.unregisterSchema(TestSchema.schemaName);
|
|
481
|
+
const errMsg = "Schema [TestFunctional] not registered, but is marked with SchemaHasBehavior";
|
|
482
|
+
expect(() => elements.deleteElement(breakdownId)).to.throw(errMsg);
|
|
483
|
+
assert.isDefined(elements.getElement(breakdownId), "should not have been deleted");
|
|
484
|
+
expect(() => elements.updateElement(breakdownProps)).to.throw(errMsg);
|
|
485
|
+
breakdownProps.code.value = "Breakdown 2";
|
|
486
|
+
expect(() => elements.insertElement(breakdownProps)).to.throw(errMsg);
|
|
487
|
+
iModelDb.close();
|
|
488
|
+
});
|
|
489
|
+
});
|
|
490
|
+
//# sourceMappingURL=FunctionalDomain.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionalDomain.test.js","sourceRoot":"","sources":["../../../../src/test/schema/FunctionalDomain.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 { assert, expect } from \"chai\";\nimport { join } from \"path\";\nimport { restore as sinonRestore, type SinonSpy, spy as sinonSpy } from \"sinon\";\nimport { Guid, Id64 } from \"@itwin/core-bentley\";\nimport { CodeScopeSpec, CodeSpec, ElementProps, IModel } from \"@itwin/core-common\";\nimport { ClassRegistry } from \"../../ClassRegistry\";\nimport { ElementUniqueAspect, OnAspectIdArg, OnAspectPropsArg } from \"../../ElementAspect\";\nimport {\n _nativeDb, ChannelControl, ChannelKey, FunctionalBreakdownElement, FunctionalComponentElement, FunctionalModel, FunctionalPartition,\n FunctionalSchema, InformationPartitionElement, OnChildElementIdArg, OnChildElementPropsArg, OnElementIdArg, OnElementInModelIdArg,\n OnElementInModelPropsArg, OnElementPropsArg, OnModelIdArg, OnModelPropsArg, OnSubModelIdArg, OnSubModelPropsArg, Schemas, StandaloneDb,\n} from \"../../core-backend\";\nimport { ElementOwnsChildElements, ElementOwnsUniqueAspect, SubjectOwnsPartitionElements } from \"../../NavigationRelationship\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\n\nlet iModelDb: StandaloneDb;\nconst insertedLabel = \"inserted label\";\nconst updatedLabel = \"updated label\";\n\n/** test schema for supplying element/model/aspect classes */\nclass TestSchema extends FunctionalSchema {\n public static override get schemaName() { return \"TestFunctional\"; }\n}\n\n/** partition element for testing `Element.onSubModelXxx` methods */\nclass TestFuncPartition extends InformationPartitionElement {\n public static override get className() { return \"TestFuncPartition\"; }\n\n public static override onSubModelInsert(arg: OnSubModelPropsArg): void {\n super.onSubModelInsert(arg);\n assert.equal(arg.iModel, iModelDb);\n assert.equal(arg.subModelProps.classFullName, TestFuncModel.classFullName);\n }\n public static override onSubModelInserted(arg: OnSubModelIdArg): void {\n super.onSubModelInserted(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onSubModelDelete(arg: OnSubModelIdArg): void {\n super.onSubModelDelete(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onSubModelDeleted(arg: OnSubModelIdArg): void {\n super.onSubModelDeleted(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n}\n\n/** for testing `Model.onXxx` methods */\nclass TestFuncModel extends FunctionalModel {\n public static override get className() { return \"TestFuncModel\"; }\n public static dontDelete = \"\";\n\n public static override onInsert(arg: OnModelPropsArg): void {\n super.onInsert(arg);\n assert.equal(arg.iModel, iModelDb);\n assert.equal(arg.props.classFullName, this.classFullName);\n }\n public static override onInserted(arg: OnModelIdArg): void {\n super.onInserted(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onUpdate(arg: OnModelPropsArg): void {\n super.onUpdate(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onUpdated(arg: OnModelIdArg): void {\n super.onUpdated(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onDelete(arg: OnModelIdArg): void {\n super.onDelete(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onDeleted(arg: OnModelIdArg): void {\n super.onDeleted(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onInsertElement(arg: OnElementInModelPropsArg): void {\n super.onInsertElement(arg);\n assert.equal(arg.iModel, iModelDb);\n if (arg.elementProps.code.value === \"badval\")\n throw new Error(\"bad element\");\n }\n public static override onInsertedElement(arg: OnElementInModelIdArg): void {\n super.onInsertedElement(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onUpdateElement(arg: OnElementInModelPropsArg): void {\n super.onUpdateElement(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onUpdatedElement(arg: OnElementInModelIdArg): void {\n super.onUpdatedElement(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onDeleteElement(arg: OnElementInModelIdArg): void {\n super.onDeleteElement(arg);\n assert.equal(arg.iModel, iModelDb);\n if (arg.elementId === this.dontDelete)\n throw new Error(\"dont delete my element\");\n }\n public static override onDeletedElement(arg: OnElementInModelIdArg): void {\n super.onDeletedElement(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n}\n\n/** for testing `Element.onXxx` methods */\nclass Breakdown extends FunctionalBreakdownElement {\n public static override get className() { return \"Breakdown\"; }\n public static dontDeleteChild = \"\";\n\n public static override onInsert(arg: OnElementPropsArg): void {\n arg.props.userLabel = insertedLabel;\n super.onInsert(arg);\n assert.equal(arg.iModel, iModelDb);\n assert.equal(arg.props.classFullName, this.classFullName);\n }\n public static override onInserted(arg: OnElementIdArg): void {\n super.onInserted(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onUpdate(arg: OnElementPropsArg): void {\n arg.props.userLabel = updatedLabel;\n super.onUpdate(arg);\n assert.equal(arg.iModel, iModelDb);\n assert.equal(arg.props.classFullName, this.classFullName);\n }\n public static override onUpdated(arg: OnElementIdArg): void {\n super.onUpdated(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onDelete(arg: OnElementIdArg): void {\n super.onDelete(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onDeleted(arg: OnElementIdArg): void {\n super.onDeleted(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onChildDelete(arg: OnChildElementIdArg): void {\n super.onChildDelete(arg);\n assert.equal(arg.iModel, iModelDb);\n if (arg.childId === this.dontDeleteChild)\n throw new Error(\"dont delete my child\");\n }\n public static override onChildDeleted(arg: OnChildElementIdArg): void {\n super.onChildDeleted(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onChildInsert(arg: OnChildElementPropsArg): void {\n super.onChildInsert(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onChildInserted(arg: OnChildElementIdArg): void {\n super.onChildInserted(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onChildUpdate(arg: OnChildElementPropsArg): void {\n super.onChildUpdate(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onChildUpdated(arg: OnChildElementIdArg): void {\n super.onChildUpdated(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onChildAdd(arg: OnChildElementPropsArg): void {\n super.onChildAdd(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onChildAdded(arg: OnChildElementIdArg): void {\n super.onChildAdded(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onChildDrop(arg: OnChildElementIdArg): void {\n super.onChildDrop(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onChildDropped(arg: OnChildElementIdArg): void {\n super.onChildDropped(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n}\n\n/** for testing `ElementAspect.onXxx` methods */\nclass TestFuncAspect extends ElementUniqueAspect {\n public static override get className() { return \"TestFuncAspect\"; }\n public static expectedVal = \"\";\n\n public static override onInsert(arg: OnAspectPropsArg): void {\n super.onInsert(arg);\n assert.equal(arg.iModel, iModelDb);\n assert.equal((arg.props as any).strProp, this.expectedVal);\n }\n public static override onInserted(arg: OnAspectPropsArg): void {\n super.onInserted(arg);\n assert.equal(arg.iModel, iModelDb);\n assert.equal((arg.props as any).strProp, this.expectedVal);\n }\n public static override onUpdate(arg: OnAspectPropsArg): void {\n super.onUpdate(arg);\n assert.equal(arg.iModel, iModelDb);\n assert.equal((arg.props as any).strProp, this.expectedVal);\n }\n public static override onUpdated(arg: OnAspectPropsArg): void {\n super.onUpdated(arg);\n assert.equal(arg.iModel, iModelDb);\n assert.equal((arg.props as any).strProp, this.expectedVal);\n }\n public static override onDelete(arg: OnAspectIdArg): void {\n super.onDelete(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n public static override onDeleted(arg: OnAspectIdArg): void {\n super.onDeleted(arg);\n assert.equal(arg.iModel, iModelDb);\n }\n}\n\nclass Component extends FunctionalComponentElement {\n public static override get className() { return \"Component\"; }\n}\n\ndescribe(\"Functional Domain\", () => {\n\n afterEach(() => {\n sinonRestore();\n });\n\n it(\"should populate FunctionalModel and test Element, Model, and ElementAspect callbacks\", async () => {\n iModelDb = StandaloneDb.createEmpty(IModelTestUtils.prepareOutputFile(\"FunctionalDomain\", \"FunctionalTest.bim\"), {\n rootSubject: { name: \"FunctionalTest\", description: \"Test of the Functional domain schema.\" },\n client: \"Functional\",\n globalOrigin: { x: 0, y: 0 },\n projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },\n guid: Guid.createValue(),\n });\n\n iModelDb[_nativeDb].resetBriefcaseId(100);\n\n // Import the Functional schema\n FunctionalSchema.registerSchema();\n Schemas.registerSchema(TestSchema);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n ClassRegistry.registerModule({ TestFuncPartition, TestFuncModel, Breakdown, Component, TestFuncAspect }, TestSchema);\n\n await FunctionalSchema.importSchema(iModelDb);\n\n let commits = 0;\n let committed = 0;\n const elements = iModelDb.elements;\n const dropCommit = iModelDb.txns.onCommit.addListener(() => commits++);\n const dropCommitted = iModelDb.txns.onCommitted.addListener(() => committed++);\n iModelDb.saveChanges(\"Import Functional schema\");\n\n assert.equal(commits, 1);\n assert.equal(committed, 1);\n dropCommit();\n dropCommitted();\n\n IModelTestUtils.flushTxns(iModelDb); // importSchema below will fail if this is not called to flush local changes\n\n await iModelDb.importSchemas([join(KnownTestLocations.assetsDir, \"TestFunctional.ecschema.xml\")]);\n\n iModelDb.saveChanges(\"Import TestFunctional schema\");\n assert.equal(commits, 1);\n assert.equal(committed, 1);\n\n const testChannelKey1 = \"channel 1 for tests\";\n const testChannelKey2 = \"channel 2 for tests\";\n function testChannel<T>(channelKey: ChannelKey, fn: () => T, spies: SinonSpy[]) {\n iModelDb.channels.removeAllowedChannel(channelKey);\n expect(fn).throws(\"not allowed\");\n iModelDb.channels.addAllowedChannel(channelKey);\n spies.forEach((s) => s.resetHistory());\n return fn();\n }\n\n const spy = {\n model: {\n onInsert: sinonSpy(TestFuncModel, \"onInsert\"),\n onInserted: sinonSpy(TestFuncModel, \"onInserted\"),\n onUpdate: sinonSpy(TestFuncModel, \"onUpdate\"),\n onUpdated: sinonSpy(TestFuncModel, \"onUpdated\"),\n onDelete: sinonSpy(TestFuncModel, \"onDelete\"),\n onDeleted: sinonSpy(TestFuncModel, \"onDeleted\"),\n onInsertElement: sinonSpy(TestFuncModel, \"onInsertElement\"),\n onInsertedElement: sinonSpy(TestFuncModel, \"onInsertedElement\"),\n onUpdateElement: sinonSpy(TestFuncModel, \"onUpdateElement\"),\n onUpdatedElement: sinonSpy(TestFuncModel, \"onUpdatedElement\"),\n onDeleteElement: sinonSpy(TestFuncModel, \"onDeleteElement\"),\n onDeletedElement: sinonSpy(TestFuncModel, \"onDeletedElement\"),\n },\n partition: {\n onSubModelInsert: sinonSpy(TestFuncPartition, \"onSubModelInsert\"),\n onSubModelInserted: sinonSpy(TestFuncPartition, \"onSubModelInserted\"),\n onSubModelDelete: sinonSpy(TestFuncPartition, \"onSubModelDelete\"),\n onSubModelDeleted: sinonSpy(TestFuncPartition, \"onSubModelDeleted\"),\n },\n breakdown: {\n onInsert: sinonSpy(Breakdown, \"onInsert\"),\n onInserted: sinonSpy(Breakdown, \"onInserted\"),\n onUpdate: sinonSpy(Breakdown, \"onUpdate\"),\n onUpdated: sinonSpy(Breakdown, \"onUpdated\"),\n onDelete: sinonSpy(Breakdown, \"onDelete\"),\n onDeleted: sinonSpy(Breakdown, \"onDeleted\"),\n onChildDelete: sinonSpy(Breakdown, \"onChildDelete\"),\n onChildDeleted: sinonSpy(Breakdown, \"onChildDeleted\"),\n onChildInsert: sinonSpy(Breakdown, \"onChildInsert\"),\n onChildInserted: sinonSpy(Breakdown, \"onChildInserted\"),\n onChildUpdate: sinonSpy(Breakdown, \"onChildUpdate\"),\n onChildUpdated: sinonSpy(Breakdown, \"onChildUpdated\"),\n onChildAdd: sinonSpy(Breakdown, \"onChildAdd\"),\n onChildAdded: sinonSpy(Breakdown, \"onChildAdded\"),\n onChildDrop: sinonSpy(Breakdown, \"onChildDrop\"),\n onChildDropped: sinonSpy(Breakdown, \"onChildDropped\"),\n },\n aspect: {\n onInsert: sinonSpy(TestFuncAspect, \"onInsert\"),\n onInserted: sinonSpy(TestFuncAspect, \"onInserted\"),\n onUpdate: sinonSpy(TestFuncAspect, \"onUpdate\"),\n onUpdated: sinonSpy(TestFuncAspect, \"onUpdated\"),\n onDelete: sinonSpy(TestFuncAspect, \"onDelete\"),\n onDeleted: sinonSpy(TestFuncAspect, \"onDeleted\"),\n },\n };\n\n assert.equal(iModelDb.channels.queryChannelRoot(ChannelControl.sharedChannelName), IModel.rootSubjectId);\n\n const codeSpec = CodeSpec.create(iModelDb, \"Test Functional Elements\", CodeScopeSpec.Type.Model);\n iModelDb.codeSpecs.insert(codeSpec);\n assert.isTrue(Id64.isValidId64(codeSpec.id));\n\n // create a channel for all elements in this test\n assert.isUndefined(iModelDb.channels.queryChannelRoot(testChannelKey1));\n const subject1Id = iModelDb.channels.insertChannelSubject({ subjectName: \"Test Functional Subject\", channelKey: testChannelKey1 });\n assert.equal(iModelDb.channels.queryChannelRoot(testChannelKey1), subject1Id);\n\n const partitionCode = FunctionalPartition.createCode(iModelDb, subject1Id, \"Test Functional Model\");\n const partitionProps = {\n classFullName: TestFuncPartition.classFullName, model: IModel.repositoryModelId,\n parent: new SubjectOwnsPartitionElements(subject1Id), code: partitionCode,\n };\n\n iModelDb.channels.addAllowedChannel(testChannelKey1);\n let partitionId = iModelDb.elements.insertElement(partitionProps);\n\n const modelId = testChannel(testChannelKey1, () => iModelDb.models.insertModel({ classFullName: TestFuncModel.classFullName, modeledElement: { id: partitionId } }), [spy.model.onInsert]);\n\n assert.isTrue(Id64.isValidId64(modelId));\n assert.isTrue(spy.model.onInsert.calledOnce);\n assert.isTrue(spy.model.onInserted.calledOnce);\n assert.equal(spy.model.onInserted.getCall(0).args[0].id, modelId);\n assert.isFalse(spy.model.onUpdate.called, \"model insert should not call onUpdate\");\n assert.isFalse(spy.model.onUpdated.called, \"model insert should not call onUpdated\");\n\n assert.isTrue(spy.partition.onSubModelInsert.calledOnce);\n assert.isTrue(spy.partition.onSubModelInserted.calledOnce);\n assert.equal(spy.partition.onSubModelInserted.getCall(0).args[0].subModelId, modelId, \"Element.onSubModelInserted should have correct subModelId\");\n\n expect(() => iModelDb.channels.insertChannelSubject({ subjectName: \"Test Functional Subject 2\", channelKey: testChannelKey1 })).to.throw(`Channel ${testChannelKey1} root already exist`);\n const subject2Id = iModelDb.channels.insertChannelSubject({ subjectName: \"Test Functional Subject 2\", channelKey: testChannelKey2 });\n iModelDb.channels.addAllowedChannel(testChannelKey2);\n\n expect(() => iModelDb.channels.insertChannelSubject({ subjectName: \"Nested Subject\", parentSubjectId: subject2Id, channelKey: \"nested channel\" })).to.throw(\"may not nest\");\n\n partitionProps.code.value = \"Test Func 2\";\n partitionProps.parent = new SubjectOwnsPartitionElements(subject2Id);\n partitionId = iModelDb.elements.insertElement(partitionProps);\n\n const modelId2 = iModelDb.models.insertModel({ classFullName: TestFuncModel.classFullName, modeledElement: { id: partitionId } });\n assert.isTrue(Id64.isValidId64(modelId2));\n assert.equal(spy.model.onInserted.getCall(1).args[0].id, modelId2, \"second insert should set new id\");\n assert.equal(spy.model.onInsert.callCount, 2);\n assert.equal(spy.model.onInserted.callCount, 2);\n assert.equal(spy.partition.onSubModelInserted.getCall(1).args[0].subModelId, modelId2, \"Element.onSubModelInserted should have correct subModelId\");\n\n const model2 = iModelDb.models.getModel(modelId2);\n testChannel(testChannelKey2, () => model2.update(), []);\n assert.equal(spy.model.onUpdated.getCall(0).args[0].id, modelId2);\n assert.equal(spy.model.onUpdate.callCount, 2);\n assert.equal(spy.model.onUpdated.callCount, 1);\n\n testChannel(testChannelKey2, () => model2.delete(), [spy.model.onDelete, spy.partition.onSubModelDelete]);\n assert.isTrue(spy.model.onDelete.calledOnce);\n assert.isTrue(spy.model.onDeleted.calledOnce);\n assert.equal(spy.model.onDeleted.getCall(0).args[0].id, modelId2);\n assert.isTrue(spy.partition.onSubModelDelete.calledOnce);\n assert.isTrue(spy.partition.onSubModelDeleted.calledOnce);\n assert.equal(spy.partition.onSubModelDeleted.getCall(0).args[0].subModelId, modelId2);\n\n const breakdownProps = { classFullName: Breakdown.classFullName, model: modelId, code: { spec: codeSpec.id, scope: modelId, value: \"Breakdown1\" } };\n const breakdownId = testChannel(testChannelKey1, () => elements.insertElement(breakdownProps), [spy.model.onInsertElement, spy.breakdown.onInsert]);\n assert.isTrue(Id64.isValidId64(breakdownId));\n assert.isTrue(spy.model.onInsertElement.calledOnce);\n assert.isTrue(spy.model.onInsertedElement.calledOnce);\n assert.equal(spy.model.onInsertedElement.getCall(0).args[0].elementId, breakdownId);\n\n assert.isTrue(spy.breakdown.onInsert.calledOnce);\n assert.isTrue(spy.breakdown.onInserted.calledOnce);\n assert.equal(spy.breakdown.onInserted.getCall(0).args[0].id, breakdownId);\n assert.equal(spy.breakdown.onInsert.getCall(0).args[0].props, breakdownProps);\n\n const breakdown2Props: ElementProps = { classFullName: Breakdown.classFullName, model: modelId, code: { spec: codeSpec.id, scope: modelId, value: \"badval\" } };\n // TestFuncModel.onInsertElement throws for this code.value\n expect(() => elements.insertElement(breakdown2Props)).to.throw(\"bad element\");\n\n breakdown2Props.code.value = \"Breakdown2\";\n breakdown2Props.userLabel = \"start label\"; // gets overwritten in `onInsert`\n const bd2 = elements.insertElement(breakdown2Props);\n\n const aspect = { classFullName: TestFuncAspect.classFullName, element: new ElementOwnsUniqueAspect(bd2), strProp: \"prop 1\" };\n\n TestFuncAspect.expectedVal = aspect.strProp;\n\n testChannel(testChannelKey1, () => elements.insertAspect(aspect), [spy.aspect.onInsert]);\n assert.isTrue(spy.aspect.onInsert.calledOnce);\n assert.isTrue(spy.aspect.onInserted.calledOnce);\n assert.isFalse(spy.aspect.onUpdate.called);\n assert.isFalse(spy.aspect.onUpdated.called);\n assert.equal(spy.aspect.onInserted.getCall(0).args[0].props.element.id, bd2, \"elemId from ElementAspect.onInserted\");\n\n aspect.strProp = \"prop 2\";\n TestFuncAspect.expectedVal = aspect.strProp;\n testChannel(testChannelKey1, () => elements.updateAspect(aspect), [spy.aspect.onUpdate]);\n assert.equal(spy.aspect.onInsert.callCount, 1, \"ElementAspect.onInsert should not be called on update\");\n assert.equal(spy.aspect.onInserted.callCount, 1, \"ElementAspect.onInserted should should not be called on update\");\n assert.equal(spy.aspect.onUpdate.callCount, 1);\n assert.equal(spy.aspect.onUpdated.callCount, 1);\n assert.equal(spy.aspect.onUpdated.getCall(0).args[0].props.element.id, bd2, \"from ElementAspect.onUpdated\");\n const aspects = elements.getAspects(bd2, TestFuncAspect.classFullName);\n assert.equal(aspects.length, 1);\n testChannel(testChannelKey1, () => elements.deleteAspect(aspects[0].id), [spy.aspect.onDelete]);\n assert.equal(spy.aspect.onDelete.callCount, 1);\n assert.equal(spy.aspect.onDeleted.callCount, 1);\n assert.equal(spy.aspect.onDelete.getCall(0).args[0].aspectId, aspects[0].id);\n assert.equal(spy.aspect.onDeleted.getCall(0).args[0].aspectId, aspects[0].id);\n\n let bd2el = elements.getElement(bd2);\n assert.equal(bd2el.userLabel, insertedLabel, \"label was modified by onInsert\");\n expect(iModelDb.channels.getChannelKey(bd2)).equals(testChannelKey1);\n\n bd2el.userLabel = \"nothing\";\n testChannel(testChannelKey1, () => bd2el.update(), [spy.breakdown.onUpdate, spy.breakdown.onUpdated]);\n bd2el = elements.getElement(bd2);\n assert.equal(bd2el.userLabel, updatedLabel, \"label was modified in onUpdate\");\n assert.equal(spy.breakdown.onUpdate.callCount, 1);\n assert.equal(spy.breakdown.onUpdated.callCount, 1);\n assert.equal(spy.breakdown.onUpdate.getCall(0).args[0].props.id, bd2);\n assert.equal(spy.breakdown.onUpdated.getCall(0).args[0].id, bd2);\n\n testChannel(testChannelKey1, () => bd2el.delete(), [spy.breakdown.onDelete]);\n assert.equal(spy.breakdown.onDelete.callCount, 1);\n assert.equal(spy.breakdown.onDeleted.callCount, 1);\n const deleteArg = spy.breakdown.onDelete.getCall(0).args[0];\n assert.equal(deleteArg.id, bd2);\n assert.equal(deleteArg.model, bd2el.model);\n assert.equal(deleteArg.federationGuid, bd2el.federationGuid);\n assert.equal(spy.breakdown.onDeleted.getCall(0).args[0].id, bd2);\n\n const breakdown3Props = {\n classFullName: Breakdown.classFullName,\n model: modelId,\n code: { spec: codeSpec.id, scope: modelId, value: \"bd3\" },\n };\n const bd3 = elements.insertElement(breakdown3Props);\n\n const componentProps = {\n classFullName: Component.classFullName,\n model: modelId,\n parent: { id: breakdownId, relClassName: ElementOwnsChildElements.classFullName },\n code: { spec: codeSpec.id, scope: modelId, value: \"Component1\" },\n };\n const componentId = testChannel(testChannelKey1, () => elements.insertElement(componentProps), []);\n assert.isTrue(Id64.isValidId64(componentId));\n assert.equal(spy.breakdown.onChildInserted.callCount, 1);\n assert.equal(spy.breakdown.onChildInserted.getCall(0).args[0].childId, componentId);\n\n // test model and element callbacks for updateElement\n const component1 = elements.getElement(componentId);\n testChannel(testChannelKey1, () => component1.update(), [spy.model.onUpdateElement, spy.model.onUpdatedElement]);\n assert.equal(spy.model.onUpdateElement.callCount, 1);\n assert.equal(spy.model.onUpdatedElement.callCount, 1);\n assert.equal(spy.model.onUpdatedElement.getCall(0).args[0].elementId, componentId);\n assert.equal(spy.breakdown.onChildUpdate.callCount, 1);\n assert.equal(spy.breakdown.onChildUpdated.callCount, 1);\n assert.equal(spy.breakdown.onChildUpdate.getCall(0).args[0].parentId, breakdownId);\n assert.equal(spy.breakdown.onChildUpdated.getCall(0).args[0].childId, componentId);\n\n componentProps.code.value = \"comp2\";\n const comp2 = elements.insertElement(componentProps);\n assert.equal(spy.breakdown.onChildInserted.callCount, 2);\n assert.equal(spy.breakdown.onChildInserted.getCall(1).args[0].childId, comp2);\n const el2 = elements.getElement(comp2);\n\n spy.model.onDeleteElement.resetHistory();\n spy.model.onDeletedElement.resetHistory();\n TestFuncModel.dontDelete = comp2; // block deletion through model\n expect(() => el2.delete()).to.throw(\"dont delete my element\");\n TestFuncModel.dontDelete = \"\"; // allow deletion through model\n Breakdown.dontDeleteChild = comp2; // but block through parent\n expect(() => el2.delete()).to.throw(\"dont delete my child\"); // nope\n assert.equal(spy.model.onDeleteElement.callCount, 2, \"Model.onElementDelete gets called even though element is not really deleted\");\n assert.equal(spy.model.onDeletedElement.callCount, 0, \"make sure Model.onElementDeleted did not get called\");\n Breakdown.dontDeleteChild = \"\"; // now fully allow delete\n el2.delete();\n assert.equal(spy.model.onDeleteElement.callCount, 3, \"Model.onElementDelete should be called again\");\n assert.equal(spy.model.onDeletedElement.callCount, 1);\n assert.equal(spy.model.onDeletedElement.getCall(0).args[0].elementId, comp2);\n assert.equal(spy.breakdown.onChildDeleted.callCount, 1);\n assert.equal(spy.breakdown.onChildDeleted.getCall(0).args[0].childId, comp2);\n\n // next we make sure that changing the parent of an element calls the \"onChildAdd/Drop/Added/Dropped\" callbacks.\n // To do this we switch a component's parent from \"breakDownId\" to \"bc3\"\n componentProps.parent.id = bd3;\n const comp3 = elements.insertElement(componentProps);\n const compEl3 = elements.getElementProps(comp3);\n compEl3.parent!.id = breakdownId;\n\n testChannel(testChannelKey1, () => elements.updateElement(compEl3), []);\n\n assert.equal(spy.breakdown.onChildAdd.callCount, 1);\n assert.equal(spy.breakdown.onChildAdd.getCall(0).args[0].parentId, breakdownId);\n assert.equal(spy.breakdown.onChildAdd.getCall(0).args[0].childProps.id, comp3);\n assert.equal(spy.breakdown.onChildDrop.callCount, 1);\n assert.equal(spy.breakdown.onChildDrop.getCall(0).args[0].parentId, bd3);\n assert.equal(spy.breakdown.onChildDrop.getCall(0).args[0].childId, comp3);\n assert.equal(spy.breakdown.onChildAdded.callCount, 1);\n assert.equal(spy.breakdown.onChildAdded.getCall(0).args[0].parentId, breakdownId);\n assert.equal(spy.breakdown.onChildAdded.getCall(0).args[0].childId, comp3);\n assert.equal(spy.breakdown.onChildDropped.callCount, 1);\n assert.equal(spy.breakdown.onChildDropped.getCall(0).args[0].parentId, bd3);\n assert.equal(spy.breakdown.onChildDropped.getCall(0).args[0].childId, comp3);\n\n iModelDb.saveChanges(\"Insert Functional elements\");\n\n // unregister test schema to make sure it will throw exceptions if it is not present (since it has the \"SchemaHasBehavior\" custom attribute)\n Schemas.unregisterSchema(TestSchema.schemaName);\n const errMsg = \"Schema [TestFunctional] not registered, but is marked with SchemaHasBehavior\";\n expect(() => elements.deleteElement(breakdownId)).to.throw(errMsg);\n assert.isDefined(elements.getElement(breakdownId), \"should not have been deleted\");\n expect(() => elements.updateElement(breakdownProps)).to.throw(errMsg);\n breakdownProps.code.value = \"Breakdown 2\";\n expect(() => elements.insertElement(breakdownProps)).to.throw(errMsg);\n\n iModelDb.close();\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericDomain.test.d.ts","sourceRoot":"","sources":["../../../../src/test/schema/GenericDomain.test.ts"],"names":[],"mappings":""}
|