mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	We had several patches to spectrum, but the only essential one 
(0ea770fc18) had already been fixed upstream,
and another was just handling jQuery deprecation warnings for not yet removed features.
See #12749 for details.
Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { basename, resolve } from 'path';
 | 
						|
import { RuleSetRule, RuleSetUseItem } from 'webpack';
 | 
						|
 | 
						|
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 (var 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 (var 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,
 | 
						|
};
 |