123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- "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
- };
|