@itwin/core-backend 5.0.0-dev.97 → 5.0.0-dev.99
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 -8
- package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +12 -5
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +1 -0
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/CheckpointManager.d.ts +8 -15
- package/lib/cjs/CheckpointManager.d.ts.map +1 -1
- package/lib/cjs/CheckpointManager.js +23 -54
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ECDb.d.ts +37 -1
- package/lib/cjs/ECDb.d.ts.map +1 -1
- package/lib/cjs/ECDb.js +81 -0
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSqlStatement.d.ts +181 -2
- package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
- package/lib/cjs/ECSqlStatement.js +224 -5
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.d.ts +16 -4
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +40 -2
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.d.ts.map +1 -1
- package/lib/cjs/ElementAspect.js +1 -0
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
- package/lib/cjs/ElementTreeWalker.js +4 -0
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/HubMock.d.ts +1 -1
- package/lib/cjs/HubMock.d.ts.map +1 -1
- package/lib/cjs/HubMock.js +13 -2
- package/lib/cjs/HubMock.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +4 -0
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +33 -3
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +2 -0
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/ViewStore.d.ts.map +1 -1
- package/lib/cjs/ViewStore.js +2 -1
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js +2 -0
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/Symbols.d.ts +2 -0
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +3 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +1 -0
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +11 -22
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/BackendHubAccess.d.ts +2 -8
- package/lib/esm/BackendHubAccess.d.ts.map +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.d.ts.map +1 -1
- package/lib/esm/ChangeSummaryManager.js +12 -5
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +1 -0
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/CheckpointManager.d.ts +8 -15
- package/lib/esm/CheckpointManager.d.ts.map +1 -1
- package/lib/esm/CheckpointManager.js +22 -52
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/ECDb.d.ts +37 -1
- package/lib/esm/ECDb.d.ts.map +1 -1
- package/lib/esm/ECDb.js +82 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSqlStatement.d.ts +181 -2
- package/lib/esm/ECSqlStatement.d.ts.map +1 -1
- package/lib/esm/ECSqlStatement.js +222 -4
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/Element.d.ts +16 -4
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +40 -2
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.d.ts.map +1 -1
- package/lib/esm/ElementAspect.js +1 -0
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
- package/lib/esm/ElementTreeWalker.js +4 -0
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/HubMock.d.ts +1 -1
- package/lib/esm/HubMock.d.ts.map +1 -1
- package/lib/esm/HubMock.js +13 -2
- package/lib/esm/HubMock.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +4 -0
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +33 -3
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +2 -0
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/ViewStore.d.ts.map +1 -1
- package/lib/esm/ViewStore.js +2 -1
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js +2 -0
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/Symbols.d.ts +2 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +2 -0
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js +1 -0
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js +13 -24
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/test/CloudSqliteMock.d.ts +37 -0
- package/lib/esm/test/CloudSqliteMock.d.ts.map +1 -0
- package/lib/esm/test/CloudSqliteMock.js +117 -0
- package/lib/esm/test/CloudSqliteMock.js.map +1 -0
- package/lib/esm/test/IModelTestUtils.d.ts +1 -1
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
- package/lib/esm/test/IModelTestUtils.js +16 -4
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/PrintElementTree.js +1 -0
- package/lib/esm/test/PrintElementTree.js.map +1 -1
- package/lib/esm/test/SchemaUtils.test.js +2 -0
- package/lib/esm/test/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +12 -1
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +1 -0
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +6 -0
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +253 -163
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -0
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +1 -0
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +5 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +10 -0
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js +3 -1
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +18 -7
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js +5 -91
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js +1 -0
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +14 -0
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js +1 -0
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js +0 -4
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +1 -0
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.d.ts +2 -0
- package/lib/esm/test/standalone/Drawing.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/Drawing.test.js +120 -0
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -0
- package/lib/esm/test/standalone/IModelWrite.test.js +22 -6
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js +1 -0
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js +4 -3
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/package.json +13 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementTreeWalker.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/ElementTreeWalker.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 { Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { Code, GeometricElement2dProps, GeometricElementProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { Point2d } from \"@itwin/core-geometry\";\nimport { assert } from \"chai\";\nimport * as path from \"path\";\nimport * as sinon from \"sinon\";\nimport { DefinitionContainer, DefinitionModel, DocumentListModel, Drawing, DrawingCategory, DrawingGraphic, ElementGroupsMembers, ElementOwnsChildElements, ExternalSource, ExternalSourceGroup, IModelDb, Model, PhysicalPartition, SnapshotDb, SpatialCategory, SubCategory, Subject } from \"../../core-backend\";\nimport { deleteElementSubTrees, deleteElementTree, ElementTreeBottomUp, ElementTreeWalkerScope } from \"../../ElementTreeWalker\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\n\n// Test class that collects the results of a bottom-up tree walk\nclass ElementTreeCollector extends ElementTreeBottomUp {\n public subModels: Id64Array = [];\n public definitionModels: Id64Array = [];\n public elements: Id64Array = [];\n public definitions: Id64Array = [];\n\n public constructor(iModel: IModelDb) { super(iModel); }\n\n public visitModel(model: Model, _scope: ElementTreeWalkerScope): void {\n if (model instanceof DefinitionModel)\n this.definitionModels.push(model.id);\n else\n this.subModels.push(model.id);\n }\n\n public visitElement(elementId: Id64String, scope: ElementTreeWalkerScope): void {\n if (scope.inDefinitionModel)\n this.definitions.push(elementId); // may be some other kind of InformationContentElement - that's OK.\n else\n this.elements.push(elementId);\n }\n\n public collect(topElement: Id64String): void {\n this.processElementTree(topElement, ElementTreeWalkerScope.createTopScope(this._iModel, topElement));\n }\n}\n\nclass SelectedElementCollector extends ElementTreeCollector {\n public constructor(iModel: IModelDb, private _elementsToReport: Id64Array) { super(iModel); }\n public override shouldExploreModel(_model: Model): boolean { return true; }\n public override shouldVisitModel(_model: Model): boolean { return false; }\n public override shouldVisitElement(elementId: Id64String): boolean { return this._elementsToReport.includes(elementId); }\n}\n\nfunction doesElementExist(iModel: IModelDb, elementId: Id64String): boolean {\n return iModel.elements.tryGetElementProps(elementId) !== undefined;\n}\n\nfunction doesModelExist(iModel: IModelDb, mid: Id64String): boolean {\n return iModel.models.tryGetModelProps(mid) !== undefined;\n}\n\nfunction doesGroupRelationshipExist(iModel: IModelDb, source: Id64String, target: Id64String): boolean {\n return iModel.withPreparedStatement(`select count(*) from ${ElementGroupsMembers.classFullName} where sourceecinstanceid=? and targetecinstanceid=?`, (stmt) => {\n stmt.bindId(1, source);\n stmt.bindId(2, target);\n stmt.step();\n return stmt.getValue(0).getInteger() !== 0;\n });\n}\n\ndescribe(\"ElementTreeWalker\", () => {\n let iModel: SnapshotDb;\n let originalEnv: any;\n\n let repositoryLinkId: Id64String;\n let jobSubjectId: Id64String;\n let childSubject: Id64String;\n let definitionModelId: Id64String;\n let definitionContainerId: Id64String;\n let drawingDefinitionModelId: Id64String;\n let spatialCategoryId: Id64String;\n let nestedSpatialCategoryId: Id64String;\n let drawingCategoryId: Id64String;\n let drawingSubCategory1Id: Id64String;\n let drawingSubCategory2Id: Id64String;\n let xsGroup: Id64String;\n let xsElement: Id64String;\n let documentListModelId: Id64String;\n let drawingModelId: Id64String;\n let drawingGraphicId1: Id64String;\n let physicalModelId: Id64String;\n let physicalObjectId1: Id64String;\n let physicalObjectId2: Id64String;\n let physicalObjectId3: Id64String;\n\n before(async () => {\n originalEnv = { ...process.env };\n\n IModelTestUtils.registerTestBimSchema();\n });\n\n after(() => {\n process.env = originalEnv;\n });\n\n beforeEach(async () => {\n // Uncomment the following two lines to debug test failures\n // Logger.initializeToConsole();\n // Logger.setLevel(\"core-backend.IModelDb.ElementTreeWalker\", LogLevel.Trace);\n\n const iModelFileName = IModelTestUtils.prepareOutputFile(\"ElementTreeWalker\", \"Test.bim\");\n iModel = SnapshotDb.createEmpty(iModelFileName, { rootSubject: { name: \"ElementTreeWalker Test\" } });\n const schemaPathname = path.join(KnownTestLocations.assetsDir, \"TestBim.ecschema.xml\");\n await iModel.importSchemas([schemaPathname]); // will throw an exception if import fails\n\n /*\n [RepositoryModel]\n RepositoryLink\n Job Subject\n +- DefinitionParitition -- [DefinitionModel]\n | DrawingCategory\n | default SubCategory + 2 non-default SubCategories\n | ExternalSourceGroup\n | ExternalSource child1\n +- DefinitionParitition -- [DefinitionModel]\n | SpatialCategory\n | DefinitionContainer\n | SpatialCategory\n |\n +- DocumentList -- [DocumentListModel]\n | Drawing -- [DrawingModel]\n | DrawingGraphic\n +- Child Subject\n |\n +- PhysicalPartition -- [PhysicalModel]\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\n */\n\n repositoryLinkId = IModelTestUtils.insertRepositoryLink(iModel, \"test link\", \"foo\", \"bar\");\n jobSubjectId = IModelTestUtils.createJobSubjectElement(iModel, \"Job\").insert();\n\n childSubject = Subject.insert(iModel, jobSubjectId, \"Child Subject\");\n\n definitionModelId = DefinitionModel.insert(iModel, jobSubjectId, \"Definition\");\n spatialCategoryId = SpatialCategory.insert(iModel, definitionModelId, \"SpatialCategory\", new SubCategoryAppearance());\n drawingDefinitionModelId = DefinitionModel.insert(iModel, jobSubjectId, \"DrawingDefinition\");\n drawingCategoryId = DrawingCategory.insert(iModel, drawingDefinitionModelId, \"DrawingCategory\", new SubCategoryAppearance());\n drawingSubCategory1Id = SubCategory.insert(iModel, drawingCategoryId, \"SubCategory1\", new SubCategoryAppearance());\n drawingSubCategory2Id = SubCategory.insert(iModel, drawingCategoryId, \"SubCategory2\", new SubCategoryAppearance());\n\n definitionContainerId = DefinitionContainer.insert(iModel, definitionModelId, Code.createEmpty());\n nestedSpatialCategoryId = SpatialCategory.insert(iModel, definitionContainerId, \"nested\", {});\n\n xsGroup = iModel.elements.insertElement({ classFullName: ExternalSourceGroup.classFullName, model: drawingDefinitionModelId, code: Code.createEmpty() });\n xsElement = iModel.elements.insertElement({ classFullName: ExternalSource.classFullName, model: drawingDefinitionModelId, parent: new ElementOwnsChildElements(xsGroup), code: Code.createEmpty() });\n\n documentListModelId = DocumentListModel.insert(iModel, jobSubjectId, \"Document\");\n assert.isTrue(Id64.isValidId64(documentListModelId));\n drawingModelId = Drawing.insert(iModel, documentListModelId, \"Drawing\");\n const drawingGraphicProps1: GeometricElement2dProps = {\n classFullName: DrawingGraphic.classFullName,\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n userLabel: \"DrawingGraphic1\",\n geom: IModelTestUtils.createRectangle(Point2d.create(1, 1)),\n placement: { origin: Point2d.create(2, 2), angle: 0 },\n };\n drawingGraphicId1 = iModel.elements.insertElement(drawingGraphicProps1);\n\n [, physicalModelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(iModel, PhysicalPartition.createCode(iModel, childSubject, \"Physical\"), false, childSubject);\n const elementProps: GeometricElementProps = {\n classFullName: \"TestBim:TestPhysicalObject\",\n model: physicalModelId,\n category: spatialCategoryId,\n code: Code.createEmpty(),\n };\n const elementProps2: GeometricElementProps = {\n classFullName: \"TestBim:TestPhysicalObject\",\n model: physicalModelId,\n category: nestedSpatialCategoryId,\n code: Code.createEmpty(),\n };\n physicalObjectId1 = iModel.elements.insertElement(iModel.elements.createElement(elementProps).toJSON());\n physicalObjectId2 = iModel.elements.insertElement(iModel.elements.createElement(elementProps2).toJSON());\n physicalObjectId3 = iModel.elements.insertElement(iModel.elements.createElement(elementProps).toJSON());\n ElementGroupsMembers.create(iModel, physicalObjectId1, physicalObjectId2).insert();\n ElementGroupsMembers.create(iModel, physicalObjectId1, physicalObjectId3).insert();\n\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\n assert.equal(iModel.elements.getElement(jobSubjectId).parent?.id, IModel.rootSubjectId);\n assert.equal(iModel.elements.getElement(definitionModelId).parent?.id, jobSubjectId);\n assert.equal(iModel.elements.getElement(definitionContainerId).model, definitionModelId);\n assert.equal(iModel.elements.getElement(spatialCategoryId).model, definitionModelId);\n assert.equal(iModel.elements.getElement(nestedSpatialCategoryId).model, definitionContainerId);\n assert.equal(iModel.elements.getElement(drawingDefinitionModelId).parent?.id, jobSubjectId);\n assert.equal(iModel.elements.getElement(drawingCategoryId).model, drawingDefinitionModelId);\n assert.equal(iModel.elements.getElement(drawingSubCategory1Id).parent?.id, drawingCategoryId);\n assert.equal(iModel.elements.getElement(drawingSubCategory2Id).parent?.id, drawingCategoryId);\n assert.equal(iModel.elements.getElement(xsGroup).model, drawingDefinitionModelId);\n assert.equal(iModel.elements.getElement(xsElement).parent?.id, xsGroup);\n assert.equal(iModel.elements.getElement(documentListModelId).parent?.id, jobSubjectId);\n assert.equal(iModel.elements.getElement(drawingModelId).model, documentListModelId);\n assert.equal(iModel.elements.getElement(drawingGraphicId1).model, drawingModelId);\n assert.equal(iModel.elements.getElement(physicalModelId).parent?.id, childSubject);\n assert.equal(iModel.elements.getElement(physicalObjectId1).model, physicalModelId);\n assert.equal(iModel.elements.getElement(physicalObjectId2).model, physicalModelId);\n assert.equal(iModel.elements.getElement(physicalObjectId3).model, physicalModelId);\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n assert.isTrue(doesModelExist(iModel, definitionModelId));\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\n assert.isTrue(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isTrue(doesModelExist(iModel, drawingModelId));\n assert.isTrue(doesModelExist(iModel, physicalModelId));\n });\n\n afterEach(() => {\n sinon.restore();\n iModel.close();\n });\n\n it(\"DFS search and deleteElementTree\", () => {\n // First, check that DFS search visits elements and models in expected bottom-up order\n {\n const collector1 = new ElementTreeCollector(iModel);\n collector1.collect(jobSubjectId);\n assert.isTrue(collector1.subModels.includes(physicalModelId));\n assert.isTrue(collector1.subModels.includes(drawingModelId));\n assert.isTrue(collector1.subModels.includes(documentListModelId));\n assert.isTrue(collector1.subModels.indexOf(drawingModelId) < collector1.subModels.indexOf(documentListModelId), \"in bottom-up search, a child model should be visited before its parent model\");\n assert.isFalse(collector1.subModels.includes(definitionModelId));\n assert.isTrue(collector1.definitionModels.includes(definitionModelId));\n assert.isFalse(collector1.subModels.includes(definitionContainerId));\n assert.isTrue(collector1.definitionModels.includes(definitionContainerId));\n assert.isFalse(collector1.subModels.includes(drawingDefinitionModelId));\n assert.isTrue(collector1.definitionModels.includes(drawingDefinitionModelId));\n assert.isTrue(collector1.definitions.includes(drawingCategoryId));\n assert.isTrue(collector1.definitions.includes(spatialCategoryId));\n assert.isTrue(collector1.definitions.includes(nestedSpatialCategoryId));\n assert.isFalse(collector1.elements.includes(drawingCategoryId));\n assert.isFalse(collector1.elements.includes(spatialCategoryId));\n assert.isFalse(collector1.elements.includes(nestedSpatialCategoryId));\n assert.isTrue(collector1.elements.indexOf(physicalObjectId1) < collector1.elements.indexOf(physicalModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\n assert.isTrue(collector1.elements.indexOf(drawingGraphicId1) < collector1.elements.indexOf(drawingModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\n assert.isTrue(collector1.elements.indexOf(drawingModelId) < collector1.elements.indexOf(documentListModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\n assert.isTrue(collector1.elements.indexOf(documentListModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(definitionModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(definitionContainerId) < collector1.elements.indexOf(definitionModelId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(drawingDefinitionModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(childSubject) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(physicalModelId) < collector1.elements.indexOf(childSubject), \"in bottom-up search, a child element should be visited before its parent element\");\n }\n\n // Exercise the search filters\n {\n const collector2 = new SelectedElementCollector(iModel, [drawingGraphicId1, spatialCategoryId, nestedSpatialCategoryId, physicalObjectId3]);\n collector2.collect(jobSubjectId);\n assert.isTrue(collector2.definitions.length === 2);\n assert.isTrue(collector2.definitions.includes(spatialCategoryId));\n assert.isTrue(collector2.definitions.includes(nestedSpatialCategoryId));\n assert.isTrue(collector2.elements.length === 2);\n assert.isTrue(collector2.elements.includes(drawingGraphicId1));\n assert.isTrue(collector2.elements.includes(physicalObjectId3));\n }\n\n // Test the deleteElementTree function\n deleteElementTree(iModel, jobSubjectId);\n\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\n assert.isTrue(doesElementExist(iModel, repositoryLinkId), \"RepositoryLink should not have been deleted, since it is not under Job Subject\");\n assert.isFalse(doesElementExist(iModel, definitionModelId));\n assert.isFalse(doesElementExist(iModel, definitionContainerId));\n assert.isFalse(doesElementExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesElementExist(iModel, spatialCategoryId));\n assert.isFalse(doesElementExist(iModel, nestedSpatialCategoryId));\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\n assert.isFalse(doesElementExist(iModel, xsGroup));\n assert.isFalse(doesElementExist(iModel, xsElement));\n assert.isFalse(doesElementExist(iModel, documentListModelId));\n assert.isFalse(doesElementExist(iModel, drawingModelId));\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1));\n assert.isFalse(doesElementExist(iModel, physicalModelId));\n assert.isFalse(doesElementExist(iModel, physicalObjectId1));\n assert.isFalse(doesElementExist(iModel, physicalObjectId2));\n assert.isFalse(doesElementExist(iModel, physicalObjectId3));\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n assert.isFalse(doesElementExist(iModel, jobSubjectId));\n assert.isFalse(doesModelExist(iModel, definitionModelId));\n assert.isFalse(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesModelExist(iModel, drawingModelId));\n assert.isFalse(doesModelExist(iModel, physicalModelId));\n });\n\n it(\"deleteElementSubTrees\", () => {\n /*\n [RepositoryModel]\n RepositoryLink\n Job Subject\n +- DefinitionParitition -- [DefinitionModel]\n | DrawingCategory <-- PRUNE\n | default SubCategory + 2 non-default SubCategories\n | ExternalSourceGroup\n | ExternalSource child1\n +- DefinitionParitition -- [DefinitionModel]\n | SpatialCategory\n | DefinitionContainer\n | SpatialCategory\n |\n +- DocumentList -- [DocumentListModel]\n | Drawing -- [DrawingModel] <-- PRUNE\n | DrawingGraphic \"\n +- Child Subject\n |\n +- PhysicalPartition -- [PhysicalModel]\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\n ^-- PRUNE\n */\n\n const toPrune = new Set<string>();\n toPrune.add(drawingModelId);\n toPrune.add(drawingCategoryId);\n toPrune.add(physicalObjectId3);\n\n deleteElementSubTrees(iModel, jobSubjectId, (elementId) => toPrune.has(elementId));\n\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory1Id));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory2Id));\n assert.isFalse(doesElementExist(iModel, drawingModelId));\n assert.isFalse(doesModelExist(iModel, drawingModelId));\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1)); // contents of drawing model should be gone\n assert.isFalse(doesElementExist(iModel, physicalObjectId3));\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\n assert.isTrue(doesElementExist(iModel, definitionModelId));\n assert.isTrue(doesElementExist(iModel, definitionContainerId));\n assert.isTrue(doesElementExist(iModel, drawingDefinitionModelId));\n assert.equal(iModel.elements.getElement(xsGroup).model, drawingDefinitionModelId);\n assert.equal(iModel.elements.getElement(xsElement).parent?.id, xsGroup);\n assert.isTrue(doesElementExist(iModel, spatialCategoryId));\n assert.isTrue(doesElementExist(iModel, nestedSpatialCategoryId));\n assert.isTrue(doesElementExist(iModel, documentListModelId));\n assert.isTrue(doesElementExist(iModel, physicalModelId));\n assert.isTrue(doesElementExist(iModel, physicalObjectId1));\n assert.isTrue(doesElementExist(iModel, physicalObjectId2));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isTrue(doesElementExist(iModel, jobSubjectId));\n assert.isTrue(doesModelExist(iModel, definitionModelId));\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\n assert.isTrue(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isTrue(doesModelExist(iModel, physicalModelId));\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\n });\n\n it(\"deleteDefinitionPartition\", () => {\n /*\n [RepositoryModel]\n RepositoryLink\n Job Subject\n +- DefinitionParitition -- [DefinitionModel] <-- PRUNE\n | DrawingCategory\n | default SubCategory + 2 non-default SubCategories\n | ExternalSourceGroup\n | ExternalSource child1\n +- DefinitionParitition -- [DefinitionModel]\n | SpatialCategory\n | DefinitionContainer\n | SpatialCategory |\n +- DocumentList -- [DocumentListModel]\n | Drawing -- [DrawingModel]\n | DrawingGraphic\n +- Child Subject\n |\n +- PhysicalPartition -- [PhysicalModel]\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\n */\n\n const toPrune = new Set<string>();\n toPrune.add(drawingDefinitionModelId);\n toPrune.add(documentListModelId); // (also get rid of the elements that use the definitions)\n\n deleteElementSubTrees(iModel, jobSubjectId, (elementId) => toPrune.has(elementId));\n\n assert.isFalse(doesElementExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory1Id));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory2Id));\n assert.isFalse(doesElementExist(iModel, xsGroup));\n assert.isFalse(doesElementExist(iModel, xsElement));\n assert.isFalse(doesElementExist(iModel, documentListModelId));\n assert.isFalse(doesModelExist(iModel, documentListModelId));\n assert.isFalse(doesElementExist(iModel, drawingModelId));\n assert.isFalse(doesModelExist(iModel, drawingModelId));\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1));\n\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\n assert.isTrue(doesElementExist(iModel, definitionModelId));\n assert.isTrue(doesElementExist(iModel, definitionContainerId));\n assert.isTrue(doesElementExist(iModel, spatialCategoryId));\n assert.isTrue(doesElementExist(iModel, nestedSpatialCategoryId));\n assert.isTrue(doesElementExist(iModel, physicalModelId));\n assert.isTrue(doesElementExist(iModel, physicalObjectId1));\n assert.isTrue(doesElementExist(iModel, physicalObjectId2));\n assert.isTrue(doesElementExist(iModel, physicalObjectId3));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n assert.isTrue(doesElementExist(iModel, jobSubjectId));\n assert.isTrue(doesModelExist(iModel, definitionModelId));\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\n assert.isTrue(doesModelExist(iModel, physicalModelId));\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"ElementTreeWalker.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/ElementTreeWalker.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,IAAI,EAAyB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAkD,MAAM,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,cAAc,EAAE,mBAAmB,EAAmB,iBAAiB,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACnT,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAChI,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,gEAAgE;AAChE,MAAM,oBAAqB,SAAQ,mBAAmB;IAC7C,SAAS,GAAc,EAAE,CAAC;IAC1B,gBAAgB,GAAc,EAAE,CAAC;IACjC,QAAQ,GAAc,EAAE,CAAC;IACzB,WAAW,GAAc,EAAE,CAAC;IAEnC,YAAmB,MAAgB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEhD,UAAU,CAAC,KAAY,EAAE,MAA8B;QAC5D,IAAI,KAAK,YAAY,eAAe;YAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;YAErC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAEM,YAAY,CAAC,SAAqB,EAAE,KAA6B;QACtE,IAAI,KAAK,CAAC,iBAAiB;YACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mEAAmE;;YAErG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAEM,OAAO,CAAC,UAAsB;QACnC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACvG,CAAC;CACF;AAED,MAAM,wBAAyB,SAAQ,oBAAoB;IACZ;IAA7C,YAAmB,MAAgB,EAAU,iBAA4B;QAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAA9C,sBAAiB,GAAjB,iBAAiB,CAAW;IAAmB,CAAC;IAC7E,kBAAkB,CAAC,MAAa,IAAa,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,gBAAgB,CAAC,MAAa,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IAC1D,kBAAkB,CAAC,SAAqB,IAAa,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CAC1H;AAED,SAAS,gBAAgB,CAAC,MAAgB,EAAE,SAAqB;IAC/D,OAAO,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC;AACrE,CAAC;AAED,SAAS,cAAc,CAAC,MAAgB,EAAE,GAAe;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;AAC3D,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAgB,EAAE,MAAkB,EAAE,MAAkB;IAC1F,4DAA4D;IAC5D,OAAO,MAAM,CAAC,qBAAqB,CAAC,wBAAwB,oBAAoB,CAAC,aAAa,sDAAsD,EAAE,CAAC,IAAI,EAAE,EAAE;QAC7J,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,MAAkB,CAAC;IACvB,IAAI,WAAgB,CAAC;IAErB,IAAI,gBAA4B,CAAC;IACjC,IAAI,YAAwB,CAAC;IAC7B,IAAI,YAAwB,CAAC;IAC7B,IAAI,iBAA6B,CAAC;IAClC,IAAI,qBAAiC,CAAC;IACtC,IAAI,wBAAoC,CAAC;IACzC,IAAI,iBAA6B,CAAC;IAClC,IAAI,uBAAmC,CAAC;IACxC,IAAI,iBAA6B,CAAC;IAClC,IAAI,qBAAiC,CAAC;IACtC,IAAI,qBAAiC,CAAC;IACtC,IAAI,OAAmB,CAAC;IACxB,IAAI,SAAqB,CAAC;IAC1B,IAAI,mBAA+B,CAAC;IACpC,IAAI,cAA0B,CAAC;IAC/B,IAAI,iBAA6B,CAAC;IAClC,IAAI,eAA2B,CAAC;IAChC,IAAI,iBAA6B,CAAC;IAClC,IAAI,iBAA6B,CAAC;IAClC,IAAI,iBAA6B,CAAC;IAElC,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,WAAW,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEjC,eAAe,CAAC,qBAAqB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE;QACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,2DAA2D;QAC3D,gCAAgC;QAChC,8EAA8E;QAE9E,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QAC1F,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;QACrG,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QACvF,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,0CAA0C;QAExF;;;;;;;;;;;;;;;;;;;;;UAqBE;QAEF,gBAAgB,GAAG,eAAe,CAAC,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3F,YAAY,GAAG,eAAe,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAE/E,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QAErE,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAC/E,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAC;QACtH,wBAAwB,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;QAC7F,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAC7H,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAC;QACnH,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAEnH,qBAAqB,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClG,uBAAuB,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE9F,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,mBAAmB,CAAC,aAAa,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACzJ,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,aAAa,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAErM,mBAAmB,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QACjF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACrD,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;QACxE,MAAM,oBAAoB,GAA4B;YACpD,aAAa,EAAE,cAAc,CAAC,aAAa;YAC3C,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,iBAAiB;YAC3B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;YACxB,SAAS,EAAE,iBAAiB;YAC5B,IAAI,EAAE,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;SACtD,CAAC;QACF,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAExE,CAAC,EAAE,eAAe,CAAC,GAAG,eAAe,CAAC,wCAAwC,CAAC,MAAM,EAAE,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5K,MAAM,YAAY,GAA0B;YAC1C,aAAa,EAAE,4BAA4B;YAC3C,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,iBAAiB;YAC3B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;SACzB,CAAC;QACF,MAAM,aAAa,GAA0B;YAC3C,aAAa,EAAE,4BAA4B;YAC3C,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,uBAAuB;YACjC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;SACzB,CAAC;QACF,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACxG,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACzG,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACxG,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;QACnF,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;QAEnF,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACzF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QAC/F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QAC5F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QAC5F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QAClF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QACvF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACpF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAClF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QACnF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,sFAAsF;QACtF,CAAC;YACC,MAAM,UAAU,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACpD,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,8EAA8E,CAAC,CAAC;YAChM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACrE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC3E,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC9E,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,yFAAyF,CAAC,CAAC;YACxM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,yFAAyF,CAAC,CAAC;YACvM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,yFAAyF,CAAC,CAAC;YACzM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,kFAAkF,CAAC,CAAC;YAChM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,kFAAkF,CAAC,CAAC;YAC9L,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,kFAAkF,CAAC,CAAC;YACvM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,kFAAkF,CAAC,CAAC;YACrM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,kFAAkF,CAAC,CAAC;YACzL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,kFAAkF,CAAC,CAAC;QAC9L,CAAC;QAED,8BAA8B;QAC9B,CAAC;YACC,MAAM,UAAU,GAAG,IAAI,wBAAwB,CAAC,MAAM,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC5I,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,sCAAsC;QACtC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAExC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,gFAAgF,CAAC,CAAC;QAC5I,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACzF,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACzF,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B;;;;;;;;;;;;;;;;;;;;;;UAsBE;QAEF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAE/B,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAEnF,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,2CAA2C;QACxG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAEzF,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QAClF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC;;;;;;;;;;;;;;;;;;;;UAoBE;QAEF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,0DAA0D;QAE5F,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAEnF,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7D,CAAC,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 { Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { Code, GeometricElement2dProps, GeometricElementProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { Point2d } from \"@itwin/core-geometry\";\nimport { assert } from \"chai\";\nimport * as path from \"path\";\nimport * as sinon from \"sinon\";\nimport { DefinitionContainer, DefinitionModel, DocumentListModel, Drawing, DrawingCategory, DrawingGraphic, ElementGroupsMembers, ElementOwnsChildElements, ExternalSource, ExternalSourceGroup, IModelDb, Model, PhysicalPartition, SnapshotDb, SpatialCategory, SubCategory, Subject } from \"../../core-backend\";\nimport { deleteElementSubTrees, deleteElementTree, ElementTreeBottomUp, ElementTreeWalkerScope } from \"../../ElementTreeWalker\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\n\n// Test class that collects the results of a bottom-up tree walk\nclass ElementTreeCollector extends ElementTreeBottomUp {\n public subModels: Id64Array = [];\n public definitionModels: Id64Array = [];\n public elements: Id64Array = [];\n public definitions: Id64Array = [];\n\n public constructor(iModel: IModelDb) { super(iModel); }\n\n public visitModel(model: Model, _scope: ElementTreeWalkerScope): void {\n if (model instanceof DefinitionModel)\n this.definitionModels.push(model.id);\n else\n this.subModels.push(model.id);\n }\n\n public visitElement(elementId: Id64String, scope: ElementTreeWalkerScope): void {\n if (scope.inDefinitionModel)\n this.definitions.push(elementId); // may be some other kind of InformationContentElement - that's OK.\n else\n this.elements.push(elementId);\n }\n\n public collect(topElement: Id64String): void {\n this.processElementTree(topElement, ElementTreeWalkerScope.createTopScope(this._iModel, topElement));\n }\n}\n\nclass SelectedElementCollector extends ElementTreeCollector {\n public constructor(iModel: IModelDb, private _elementsToReport: Id64Array) { super(iModel); }\n public override shouldExploreModel(_model: Model): boolean { return true; }\n public override shouldVisitModel(_model: Model): boolean { return false; }\n public override shouldVisitElement(elementId: Id64String): boolean { return this._elementsToReport.includes(elementId); }\n}\n\nfunction doesElementExist(iModel: IModelDb, elementId: Id64String): boolean {\n return iModel.elements.tryGetElementProps(elementId) !== undefined;\n}\n\nfunction doesModelExist(iModel: IModelDb, mid: Id64String): boolean {\n return iModel.models.tryGetModelProps(mid) !== undefined;\n}\n\nfunction doesGroupRelationshipExist(iModel: IModelDb, source: Id64String, target: Id64String): boolean {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return iModel.withPreparedStatement(`select count(*) from ${ElementGroupsMembers.classFullName} where sourceecinstanceid=? and targetecinstanceid=?`, (stmt) => {\n stmt.bindId(1, source);\n stmt.bindId(2, target);\n stmt.step();\n return stmt.getValue(0).getInteger() !== 0;\n });\n}\n\ndescribe(\"ElementTreeWalker\", () => {\n let iModel: SnapshotDb;\n let originalEnv: any;\n\n let repositoryLinkId: Id64String;\n let jobSubjectId: Id64String;\n let childSubject: Id64String;\n let definitionModelId: Id64String;\n let definitionContainerId: Id64String;\n let drawingDefinitionModelId: Id64String;\n let spatialCategoryId: Id64String;\n let nestedSpatialCategoryId: Id64String;\n let drawingCategoryId: Id64String;\n let drawingSubCategory1Id: Id64String;\n let drawingSubCategory2Id: Id64String;\n let xsGroup: Id64String;\n let xsElement: Id64String;\n let documentListModelId: Id64String;\n let drawingModelId: Id64String;\n let drawingGraphicId1: Id64String;\n let physicalModelId: Id64String;\n let physicalObjectId1: Id64String;\n let physicalObjectId2: Id64String;\n let physicalObjectId3: Id64String;\n\n before(async () => {\n originalEnv = { ...process.env };\n\n IModelTestUtils.registerTestBimSchema();\n });\n\n after(() => {\n process.env = originalEnv;\n });\n\n beforeEach(async () => {\n // Uncomment the following two lines to debug test failures\n // Logger.initializeToConsole();\n // Logger.setLevel(\"core-backend.IModelDb.ElementTreeWalker\", LogLevel.Trace);\n\n const iModelFileName = IModelTestUtils.prepareOutputFile(\"ElementTreeWalker\", \"Test.bim\");\n iModel = SnapshotDb.createEmpty(iModelFileName, { rootSubject: { name: \"ElementTreeWalker Test\" } });\n const schemaPathname = path.join(KnownTestLocations.assetsDir, \"TestBim.ecschema.xml\");\n await iModel.importSchemas([schemaPathname]); // will throw an exception if import fails\n\n /*\n [RepositoryModel]\n RepositoryLink\n Job Subject\n +- DefinitionParitition -- [DefinitionModel]\n | DrawingCategory\n | default SubCategory + 2 non-default SubCategories\n | ExternalSourceGroup\n | ExternalSource child1\n +- DefinitionParitition -- [DefinitionModel]\n | SpatialCategory\n | DefinitionContainer\n | SpatialCategory\n |\n +- DocumentList -- [DocumentListModel]\n | Drawing -- [DrawingModel]\n | DrawingGraphic\n +- Child Subject\n |\n +- PhysicalPartition -- [PhysicalModel]\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\n */\n\n repositoryLinkId = IModelTestUtils.insertRepositoryLink(iModel, \"test link\", \"foo\", \"bar\");\n jobSubjectId = IModelTestUtils.createJobSubjectElement(iModel, \"Job\").insert();\n\n childSubject = Subject.insert(iModel, jobSubjectId, \"Child Subject\");\n\n definitionModelId = DefinitionModel.insert(iModel, jobSubjectId, \"Definition\");\n spatialCategoryId = SpatialCategory.insert(iModel, definitionModelId, \"SpatialCategory\", new SubCategoryAppearance());\n drawingDefinitionModelId = DefinitionModel.insert(iModel, jobSubjectId, \"DrawingDefinition\");\n drawingCategoryId = DrawingCategory.insert(iModel, drawingDefinitionModelId, \"DrawingCategory\", new SubCategoryAppearance());\n drawingSubCategory1Id = SubCategory.insert(iModel, drawingCategoryId, \"SubCategory1\", new SubCategoryAppearance());\n drawingSubCategory2Id = SubCategory.insert(iModel, drawingCategoryId, \"SubCategory2\", new SubCategoryAppearance());\n\n definitionContainerId = DefinitionContainer.insert(iModel, definitionModelId, Code.createEmpty());\n nestedSpatialCategoryId = SpatialCategory.insert(iModel, definitionContainerId, \"nested\", {});\n\n xsGroup = iModel.elements.insertElement({ classFullName: ExternalSourceGroup.classFullName, model: drawingDefinitionModelId, code: Code.createEmpty() });\n xsElement = iModel.elements.insertElement({ classFullName: ExternalSource.classFullName, model: drawingDefinitionModelId, parent: new ElementOwnsChildElements(xsGroup), code: Code.createEmpty() });\n\n documentListModelId = DocumentListModel.insert(iModel, jobSubjectId, \"Document\");\n assert.isTrue(Id64.isValidId64(documentListModelId));\n drawingModelId = Drawing.insert(iModel, documentListModelId, \"Drawing\");\n const drawingGraphicProps1: GeometricElement2dProps = {\n classFullName: DrawingGraphic.classFullName,\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n userLabel: \"DrawingGraphic1\",\n geom: IModelTestUtils.createRectangle(Point2d.create(1, 1)),\n placement: { origin: Point2d.create(2, 2), angle: 0 },\n };\n drawingGraphicId1 = iModel.elements.insertElement(drawingGraphicProps1);\n\n [, physicalModelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(iModel, PhysicalPartition.createCode(iModel, childSubject, \"Physical\"), false, childSubject);\n const elementProps: GeometricElementProps = {\n classFullName: \"TestBim:TestPhysicalObject\",\n model: physicalModelId,\n category: spatialCategoryId,\n code: Code.createEmpty(),\n };\n const elementProps2: GeometricElementProps = {\n classFullName: \"TestBim:TestPhysicalObject\",\n model: physicalModelId,\n category: nestedSpatialCategoryId,\n code: Code.createEmpty(),\n };\n physicalObjectId1 = iModel.elements.insertElement(iModel.elements.createElement(elementProps).toJSON());\n physicalObjectId2 = iModel.elements.insertElement(iModel.elements.createElement(elementProps2).toJSON());\n physicalObjectId3 = iModel.elements.insertElement(iModel.elements.createElement(elementProps).toJSON());\n ElementGroupsMembers.create(iModel, physicalObjectId1, physicalObjectId2).insert();\n ElementGroupsMembers.create(iModel, physicalObjectId1, physicalObjectId3).insert();\n\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\n assert.equal(iModel.elements.getElement(jobSubjectId).parent?.id, IModel.rootSubjectId);\n assert.equal(iModel.elements.getElement(definitionModelId).parent?.id, jobSubjectId);\n assert.equal(iModel.elements.getElement(definitionContainerId).model, definitionModelId);\n assert.equal(iModel.elements.getElement(spatialCategoryId).model, definitionModelId);\n assert.equal(iModel.elements.getElement(nestedSpatialCategoryId).model, definitionContainerId);\n assert.equal(iModel.elements.getElement(drawingDefinitionModelId).parent?.id, jobSubjectId);\n assert.equal(iModel.elements.getElement(drawingCategoryId).model, drawingDefinitionModelId);\n assert.equal(iModel.elements.getElement(drawingSubCategory1Id).parent?.id, drawingCategoryId);\n assert.equal(iModel.elements.getElement(drawingSubCategory2Id).parent?.id, drawingCategoryId);\n assert.equal(iModel.elements.getElement(xsGroup).model, drawingDefinitionModelId);\n assert.equal(iModel.elements.getElement(xsElement).parent?.id, xsGroup);\n assert.equal(iModel.elements.getElement(documentListModelId).parent?.id, jobSubjectId);\n assert.equal(iModel.elements.getElement(drawingModelId).model, documentListModelId);\n assert.equal(iModel.elements.getElement(drawingGraphicId1).model, drawingModelId);\n assert.equal(iModel.elements.getElement(physicalModelId).parent?.id, childSubject);\n assert.equal(iModel.elements.getElement(physicalObjectId1).model, physicalModelId);\n assert.equal(iModel.elements.getElement(physicalObjectId2).model, physicalModelId);\n assert.equal(iModel.elements.getElement(physicalObjectId3).model, physicalModelId);\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n assert.isTrue(doesModelExist(iModel, definitionModelId));\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\n assert.isTrue(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isTrue(doesModelExist(iModel, drawingModelId));\n assert.isTrue(doesModelExist(iModel, physicalModelId));\n });\n\n afterEach(() => {\n sinon.restore();\n iModel.close();\n });\n\n it(\"DFS search and deleteElementTree\", () => {\n // First, check that DFS search visits elements and models in expected bottom-up order\n {\n const collector1 = new ElementTreeCollector(iModel);\n collector1.collect(jobSubjectId);\n assert.isTrue(collector1.subModels.includes(physicalModelId));\n assert.isTrue(collector1.subModels.includes(drawingModelId));\n assert.isTrue(collector1.subModels.includes(documentListModelId));\n assert.isTrue(collector1.subModels.indexOf(drawingModelId) < collector1.subModels.indexOf(documentListModelId), \"in bottom-up search, a child model should be visited before its parent model\");\n assert.isFalse(collector1.subModels.includes(definitionModelId));\n assert.isTrue(collector1.definitionModels.includes(definitionModelId));\n assert.isFalse(collector1.subModels.includes(definitionContainerId));\n assert.isTrue(collector1.definitionModels.includes(definitionContainerId));\n assert.isFalse(collector1.subModels.includes(drawingDefinitionModelId));\n assert.isTrue(collector1.definitionModels.includes(drawingDefinitionModelId));\n assert.isTrue(collector1.definitions.includes(drawingCategoryId));\n assert.isTrue(collector1.definitions.includes(spatialCategoryId));\n assert.isTrue(collector1.definitions.includes(nestedSpatialCategoryId));\n assert.isFalse(collector1.elements.includes(drawingCategoryId));\n assert.isFalse(collector1.elements.includes(spatialCategoryId));\n assert.isFalse(collector1.elements.includes(nestedSpatialCategoryId));\n assert.isTrue(collector1.elements.indexOf(physicalObjectId1) < collector1.elements.indexOf(physicalModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\n assert.isTrue(collector1.elements.indexOf(drawingGraphicId1) < collector1.elements.indexOf(drawingModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\n assert.isTrue(collector1.elements.indexOf(drawingModelId) < collector1.elements.indexOf(documentListModelId), \"in bottom-up search, an element in a model should be visited before its model's element\");\n assert.isTrue(collector1.elements.indexOf(documentListModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(definitionModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(definitionContainerId) < collector1.elements.indexOf(definitionModelId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(drawingDefinitionModelId) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(childSubject) < collector1.elements.indexOf(jobSubjectId), \"in bottom-up search, a child element should be visited before its parent element\");\n assert.isTrue(collector1.elements.indexOf(physicalModelId) < collector1.elements.indexOf(childSubject), \"in bottom-up search, a child element should be visited before its parent element\");\n }\n\n // Exercise the search filters\n {\n const collector2 = new SelectedElementCollector(iModel, [drawingGraphicId1, spatialCategoryId, nestedSpatialCategoryId, physicalObjectId3]);\n collector2.collect(jobSubjectId);\n assert.isTrue(collector2.definitions.length === 2);\n assert.isTrue(collector2.definitions.includes(spatialCategoryId));\n assert.isTrue(collector2.definitions.includes(nestedSpatialCategoryId));\n assert.isTrue(collector2.elements.length === 2);\n assert.isTrue(collector2.elements.includes(drawingGraphicId1));\n assert.isTrue(collector2.elements.includes(physicalObjectId3));\n }\n\n // Test the deleteElementTree function\n deleteElementTree(iModel, jobSubjectId);\n\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\n assert.isTrue(doesElementExist(iModel, repositoryLinkId), \"RepositoryLink should not have been deleted, since it is not under Job Subject\");\n assert.isFalse(doesElementExist(iModel, definitionModelId));\n assert.isFalse(doesElementExist(iModel, definitionContainerId));\n assert.isFalse(doesElementExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesElementExist(iModel, spatialCategoryId));\n assert.isFalse(doesElementExist(iModel, nestedSpatialCategoryId));\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\n assert.isFalse(doesElementExist(iModel, xsGroup));\n assert.isFalse(doesElementExist(iModel, xsElement));\n assert.isFalse(doesElementExist(iModel, documentListModelId));\n assert.isFalse(doesElementExist(iModel, drawingModelId));\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1));\n assert.isFalse(doesElementExist(iModel, physicalModelId));\n assert.isFalse(doesElementExist(iModel, physicalObjectId1));\n assert.isFalse(doesElementExist(iModel, physicalObjectId2));\n assert.isFalse(doesElementExist(iModel, physicalObjectId3));\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n assert.isFalse(doesElementExist(iModel, jobSubjectId));\n assert.isFalse(doesModelExist(iModel, definitionModelId));\n assert.isFalse(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesModelExist(iModel, drawingModelId));\n assert.isFalse(doesModelExist(iModel, physicalModelId));\n });\n\n it(\"deleteElementSubTrees\", () => {\n /*\n [RepositoryModel]\n RepositoryLink\n Job Subject\n +- DefinitionParitition -- [DefinitionModel]\n | DrawingCategory <-- PRUNE\n | default SubCategory + 2 non-default SubCategories\n | ExternalSourceGroup\n | ExternalSource child1\n +- DefinitionParitition -- [DefinitionModel]\n | SpatialCategory\n | DefinitionContainer\n | SpatialCategory\n |\n +- DocumentList -- [DocumentListModel]\n | Drawing -- [DrawingModel] <-- PRUNE\n | DrawingGraphic \"\n +- Child Subject\n |\n +- PhysicalPartition -- [PhysicalModel]\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\n ^-- PRUNE\n */\n\n const toPrune = new Set<string>();\n toPrune.add(drawingModelId);\n toPrune.add(drawingCategoryId);\n toPrune.add(physicalObjectId3);\n\n deleteElementSubTrees(iModel, jobSubjectId, (elementId) => toPrune.has(elementId));\n\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory1Id));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory2Id));\n assert.isFalse(doesElementExist(iModel, drawingModelId));\n assert.isFalse(doesModelExist(iModel, drawingModelId));\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1)); // contents of drawing model should be gone\n assert.isFalse(doesElementExist(iModel, physicalObjectId3));\n assert.isFalse(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\n assert.isTrue(doesElementExist(iModel, definitionModelId));\n assert.isTrue(doesElementExist(iModel, definitionContainerId));\n assert.isTrue(doesElementExist(iModel, drawingDefinitionModelId));\n assert.equal(iModel.elements.getElement(xsGroup).model, drawingDefinitionModelId);\n assert.equal(iModel.elements.getElement(xsElement).parent?.id, xsGroup);\n assert.isTrue(doesElementExist(iModel, spatialCategoryId));\n assert.isTrue(doesElementExist(iModel, nestedSpatialCategoryId));\n assert.isTrue(doesElementExist(iModel, documentListModelId));\n assert.isTrue(doesElementExist(iModel, physicalModelId));\n assert.isTrue(doesElementExist(iModel, physicalObjectId1));\n assert.isTrue(doesElementExist(iModel, physicalObjectId2));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isTrue(doesElementExist(iModel, jobSubjectId));\n assert.isTrue(doesModelExist(iModel, definitionModelId));\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\n assert.isTrue(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isTrue(doesModelExist(iModel, physicalModelId));\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\n });\n\n it(\"deleteDefinitionPartition\", () => {\n /*\n [RepositoryModel]\n RepositoryLink\n Job Subject\n +- DefinitionParitition -- [DefinitionModel] <-- PRUNE\n | DrawingCategory\n | default SubCategory + 2 non-default SubCategories\n | ExternalSourceGroup\n | ExternalSource child1\n +- DefinitionParitition -- [DefinitionModel]\n | SpatialCategory\n | DefinitionContainer\n | SpatialCategory |\n +- DocumentList -- [DocumentListModel]\n | Drawing -- [DrawingModel]\n | DrawingGraphic\n +- Child Subject\n |\n +- PhysicalPartition -- [PhysicalModel]\n PhysicalObject, PhysicalObject, PhysicalObject (grouped)\n */\n\n const toPrune = new Set<string>();\n toPrune.add(drawingDefinitionModelId);\n toPrune.add(documentListModelId); // (also get rid of the elements that use the definitions)\n\n deleteElementSubTrees(iModel, jobSubjectId, (elementId) => toPrune.has(elementId));\n\n assert.isFalse(doesElementExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesModelExist(iModel, drawingDefinitionModelId));\n assert.isFalse(doesElementExist(iModel, drawingCategoryId));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory1Id));\n assert.isFalse(doesElementExist(iModel, drawingSubCategory2Id));\n assert.isFalse(doesElementExist(iModel, xsGroup));\n assert.isFalse(doesElementExist(iModel, xsElement));\n assert.isFalse(doesElementExist(iModel, documentListModelId));\n assert.isFalse(doesModelExist(iModel, documentListModelId));\n assert.isFalse(doesElementExist(iModel, drawingModelId));\n assert.isFalse(doesModelExist(iModel, drawingModelId));\n assert.isFalse(doesElementExist(iModel, drawingGraphicId1));\n\n assert.isTrue(doesElementExist(iModel, repositoryLinkId));\n assert.isTrue(doesElementExist(iModel, definitionModelId));\n assert.isTrue(doesElementExist(iModel, definitionContainerId));\n assert.isTrue(doesElementExist(iModel, spatialCategoryId));\n assert.isTrue(doesElementExist(iModel, nestedSpatialCategoryId));\n assert.isTrue(doesElementExist(iModel, physicalModelId));\n assert.isTrue(doesElementExist(iModel, physicalObjectId1));\n assert.isTrue(doesElementExist(iModel, physicalObjectId2));\n assert.isTrue(doesElementExist(iModel, physicalObjectId3));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId2));\n assert.isTrue(doesGroupRelationshipExist(iModel, physicalObjectId1, physicalObjectId3));\n assert.isTrue(doesElementExist(iModel, jobSubjectId));\n assert.isTrue(doesModelExist(iModel, definitionModelId));\n assert.isTrue(doesModelExist(iModel, definitionContainerId));\n assert.isTrue(doesModelExist(iModel, physicalModelId));\n assert.isTrue(doesModelExist(iModel, IModel.repositoryModelId));\n assert.isTrue(doesModelExist(iModel, IModel.dictionaryId));\n });\n});\n"]}
|
|
@@ -711,6 +711,7 @@ describe("iModel", () => {
|
|
|
711
711
|
});
|
|
712
712
|
it("should be some categories", () => {
|
|
713
713
|
const categorySql = `SELECT ECInstanceId FROM ${Category.classFullName}`;
|
|
714
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
714
715
|
imodel1.withPreparedStatement(categorySql, (categoryStatement) => {
|
|
715
716
|
let numCategories = 0;
|
|
716
717
|
while (DbResult.BE_SQLITE_ROW === categoryStatement.step()) {
|
|
@@ -729,6 +730,7 @@ describe("iModel", () => {
|
|
|
729
730
|
}
|
|
730
731
|
// get the subcategories
|
|
731
732
|
const subCategorySql = `SELECT ECInstanceId FROM ${SubCategory.classFullName} WHERE Parent.Id=:parentId`;
|
|
733
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
732
734
|
imodel1.withPreparedStatement(subCategorySql, (subCategoryStatement) => {
|
|
733
735
|
let numSubCategories = 0;
|
|
734
736
|
subCategoryStatement.bindId("parentId", categoryId);
|
|
@@ -747,6 +749,7 @@ describe("iModel", () => {
|
|
|
747
749
|
});
|
|
748
750
|
it("should be some 2d elements", () => {
|
|
749
751
|
const sql = `SELECT ECInstanceId FROM ${DrawingGraphic.classFullName}`;
|
|
752
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
750
753
|
imodel2.withPreparedStatement(sql, (statement) => {
|
|
751
754
|
let numDrawingGraphics = 0;
|
|
752
755
|
let found25 = false;
|
|
@@ -833,6 +836,7 @@ describe("iModel", () => {
|
|
|
833
836
|
});
|
|
834
837
|
it("should be children of RootSubject", () => {
|
|
835
838
|
const sql = `SELECT ECInstanceId FROM ${Model.classFullName} WHERE ParentModel.Id=:parentModelId`;
|
|
839
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
836
840
|
imodel2.withPreparedStatement(sql, (statement) => {
|
|
837
841
|
statement.bindId("parentModelId", IModel.repositoryModelId);
|
|
838
842
|
let numModels = 0;
|
|
@@ -1078,6 +1082,7 @@ describe("iModel", () => {
|
|
|
1078
1082
|
it("should exercise ECSqlStatement (backend only)", () => {
|
|
1079
1083
|
// Reject an invalid statement
|
|
1080
1084
|
try {
|
|
1085
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1081
1086
|
imodel2.prepareStatement("select no_such_property, codeValue from bis.element", false);
|
|
1082
1087
|
assert.fail("prepare should have failed with an exception");
|
|
1083
1088
|
}
|
|
@@ -1087,6 +1092,7 @@ describe("iModel", () => {
|
|
|
1087
1092
|
}
|
|
1088
1093
|
let lastId = "";
|
|
1089
1094
|
let firstCodeValue = "";
|
|
1095
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1090
1096
|
imodel2.withPreparedStatement("select ecinstanceid, codeValue from bis.element", (stmt) => {
|
|
1091
1097
|
assert.isNotNull(stmt);
|
|
1092
1098
|
// Reject an attempt to bind when there are no placeholders in the statement
|
|
@@ -1133,6 +1139,7 @@ describe("iModel", () => {
|
|
|
1133
1139
|
assert.equal(lastIterId, lastId, "iterator loop should see the same last row as the step loop");
|
|
1134
1140
|
assert.equal(firstCodeValueIter, firstCodeValue, "iterator loop should find the first non-null code value as the step loop");
|
|
1135
1141
|
});
|
|
1142
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1136
1143
|
imodel2.withPreparedStatement("select ecinstanceid, codeValue from bis.element WHERE (ecinstanceid=?)", (stmt3) => {
|
|
1137
1144
|
// Now try a statement with a placeholder
|
|
1138
1145
|
const idToFind = Id64.fromJSON(lastId);
|
|
@@ -1148,6 +1155,7 @@ describe("iModel", () => {
|
|
|
1148
1155
|
assert.equal(count, 1);
|
|
1149
1156
|
});
|
|
1150
1157
|
let firstCodeValueId;
|
|
1158
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1151
1159
|
imodel2.withPreparedStatement("select ecinstanceid, codeValue from bis.element WHERE (codeValue = :codevalue)", (stmt4) => {
|
|
1152
1160
|
// Try a named placeholder
|
|
1153
1161
|
const codeValueToFind = firstCodeValue;
|
|
@@ -1166,8 +1174,10 @@ describe("iModel", () => {
|
|
|
1166
1174
|
// make sure we can use parameterized values for queryEnityId (test on parameterized codevalue)
|
|
1167
1175
|
const ids = imodel2.queryEntityIds({ from: "bis.element", where: "codevalue=:cv", bindings: { cv: firstCodeValue } });
|
|
1168
1176
|
assert.equal(ids.values().next().value, firstCodeValueId);
|
|
1177
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1169
1178
|
imodel2.withPreparedStatement("select ecinstanceid as id, codevalue from bis.element", (stmt5) => {
|
|
1170
1179
|
while (DbResult.BE_SQLITE_ROW === stmt5.step()) {
|
|
1180
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1171
1181
|
imodel2.withPreparedStatement("select codevalue from bis.element where ecinstanceid=?", (stmt6) => {
|
|
1172
1182
|
stmt6.bindId(1, stmt5.getRow().id);
|
|
1173
1183
|
while (DbResult.BE_SQLITE_ROW === stmt6.step()) {
|
|
@@ -1385,6 +1395,7 @@ describe("iModel", () => {
|
|
|
1385
1395
|
DefinitionGroupGroupsDefinitions.insert(iModelDb, definitionGroupId, categoryId1);
|
|
1386
1396
|
DefinitionGroupGroupsDefinitions.insert(iModelDb, definitionGroupId, categoryId2);
|
|
1387
1397
|
DefinitionGroupGroupsDefinitions.insert(iModelDb, definitionGroupId, categoryId3);
|
|
1398
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1388
1399
|
const numMembers = iModelDb.withPreparedStatement(`SELECT COUNT(*) FROM ${DefinitionGroupGroupsDefinitions.classFullName}`, (statement) => {
|
|
1389
1400
|
return statement.step() === DbResult.BE_SQLITE_ROW ? statement.getValue(0).getInteger() : 0;
|
|
1390
1401
|
});
|
|
@@ -2286,8 +2297,11 @@ describe("iModel", () => {
|
|
|
2286
2297
|
try {
|
|
2287
2298
|
const sql = `SELECT * FROM ${Element.classFullName} LIMIT 1`;
|
|
2288
2299
|
const invalidSql = "SELECT * FROM InvalidSchemaName:InvalidClassName LIMIT 1";
|
|
2300
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2289
2301
|
assert.throws(() => imodel1.prepareStatement(invalidSql, false));
|
|
2302
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2290
2303
|
assert.isUndefined(imodel1.tryPrepareStatement(invalidSql));
|
|
2304
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2291
2305
|
const statement = __addDisposableResource(env_2, imodel1.tryPrepareStatement(sql), false);
|
|
2292
2306
|
assert.isDefined(statement);
|
|
2293
2307
|
assert.isTrue(statement?.isPrepared);
|