You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											9 months ago
										 | "use strict"; | ||
|  | 
 | ||
|  | /** @typedef {import("./index.js").MinimizedResult} MinimizedResult */ | ||
|  | /** @typedef {import("./index.js").CustomOptions} CustomOptions */ | ||
|  | 
 | ||
|  | /** | ||
|  |  * @template T | ||
|  |  * @param {import("./index.js").InternalOptions<T>} options | ||
|  |  * @returns {Promise<MinimizedResult>} | ||
|  |  */ | ||
|  | async function minify(options) { | ||
|  |   const { | ||
|  |     name, | ||
|  |     input, | ||
|  |     inputSourceMap, | ||
|  |     extractComments | ||
|  |   } = options; | ||
|  |   const { | ||
|  |     implementation, | ||
|  |     options: minimizerOptions | ||
|  |   } = options.minimizer; | ||
|  |   return implementation({ | ||
|  |     [name]: input | ||
|  |   }, inputSourceMap, minimizerOptions, extractComments); | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * @param {string} options | ||
|  |  * @returns {Promise<MinimizedResult>} | ||
|  |  */ | ||
|  | async function transform(options) { | ||
|  |   // 'use strict' => this === undefined (Clean Scope)
 | ||
|  |   // Safer for possible security issues, albeit not critical at all here
 | ||
|  |   // eslint-disable-next-line no-param-reassign
 | ||
|  |   const evaluatedOptions = | ||
|  |   /** | ||
|  |    * @template T | ||
|  |    * @type {import("./index.js").InternalOptions<T>} | ||
|  |    * */ | ||
|  | 
 | ||
|  |   // eslint-disable-next-line no-new-func
 | ||
|  |   new Function("exports", "require", "module", "__filename", "__dirname", `'use strict'\nreturn ${options}`)(exports, require, module, __filename, __dirname); | ||
|  |   return minify(evaluatedOptions); | ||
|  | } | ||
|  | module.exports = { | ||
|  |   minify, | ||
|  |   transform | ||
|  | }; |