@@ -107,8 +107,14 @@ class ResourceCollector {
107
107
}
108
108
}
109
109
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 ) => {
112
118
if ( moduleInfo . name ) {
113
119
resourceInfo . module = moduleInfo . name ;
114
120
}
@@ -149,16 +155,25 @@ class ResourceCollector {
149
155
} ) ;
150
156
}
151
157
152
- async determineResourceDetails ( { pool, debugResources, mergedResources, designtimeResources, supportResources} ) {
158
+ async determineResourceDetails ( {
159
+ debugResources, mergedResources, designtimeResources, supportResources, debugBundles
160
+ } ) {
153
161
const baseNames = new Set ( ) ;
154
162
const debugFilter = new ResourceFilterList ( debugResources ) ;
155
163
const mergeFilter = new ResourceFilterList ( mergedResources ) ;
156
164
const designtimeFilter = new ResourceFilterList ( designtimeResources ) ;
157
165
const supportFilter = new ResourceFilterList ( supportResources ) ;
166
+ const debugBundleFilter = new ResourceFilterList ( debugBundles ) ;
158
167
159
168
const promises = [ ] ;
169
+ const nonBundledDebugResources = [ ] ;
160
170
161
171
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
+
162
177
// log.verbose(` checking ${name}`);
163
178
let m ;
164
179
if ( m = LOCALE . exec ( name ) ) {
@@ -179,9 +194,17 @@ class ResourceCollector {
179
194
}
180
195
181
196
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
+ }
185
208
}
186
209
187
210
// set the module name for .properties and .json
@@ -196,11 +219,6 @@ class ResourceCollector {
196
219
} ) ) ;
197
220
}
198
221
199
- if ( debugFilter . matches ( name ) ) {
200
- info . isDebug = true ;
201
- log . verbose ( ` found potential debug resource '${ name } '` ) ;
202
- }
203
-
204
222
if ( mergeFilter . matches ( name ) ) {
205
223
info . merged = true ;
206
224
log . verbose ( ` found potential merged resource '${ name } '` ) ;
@@ -225,7 +243,17 @@ class ResourceCollector {
225
243
}
226
244
}
227
245
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
+ }
229
257
}
230
258
231
259
createOrphanFilters ( ) {
@@ -251,18 +279,16 @@ class ResourceCollector {
251
279
252
280
groupResourcesByComponents ( options ) {
253
281
const orphanFilters = this . createOrphanFilters ( ) ;
254
- const debugBundlesFilter = new ResourceFilterList ( options . debugBundles ) ;
255
282
for ( const resource of this . _resources . values ( ) ) {
256
283
let contained = false ;
257
284
for ( const [ prefix , list ] of this . _components . entries ( ) ) {
258
- const isDebugBundle = debugBundlesFilter . matches ( resource . name ) ;
259
285
if ( resource . name . startsWith ( prefix ) ) {
260
- list . add ( resource , ! isDebugBundle ) ;
286
+ list . add ( resource ) ;
261
287
contained = true ;
262
288
} else if ( orphanFilters . has ( prefix ) ) {
263
289
// log.verbose(` checking '${resource.name}' against orphan filter '${orphanFilters.get(prefix)}' (${prefix})`);
264
290
if ( orphanFilters . get ( prefix ) . matches ( resource . name ) ) {
265
- list . add ( resource , ! isDebugBundle ) ;
291
+ list . add ( resource ) ;
266
292
contained = true ;
267
293
}
268
294
}
0 commit comments