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 backwardSource .name + '->' + backwardTarget .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 someForwardDependencies
41+ ,backwardDependencies
42+ ORDER BY forwardToBackwardBalance DESC , moduleName ASC
0 commit comments