mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	This commit was automatically generated by `tools/lint --only=eslint --fix`, after an `.eslintrc.json` change. A half dozen files were removed from the changes by tabbott pending further work to ensure we avoid breaking valuable PRs with merge conflicts. Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { RuleSetRule, RuleSetUseItem } from 'webpack';
 | 
						|
import { basename, resolve } from 'path';
 | 
						|
 | 
						|
export const cacheLoader: RuleSetUseItem = {
 | 
						|
    loader: 'cache-loader',
 | 
						|
    options: {
 | 
						|
        cacheDirectory: resolve(__dirname, '../var/webpack-cache'),
 | 
						|
    },
 | 
						|
};
 | 
						|
 | 
						|
/* Return expose-loader format to the config
 | 
						|
    For example
 | 
						|
    [
 | 
						|
        // Exposes 'my_module' as the name
 | 
						|
        {path: './folder/my_module.js'},
 | 
						|
 | 
						|
        // Exposes 'my_custom_name'
 | 
						|
        {path: './folder/my_module.js', name: 'my_custom_name'},
 | 
						|
 | 
						|
        // Exposes 'name1' and 'name2'
 | 
						|
        {path: './folder/my_module.js', name: ['name1', 'name2']}
 | 
						|
    ]
 | 
						|
*/
 | 
						|
interface ExportLoaderOptions {
 | 
						|
    path: string;
 | 
						|
    name?: string | string[];
 | 
						|
}
 | 
						|
function getExposeLoaders(optionsArr: ExportLoaderOptions[]): RuleSetRule[] {
 | 
						|
    const exposeLoaders = [];
 | 
						|
    for (const loaderEntry of optionsArr) {
 | 
						|
        const path = loaderEntry.path;
 | 
						|
        let name = "";
 | 
						|
        const useArr = [cacheLoader];
 | 
						|
        // If no name is provided, infer it
 | 
						|
        if (!loaderEntry.name) {
 | 
						|
            name = basename(path, '.js');
 | 
						|
            useArr.push({loader: 'expose-loader', options: name});
 | 
						|
        } else {
 | 
						|
            // If name is an array
 | 
						|
            if (Array.isArray(loaderEntry.name)) {
 | 
						|
                for (const exposeName of loaderEntry.name) {
 | 
						|
                    useArr.push({loader: 'expose-loader', options: exposeName});
 | 
						|
                }
 | 
						|
            // If name is a string
 | 
						|
            } else {
 | 
						|
                useArr.push({loader: 'expose-loader', options: loaderEntry.name});
 | 
						|
            }
 | 
						|
        }
 | 
						|
        exposeLoaders.push({
 | 
						|
            test: require.resolve(path),
 | 
						|
            use: useArr,
 | 
						|
        });
 | 
						|
    }
 | 
						|
    return exposeLoaders;
 | 
						|
}
 | 
						|
export {
 | 
						|
    getExposeLoaders,
 | 
						|
};
 |