Skip to content

Commit 0e486c1

Browse files
committed
Add internal dependencies reports for Typescript
1 parent efbe37a commit 0e486c1

File tree

6 files changed

+587
-0
lines changed

6 files changed

+587
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Cyclic Dependencies Breakdown Backward-Only for Typescript
2+
3+
MATCH (module:TS:Module)-[:EXPORTS]->(forwardSource:TS)-[:DEPENDS_ON]->(forwardTarget:TS)<-[:EXPORTS]-(dependentModule:TS:Module)
4+
MATCH (dependentModule)-[:EXPORTS]->(backwardSource:TS)-[:DEPENDS_ON]->(backwardTarget:TS)<-[:EXPORTS]-(module)
5+
// Get the project of the module if available
6+
OPTIONAL MATCH (project:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(module)
7+
OPTIONAL MATCH (dependentProject:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(dependentModule)
8+
WHERE module.globalFqn <> dependentModule.globalFqn
9+
WITH project.absoluteFileName AS projectFileName
10+
,replace(
11+
module.globalFqn
12+
,project.absoluteFileName + '/', ''
13+
) AS moduleName
14+
,dependentProject.absoluteFileName AS dependentProjectFileName
15+
,replace(
16+
dependentModule.globalFqn
17+
,dependentProject.absoluteFileName + '/', ''
18+
) AS dependentModulePathName
19+
,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies
20+
,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies
21+
WITH projectFileName
22+
,moduleName
23+
,dependentProjectFileName
24+
,dependentModulePathName
25+
,forwardDependencies
26+
,backwardDependencies
27+
,size(forwardDependencies) AS numberOfForwardDependencies
28+
,size(backwardDependencies) AS numberOfBackwardDependencies
29+
,size(forwardDependencies) + size(backwardDependencies) AS numberOfAllCyclicDependencies
30+
WHERE (size(forwardDependencies) > size(backwardDependencies)
31+
OR (size(forwardDependencies) = size(backwardDependencies)
32+
AND size(moduleName) >= size(dependentModulePathName)))
33+
UNWIND backwardDependencies AS dependency
34+
RETURN projectFileName
35+
,moduleName
36+
,dependentProjectFileName
37+
,dependentModulePathName
38+
,dependency
39+
,toFloat(ABS(numberOfForwardDependencies - numberOfBackwardDependencies)) / numberOfAllCyclicDependencies AS forwardToBackwardBalance
40+
,numberOfForwardDependencies AS numberForward
41+
,numberOfBackwardDependencies AS numberBackward
42+
ORDER BY forwardToBackwardBalance DESC, moduleName ASC
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Cyclic Dependencies Breakdown for Typescript
2+
3+
MATCH (module:TS:Module)-[:EXPORTS]->(forwardSource:TS)-[:DEPENDS_ON]->(forwardTarget:TS)<-[:EXPORTS]-(dependentModule:TS:Module)
4+
MATCH (dependentModule)-[:EXPORTS]->(backwardSource:TS)-[:DEPENDS_ON]->(backwardTarget:TS)<-[:EXPORTS]-(module)
5+
// Get the project of the module if available
6+
OPTIONAL MATCH (project:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(module)
7+
OPTIONAL MATCH (dependentProject:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(dependentModule)
8+
WHERE module.globalFqn <> dependentModule.globalFqn
9+
WITH project.absoluteFileName AS projectFileName
10+
,replace(
11+
module.globalFqn
12+
,project.absoluteFileName + '/', ''
13+
) AS moduleName
14+
,dependentProject.absoluteFileName AS dependentProjectFileName
15+
,replace(
16+
dependentModule.globalFqn
17+
,dependentProject.absoluteFileName + '/', ''
18+
) AS dependentModulePathName
19+
,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies
20+
,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies
21+
WITH projectFileName
22+
,moduleName
23+
,dependentProjectFileName
24+
,dependentModulePathName
25+
,forwardDependencies
26+
,backwardDependencies
27+
,size(forwardDependencies) AS numberOfForwardDependencies
28+
,size(backwardDependencies) AS numberOfBackwardDependencies
29+
,size(forwardDependencies) + size(backwardDependencies) AS numberOfAllCyclicDependencies
30+
WHERE (size(forwardDependencies) > size(backwardDependencies)
31+
OR (size(forwardDependencies) = size(backwardDependencies)
32+
AND size(moduleName) >= size(dependentModulePathName)))
33+
UNWIND (backwardDependencies + forwardDependencies) AS dependency
34+
RETURN projectFileName
35+
,moduleName
36+
,dependentProjectFileName
37+
,dependentModulePathName
38+
,dependency
39+
,toFloat(ABS(numberOfForwardDependencies - numberOfBackwardDependencies)) / numberOfAllCyclicDependencies AS forwardToBackwardBalance
40+
,numberOfForwardDependencies AS numberForward
41+
,numberOfBackwardDependencies AS numberBackward
42+
ORDER BY forwardToBackwardBalance DESC, moduleName ASC
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//Cyclic Dependencies as List for Typescript
2+
3+
MATCH (module:TS:Module)-[:EXPORTS]->(forwardSource:TS)-[:DEPENDS_ON]->(forwardTarget:TS)<-[:EXPORTS]-(dependentModule:TS:Module)
4+
MATCH (dependentModule)-[:EXPORTS]->(backwardSource:TS)-[:DEPENDS_ON]->(backwardTarget:TS)<-[:EXPORTS]-(module)
5+
// Get the project of the module if available
6+
OPTIONAL MATCH (project:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(module)
7+
OPTIONAL MATCH (dependentProject:Directory)<-[:HAS_ROOT]-(:TS:Project)-[:CONTAINS]->(dependentModule)
8+
WHERE module.globalFqn <> dependentModule.globalFqn
9+
WITH project.absoluteFileName AS projectFileName
10+
,replace(
11+
module.globalFqn
12+
,project.absoluteFileName + '/', ''
13+
) AS moduleName
14+
,dependentProject.absoluteFileName AS dependentProjectFileName
15+
,replace(
16+
dependentModule.globalFqn
17+
,dependentProject.absoluteFileName + '/', ''
18+
) AS dependentModulePathName
19+
,collect(DISTINCT forwardSource.name + '->' + forwardTarget.name) AS forwardDependencies
20+
,collect(DISTINCT backwardTarget.name + '<-' + backwardSource.name) AS backwardDependencies
21+
WITH projectFileName
22+
,moduleName
23+
,dependentProjectFileName
24+
,dependentModulePathName
25+
,forwardDependencies
26+
,backwardDependencies
27+
,size(forwardDependencies) AS numberOfForwardDependencies
28+
,size(backwardDependencies) AS numberOfBackwardDependencies
29+
,size(forwardDependencies) + size(backwardDependencies) AS numberOfAllCyclicDependencies
30+
WHERE (size(forwardDependencies) > size(backwardDependencies)
31+
OR (size(forwardDependencies) = size(backwardDependencies)
32+
AND size(moduleName) >= size(dependentModulePathName)))
33+
RETURN projectFileName
34+
,moduleName
35+
,dependentProjectFileName
36+
,dependentModulePathName
37+
,toFloat(ABS(numberOfForwardDependencies - numberOfBackwardDependencies)) / numberOfAllCyclicDependencies AS forwardToBackwardBalance
38+
,numberOfForwardDependencies AS numberForward
39+
,numberOfBackwardDependencies AS numberBackward
40+
,forwardDependencies[0..9] AS forwardDependencyExamples
41+
,backwardDependencies[0..9] AS backwardDependencyExamples
42+
ORDER BY forwardToBackwardBalance DESC, moduleName ASC
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// List all existing internal Typescript modules
2+
3+
MATCH (internalModule:TS:Module)-[:EXPORTS]->(internalElement:TS)
4+
WITH internalModule.name AS moduleName
5+
,internalModule.globalFqn AS moduleFullQualifiedName
6+
,internalModule.incomingDependencies AS incomingDependencies
7+
,internalModule.outgoingDependencies AS outgoingDependencies
8+
,COUNT(DISTINCT internalElement.globalFqn) AS numberOfElements
9+
RETURN moduleName, numberOfElements, incomingDependencies, outgoingDependencies, moduleFullQualifiedName

0 commit comments

Comments
 (0)