mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +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,
 | |
| };
 |