| 
1 |  | -function normalizeFallbackString(fallbackString, originalOptions) {  | 
2 |  | -  const index = fallbackString.indexOf('?');  | 
3 |  | -  if (index >= 0) {  | 
4 |  | -    return {  | 
5 |  | -      loader: fallbackString.substr(0, index),  | 
6 |  | -      query: fallbackString.substr(index),  | 
7 |  | -    };  | 
8 |  | -  }  | 
 | 1 | +import loaderUtils from 'loader-utils';  | 
9 | 2 | 
 
  | 
10 |  | -  // To remain consistent with version 1.0.1, pass any other options which were provided to url-loader to the fallback loader.  | 
11 |  | -  const { fallback, limit, mimetype, ...otherOptions } = originalOptions;  | 
 | 3 | +export default function normalizeFallback(fallback, originalOptions) {  | 
 | 4 | +  let loader = 'file-loader';  | 
 | 5 | +  let options = {};  | 
12 | 6 | 
 
  | 
13 |  | -  return {  | 
14 |  | -    loader: fallbackString,  | 
15 |  | -    query: otherOptions,  | 
16 |  | -  };  | 
17 |  | -}  | 
 | 7 | +  if (typeof fallback === 'string') {  | 
 | 8 | +    loader = fallback;  | 
18 | 9 | 
 
  | 
19 |  | -function normalizeFallbackObject(fallbackObject) {  | 
20 |  | -  return {  | 
21 |  | -    loader: fallbackObject.loader,  | 
22 |  | -    query: fallbackObject.options,  | 
23 |  | -  };  | 
24 |  | -}  | 
 | 10 | +    const index = fallback.indexOf('?');  | 
25 | 11 | 
 
  | 
26 |  | -/**  | 
27 |  | - * Converts the fallback option, which can be a string or an object, to an object with a loader and a query. The result  | 
28 |  | - * has this form:  | 
29 |  | - *   {  | 
30 |  | - *     loader: 'file-loader',  | 
31 |  | - *     query: '?name=[name].[ext]'  | 
32 |  | - *   }  | 
33 |  | - * Note that the returned query can be either a string or an object.  | 
34 |  | - */  | 
35 |  | -export default function normalizeFallback(fallback, originalOptions) {  | 
36 |  | -  // If no fallback was provided, use file-loader.  | 
37 |  | -  if (!fallback) {  | 
38 |  | -    return normalizeFallbackString('file-loader', originalOptions);  | 
 | 12 | +    if (index >= 0) {  | 
 | 13 | +      loader = fallback.substr(0, index);  | 
 | 14 | +      options = loaderUtils.parseQuery(fallback.substr(index));  | 
 | 15 | +    }  | 
39 | 16 |   }  | 
40 | 17 | 
 
  | 
41 |  | -  if (typeof fallback === 'string') {  | 
42 |  | -    return normalizeFallbackString(fallback, originalOptions);  | 
 | 18 | +  if (fallback !== null && typeof fallback === 'object') {  | 
 | 19 | +    ({ loader, options } = fallback);  | 
43 | 20 |   }  | 
44 | 21 | 
 
  | 
45 |  | -  return normalizeFallbackObject(fallback);  | 
 | 22 | +  options = Object.assign({}, originalOptions, options);  | 
 | 23 | + | 
 | 24 | +  delete options.fallback;  | 
 | 25 | + | 
 | 26 | +  return { loader, options };  | 
46 | 27 | }  | 
0 commit comments