@@ -107,8 +107,14 @@ class ResourceCollector {
107107 }
108108 }
109109
110- async enrichWithDependencyInfo ( resourceInfo ) {
111- return this . _pool . getModuleInfo ( resourceInfo . name ) . then ( ( moduleInfo ) => {
110+ async enrichWithDependencyInfo ( { resourceInfo, debugBundleFilter} ) {
111+ return this . _pool . getModuleInfo ( resourceInfo . name , {
112+ // While analyzing non-debug resources, try to analyze the content of the corresponding
113+ // debug resource instead
114+ preferDebugResources : true ,
115+ // Provide the debugBundleFilter to prevent that debug bundles are "preferred"
116+ debugBundleFilter
117+ } ) . then ( ( moduleInfo ) => {
112118 if ( moduleInfo . name ) {
113119 resourceInfo . module = moduleInfo . name ;
114120 }
@@ -149,16 +155,25 @@ class ResourceCollector {
149155 } ) ;
150156 }
151157
152- async determineResourceDetails ( { pool, debugResources, mergedResources, designtimeResources, supportResources} ) {
158+ async determineResourceDetails ( {
159+ debugResources, mergedResources, designtimeResources, supportResources, debugBundles
160+ } ) {
153161 const baseNames = new Set ( ) ;
154162 const debugFilter = new ResourceFilterList ( debugResources ) ;
155163 const mergeFilter = new ResourceFilterList ( mergedResources ) ;
156164 const designtimeFilter = new ResourceFilterList ( designtimeResources ) ;
157165 const supportFilter = new ResourceFilterList ( supportResources ) ;
166+ const debugBundleFilter = new ResourceFilterList ( debugBundles ) ;
158167
159168 const promises = [ ] ;
169+ const nonBundledDebugResources = [ ] ;
160170
161171 for ( const [ name , info ] of this . _resources . entries ( ) ) {
172+ if ( debugFilter . matches ( name ) ) {
173+ info . isDebug = true ;
174+ log . verbose ( ` found potential debug resource '${ name } '` ) ;
175+ }
176+
162177 // log.verbose(` checking ${name}`);
163178 let m ;
164179 if ( m = LOCALE . exec ( name ) ) {
@@ -179,9 +194,17 @@ class ResourceCollector {
179194 }
180195
181196 if ( / (?: \. j s | \. v i e w \. x m l | \. c o n t r o l \. x m l | \. f r a g m e n t \. x m l ) $ / . test ( name ) ) {
182- promises . push (
183- this . enrichWithDependencyInfo ( info )
184- ) ;
197+ if ( ( ! info . isDebug || debugBundleFilter . matches ( name ) ) ) {
198+ // Only analyze non-debug files which are not special debug bundles (like sap-ui-core-dbg.js)
199+ promises . push (
200+ this . enrichWithDependencyInfo ( {
201+ resourceInfo : info ,
202+ debugBundleFilter
203+ } )
204+ ) ;
205+ } else {
206+ nonBundledDebugResources . push ( info ) ;
207+ }
185208 }
186209
187210 // set the module name for .properties and .json
@@ -196,11 +219,6 @@ class ResourceCollector {
196219 } ) ) ;
197220 }
198221
199- if ( debugFilter . matches ( name ) ) {
200- info . isDebug = true ;
201- log . verbose ( ` found potential debug resource '${ name } '` ) ;
202- }
203-
204222 if ( mergeFilter . matches ( name ) ) {
205223 info . merged = true ;
206224 log . verbose ( ` found potential merged resource '${ name } '` ) ;
@@ -225,7 +243,17 @@ class ResourceCollector {
225243 }
226244 }
227245
228- return Promise . all ( promises ) ;
246+ await Promise . all ( promises ) ;
247+
248+ for ( let i = nonBundledDebugResources . length - 1 ; i >= 0 ; i -- ) {
249+ const dbgInfo = nonBundledDebugResources [ i ] ;
250+ const nonDebugName = ResourceInfoList . getNonDebugName ( dbgInfo . name ) ;
251+ const nonDbgInfo = this . _resources . get ( nonDebugName ) ;
252+ const newDbgInfo = new ResourceInfo ( dbgInfo . name ) ;
253+ newDbgInfo . copyFrom ( null , nonDbgInfo ) ;
254+ newDbgInfo . copyFrom ( null , dbgInfo ) ;
255+ this . _resources . set ( dbgInfo . name , newDbgInfo ) ;
256+ }
229257 }
230258
231259 createOrphanFilters ( ) {
@@ -251,18 +279,16 @@ class ResourceCollector {
251279
252280 groupResourcesByComponents ( options ) {
253281 const orphanFilters = this . createOrphanFilters ( ) ;
254- const debugBundlesFilter = new ResourceFilterList ( options . debugBundles ) ;
255282 for ( const resource of this . _resources . values ( ) ) {
256283 let contained = false ;
257284 for ( const [ prefix , list ] of this . _components . entries ( ) ) {
258- const isDebugBundle = debugBundlesFilter . matches ( resource . name ) ;
259285 if ( resource . name . startsWith ( prefix ) ) {
260- list . add ( resource , ! isDebugBundle ) ;
286+ list . add ( resource ) ;
261287 contained = true ;
262288 } else if ( orphanFilters . has ( prefix ) ) {
263289 // log.verbose(` checking '${resource.name}' against orphan filter '${orphanFilters.get(prefix)}' (${prefix})`);
264290 if ( orphanFilters . get ( prefix ) . matches ( resource . name ) ) {
265- list . add ( resource , ! isDebugBundle ) ;
291+ list . add ( resource ) ;
266292 contained = true ;
267293 }
268294 }
0 commit comments