diff --git a/cypher/Cyclic_Dependencies/Cyclic_Dependencies_Breakdown_Backward_Only_for_Typescript.cypher b/cypher/Cyclic_Dependencies/Cyclic_Dependencies_Breakdown_Backward_Only_for_Typescript.cypher index 7a9e18cf0..491250a36 100644 --- a/cypher/Cyclic_Dependencies/Cyclic_Dependencies_Breakdown_Backward_Only_for_Typescript.cypher +++ b/cypher/Cyclic_Dependencies/Cyclic_Dependencies_Breakdown_Backward_Only_for_Typescript.cypher @@ -2,22 +2,16 @@ MATCH (module:TS:Module)-[:EXPORTS]->(forwardSource:TS)-[:DEPENDS_ON]->(forwardTarget:TS)<-[:EXPORTS]-(dependentModule:TS:Module) MATCH (dependentModule)-[:EXPORTS]->(backwardSource:TS)-[:DEPENDS_ON]->(backwardTarget:TS)<-[:EXPORTS]-(module) -// Get the project of the module if available -OPTIONAL MATCH (project:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(module) -OPTIONAL MATCH (dependentProject:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(dependentModule) WHERE module.globalFqn <> dependentModule.globalFqn - WITH project.absoluteFileName AS projectFileName - ,replace( - module.globalFqn - ,project.absoluteFileName + '/', '' - ) AS moduleName - ,dependentProject.absoluteFileName AS dependentProjectFileName - ,replace( - dependentModule.globalFqn - ,dependentProject.absoluteFileName + '/', '' - ) AS dependentModulePathName - ,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies - ,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies +// Get the project of the module if available +OPTIONAL MATCH (project:TS:Project)-[:CONTAINS]->(module) +OPTIONAL MATCH (dependentProject:TS:Project)-[:CONTAINS]->(dependentModule) + WITH project.name AS projectFileName + ,module.localFqn AS moduleName + ,dependentProject.name AS dependentProjectFileName + ,dependentModule.localFqn AS dependentModulePathName + ,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies + ,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies WITH projectFileName ,moduleName ,dependentProjectFileName diff --git a/cypher/Cyclic_Dependencies/Cyclic_Dependencies_Breakdown_for_Typescript.cypher b/cypher/Cyclic_Dependencies/Cyclic_Dependencies_Breakdown_for_Typescript.cypher index a8d95b1ca..18c6b3041 100644 --- a/cypher/Cyclic_Dependencies/Cyclic_Dependencies_Breakdown_for_Typescript.cypher +++ b/cypher/Cyclic_Dependencies/Cyclic_Dependencies_Breakdown_for_Typescript.cypher @@ -2,22 +2,16 @@ MATCH (module:TS:Module)-[:EXPORTS]->(forwardSource:TS)-[:DEPENDS_ON]->(forwardTarget:TS)<-[:EXPORTS]-(dependentModule:TS:Module) MATCH (dependentModule)-[:EXPORTS]->(backwardSource:TS)-[:DEPENDS_ON]->(backwardTarget:TS)<-[:EXPORTS]-(module) -// Get the project of the module if available -OPTIONAL MATCH (project:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(module) -OPTIONAL MATCH (dependentProject:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(dependentModule) WHERE module.globalFqn <> dependentModule.globalFqn - WITH project.absoluteFileName AS projectFileName - ,replace( - module.globalFqn - ,project.absoluteFileName + '/', '' - ) AS moduleName - ,dependentProject.absoluteFileName AS dependentProjectFileName - ,replace( - dependentModule.globalFqn - ,dependentProject.absoluteFileName + '/', '' - ) AS dependentModulePathName - ,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies - ,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies +// Get the project of the module if available +OPTIONAL MATCH (project:TS:Project)-[:CONTAINS]->(module) +OPTIONAL MATCH (dependentProject:TS:Project)-[:CONTAINS]->(dependentModule) + WITH project.name AS projectFileName + ,module.localFqn AS moduleName + ,dependentProject.name AS dependentProjectFileName + ,dependentModule.localFqn AS dependentModulePathName + ,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies + ,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies WITH projectFileName ,moduleName ,dependentProjectFileName diff --git a/cypher/Cyclic_Dependencies/Cyclic_Dependencies_for_Typescript.cypher b/cypher/Cyclic_Dependencies/Cyclic_Dependencies_for_Typescript.cypher index eed65e82d..f6e80ffeb 100644 --- a/cypher/Cyclic_Dependencies/Cyclic_Dependencies_for_Typescript.cypher +++ b/cypher/Cyclic_Dependencies/Cyclic_Dependencies_for_Typescript.cypher @@ -2,22 +2,16 @@ MATCH (module:TS:Module)-[:EXPORTS]->(forwardSource:TS)-[:DEPENDS_ON]->(forwardTarget:TS)<-[:EXPORTS]-(dependentModule:TS:Module) MATCH (dependentModule)-[:EXPORTS]->(backwardSource:TS)-[:DEPENDS_ON]->(backwardTarget:TS)<-[:EXPORTS]-(module) -// Get the project of the module if available -OPTIONAL MATCH (project:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(module) -OPTIONAL MATCH (dependentProject:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(dependentModule) WHERE module.globalFqn <> dependentModule.globalFqn - WITH project.absoluteFileName AS projectFileName - ,replace( - module.globalFqn - ,project.absoluteFileName + '/', '' - ) AS moduleName - ,dependentProject.absoluteFileName AS dependentProjectFileName - ,replace( - dependentModule.globalFqn - ,dependentProject.absoluteFileName + '/', '' - ) AS dependentModulePathName - ,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies - ,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies +// Get the project of the module if available +OPTIONAL MATCH (project:TS:Project)-[:CONTAINS]->(module) +OPTIONAL MATCH (dependentProject:TS:Project)-[:CONTAINS]->(dependentModule) + WITH project.name AS projectFileName + ,module.localFqn AS moduleName + ,dependentProject.name AS dependentProjectFileName + ,dependentModule.localFqn AS dependentModulePathName + ,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies + ,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies WITH projectFileName ,moduleName ,dependentProjectFileName diff --git a/cypher/Typescript_Enrichment/Add_RESOLVES_TO_relationship_for_matching_modules.cypher b/cypher/Typescript_Enrichment/Add_RESOLVES_TO_relationship_for_matching_modules.cypher index 8a85e88c5..678330528 100644 --- a/cypher/Typescript_Enrichment/Add_RESOLVES_TO_relationship_for_matching_modules.cypher +++ b/cypher/Typescript_Enrichment/Add_RESOLVES_TO_relationship_for_matching_modules.cypher @@ -7,7 +7,7 @@ MATCH (module:TS:Module)<-[:CONTAINS]-(package:TS:Project) WHERE module.globalFqn IS NOT NULL AND EXISTS { (module)-[:EXPORTS]->(:TS) } // only when module exports something MATCH (externalModule:TS:ExternalModule) -WHERE module.globalFqn IS NOT NULL +WHERE externalModule.globalFqn IS NOT NULL AND externalModule <> module AND externalModule.name = module.name // Base requirement: Same module name AND EXISTS { (externalModule)-[:EXPORTS]->(:TS:ExternalDeclaration)<-[]-(used:TS) } // only when external declarations are used @@ -21,13 +21,12 @@ WHERE module.globalFqn IS NOT NULL // Find internal and external modules with identical "globalFqn" ,(module.globalFqn = externalModule.globalFqn) AS equalGlobalFqn // Find internal and external modules with identical "module" - ,(module.module = externalModule.module) AS equalModule + ,(module.module = externalModule.module) AS equalModule // Find matching internal and external modules within the same package and namespace - ,( externalModule.namespace > '' + ,( externalModule.namespace <> '' AND externalModule.namespace = module.namespace AND externalModule.packageName = package.name AND normalizedExternalExtension = module.extensionExtended - AND externalModule.globalFqn ENDS WITH module.localModulePath ) AS equalNameAndNamespace // Find matching internal and external module without a namespace with matching local module path ,( module.namespace = ''