@@ -99,6 +99,28 @@ const extractScriptData = async (feeds) => {
9999 return feeds ;
100100}
101101
102+
103+ const resolveReverseDependencies = async ( feeds ) => {
104+ const reverseDependencies = feeds . flatMap ( ( x ) => [ ] . concat ( Object . entries ( x . macros || { } ) , Object . entries ( x . modules || { } ) ) )
105+ . flatMap ( ( [ namepsace , automation ] ) => {
106+ let defaultChannel = Object . values ( automation . channels ) . filter ( ( c ) => c . default ) [ 0 ] ;
107+ let dependencies = ( defaultChannel . requiredModules || [ ] ) . map ( ( m ) => m . moduleName ) ;
108+ return dependencies . map ( d => [ d , namepsace ] ) ;
109+ } ) . reduce ( ( acc , [ dependency , namepsace ] ) => {
110+ acc [ dependency ] = acc [ dependency ] || [ ] ;
111+ acc [ dependency ] . push ( namepsace ) ;
112+ return acc ;
113+ } , { } ) ;
114+ console . log ( reverseDependencies ) ;
115+
116+ for ( var feed of feeds ) {
117+ for ( var [ moduleID , module ] of Object . entries ( feed . modules || { } ) ) {
118+ module [ "_reverseDependency" ] = reverseDependencies [ moduleID ] || [ ] ;
119+ }
120+ }
121+ return feeds ;
122+ }
123+
102124// fetch single feed
103125const fetchFeed = ( url ) => {
104126 return limitedWebRequest ( url , "text" )
@@ -208,6 +230,7 @@ function fillTemplateVar(data, repDict = {}, parentKey = "", depth = 0) {
208230const data = fetchAllFeeds ( seedFeed )
209231 . then ( fillTemplateVar )
210232 . then ( checkFileIntegrity )
211- . then ( extractScriptData ) ;
233+ . then ( extractScriptData )
234+ . then ( resolveReverseDependencies ) ;
212235
213236module . exports . getData = ( ) => data ;
0 commit comments