@itwin/core-backend 5.2.0-dev.30 → 5.2.0-dev.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/BackendHubAccess.d.ts +2 -0
- package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.js.map +1 -1
- package/lib/cjs/BlobContainerService.js.map +1 -1
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js +3 -2
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/CatalogDb.js.map +1 -1
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +2 -2
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +248 -248
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.js +5 -5
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeService.js.map +1 -1
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.js.map +1 -1
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/FontFile.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeographicCRSServices.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.js +8 -8
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelDbFonts.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/ImageSourceConversion.js.map +1 -1
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/LocalHub.js +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/LockControl.js.map +1 -1
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.js.map +1 -1
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SchemaUtils.js.map +1 -1
- package/lib/cjs/SheetIndex.js.map +1 -1
- package/lib/cjs/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/StashManager.js.map +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +3 -5
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.js +24 -17
- package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.js +8 -0
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.d.ts +46 -27
- package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js +201 -113
- package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
- package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
- package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
- package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
- package/lib/cjs/internal/FontFileImpl.js.map +1 -1
- package/lib/cjs/internal/HubMock.js.map +1 -1
- package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/cjs/internal/NativePlatform.js.map +1 -1
- package/lib/cjs/internal/NoLocks.js.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/annotations/fields.d.ts +2 -12
- package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
- package/lib/cjs/internal/annotations/fields.js +49 -45
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/cjs/rpc/multipart.js.map +1 -1
- package/lib/cjs/rpc/tracing.js.map +1 -1
- package/lib/cjs/rpc/web/logging.js.map +1 -1
- package/lib/cjs/rpc/web/request.js.map +1 -1
- package/lib/cjs/rpc/web/response.js.map +1 -1
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.d.ts +2 -0
- package/lib/esm/BackendHubAccess.d.ts.map +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/BackendLoggerCategory.js.map +1 -1
- package/lib/esm/BisCoreSchema.js.map +1 -1
- package/lib/esm/BlobContainerService.js.map +1 -1
- package/lib/esm/BriefcaseManager.d.ts.map +1 -1
- package/lib/esm/BriefcaseManager.js +3 -2
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/CatalogDb.js.map +1 -1
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.js +2 -2
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangedElementsDb.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +248 -248
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChannelControl.js.map +1 -1
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/ClassRegistry.js +5 -5
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeService.js.map +1 -1
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/CustomViewState3dCreator.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementGraphics.js.map +1 -1
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/EntityReferences.js.map +1 -1
- package/lib/esm/ExportGraphics.js.map +1 -1
- package/lib/esm/ExternalSource.js.map +1 -1
- package/lib/esm/FontFile.js.map +1 -1
- package/lib/esm/GeoCoordConfig.js.map +1 -1
- package/lib/esm/GeographicCRSServices.js.map +1 -1
- package/lib/esm/GeometrySummary.js +47 -47
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.js +8 -8
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelDbFonts.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/esm/IModelJsFs.js.map +1 -1
- package/lib/esm/ImageSourceConversion.js.map +1 -1
- package/lib/esm/IpcHost.js.map +1 -1
- package/lib/esm/LineStyle.js.map +1 -1
- package/lib/esm/LocalHub.js +1 -1
- package/lib/esm/LocalHub.js.map +1 -1
- package/lib/esm/LocalhostIpcHost.js.map +1 -1
- package/lib/esm/LockControl.js.map +1 -1
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/NativeAppStorage.js.map +1 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/NavigationRelationship.js.map +1 -1
- package/lib/esm/PromiseMemoizer.js.map +1 -1
- package/lib/esm/PropertyStore.js.map +1 -1
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/RpcBackend.js.map +1 -1
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/Schema.js.map +1 -1
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SchemaUtils.js.map +1 -1
- package/lib/esm/SheetIndex.js.map +1 -1
- package/lib/esm/SqliteChangesetReader.js.map +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/StashManager.js.map +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +4 -6
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/FrameGeometry.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js +1 -1
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.js +24 -17
- package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.js +8 -0
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.d.ts +46 -27
- package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js +202 -114
- package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/FunctionalSchema.js.map +1 -1
- package/lib/esm/domains/GenericElements.js.map +1 -1
- package/lib/esm/domains/GenericSchema.js.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/ElementLRUCache.js.map +1 -1
- package/lib/esm/internal/FontFileImpl.js.map +1 -1
- package/lib/esm/internal/HubMock.js.map +1 -1
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/esm/internal/NativePlatform.js.map +1 -1
- package/lib/esm/internal/NoLocks.js.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/annotations/fields.d.ts +2 -12
- package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
- package/lib/esm/internal/annotations/fields.js +51 -47
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/esm/rpc/multipart.js.map +1 -1
- package/lib/esm/rpc/tracing.js.map +1 -1
- package/lib/esm/rpc/web/logging.js.map +1 -1
- package/lib/esm/rpc/web/request.js.map +1 -1
- package/lib/esm/rpc/web/response.js.map +1 -1
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/esm/test/AdvancedEqual.js.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
- package/lib/esm/test/AttachDb.test.js +11 -11
- package/lib/esm/test/AttachDb.test.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/GeometryTestUtil.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
- package/lib/esm/test/IpcHost.test.js.map +1 -1
- package/lib/esm/test/KnownTestLocations.js.map +1 -1
- package/lib/esm/test/PrintElementTree.js.map +1 -1
- package/lib/esm/test/PropertyDb.test.js.map +1 -1
- package/lib/esm/test/RevisionUtility.js.map +1 -1
- package/lib/esm/test/SchemaUtils.test.js +25 -25
- package/lib/esm/test/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js +181 -65
- package/lib/esm/test/annotations/Fields.test.js.map +1 -1
- package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js +417 -54
- package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts +44 -0
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js +18 -2
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
- package/lib/esm/test/categories/Category.test.js.map +1 -1
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
- package/lib/esm/test/ecdb/CTE.test.js +88 -88
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +72 -72
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +326 -326
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +22 -22
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js +13 -13
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/UrlLink.test.js.map +1 -1
- package/lib/esm/test/font/FontFile.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +33 -33
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/imageData.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +44 -44
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/misc/DevTools.test.js.map +1 -1
- package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
- package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
- package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
- package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
- package/lib/esm/test/rpc/response.test.js.map +1 -1
- package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +117 -117
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
- package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
- package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/Setting.test.js.map +1 -1
- package/lib/esm/test/standalone/Settings.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/workspace/Settings.js.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +13 -13
|
@@ -182,11 +182,11 @@ describe("ECDb", () => {
|
|
|
182
182
|
try {
|
|
183
183
|
const fileName1 = "source_file.ecdb";
|
|
184
184
|
const ecdbPath1 = path.join(outDir, fileName1);
|
|
185
|
-
const testECDb = __addDisposableResource(env_8, ECDbTestHelper.createECDb(outDir, fileName1, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
186
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
187
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
188
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
189
|
-
</ECEntityClass>
|
|
185
|
+
const testECDb = __addDisposableResource(env_8, ECDbTestHelper.createECDb(outDir, fileName1, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
186
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
187
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
188
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
189
|
+
</ECEntityClass>
|
|
190
190
|
</ECSchema>`), false);
|
|
191
191
|
assert.isTrue(testECDb.isOpen);
|
|
192
192
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -198,9 +198,9 @@ describe("ECDb", () => {
|
|
|
198
198
|
return res.id;
|
|
199
199
|
});
|
|
200
200
|
// override profile version to 55.0.0 which is currently not supported
|
|
201
|
-
testECDb.withSqliteStatement(`
|
|
202
|
-
UPDATE be_Prop SET
|
|
203
|
-
StrData = '{"major":55,"minor":0,"sub1":0,"sub2":0}'
|
|
201
|
+
testECDb.withSqliteStatement(`
|
|
202
|
+
UPDATE be_Prop SET
|
|
203
|
+
StrData = '{"major":55,"minor":0,"sub1":0,"sub2":0}'
|
|
204
204
|
WHERE Namespace = 'ec_Db' AND Name = 'SchemaVersion'`, (stmt) => { stmt.step(); });
|
|
205
205
|
testECDb.saveChanges();
|
|
206
206
|
const runDbListPragmaUsingStatement = (ecdb) => {
|
|
@@ -302,11 +302,11 @@ describe("ECDb", () => {
|
|
|
302
302
|
try {
|
|
303
303
|
const fileName1 = "source_file.ecdb";
|
|
304
304
|
const ecdbPath1 = path.join(outDir, fileName1);
|
|
305
|
-
const testECDb = __addDisposableResource(env_9, ECDbTestHelper.createECDb(outDir, fileName1, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
306
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
307
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
308
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
309
|
-
</ECEntityClass>
|
|
305
|
+
const testECDb = __addDisposableResource(env_9, ECDbTestHelper.createECDb(outDir, fileName1, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
306
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
307
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
308
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
309
|
+
</ECEntityClass>
|
|
310
310
|
</ECSchema>`), false);
|
|
311
311
|
assert.isTrue(testECDb.isOpen);
|
|
312
312
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -406,11 +406,11 @@ describe("ECDb", () => {
|
|
|
406
406
|
{
|
|
407
407
|
const env_11 = { stack: [], error: void 0, hasError: false };
|
|
408
408
|
try {
|
|
409
|
-
const testECDb = __addDisposableResource(env_11, ECDbTestHelper.createECDb(outDir, fileName, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
410
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
411
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
412
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
413
|
-
</ECEntityClass>
|
|
409
|
+
const testECDb = __addDisposableResource(env_11, ECDbTestHelper.createECDb(outDir, fileName, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
410
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
411
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
412
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
413
|
+
</ECEntityClass>
|
|
414
414
|
</ECSchema>`), false);
|
|
415
415
|
assert.isTrue(testECDb.isOpen);
|
|
416
416
|
id = testECDb.withCachedWriteStatement("INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)", (stmt) => {
|
|
@@ -564,19 +564,19 @@ describe("ECDb", () => {
|
|
|
564
564
|
it("test unit labels in composite formats", () => {
|
|
565
565
|
const ecdb = ECDbTestHelper.createECDb(outDir, "TestCompositeFormats.ecdb");
|
|
566
566
|
const xmlpathOriginal = path.join(outDir, "compositeFormats1.ecschema.xml");
|
|
567
|
-
IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version="1.0" encoding="utf-8" ?>
|
|
568
|
-
<ECSchema schemaName="TestCompositeFormats" alias="tcf" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
569
|
-
<ECSchemaReference name="Units" version="01.00.00" alias="u" />
|
|
570
|
-
<Unit typeName="TestUnit" displayLabel="Test Unit" definition="u:M" numerator="1.0" phenomenon="u:LENGTH" unitSystem="u:METRIC" />
|
|
571
|
-
<Format typeName="TestFormat" displayLabel="TestFormat" roundFactor="0.3" type="Fractional" showSignOption="OnlyNegative" formatTraits="TrailZeroes|KeepSingleZero" precision="4" decimalSeparator="." thousandSeparator="," uomSeparator=" ">
|
|
572
|
-
<Composite>
|
|
573
|
-
<Unit>u:KM</Unit>
|
|
574
|
-
<Unit label="m">TestUnit</Unit>
|
|
575
|
-
<Unit label="">u:CM</Unit>
|
|
576
|
-
<Unit label="mm">u:MM</Unit>
|
|
577
|
-
</Composite>
|
|
578
|
-
</Format>
|
|
579
|
-
<KindOfQuantity typeName="TestKOQ2" description="Test KOQ2" displayLabel="TestKOQ2" persistenceUnit="u:M" presentationUnits="TestFormat" relativeError="10e-3" />
|
|
567
|
+
IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version="1.0" encoding="utf-8" ?>
|
|
568
|
+
<ECSchema schemaName="TestCompositeFormats" alias="tcf" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
569
|
+
<ECSchemaReference name="Units" version="01.00.00" alias="u" />
|
|
570
|
+
<Unit typeName="TestUnit" displayLabel="Test Unit" definition="u:M" numerator="1.0" phenomenon="u:LENGTH" unitSystem="u:METRIC" />
|
|
571
|
+
<Format typeName="TestFormat" displayLabel="TestFormat" roundFactor="0.3" type="Fractional" showSignOption="OnlyNegative" formatTraits="TrailZeroes|KeepSingleZero" precision="4" decimalSeparator="." thousandSeparator="," uomSeparator=" ">
|
|
572
|
+
<Composite>
|
|
573
|
+
<Unit>u:KM</Unit>
|
|
574
|
+
<Unit label="m">TestUnit</Unit>
|
|
575
|
+
<Unit label="">u:CM</Unit>
|
|
576
|
+
<Unit label="mm">u:MM</Unit>
|
|
577
|
+
</Composite>
|
|
578
|
+
</Format>
|
|
579
|
+
<KindOfQuantity typeName="TestKOQ2" description="Test KOQ2" displayLabel="TestKOQ2" persistenceUnit="u:M" presentationUnits="TestFormat" relativeError="10e-3" />
|
|
580
580
|
</ECSchema>`);
|
|
581
581
|
ecdb.importSchema(xmlpathOriginal);
|
|
582
582
|
ecdb.saveChanges();
|
|
@@ -590,19 +590,19 @@ describe("ECDb", () => {
|
|
|
590
590
|
}
|
|
591
591
|
});
|
|
592
592
|
const xmlpathUpdated = path.join(outDir, "compositeFormats2.ecschema.xml");
|
|
593
|
-
IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version="1.0" encoding="utf-8" ?>
|
|
594
|
-
<ECSchema schemaName="TestCompositeFormats" alias="tcf" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
595
|
-
<ECSchemaReference name="Units" version="01.00.00" alias="u" />
|
|
596
|
-
<Unit typeName="TestUnit" displayLabel="Test Unit" definition="u:M" numerator="1.0" phenomenon="u:LENGTH" unitSystem="u:METRIC" />
|
|
597
|
-
<Format typeName="TestFormat" displayLabel="TestFormat" roundFactor="0.3" type="Fractional" showSignOption="OnlyNegative" formatTraits="TrailZeroes|KeepSingleZero" precision="4" decimalSeparator="." thousandSeparator="," uomSeparator=" ">
|
|
598
|
-
<Composite spacer="=" includeZero="False">
|
|
599
|
-
<Unit label="">u:KM</Unit>
|
|
600
|
-
<Unit label="m">TestUnit</Unit>
|
|
601
|
-
<Unit>u:CM</Unit>
|
|
602
|
-
<Unit label="mm">u:MM</Unit>
|
|
603
|
-
</Composite>
|
|
604
|
-
</Format>
|
|
605
|
-
<KindOfQuantity typeName="TestKOQ2" description="Test KOQ2" displayLabel="TestKOQ2" persistenceUnit="u:M" presentationUnits="TestFormat" relativeError="10e-3" />
|
|
593
|
+
IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version="1.0" encoding="utf-8" ?>
|
|
594
|
+
<ECSchema schemaName="TestCompositeFormats" alias="tcf" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
595
|
+
<ECSchemaReference name="Units" version="01.00.00" alias="u" />
|
|
596
|
+
<Unit typeName="TestUnit" displayLabel="Test Unit" definition="u:M" numerator="1.0" phenomenon="u:LENGTH" unitSystem="u:METRIC" />
|
|
597
|
+
<Format typeName="TestFormat" displayLabel="TestFormat" roundFactor="0.3" type="Fractional" showSignOption="OnlyNegative" formatTraits="TrailZeroes|KeepSingleZero" precision="4" decimalSeparator="." thousandSeparator="," uomSeparator=" ">
|
|
598
|
+
<Composite spacer="=" includeZero="False">
|
|
599
|
+
<Unit label="">u:KM</Unit>
|
|
600
|
+
<Unit label="m">TestUnit</Unit>
|
|
601
|
+
<Unit>u:CM</Unit>
|
|
602
|
+
<Unit label="mm">u:MM</Unit>
|
|
603
|
+
</Composite>
|
|
604
|
+
</Format>
|
|
605
|
+
<KindOfQuantity typeName="TestKOQ2" description="Test KOQ2" displayLabel="TestKOQ2" persistenceUnit="u:M" presentationUnits="TestFormat" relativeError="10e-3" />
|
|
606
606
|
</ECSchema>`);
|
|
607
607
|
ecdb.importSchema(xmlpathUpdated);
|
|
608
608
|
ecdb.saveChanges();
|
|
@@ -620,23 +620,23 @@ describe("ECDb", () => {
|
|
|
620
620
|
it("should log warning but continue if new schema changes are observed without version bump", async () => {
|
|
621
621
|
const ecdb = ECDbTestHelper.createECDb(outDir, "importSchemaNoVersionBump.ecdb");
|
|
622
622
|
const xmlpathOriginal = path.join(outDir, "importSchemaNoVersionBump1.ecschema.xml");
|
|
623
|
-
IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version="1.0" encoding="UTF-8"?>
|
|
624
|
-
<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
625
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
626
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
627
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
628
|
-
</ECEntityClass>
|
|
623
|
+
IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version="1.0" encoding="UTF-8"?>
|
|
624
|
+
<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
625
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
626
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
627
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
628
|
+
</ECEntityClass>
|
|
629
629
|
</ECSchema>`);
|
|
630
630
|
ecdb.importSchema(xmlpathOriginal);
|
|
631
631
|
ecdb.saveChanges();
|
|
632
632
|
const xmlpathUpdated = path.join(outDir, "importSchemaNoVersionBump2.ecschema.xml");
|
|
633
|
-
IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version="1.0" encoding="UTF-8"?>
|
|
634
|
-
<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
635
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
636
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
637
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
638
|
-
<ECProperty propertyName="Height" typeName="int"/>
|
|
639
|
-
</ECEntityClass>
|
|
633
|
+
IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version="1.0" encoding="UTF-8"?>
|
|
634
|
+
<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
635
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
636
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
637
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
638
|
+
<ECProperty propertyName="Height" typeName="int"/>
|
|
639
|
+
</ECEntityClass>
|
|
640
640
|
</ECSchema>`);
|
|
641
641
|
let calledCategory = "";
|
|
642
642
|
let calledMessage = "";
|
|
@@ -674,10 +674,10 @@ describe("ECDb", () => {
|
|
|
674
674
|
it("should drop a single schema", () => {
|
|
675
675
|
const env_16 = { stack: [], error: void 0, hasError: false };
|
|
676
676
|
try {
|
|
677
|
-
const ecdb = __addDisposableResource(env_16, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
678
|
-
<ECEntityClass typeName="Foo" modifier="Sealed">
|
|
679
|
-
<ECProperty propertyName="n" typeName="int"/>
|
|
680
|
-
</ECEntityClass>
|
|
677
|
+
const ecdb = __addDisposableResource(env_16, ECDbTestHelper.createECDb(outDir, "test.ecdb", `<ECSchema schemaName="Test" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
678
|
+
<ECEntityClass typeName="Foo" modifier="Sealed">
|
|
679
|
+
<ECProperty propertyName="n" typeName="int"/>
|
|
680
|
+
</ECEntityClass>
|
|
681
681
|
</ECSchema>`), false);
|
|
682
682
|
assert.isTrue(ecdb.isOpen);
|
|
683
683
|
ecdb.saveChanges();
|
|
@@ -697,18 +697,18 @@ describe("ECDb", () => {
|
|
|
697
697
|
it("should drop multiple schemas", () => {
|
|
698
698
|
const env_17 = { stack: [], error: void 0, hasError: false };
|
|
699
699
|
try {
|
|
700
|
-
const testSchema1Xml = `<?xml version="1.0" encoding="utf-8"?>
|
|
701
|
-
<ECSchema schemaName="TestSchema1" alias="ts1" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
702
|
-
<ECEntityClass typeName="TestClass1">
|
|
703
|
-
<ECProperty propertyName="Prop1" typeName="string"/>
|
|
704
|
-
</ECEntityClass>
|
|
700
|
+
const testSchema1Xml = `<?xml version="1.0" encoding="utf-8"?>
|
|
701
|
+
<ECSchema schemaName="TestSchema1" alias="ts1" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
702
|
+
<ECEntityClass typeName="TestClass1">
|
|
703
|
+
<ECProperty propertyName="Prop1" typeName="string"/>
|
|
704
|
+
</ECEntityClass>
|
|
705
705
|
</ECSchema>`;
|
|
706
|
-
const testSchema2Xml = `<?xml version="1.0" encoding="utf-8"?>
|
|
707
|
-
<ECSchema schemaName="TestSchema2" alias="ts2" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
708
|
-
<ECSchemaReference name="TestSchema1" version="01.00.00" alias="ts1"/>
|
|
709
|
-
<ECEntityClass typeName="TestClass2">
|
|
710
|
-
<ECProperty propertyName="Prop2" typeName="string"/>
|
|
711
|
-
</ECEntityClass>
|
|
706
|
+
const testSchema2Xml = `<?xml version="1.0" encoding="utf-8"?>
|
|
707
|
+
<ECSchema schemaName="TestSchema2" alias="ts2" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
708
|
+
<ECSchemaReference name="TestSchema1" version="01.00.00" alias="ts1"/>
|
|
709
|
+
<ECEntityClass typeName="TestClass2">
|
|
710
|
+
<ECProperty propertyName="Prop2" typeName="string"/>
|
|
711
|
+
</ECEntityClass>
|
|
712
712
|
</ECSchema>`;
|
|
713
713
|
const ecdb = __addDisposableResource(env_17, ECDbTestHelper.createECDb(outDir, "drop-multiple-schemas.ecdb"), false);
|
|
714
714
|
assert.isTrue(ecdb.isOpen);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECDb.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECDb.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { assert, expect } from \"chai\";\r\nimport * as path from \"path\";\r\nimport * as sinon from \"sinon\";\r\nimport { DbResult, Id64, Id64String, Logger, LogLevel } from \"@itwin/core-bentley\";\r\nimport { IModelJsFs } from \"../../IModelJsFs\";\r\nimport { ECDb, ECDbOpenMode, ECSqlInsertResult, ECSqlStatement, ECSqlWriteStatement, SqliteStatement, SqliteValue, SqliteValueType } from \"../../core-backend\";\r\nimport { KnownTestLocations } from \"../KnownTestLocations\";\r\nimport { ECDbTestHelper } from \"./ECDbTestHelper\";\r\nimport { QueryOptionsBuilder } from \"@itwin/core-common\";\r\nimport { EntityClass, SchemaContext, SchemaJsonLocater, SchemaKey } from \"@itwin/ecschema-metadata\";\r\n\r\ndescribe(\"ECDb\", () => {\r\n const outDir = KnownTestLocations.outputDir;\r\n\r\n it(\"should be able to create a new ECDb\", () => {\r\n using ecdb = ECDbTestHelper.createECDb(outDir, \"create.ecdb\");\r\n assert.isTrue(ecdb.isOpen);\r\n });\r\n\r\n it(\"should be able to close an ECDb\", () => {\r\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"close.ecdb\");\r\n assert.isTrue(ecdb.isOpen);\r\n ecdb.closeDb();\r\n assert.isFalse(ecdb.isOpen);\r\n });\r\n\r\n it(\"should be able to open an ECDb\", () => {\r\n const fileName = \"open.ecdb\";\r\n const ecdbPath: string = path.join(outDir, fileName);\r\n {\r\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\r\n assert.isTrue(testECDb.isOpen);\r\n }\r\n\r\n using ecdb = new ECDb();\r\n ecdb.openDb(ecdbPath, ECDbOpenMode.ReadWrite);\r\n assert.isTrue(ecdb.isOpen);\r\n });\r\n\r\n it(\"Open ECDb with upgrade option\", () => {\r\n const fileName = \"open.ecdb\";\r\n const ecdbPath: string = path.join(outDir, fileName);\r\n {\r\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\r\n assert.isTrue(testECDb.isOpen);\r\n }\r\n {\r\n using ecdb = new ECDb();\r\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly));\r\n }\r\n {\r\n using ecdb = new ECDb();\r\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.ReadWrite));\r\n }\r\n {\r\n using ecdb = new ECDb();\r\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.FileUpgrade));\r\n }\r\n\r\n });\r\n it(\"attach/detach newer profile version\", async () => {\r\n const fileName1 = \"source_file.ecdb\";\r\n const ecdbPath1: string = path.join(outDir, fileName1);\r\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName1,\r\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\r\n </ECEntityClass>\r\n </ECSchema>`);\r\n assert.isTrue(testECDb.isOpen);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n testECDb.withPreparedStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlStatement) => {\r\n const res: ECSqlInsertResult = stmt.stepForInsert();\r\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\r\n assert.isDefined(res.id);\r\n assert.isTrue(Id64.isValidId64(res.id!));\r\n return res.id!;\r\n });\r\n\r\n // override profile version to 55.0.0 which is currently not supported\r\n testECDb.withSqliteStatement(`\r\n UPDATE be_Prop SET\r\n StrData = '{\"major\":55,\"minor\":0,\"sub1\":0,\"sub2\":0}'\r\n WHERE Namespace = 'ec_Db' AND Name = 'SchemaVersion'`,\r\n (stmt: SqliteStatement) => { stmt.step(); });\r\n testECDb.saveChanges();\r\n\r\n const runDbListPragmaUsingStatement = (ecdb: ECDb) => {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return ecdb.withPreparedStatement(\"PRAGMA db_list\", (stmt: ECSqlStatement) => {\r\n const result: { alias: string, filename: string, profile: string }[] = [];\r\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n result.push(stmt.getRow());\r\n }\r\n return result;\r\n });\r\n }\r\n const runDbListPragmaCCQ = async (ecdb: ECDb) => {\r\n const reader = ecdb.createQueryReader(\"PRAGMA db_list\");\r\n const result: { alias: string, filename: string, profile: string }[] = [];\r\n while (await reader.step()) {\r\n result.push(reader.current.toRow());\r\n }\r\n return result;\r\n }\r\n using testECDb0 = ECDbTestHelper.createECDb(outDir, \"file2.ecdb\");\r\n // following call will not fail but unknow ECDb profile will cause it to be attach as SQLite.\r\n testECDb0.attachDb(ecdbPath1, \"source\");\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\r\n expect(runDbListPragmaUsingStatement(testECDb0)).deep.equals([\r\n {\r\n sno: 0,\r\n alias: \"main\",\r\n fileName: path.join(outDir, \"file2.ecdb\"),\r\n profile: \"ECDb\"\r\n },\r\n {\r\n sno: 1,\r\n alias: \"source\",\r\n fileName: path.join(outDir, \"source_file.ecdb\"),\r\n profile: \"SQLite\"\r\n }\r\n ]);\r\n testECDb0.detachDb(\"source\");\r\n expect(runDbListPragmaUsingStatement(testECDb0)).deep.equals([\r\n {\r\n sno: 0,\r\n alias: \"main\",\r\n fileName: path.join(outDir, \"file2.ecdb\"),\r\n profile: \"ECDb\"\r\n },\r\n ]);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\r\n\r\n using testECDb1 = ECDbTestHelper.createECDb(outDir, \"file4.ecdb\");\r\n testECDb1.attachDb(ecdbPath1, \"source\");\r\n const reader1 = testECDb1.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\r\n let expectThrow = false;\r\n try {\r\n await reader1.step();\r\n } catch (err) {\r\n if (err instanceof Error) {\r\n assert.equal(err.message, \"ECClass 'source.test.Person' does not exist or could not be loaded.\");\r\n expectThrow = true;\r\n }\r\n }\r\n assert.isTrue(expectThrow);\r\n expect(await runDbListPragmaCCQ(testECDb1)).deep.equals([\r\n {\r\n sno: 0,\r\n alias: \"main\",\r\n fileName: path.join(outDir, \"file4.ecdb\"),\r\n profile: \"ECDb\"\r\n },\r\n {\r\n sno: 1,\r\n alias: \"source\",\r\n fileName: path.join(outDir, \"source_file.ecdb\"),\r\n profile: \"SQLite\"\r\n }\r\n ]);\r\n testECDb1.detachDb(\"source\");\r\n expect(await runDbListPragmaCCQ(testECDb1)).deep.equals([\r\n {\r\n sno: 0,\r\n alias: \"main\",\r\n fileName: path.join(outDir, \"file4.ecdb\"),\r\n profile: \"ECDb\"\r\n },\r\n ]);\r\n });\r\n it(\"attach/detach file & db_list pragma\", async () => {\r\n const fileName1 = \"source_file.ecdb\";\r\n const ecdbPath1: string = path.join(outDir, fileName1);\r\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName1,\r\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\r\n </ECEntityClass>\r\n </ECSchema>`);\r\n assert.isTrue(testECDb.isOpen);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n testECDb.withPreparedStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlStatement) => {\r\n const res: ECSqlInsertResult = stmt.stepForInsert();\r\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\r\n assert.isDefined(res.id);\r\n assert.isTrue(Id64.isValidId64(res.id!));\r\n return res.id!;\r\n });\r\n testECDb.saveChanges();\r\n\r\n const runDbListPragma = (ecdb: ECDb) => {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return ecdb.withPreparedStatement(\"PRAGMA db_list\", (stmt: ECSqlStatement) => {\r\n const result: { alias: string, filename: string, profile: string }[] = [];\r\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n result.push(stmt.getRow());\r\n }\r\n return result;\r\n });\r\n }\r\n using testECDb0 = ECDbTestHelper.createECDb(outDir, \"file2.ecdb\");\r\n testECDb0.attachDb(ecdbPath1, \"source\");\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", (stmt: ECSqlStatement) => {\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\r\n const row = stmt.getRow();\r\n assert.equal(row.name, \"Mary\");\r\n assert.equal(row.age, 45);\r\n });\r\n expect(runDbListPragma(testECDb0)).deep.equals([\r\n {\r\n sno: 0,\r\n alias: \"main\",\r\n fileName: path.join(outDir, \"file2.ecdb\"),\r\n profile: \"ECDb\"\r\n },\r\n {\r\n sno: 1,\r\n alias: \"source\",\r\n fileName: path.join(outDir, \"source_file.ecdb\"),\r\n profile: \"ECDb\"\r\n }\r\n ]);\r\n testECDb0.detachDb(\"source\");\r\n expect(runDbListPragma(testECDb0)).deep.equals([\r\n {\r\n sno: 0,\r\n alias: \"main\",\r\n fileName: path.join(outDir, \"file2.ecdb\"),\r\n profile: \"ECDb\"\r\n },\r\n ]);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\r\n\r\n using testECDb1 = ECDbTestHelper.createECDb(outDir, \"file3.ecdb\");\r\n testECDb1.attachDb(ecdbPath1, \"source\");\r\n const reader1 = testECDb1.createQueryReader(\"SELECT Name, Age FROM source.test.Person\", undefined, new QueryOptionsBuilder().setUsePrimaryConnection(true).getOptions());\r\n assert.equal(await reader1.step(), true);\r\n assert.equal(reader1.current.name, \"Mary\");\r\n assert.equal(reader1.current.age, 45);\r\n testECDb1.detachDb(\"source\");\r\n\r\n\r\n using testECDb2 = ECDbTestHelper.createECDb(outDir, \"file4.ecdb\");\r\n testECDb2.attachDb(ecdbPath1, \"source\");\r\n const reader2 = testECDb2.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\r\n assert.equal(await reader2.step(), true);\r\n assert.equal(reader2.current.name, \"Mary\");\r\n assert.equal(reader2.current.age, 45);\r\n testECDb2.detachDb(\"source\");\r\n const reader3 = testECDb2.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\r\n let expectThrow = false;\r\n try {\r\n await reader3.step();\r\n } catch (err) {\r\n if (err instanceof Error) {\r\n assert.equal(err.message, \"ECClass 'source.test.Person' does not exist or could not be loaded.\");\r\n expectThrow = true;\r\n }\r\n }\r\n assert.isTrue(expectThrow);\r\n });\r\n it(\"should be able to import a schema\", () => {\r\n const fileName = \"schemaimport.ecdb\";\r\n const ecdbPath: string = path.join(outDir, fileName);\r\n let id: Id64String;\r\n {\r\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName,\r\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\r\n </ECEntityClass>\r\n </ECSchema>`);\r\n assert.isTrue(testECDb.isOpen);\r\n id = testECDb.withCachedWriteStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlWriteStatement) => {\r\n const res: ECSqlInsertResult = stmt.stepForInsert();\r\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\r\n assert.isDefined(res.id);\r\n assert.isTrue(Id64.isValidId64(res.id!));\r\n return res.id!;\r\n });\r\n testECDb.saveChanges();\r\n }\r\n\r\n using ecdb = new ECDb();\r\n ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly);\r\n assert.isTrue(ecdb.isOpen);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n ecdb.withPreparedStatement(\"SELECT Name, Age FROM test.Person WHERE ECInstanceId=?\", (stmt: ECSqlStatement) => {\r\n stmt.bindId(1, id);\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\r\n const row = stmt.getRow();\r\n assert.equal(row.name, \"Mary\");\r\n assert.equal(row.age, 45);\r\n });\r\n });\r\n\r\n it(\"should be able to get schema props\", () => {\r\n const fileName = \"schema-props.ecdb\";\r\n const ecdbPath: string = path.join(outDir, fileName);\r\n {\r\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\r\n assert.isTrue(testECDb.isOpen);\r\n }\r\n using ecdb = new ECDb();\r\n ecdb.openDb(ecdbPath);\r\n const schema = ecdb.getSchemaProps(\"ECDbMeta\");\r\n assert.equal(schema.name, \"ECDbMeta\");\r\n });\r\n\r\n it(\"Run plain SQL\", () => {\r\n const fileName = \"plainseql.ecdb\";\r\n const ecdbPath: string = path.join(outDir, fileName);\r\n {\r\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\r\n assert.isTrue(testECDb.isOpen);\r\n\r\n testECDb.withPreparedSqliteStatement(\"CREATE TABLE Test(Id INTEGER PRIMARY KEY, Name TEXT NOT NULL, Code INTEGER)\", (stmt: SqliteStatement) => {\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\r\n });\r\n\r\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(?,?)\", (stmt: SqliteStatement) => {\r\n stmt.bindValue(1, \"Dummy 1\");\r\n stmt.bindValue(2, 100);\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\r\n });\r\n\r\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(?,?)\", (stmt: SqliteStatement) => {\r\n stmt.bindValues([\"Dummy 2\", 200]);\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\r\n });\r\n\r\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(:p1,:p2)\", (stmt: SqliteStatement) => {\r\n stmt.bindValue(\":p1\", \"Dummy 3\");\r\n stmt.bindValue(\":p2\", 300);\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\r\n });\r\n\r\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(:p1,:p2)\", (stmt: SqliteStatement) => {\r\n stmt.bindValues({ \":p1\": \"Dummy 4\", \":p2\": 400 });\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\r\n });\r\n\r\n testECDb.saveChanges();\r\n }\r\n\r\n using ecdb = new ECDb();\r\n ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly);\r\n assert.isTrue(ecdb.isOpen);\r\n\r\n ecdb.withPreparedSqliteStatement(\"SELECT Id,Name,Code FROM Test ORDER BY Id\", (stmt: SqliteStatement) => {\r\n for (let i: number = 1; i <= 4; i++) {\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\r\n assert.equal(stmt.getColumnCount(), 3);\r\n const val0: SqliteValue = stmt.getValue(0);\r\n assert.equal(val0.columnName, \"Id\");\r\n assert.equal(val0.type, SqliteValueType.Integer);\r\n assert.isFalse(val0.isNull);\r\n assert.equal(val0.getInteger(), i);\r\n\r\n const val1: SqliteValue = stmt.getValue(1);\r\n assert.equal(val1.columnName, \"Name\");\r\n assert.equal(val1.type, SqliteValueType.String);\r\n assert.isFalse(val1.isNull);\r\n assert.equal(val1.getString(), `Dummy ${i}`);\r\n\r\n const val2: SqliteValue = stmt.getValue(2);\r\n assert.equal(val2.columnName, \"Code\");\r\n assert.equal(val2.type, SqliteValueType.Integer);\r\n assert.isFalse(val2.isNull);\r\n assert.equal(val2.getInteger(), i * 100);\r\n\r\n const row: any = stmt.getRow();\r\n assert.equal(row.id, i);\r\n assert.equal(row.name, `Dummy ${i}`);\r\n assert.equal(row.code, i * 100);\r\n }\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\r\n });\r\n });\r\n\r\n it(\"test unit labels in composite formats\", () => {\r\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"TestCompositeFormats.ecdb\");\r\n const xmlpathOriginal = path.join(outDir, \"compositeFormats1.ecschema.xml\");\r\n\r\n IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n <ECSchema schemaName=\"TestCompositeFormats\" alias=\"tcf\" version=\"1.0.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"Units\" version=\"01.00.00\" alias=\"u\" />\r\n <Unit typeName=\"TestUnit\" displayLabel=\"Test Unit\" definition=\"u:M\" numerator=\"1.0\" phenomenon=\"u:LENGTH\" unitSystem=\"u:METRIC\" />\r\n <Format typeName=\"TestFormat\" displayLabel=\"TestFormat\" roundFactor=\"0.3\" type=\"Fractional\" showSignOption=\"OnlyNegative\" formatTraits=\"TrailZeroes|KeepSingleZero\" precision=\"4\" decimalSeparator=\".\" thousandSeparator=\",\" uomSeparator=\" \">\r\n <Composite>\r\n <Unit>u:KM</Unit>\r\n <Unit label=\"m\">TestUnit</Unit>\r\n <Unit label=\"\">u:CM</Unit>\r\n <Unit label=\"mm\">u:MM</Unit>\r\n </Composite>\r\n </Format>\r\n <KindOfQuantity typeName=\"TestKOQ2\" description=\"Test KOQ2\" displayLabel=\"TestKOQ2\" persistenceUnit=\"u:M\" presentationUnits=\"TestFormat\" relativeError=\"10e-3\" />\r\n </ECSchema>`);\r\n ecdb.importSchema(xmlpathOriginal);\r\n ecdb.saveChanges();\r\n\r\n const expectedLabels = [undefined, \"m\", \"\", \"mm\"];\r\n let index = 0;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n ecdb.withStatement(\"select label from meta.FormatCompositeUnitDef where Format.Id=0x1\", (stmt: ECSqlStatement) => {\r\n for (let i: number = 1; i <= 4; i++) {\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\r\n expect(stmt.getRow().label).to.eql(expectedLabels[index++]);\r\n }\r\n });\r\n\r\n const xmlpathUpdated = path.join(outDir, \"compositeFormats2.ecschema.xml\");\r\n IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n <ECSchema schemaName=\"TestCompositeFormats\" alias=\"tcf\" version=\"1.0.1\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"Units\" version=\"01.00.00\" alias=\"u\" />\r\n <Unit typeName=\"TestUnit\" displayLabel=\"Test Unit\" definition=\"u:M\" numerator=\"1.0\" phenomenon=\"u:LENGTH\" unitSystem=\"u:METRIC\" />\r\n <Format typeName=\"TestFormat\" displayLabel=\"TestFormat\" roundFactor=\"0.3\" type=\"Fractional\" showSignOption=\"OnlyNegative\" formatTraits=\"TrailZeroes|KeepSingleZero\" precision=\"4\" decimalSeparator=\".\" thousandSeparator=\",\" uomSeparator=\" \">\r\n <Composite spacer=\"=\" includeZero=\"False\">\r\n <Unit label=\"\">u:KM</Unit>\r\n <Unit label=\"m\">TestUnit</Unit>\r\n <Unit>u:CM</Unit>\r\n <Unit label=\"mm\">u:MM</Unit>\r\n </Composite>\r\n </Format>\r\n <KindOfQuantity typeName=\"TestKOQ2\" description=\"Test KOQ2\" displayLabel=\"TestKOQ2\" persistenceUnit=\"u:M\" presentationUnits=\"TestFormat\" relativeError=\"10e-3\" />\r\n </ECSchema>`);\r\n\r\n ecdb.importSchema(xmlpathUpdated);\r\n ecdb.saveChanges();\r\n\r\n const expectedLabelsUpdated = [\"\", \"m\", undefined, \"mm\"];\r\n index = 0;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n ecdb.withStatement(\"select label from meta.FormatCompositeUnitDef where Format.Id=0x1\", (stmt: ECSqlStatement) => {\r\n for (let i: number = 1; i <= 4; i++) {\r\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\r\n expect(stmt.getRow().label).to.eql(expectedLabelsUpdated[index++]);\r\n }\r\n });\r\n\r\n ecdb.closeDb();\r\n });\r\n\r\n it(\"should log warning but continue if new schema changes are observed without version bump\", async () => {\r\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"importSchemaNoVersionBump.ecdb\");\r\n const xmlpathOriginal = path.join(outDir, \"importSchemaNoVersionBump1.ecschema.xml\");\r\n\r\n IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\r\n </ECEntityClass>\r\n </ECSchema>`);\r\n ecdb.importSchema(xmlpathOriginal);\r\n ecdb.saveChanges();\r\n\r\n const xmlpathUpdated = path.join(outDir, \"importSchemaNoVersionBump2.ecschema.xml\");\r\n IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\r\n <ECProperty propertyName=\"Height\" typeName=\"int\"/>\r\n </ECEntityClass>\r\n </ECSchema>`);\r\n\r\n let calledCategory = \"\";\r\n let calledMessage = \"\";\r\n const stubbedLogWarning = sinon.stub(Logger, \"logWarning\").callsFake((category: string, message: string) => {\r\n calledCategory = category;\r\n calledMessage = message;\r\n });\r\n const prevLevel = Logger.getLevel(\"ECDb\");\r\n\r\n try {\r\n Logger.setLevel(\"ECDb\", LogLevel.Warning);\r\n // We do not want this behavior (just logs a warning and proceeds), initially we intended to throw an error\r\n // We will wait for the next major change to make this a hard error\r\n expect(ecdb.importSchema(xmlpathUpdated)).to.not.throw;\r\n expect(calledCategory).to.equal(\"ECDb\");\r\n expect(calledMessage).to.equal(\"Schema 'Test' has changes but its version was not incremented. Proceeding with import, but this may lead to unexpected behavior.\");\r\n stubbedLogWarning.restore();\r\n }\r\n finally {\r\n if (prevLevel !== undefined)\r\n Logger.setLevel(\"ECDb\", prevLevel);\r\n else\r\n delete (Logger as any)._categoryFilter.ECDb;\r\n }\r\n\r\n const context = new SchemaContext();\r\n const locater = new SchemaJsonLocater((name) => ecdb.getSchemaProps(name));\r\n context.addLocater(locater);\r\n const schema = await context.getSchema(new SchemaKey(\"Test\", 1, 0, 0));\r\n assert.isDefined(schema);\r\n const personClass = await schema!.getItem(\"Person\", EntityClass);\r\n assert.isDefined(personClass);\r\n const heightProp = personClass!.getProperty(\"Height\");\r\n assert.isDefined(heightProp);\r\n\r\n ecdb.closeDb();\r\n });\r\n\r\n it(\"should drop a single schema\", () => {\r\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\r\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\r\n </ECEntityClass>\r\n </ECSchema>`);\r\n assert.isTrue(ecdb.isOpen);\r\n ecdb.saveChanges();\r\n const schemaProps = ecdb.getSchemaProps(\"Test\");\r\n expect(schemaProps.name).to.equal(\"Test\");\r\n\r\n ecdb.dropSchemas([\"Test\"]);\r\n expect(() => ecdb.getSchemaProps(\"Test\")).to.throw();\r\n });\r\n\r\n it(\"should drop multiple schemas\", () => {\r\n const testSchema1Xml = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n <ECSchema schemaName=\"TestSchema1\" alias=\"ts1\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECEntityClass typeName=\"TestClass1\">\r\n <ECProperty propertyName=\"Prop1\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n\r\n const testSchema2Xml = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n <ECSchema schemaName=\"TestSchema2\" alias=\"ts2\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"TestSchema1\" version=\"01.00.00\" alias=\"ts1\"/>\r\n <ECEntityClass typeName=\"TestClass2\">\r\n <ECProperty propertyName=\"Prop2\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n\r\n using ecdb = ECDbTestHelper.createECDb(outDir, \"drop-multiple-schemas.ecdb\");\r\n assert.isTrue(ecdb.isOpen);\r\n\r\n const schema1Path = path.join(outDir, \"TestSchema1.ecschema.xml\");\r\n IModelJsFs.writeFileSync(schema1Path, testSchema1Xml);\r\n ecdb.importSchema(schema1Path);\r\n\r\n const schema2Path = path.join(outDir, \"TestSchema2.ecschema.xml\");\r\n IModelJsFs.writeFileSync(schema2Path, testSchema2Xml);\r\n ecdb.importSchema(schema2Path);\r\n\r\n ecdb.saveChanges();\r\n\r\n const schema1Props = ecdb.getSchemaProps(\"TestSchema1\");\r\n expect(schema1Props.name).to.equal(\"TestSchema1\");\r\n const schema2Props = ecdb.getSchemaProps(\"TestSchema2\");\r\n expect(schema2Props.name).to.equal(\"TestSchema2\");\r\n\r\n expect(() => ecdb.dropSchemas([\"TestSchema1\"])).to.throw();\r\n\r\n const stillExistsSchema1 = ecdb.getSchemaProps(\"TestSchema1\");\r\n expect(stillExistsSchema1.name).to.equal(\"TestSchema1\");\r\n\r\n ecdb.dropSchemas([\"TestSchema2\", \"TestSchema1\"]);\r\n\r\n expect(() => ecdb.getSchemaProps(\"TestSchema2\")).to.throw();\r\n expect(() => ecdb.getSchemaProps(\"TestSchema1\")).to.throw();\r\n\r\n IModelJsFs.removeSync(schema1Path);\r\n IModelJsFs.removeSync(schema2Path);\r\n });\r\n});"]}
|
|
1
|
+
{"version":3,"file":"ECDb.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECDb.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAc,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,YAAY,EAAwF,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC/J,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEpG,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAE5C,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;;;YAC7C,MAAM,IAAI,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,QAAA,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;;;;;;;KAC5B,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAS,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;;;YACxC,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC7B,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;;;oBACC,MAAM,QAAQ,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAA,CAAC;oBAC7D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;;;;;;;;aAChC;YAED,MAAM,IAAI,kCAAG,IAAI,IAAI,EAAE,QAAA,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;;;;;;;KAC5B,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC7B,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;;;gBACC,MAAM,QAAQ,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAA,CAAC;gBAC7D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;;;;;;;;SAChC;QACD,CAAC;;;gBACC,MAAM,IAAI,kCAAG,IAAI,IAAI,EAAE,QAAA,CAAC;gBACxB,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;;;;;;SACzE;QACD,CAAC;;;gBACC,MAAM,IAAI,kCAAG,IAAI,IAAI,EAAE,QAAA,CAAC;gBACxB,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;;;;;;;;;SAC1E;QACD,CAAC;;;gBACC,MAAM,IAAI,kCAAG,IAAI,IAAI,EAAE,QAAA,CAAC;gBACxB,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;;;;;;;;;SAC5E;IAEH,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;;;YACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC;YACrC,MAAM,SAAS,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,QAAQ,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAC1D;;;;;kBAKY,CAAC,QAAA,CAAC;YAChB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/B,4DAA4D;YAC5D,QAAQ,CAAC,qBAAqB,CAAC,sDAAsD,EAAE,CAAC,IAAoB,EAAE,EAAE;gBAC9G,MAAM,GAAG,GAAsB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;gBACzC,OAAO,GAAG,CAAC,EAAG,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,sEAAsE;YACtE,QAAQ,CAAC,mBAAmB,CAAC;;;6DAG4B,EACvD,CAAC,IAAqB,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,CAAC,WAAW,EAAE,CAAC;YAEvB,MAAM,6BAA6B,GAAG,CAAC,IAAU,EAAE,EAAE;gBACnD,4DAA4D;gBAC5D,OAAO,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,CAAC,IAAoB,EAAE,EAAE;oBAC3E,MAAM,MAAM,GAA2D,EAAE,CAAC;oBAC1E,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;wBAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC7B,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC,CAAA;YACD,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAU,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;gBACxD,MAAM,MAAM,GAA2D,EAAE,CAAC;gBAC1E,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAA;YACD,MAAM,SAAS,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,QAAA,CAAC;YAClE,6FAA6F;YAC7F,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACxC,4DAA4D;YAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,qBAAqB,CAAC,0CAA0C,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;YACrL,MAAM,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3D;oBACE,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,MAAM;oBACb,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;oBACzC,OAAO,EAAE,MAAM;iBAChB;gBACD;oBACE,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,QAAQ;oBACf,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC;oBAC/C,OAAO,EAAE,QAAQ;iBAClB;aACF,CAAC,CAAC;YACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3D;oBACE,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,MAAM;oBACb,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;oBACzC,OAAO,EAAE,MAAM;iBAChB;aACF,CAAC,CAAC;YACH,4DAA4D;YAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,qBAAqB,CAAC,0CAA0C,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;YAErL,MAAM,SAAS,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,QAAA,CAAC;YAClE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;YACxF,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;oBACzB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,qEAAqE,CAAC,CAAC;oBACjG,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtD;oBACE,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,MAAM;oBACb,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;oBACzC,OAAO,EAAE,MAAM;iBAChB;gBACD;oBACE,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,QAAQ;oBACf,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC;oBAC/C,OAAO,EAAE,QAAQ;iBAClB;aACF,CAAC,CAAC;YACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtD;oBACE,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,MAAM;oBACb,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;oBACzC,OAAO,EAAE,MAAM;iBAChB;aACF,CAAC,CAAC;;;;;;;;;KACJ,CAAC,CAAC;IACH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;;;YACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC;YACrC,MAAM,SAAS,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,QAAQ,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAC1D;;;;;kBAKY,CAAC,QAAA,CAAC;YAChB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/B,4DAA4D;YAC5D,QAAQ,CAAC,qBAAqB,CAAC,sDAAsD,EAAE,CAAC,IAAoB,EAAE,EAAE;gBAC9G,MAAM,GAAG,GAAsB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;gBACzC,OAAO,GAAG,CAAC,EAAG,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,WAAW,EAAE,CAAC;YAEvB,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,EAAE;gBACrC,4DAA4D;gBAC5D,OAAO,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,CAAC,IAAoB,EAAE,EAAE;oBAC3E,MAAM,MAAM,GAA2D,EAAE,CAAC;oBAC1E,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;wBAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC7B,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC,CAAA;YACD,MAAM,SAAS,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,QAAA,CAAC;YAClE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACxC,4DAA4D;YAC5D,SAAS,CAAC,qBAAqB,CAAC,0CAA0C,EAAE,CAAC,IAAoB,EAAE,EAAE;gBACnG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC7C;oBACE,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,MAAM;oBACb,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;oBACzC,OAAO,EAAE,MAAM;iBAChB;gBACD;oBACE,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,QAAQ;oBACf,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC;oBAC/C,OAAO,EAAE,MAAM;iBAChB;aACF,CAAC,CAAC;YACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC7C;oBACE,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,MAAM;oBACb,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;oBACzC,OAAO,EAAE,MAAM;iBAChB;aACF,CAAC,CAAC;YACH,4DAA4D;YAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,qBAAqB,CAAC,0CAA0C,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;YAErL,MAAM,SAAS,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,QAAA,CAAC;YAClE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAiB,CAAC,0CAA0C,EAAE,SAAS,EAAE,IAAI,mBAAmB,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YACzK,MAAM,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAG7B,MAAM,SAAS,kCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,QAAA,CAAC;YAClE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;YACxF,MAAM,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;YACxF,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;oBACzB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,qEAAqE,CAAC,CAAC;oBACjG,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;;;;;;;;;KAC5B,CAAC,CAAC;IACH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;;;YAC3C,MAAM,QAAQ,GAAG,mBAAmB,CAAC;YACrC,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrD,IAAI,EAAc,CAAC;YACnB,CAAC;;;oBACC,MAAM,QAAQ,mCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EACzD;;;;;oBAKY,CAAC,QAAA,CAAC;oBAChB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC/B,EAAE,GAAG,QAAQ,CAAC,wBAAwB,CAAC,sDAAsD,EAAE,CAAC,IAAyB,EAAE,EAAE;wBAC3H,MAAM,GAAG,GAAsB,IAAI,CAAC,aAAa,EAAE,CAAC;wBACpD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;wBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;wBACzC,OAAO,GAAG,CAAC,EAAG,CAAC;oBACjB,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,WAAW,EAAE,CAAC;;;;;;;;;aACxB;YAED,MAAM,IAAI,mCAAG,IAAI,IAAI,EAAE,QAAA,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3B,4DAA4D;YAC5D,IAAI,CAAC,qBAAqB,CAAC,wDAAwD,EAAE,CAAC,IAAoB,EAAE,EAAE;gBAC5G,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;;;;;;;;;KACJ,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;;;YAC5C,MAAM,QAAQ,GAAG,mBAAmB,CAAC;YACrC,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;;;oBACC,MAAM,QAAQ,mCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAA,CAAC;oBAC7D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;;;;;;;;aAChC;YACD,MAAM,IAAI,mCAAG,IAAI,IAAI,EAAE,QAAA,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;;;;;;;;;KACvC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;;;YACvB,MAAM,QAAQ,GAAG,gBAAgB,CAAC;YAClC,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;;;oBACC,MAAM,QAAQ,mCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAA,CAAC;oBAC7D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAE/B,QAAQ,CAAC,2BAA2B,CAAC,6EAA6E,EAAE,CAAC,IAAqB,EAAE,EAAE;wBAC5I,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,2BAA2B,CAAC,yCAAyC,EAAE,CAAC,IAAqB,EAAE,EAAE;wBACxG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;wBAC7B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBACvB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,2BAA2B,CAAC,yCAAyC,EAAE,CAAC,IAAqB,EAAE,EAAE;wBACxG,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;wBAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,2BAA2B,CAAC,6CAA6C,EAAE,CAAC,IAAqB,EAAE,EAAE;wBAC5G,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;wBACjC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAC3B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,2BAA2B,CAAC,6CAA6C,EAAE,CAAC,IAAqB,EAAE,EAAE;wBAC5G,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;wBAClD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,WAAW,EAAE,CAAC;;;;;;;;;aACxB;YAED,MAAM,IAAI,mCAAG,IAAI,IAAI,EAAE,QAAA,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3B,IAAI,CAAC,2BAA2B,CAAC,2CAA2C,EAAE,CAAC,IAAqB,EAAE,EAAE;gBACtG,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;oBAClD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;oBACvC,MAAM,IAAI,GAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;oBACjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;oBAEnC,MAAM,IAAI,GAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;oBAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;oBAE7C,MAAM,IAAI,GAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;oBACjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;oBAEzC,MAAM,GAAG,GAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;oBACrC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;;;;;;;;;KACJ,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAS,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;QAClF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QAE5E,UAAU,CAAC,aAAa,CAAC,eAAe,EAAE;;;;;;;;;;;;;gBAa9B,CAAC,CAAC;QACd,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,4DAA4D;QAC5D,IAAI,CAAC,aAAa,CAAC,mEAAmE,EAAE,CAAC,IAAoB,EAAE,EAAE;YAC/G,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QAC3E,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE;;;;;;;;;;;;;gBAa7B,CAAC,CAAC;QAEd,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,qBAAqB,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACzD,KAAK,GAAG,CAAC,CAAC;QACV,4DAA4D;QAC5D,IAAI,CAAC,aAAa,CAAC,mEAAmE,EAAE,CAAC,IAAoB,EAAE,EAAE;YAC/G,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;QACvG,MAAM,IAAI,GAAS,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QACvF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,yCAAyC,CAAC,CAAC;QAErF,UAAU,CAAC,aAAa,CAAC,eAAe,EAAE;;;;;;gBAM9B,CAAC,CAAC;QACd,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,yCAAyC,CAAC,CAAC;QACpF,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE;;;;;;;gBAO7B,CAAC,CAAC;QAEd,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,QAAgB,EAAE,OAAe,EAAE,EAAE;YACzG,cAAc,GAAG,QAAQ,CAAC;YAC1B,aAAa,GAAG,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1C,2GAA2G;YAC3G,mEAAmE;YACnE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;YACvD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kIAAkI,CAAC,CAAC;YACnK,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;gBACO,CAAC;YACP,IAAI,SAAS,KAAK,SAAS;gBACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;;gBAEnC,OAAQ,MAAc,CAAC,eAAe,CAAC,IAAI,CAAC;QAChD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM,WAAW,GAAG,MAAM,MAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,WAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE7B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;;;YACrC,MAAM,IAAI,mCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EACxD;;;;kBAIY,CAAC,QAAA,CAAC;YAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;;;;;;;;;KACtD,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;;;YACtC,MAAM,cAAc,GAAG;;;;;kBAKT,CAAC;YAEf,MAAM,cAAc,GAAG;;;;;;kBAMT,CAAC;YAEf,MAAM,IAAI,mCAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,4BAA4B,CAAC,QAAA,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;YAClE,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;YAClE,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE/B,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAElD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAE3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC9D,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAExD,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;YAEjD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAE5D,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;;;;;;;;;KACpC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","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*--------------------------------------------------------------------------------------------*/\nimport { assert, expect } from \"chai\";\nimport * as path from \"path\";\nimport * as sinon from \"sinon\";\nimport { DbResult, Id64, Id64String, Logger, LogLevel } from \"@itwin/core-bentley\";\nimport { IModelJsFs } from \"../../IModelJsFs\";\nimport { ECDb, ECDbOpenMode, ECSqlInsertResult, ECSqlStatement, ECSqlWriteStatement, SqliteStatement, SqliteValue, SqliteValueType } from \"../../core-backend\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { ECDbTestHelper } from \"./ECDbTestHelper\";\nimport { QueryOptionsBuilder } from \"@itwin/core-common\";\nimport { EntityClass, SchemaContext, SchemaJsonLocater, SchemaKey } from \"@itwin/ecschema-metadata\";\n\ndescribe(\"ECDb\", () => {\n const outDir = KnownTestLocations.outputDir;\n\n it(\"should be able to create a new ECDb\", () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"create.ecdb\");\n assert.isTrue(ecdb.isOpen);\n });\n\n it(\"should be able to close an ECDb\", () => {\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"close.ecdb\");\n assert.isTrue(ecdb.isOpen);\n ecdb.closeDb();\n assert.isFalse(ecdb.isOpen);\n });\n\n it(\"should be able to open an ECDb\", () => {\n const fileName = \"open.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n }\n\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath, ECDbOpenMode.ReadWrite);\n assert.isTrue(ecdb.isOpen);\n });\n\n it(\"Open ECDb with upgrade option\", () => {\n const fileName = \"open.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n }\n {\n using ecdb = new ECDb();\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly));\n }\n {\n using ecdb = new ECDb();\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.ReadWrite));\n }\n {\n using ecdb = new ECDb();\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.FileUpgrade));\n }\n\n });\n it(\"attach/detach newer profile version\", async () => {\n const fileName1 = \"source_file.ecdb\";\n const ecdbPath1: string = path.join(outDir, fileName1);\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName1,\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(testECDb.isOpen);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n testECDb.withPreparedStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlStatement) => {\n const res: ECSqlInsertResult = stmt.stepForInsert();\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\n assert.isDefined(res.id);\n assert.isTrue(Id64.isValidId64(res.id!));\n return res.id!;\n });\n\n // override profile version to 55.0.0 which is currently not supported\n testECDb.withSqliteStatement(`\n UPDATE be_Prop SET\n StrData = '{\"major\":55,\"minor\":0,\"sub1\":0,\"sub2\":0}'\n WHERE Namespace = 'ec_Db' AND Name = 'SchemaVersion'`,\n (stmt: SqliteStatement) => { stmt.step(); });\n testECDb.saveChanges();\n\n const runDbListPragmaUsingStatement = (ecdb: ECDb) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return ecdb.withPreparedStatement(\"PRAGMA db_list\", (stmt: ECSqlStatement) => {\n const result: { alias: string, filename: string, profile: string }[] = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n result.push(stmt.getRow());\n }\n return result;\n });\n }\n const runDbListPragmaCCQ = async (ecdb: ECDb) => {\n const reader = ecdb.createQueryReader(\"PRAGMA db_list\");\n const result: { alias: string, filename: string, profile: string }[] = [];\n while (await reader.step()) {\n result.push(reader.current.toRow());\n }\n return result;\n }\n using testECDb0 = ECDbTestHelper.createECDb(outDir, \"file2.ecdb\");\n // following call will not fail but unknow ECDb profile will cause it to be attach as SQLite.\n testECDb0.attachDb(ecdbPath1, \"source\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n expect(runDbListPragmaUsingStatement(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n {\n sno: 1,\n alias: \"source\",\n fileName: path.join(outDir, \"source_file.ecdb\"),\n profile: \"SQLite\"\n }\n ]);\n testECDb0.detachDb(\"source\");\n expect(runDbListPragmaUsingStatement(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n\n using testECDb1 = ECDbTestHelper.createECDb(outDir, \"file4.ecdb\");\n testECDb1.attachDb(ecdbPath1, \"source\");\n const reader1 = testECDb1.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\n let expectThrow = false;\n try {\n await reader1.step();\n } catch (err) {\n if (err instanceof Error) {\n assert.equal(err.message, \"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n expectThrow = true;\n }\n }\n assert.isTrue(expectThrow);\n expect(await runDbListPragmaCCQ(testECDb1)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file4.ecdb\"),\n profile: \"ECDb\"\n },\n {\n sno: 1,\n alias: \"source\",\n fileName: path.join(outDir, \"source_file.ecdb\"),\n profile: \"SQLite\"\n }\n ]);\n testECDb1.detachDb(\"source\");\n expect(await runDbListPragmaCCQ(testECDb1)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file4.ecdb\"),\n profile: \"ECDb\"\n },\n ]);\n });\n it(\"attach/detach file & db_list pragma\", async () => {\n const fileName1 = \"source_file.ecdb\";\n const ecdbPath1: string = path.join(outDir, fileName1);\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName1,\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(testECDb.isOpen);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n testECDb.withPreparedStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlStatement) => {\n const res: ECSqlInsertResult = stmt.stepForInsert();\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\n assert.isDefined(res.id);\n assert.isTrue(Id64.isValidId64(res.id!));\n return res.id!;\n });\n testECDb.saveChanges();\n\n const runDbListPragma = (ecdb: ECDb) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return ecdb.withPreparedStatement(\"PRAGMA db_list\", (stmt: ECSqlStatement) => {\n const result: { alias: string, filename: string, profile: string }[] = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n result.push(stmt.getRow());\n }\n return result;\n });\n }\n using testECDb0 = ECDbTestHelper.createECDb(outDir, \"file2.ecdb\");\n testECDb0.attachDb(ecdbPath1, \"source\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", (stmt: ECSqlStatement) => {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n const row = stmt.getRow();\n assert.equal(row.name, \"Mary\");\n assert.equal(row.age, 45);\n });\n expect(runDbListPragma(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n {\n sno: 1,\n alias: \"source\",\n fileName: path.join(outDir, \"source_file.ecdb\"),\n profile: \"ECDb\"\n }\n ]);\n testECDb0.detachDb(\"source\");\n expect(runDbListPragma(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n\n using testECDb1 = ECDbTestHelper.createECDb(outDir, \"file3.ecdb\");\n testECDb1.attachDb(ecdbPath1, \"source\");\n const reader1 = testECDb1.createQueryReader(\"SELECT Name, Age FROM source.test.Person\", undefined, new QueryOptionsBuilder().setUsePrimaryConnection(true).getOptions());\n assert.equal(await reader1.step(), true);\n assert.equal(reader1.current.name, \"Mary\");\n assert.equal(reader1.current.age, 45);\n testECDb1.detachDb(\"source\");\n\n\n using testECDb2 = ECDbTestHelper.createECDb(outDir, \"file4.ecdb\");\n testECDb2.attachDb(ecdbPath1, \"source\");\n const reader2 = testECDb2.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\n assert.equal(await reader2.step(), true);\n assert.equal(reader2.current.name, \"Mary\");\n assert.equal(reader2.current.age, 45);\n testECDb2.detachDb(\"source\");\n const reader3 = testECDb2.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\n let expectThrow = false;\n try {\n await reader3.step();\n } catch (err) {\n if (err instanceof Error) {\n assert.equal(err.message, \"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n expectThrow = true;\n }\n }\n assert.isTrue(expectThrow);\n });\n it(\"should be able to import a schema\", () => {\n const fileName = \"schemaimport.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n let id: Id64String;\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName,\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(testECDb.isOpen);\n id = testECDb.withCachedWriteStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlWriteStatement) => {\n const res: ECSqlInsertResult = stmt.stepForInsert();\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\n assert.isDefined(res.id);\n assert.isTrue(Id64.isValidId64(res.id!));\n return res.id!;\n });\n testECDb.saveChanges();\n }\n\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly);\n assert.isTrue(ecdb.isOpen);\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ecdb.withPreparedStatement(\"SELECT Name, Age FROM test.Person WHERE ECInstanceId=?\", (stmt: ECSqlStatement) => {\n stmt.bindId(1, id);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n const row = stmt.getRow();\n assert.equal(row.name, \"Mary\");\n assert.equal(row.age, 45);\n });\n });\n\n it(\"should be able to get schema props\", () => {\n const fileName = \"schema-props.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n }\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath);\n const schema = ecdb.getSchemaProps(\"ECDbMeta\");\n assert.equal(schema.name, \"ECDbMeta\");\n });\n\n it(\"Run plain SQL\", () => {\n const fileName = \"plainseql.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n\n testECDb.withPreparedSqliteStatement(\"CREATE TABLE Test(Id INTEGER PRIMARY KEY, Name TEXT NOT NULL, Code INTEGER)\", (stmt: SqliteStatement) => {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(?,?)\", (stmt: SqliteStatement) => {\n stmt.bindValue(1, \"Dummy 1\");\n stmt.bindValue(2, 100);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(?,?)\", (stmt: SqliteStatement) => {\n stmt.bindValues([\"Dummy 2\", 200]);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(:p1,:p2)\", (stmt: SqliteStatement) => {\n stmt.bindValue(\":p1\", \"Dummy 3\");\n stmt.bindValue(\":p2\", 300);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(:p1,:p2)\", (stmt: SqliteStatement) => {\n stmt.bindValues({ \":p1\": \"Dummy 4\", \":p2\": 400 });\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.saveChanges();\n }\n\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly);\n assert.isTrue(ecdb.isOpen);\n\n ecdb.withPreparedSqliteStatement(\"SELECT Id,Name,Code FROM Test ORDER BY Id\", (stmt: SqliteStatement) => {\n for (let i: number = 1; i <= 4; i++) {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n assert.equal(stmt.getColumnCount(), 3);\n const val0: SqliteValue = stmt.getValue(0);\n assert.equal(val0.columnName, \"Id\");\n assert.equal(val0.type, SqliteValueType.Integer);\n assert.isFalse(val0.isNull);\n assert.equal(val0.getInteger(), i);\n\n const val1: SqliteValue = stmt.getValue(1);\n assert.equal(val1.columnName, \"Name\");\n assert.equal(val1.type, SqliteValueType.String);\n assert.isFalse(val1.isNull);\n assert.equal(val1.getString(), `Dummy ${i}`);\n\n const val2: SqliteValue = stmt.getValue(2);\n assert.equal(val2.columnName, \"Code\");\n assert.equal(val2.type, SqliteValueType.Integer);\n assert.isFalse(val2.isNull);\n assert.equal(val2.getInteger(), i * 100);\n\n const row: any = stmt.getRow();\n assert.equal(row.id, i);\n assert.equal(row.name, `Dummy ${i}`);\n assert.equal(row.code, i * 100);\n }\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n });\n\n it(\"test unit labels in composite formats\", () => {\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"TestCompositeFormats.ecdb\");\n const xmlpathOriginal = path.join(outDir, \"compositeFormats1.ecschema.xml\");\n\n IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n <ECSchema schemaName=\"TestCompositeFormats\" alias=\"tcf\" version=\"1.0.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"Units\" version=\"01.00.00\" alias=\"u\" />\n <Unit typeName=\"TestUnit\" displayLabel=\"Test Unit\" definition=\"u:M\" numerator=\"1.0\" phenomenon=\"u:LENGTH\" unitSystem=\"u:METRIC\" />\n <Format typeName=\"TestFormat\" displayLabel=\"TestFormat\" roundFactor=\"0.3\" type=\"Fractional\" showSignOption=\"OnlyNegative\" formatTraits=\"TrailZeroes|KeepSingleZero\" precision=\"4\" decimalSeparator=\".\" thousandSeparator=\",\" uomSeparator=\" \">\n <Composite>\n <Unit>u:KM</Unit>\n <Unit label=\"m\">TestUnit</Unit>\n <Unit label=\"\">u:CM</Unit>\n <Unit label=\"mm\">u:MM</Unit>\n </Composite>\n </Format>\n <KindOfQuantity typeName=\"TestKOQ2\" description=\"Test KOQ2\" displayLabel=\"TestKOQ2\" persistenceUnit=\"u:M\" presentationUnits=\"TestFormat\" relativeError=\"10e-3\" />\n </ECSchema>`);\n ecdb.importSchema(xmlpathOriginal);\n ecdb.saveChanges();\n\n const expectedLabels = [undefined, \"m\", \"\", \"mm\"];\n let index = 0;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ecdb.withStatement(\"select label from meta.FormatCompositeUnitDef where Format.Id=0x1\", (stmt: ECSqlStatement) => {\n for (let i: number = 1; i <= 4; i++) {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n expect(stmt.getRow().label).to.eql(expectedLabels[index++]);\n }\n });\n\n const xmlpathUpdated = path.join(outDir, \"compositeFormats2.ecschema.xml\");\n IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n <ECSchema schemaName=\"TestCompositeFormats\" alias=\"tcf\" version=\"1.0.1\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"Units\" version=\"01.00.00\" alias=\"u\" />\n <Unit typeName=\"TestUnit\" displayLabel=\"Test Unit\" definition=\"u:M\" numerator=\"1.0\" phenomenon=\"u:LENGTH\" unitSystem=\"u:METRIC\" />\n <Format typeName=\"TestFormat\" displayLabel=\"TestFormat\" roundFactor=\"0.3\" type=\"Fractional\" showSignOption=\"OnlyNegative\" formatTraits=\"TrailZeroes|KeepSingleZero\" precision=\"4\" decimalSeparator=\".\" thousandSeparator=\",\" uomSeparator=\" \">\n <Composite spacer=\"=\" includeZero=\"False\">\n <Unit label=\"\">u:KM</Unit>\n <Unit label=\"m\">TestUnit</Unit>\n <Unit>u:CM</Unit>\n <Unit label=\"mm\">u:MM</Unit>\n </Composite>\n </Format>\n <KindOfQuantity typeName=\"TestKOQ2\" description=\"Test KOQ2\" displayLabel=\"TestKOQ2\" persistenceUnit=\"u:M\" presentationUnits=\"TestFormat\" relativeError=\"10e-3\" />\n </ECSchema>`);\n\n ecdb.importSchema(xmlpathUpdated);\n ecdb.saveChanges();\n\n const expectedLabelsUpdated = [\"\", \"m\", undefined, \"mm\"];\n index = 0;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ecdb.withStatement(\"select label from meta.FormatCompositeUnitDef where Format.Id=0x1\", (stmt: ECSqlStatement) => {\n for (let i: number = 1; i <= 4; i++) {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n expect(stmt.getRow().label).to.eql(expectedLabelsUpdated[index++]);\n }\n });\n\n ecdb.closeDb();\n });\n\n it(\"should log warning but continue if new schema changes are observed without version bump\", async () => {\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"importSchemaNoVersionBump.ecdb\");\n const xmlpathOriginal = path.join(outDir, \"importSchemaNoVersionBump1.ecschema.xml\");\n\n IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n ecdb.importSchema(xmlpathOriginal);\n ecdb.saveChanges();\n\n const xmlpathUpdated = path.join(outDir, \"importSchemaNoVersionBump2.ecschema.xml\");\n IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n <ECProperty propertyName=\"Height\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n\n let calledCategory = \"\";\n let calledMessage = \"\";\n const stubbedLogWarning = sinon.stub(Logger, \"logWarning\").callsFake((category: string, message: string) => {\n calledCategory = category;\n calledMessage = message;\n });\n const prevLevel = Logger.getLevel(\"ECDb\");\n\n try {\n Logger.setLevel(\"ECDb\", LogLevel.Warning);\n // We do not want this behavior (just logs a warning and proceeds), initially we intended to throw an error\n // We will wait for the next major change to make this a hard error\n expect(ecdb.importSchema(xmlpathUpdated)).to.not.throw;\n expect(calledCategory).to.equal(\"ECDb\");\n expect(calledMessage).to.equal(\"Schema 'Test' has changes but its version was not incremented. Proceeding with import, but this may lead to unexpected behavior.\");\n stubbedLogWarning.restore();\n }\n finally {\n if (prevLevel !== undefined)\n Logger.setLevel(\"ECDb\", prevLevel);\n else\n delete (Logger as any)._categoryFilter.ECDb;\n }\n\n const context = new SchemaContext();\n const locater = new SchemaJsonLocater((name) => ecdb.getSchemaProps(name));\n context.addLocater(locater);\n const schema = await context.getSchema(new SchemaKey(\"Test\", 1, 0, 0));\n assert.isDefined(schema);\n const personClass = await schema!.getItem(\"Person\", EntityClass);\n assert.isDefined(personClass);\n const heightProp = personClass!.getProperty(\"Height\");\n assert.isDefined(heightProp);\n\n ecdb.closeDb();\n });\n\n it(\"should drop a single schema\", () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"test.ecdb\",\n `<ECSchema schemaName=\"Test\" alias=\"ts\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <ECProperty propertyName=\"n\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(ecdb.isOpen);\n ecdb.saveChanges();\n const schemaProps = ecdb.getSchemaProps(\"Test\");\n expect(schemaProps.name).to.equal(\"Test\");\n\n ecdb.dropSchemas([\"Test\"]);\n expect(() => ecdb.getSchemaProps(\"Test\")).to.throw();\n });\n\n it(\"should drop multiple schemas\", () => {\n const testSchema1Xml = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n <ECSchema schemaName=\"TestSchema1\" alias=\"ts1\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"TestClass1\">\n <ECProperty propertyName=\"Prop1\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`;\n\n const testSchema2Xml = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n <ECSchema schemaName=\"TestSchema2\" alias=\"ts2\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"TestSchema1\" version=\"01.00.00\" alias=\"ts1\"/>\n <ECEntityClass typeName=\"TestClass2\">\n <ECProperty propertyName=\"Prop2\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`;\n\n using ecdb = ECDbTestHelper.createECDb(outDir, \"drop-multiple-schemas.ecdb\");\n assert.isTrue(ecdb.isOpen);\n\n const schema1Path = path.join(outDir, \"TestSchema1.ecschema.xml\");\n IModelJsFs.writeFileSync(schema1Path, testSchema1Xml);\n ecdb.importSchema(schema1Path);\n\n const schema2Path = path.join(outDir, \"TestSchema2.ecschema.xml\");\n IModelJsFs.writeFileSync(schema2Path, testSchema2Xml);\n ecdb.importSchema(schema2Path);\n\n ecdb.saveChanges();\n\n const schema1Props = ecdb.getSchemaProps(\"TestSchema1\");\n expect(schema1Props.name).to.equal(\"TestSchema1\");\n const schema2Props = ecdb.getSchemaProps(\"TestSchema2\");\n expect(schema2Props.name).to.equal(\"TestSchema2\");\n\n expect(() => ecdb.dropSchemas([\"TestSchema1\"])).to.throw();\n\n const stillExistsSchema1 = ecdb.getSchemaProps(\"TestSchema1\");\n expect(stillExistsSchema1.name).to.equal(\"TestSchema1\");\n\n ecdb.dropSchemas([\"TestSchema2\", \"TestSchema1\"]);\n\n expect(() => ecdb.getSchemaProps(\"TestSchema2\")).to.throw();\n expect(() => ecdb.getSchemaProps(\"TestSchema1\")).to.throw();\n\n IModelJsFs.removeSync(schema1Path);\n IModelJsFs.removeSync(schema2Path);\n });\n});"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECDbTestHelper.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECDbTestHelper.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,OAAO,cAAc;IAElB,MAAM,CAAC,UAAU,CAAC,MAAc,EAAE,QAAgB,EAAE,SAAkB;QAC3E,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;YAChC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,CAAC,SAAS;YACZ,OAAO,IAAI,CAAC;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC3E,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;YACnC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpC,UAAU,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEhD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"ECDbTestHelper.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECDbTestHelper.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,OAAO,cAAc;IAElB,MAAM,CAAC,UAAU,CAAC,MAAc,EAAE,QAAgB,EAAE,SAAkB;QAC3E,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;YAChC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,CAAC,SAAS;YACZ,OAAO,IAAI,CAAC;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC3E,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;YACnC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpC,UAAU,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEhD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;CACF","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*--------------------------------------------------------------------------------------------*/\nimport * as path from \"path\";\nimport { Guid } from \"@itwin/core-bentley\";\nimport { ECDb } from \"../../ECDb\";\nimport { IModelJsFs } from \"../../IModelJsFs\";\n\nexport class ECDbTestHelper {\n\n public static createECDb(outDir: string, fileName: string, schemaXml?: string): ECDb {\n if (!IModelJsFs.existsSync(outDir))\n IModelJsFs.mkdirSync(outDir);\n\n const outPath = path.join(outDir, fileName);\n if (IModelJsFs.existsSync(outPath))\n IModelJsFs.unlinkSync(outPath);\n\n const ecdb = new ECDb();\n ecdb.createDb(outPath);\n\n if (!schemaXml)\n return ecdb;\n\n const schemaPath = path.join(outDir, `${Guid.createValue()}.ecschema.xml`);\n if (IModelJsFs.existsSync(schemaPath))\n IModelJsFs.unlinkSync(schemaPath);\n\n IModelJsFs.writeFileSync(schemaPath, schemaXml);\n\n ecdb.importSchema(schemaPath);\n return ecdb;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECSchemaXmlContext.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSchemaXmlContext.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"ECSchemaXmlContext.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSchemaXmlContext.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*--------------------------------------------------------------------------------------------*/\nimport { expect } from \"chai\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { ECSchemaXmlContext, SchemaKey } from \"../../ECSchemaXmlContext\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { SequentialLogMatcher } from \"../SequentialLogMatcher\";\n\ndescribe(\"ECSchemaXmlContext\", () => {\n\n it(\"should be able to convert schema XML to JSON\", () => {\n const testSchemaXmlPath = path.join(KnownTestLocations.assetsDir, \"TestSchema.ecschema.xml\");\n const testSchemaJsonPath = path.join(KnownTestLocations.assetsDir, \"TestSchema.ecschema.json\");\n const expectedTestSchemaJson = JSON.parse(fs.readFileSync(testSchemaJsonPath, { encoding: \"utf-8\" }));\n\n const context = new ECSchemaXmlContext();\n const schema = context.readSchemaFromXmlFile(testSchemaXmlPath);\n expect(schema).to.eql(expectedTestSchemaJson);\n });\n\n it(\"setSchemaLocater, should call schema locater callback for missing schema references\", () => {\n const slm = new SequentialLogMatcher();\n slm.append().error().category(\"ECObjectsNative\").message(/Unable to locate referenced schema BisCore\\.01\\.00\\.00 while deserializing TestDomain\\.01\\.00\\.00/gm);\n slm.append().error().category(\"ECObjectsNative\").message(/Failed to read schema 'TestDomain\\.01\\.00\\.00'/gm);\n const testDomainXmlPath = path.join(KnownTestLocations.assetsDir, \"TestDomain.ecschema.xml\");\n const expectedBisCoreKey = {\n name: \"BisCore\",\n readVersion: 1,\n writeVersion: 0,\n minorVersion: 0,\n };\n const context = new ECSchemaXmlContext();\n const missingReferences: SchemaKey[] = [];\n context.setSchemaLocater((key: SchemaKey) => {\n missingReferences.push(key);\n });\n\n expect(() => context.readSchemaFromXmlFile(testDomainXmlPath)).to.throw(\"ReferencedSchemaNotFound\");\n expect(missingReferences).to.have.lengthOf(1);\n expect(missingReferences[0]).to.eql(expectedBisCoreKey);\n expect(slm.finishAndDispose()).to.true;\n });\n\n it(\"setFirstSchemaLocater, should call schema locater callback for missing schema references\", () => {\n const slm = new SequentialLogMatcher();\n slm.append().error().category(\"ECObjectsNative\").message(/Unable to locate referenced schema BisCore\\.01\\.00\\.00 while deserializing TestDomain\\.01\\.00\\.00/gm);\n slm.append().error().category(\"ECObjectsNative\").message(/Failed to read schema 'TestDomain\\.01\\.00\\.00'/gm);\n const testDomainXmlPath = path.join(KnownTestLocations.assetsDir, \"TestDomain.ecschema.xml\");\n const expectedBisCoreKey = {\n name: \"BisCore\",\n readVersion: 1,\n writeVersion: 0,\n minorVersion: 0,\n };\n const context = new ECSchemaXmlContext();\n const missingReferences: SchemaKey[] = [];\n context.setFirstSchemaLocater((key: SchemaKey) => {\n missingReferences.push(key);\n });\n\n expect(() => context.readSchemaFromXmlFile(testDomainXmlPath)).to.throw(\"ReferencedSchemaNotFound\");\n expect(missingReferences).to.have.lengthOf(1);\n expect(missingReferences[0]).to.eql(expectedBisCoreKey);\n expect(slm.finishAndDispose()).to.true;\n });\n});\n"]}
|