terser-webpack-plugin
Advanced tools
Comparing version
@@ -26,4 +26,2 @@ "use strict"; | ||
/** @typedef {import("webpack").Asset} Asset */ | ||
/** @typedef {import("./utils.js").TerserECMA} TerserECMA */ | ||
/** @typedef {import("./utils.js").TerserOptions} TerserOptions */ | ||
/** @typedef {import("jest-worker").Worker} JestWorker */ | ||
@@ -89,5 +87,6 @@ /** @typedef {import("@jridgewell/trace-mapping").SourceMapInput} SourceMapInput */ | ||
/** | ||
* @template T | ||
* @typedef {Object} PredefinedOptions | ||
* @property {boolean} [module] | ||
* @property {TerserECMA} [ecma] | ||
* @property {T extends { module?: infer P } ? P : boolean | string} [module] | ||
* @property {T extends { ecma?: infer P } ? P : number | string} [ecma] | ||
*/ | ||
@@ -97,3 +96,3 @@ | ||
* @template T | ||
* @typedef {PredefinedOptions & InferDefaultType<T>} MinimizerOptions | ||
* @typedef {PredefinedOptions<T> & InferDefaultType<T>} MinimizerOptions | ||
*/ | ||
@@ -152,3 +151,3 @@ | ||
* @template T | ||
* @typedef {T extends TerserOptions ? { minify?: MinimizerImplementation<T> | undefined, terserOptions?: MinimizerOptions<T> | undefined } : { minify: MinimizerImplementation<T>, terserOptions?: MinimizerOptions<T> | undefined }} DefinedDefaultMinimizerAndOptions | ||
* @typedef {T extends import("terser").MinifyOptions ? { minify?: MinimizerImplementation<T> | undefined, terserOptions?: MinimizerOptions<T> | undefined } : { minify: MinimizerImplementation<T>, terserOptions?: MinimizerOptions<T> | undefined }} DefinedDefaultMinimizerAndOptions | ||
*/ | ||
@@ -169,3 +168,3 @@ | ||
/** | ||
* @template [T=TerserOptions] | ||
* @template [T=import("terser").MinifyOptions] | ||
*/ | ||
@@ -445,11 +444,14 @@ class TerserPlugin { | ||
if (typeof info.javascriptModule !== "undefined") { | ||
options.minimizer.options.module = info.javascriptModule; | ||
options.minimizer.options.module = /** @type {PredefinedOptions<T>["module"]} */ | ||
info.javascriptModule; | ||
} else if (/\.mjs(\?.*)?$/i.test(name)) { | ||
options.minimizer.options.module = true; | ||
options.minimizer.options.module = /** @type {PredefinedOptions<T>["module"]} */true; | ||
} else if (/\.cjs(\?.*)?$/i.test(name)) { | ||
options.minimizer.options.module = false; | ||
options.minimizer.options.module = /** @type {PredefinedOptions<T>["module"]} */false; | ||
} | ||
} | ||
if (typeof options.minimizer.options.ecma === "undefined") { | ||
options.minimizer.options.ecma = TerserPlugin.getEcmaVersion(compiler.options.output.environment || {}); | ||
options.minimizer.options.ecma = /** @type {PredefinedOptions<T>["ecma"]} */ | ||
TerserPlugin.getEcmaVersion(compiler.options.output.environment || {}); | ||
} | ||
@@ -647,3 +649,3 @@ try { | ||
* @param {any} environment | ||
* @returns {TerserECMA} | ||
* @returns {number} | ||
*/ | ||
@@ -650,0 +652,0 @@ static getEcmaVersion(environment) { |
"use strict"; | ||
/** @typedef {import("@jridgewell/trace-mapping").SourceMapInput} SourceMapInput */ | ||
/** @typedef {import("terser").FormatOptions} TerserFormatOptions */ | ||
/** @typedef {import("terser").MinifyOptions} TerserOptions */ | ||
/** @typedef {import("terser").CompressOptions} TerserCompressOptions */ | ||
/** @typedef {import("terser").ECMA} TerserECMA */ | ||
/** @typedef {import("./index.js").ExtractCommentsOptions} ExtractCommentsOptions */ | ||
@@ -13,6 +9,10 @@ /** @typedef {import("./index.js").ExtractCommentsFunction} ExtractCommentsFunction */ | ||
/** @typedef {import("./index.js").MinimizedResult} MinimizedResult */ | ||
/** @typedef {import("./index.js").PredefinedOptions} PredefinedOptions */ | ||
/** @typedef {import("./index.js").CustomOptions} CustomOptions */ | ||
/** | ||
* @template T | ||
* @typedef {import("./index.js").PredefinedOptions<T>} PredefinedOptions | ||
*/ | ||
/** | ||
* @typedef {Array<string>} ExtractedComments | ||
@@ -74,3 +74,3 @@ */ | ||
* @param {SourceMapInput | undefined} sourceMap | ||
* @param {PredefinedOptions & CustomOptions} minimizerOptions | ||
* @param {PredefinedOptions<import("terser").MinifyOptions> & CustomOptions} minimizerOptions | ||
* @param {ExtractCommentsOptions | undefined} extractComments | ||
@@ -90,3 +90,3 @@ * @return {Promise<MinimizedResult>} | ||
/** | ||
* @param {TerserOptions & { sourceMap: undefined } & ({ output: TerserFormatOptions & { beautify: boolean } } | { format: TerserFormatOptions & { beautify: boolean } })} terserOptions | ||
* @param {import("terser").MinifyOptions & { sourceMap: undefined } & ({ output: import("terser").FormatOptions & { beautify: boolean } } | { format: import("terser").FormatOptions & { beautify: boolean } })} terserOptions | ||
* @param {ExtractedComments} extractedComments | ||
@@ -174,4 +174,4 @@ * @returns {ExtractCommentsFunction} | ||
/** | ||
* @param {PredefinedOptions & TerserOptions} [terserOptions={}] | ||
* @returns {TerserOptions & { sourceMap: undefined } & { compress: TerserCompressOptions } & ({ output: TerserFormatOptions & { beautify: boolean } } | { format: TerserFormatOptions & { beautify: boolean } })} | ||
* @param {PredefinedOptions<import("terser").MinifyOptions> & import("terser").MinifyOptions} [terserOptions={}] | ||
* @returns {import("terser").MinifyOptions & { sourceMap: undefined } & { compress: import("terser").CompressOptions } & ({ output: import("terser").FormatOptions & { beautify: boolean } } | { format: import("terser").FormatOptions & { beautify: boolean } })} | ||
*/ | ||
@@ -286,3 +286,3 @@ const buildTerserOptions = (terserOptions = {}) => { | ||
* @param {SourceMapInput | undefined} sourceMap | ||
* @param {PredefinedOptions & CustomOptions} minimizerOptions | ||
* @param {PredefinedOptions<import("uglify-js").MinifyOptions> & CustomOptions} minimizerOptions | ||
* @param {ExtractCommentsOptions | undefined} extractComments | ||
@@ -378,3 +378,3 @@ * @return {Promise<MinimizedResult>} | ||
/** | ||
* @param {PredefinedOptions & import("uglify-js").MinifyOptions} [uglifyJsOptions={}] | ||
* @param {PredefinedOptions<import("uglify-js").MinifyOptions> & import("uglify-js").MinifyOptions} [uglifyJsOptions={}] | ||
* @returns {import("uglify-js").MinifyOptions & { sourceMap: undefined } & { output: import("uglify-js").OutputOptions & { beautify: boolean }}} | ||
@@ -471,3 +471,3 @@ */ | ||
* @param {SourceMapInput | undefined} sourceMap | ||
* @param {PredefinedOptions & CustomOptions} minimizerOptions | ||
* @param {PredefinedOptions<import("@swc/core").JsMinifyOptions> & CustomOptions} minimizerOptions | ||
* @return {Promise<MinimizedResult>} | ||
@@ -477,3 +477,3 @@ */ | ||
/** | ||
* @param {PredefinedOptions & import("@swc/core").JsMinifyOptions} [swcOptions={}] | ||
* @param {PredefinedOptions<import("@swc/core").JsMinifyOptions> & import("@swc/core").JsMinifyOptions} [swcOptions={}] | ||
* @returns {import("@swc/core").JsMinifyOptions & { sourceMap: undefined } & { compress: import("@swc/core").TerserCompressOptions }} | ||
@@ -562,3 +562,3 @@ */ | ||
* @param {SourceMapInput | undefined} sourceMap | ||
* @param {PredefinedOptions & CustomOptions} minimizerOptions | ||
* @param {PredefinedOptions<import("esbuild").TransformOptions> & CustomOptions} minimizerOptions | ||
* @return {Promise<MinimizedResult>} | ||
@@ -568,3 +568,3 @@ */ | ||
/** | ||
* @param {PredefinedOptions & import("esbuild").TransformOptions} [esbuildOptions={}] | ||
* @param {PredefinedOptions<import("esbuild").TransformOptions> & import("esbuild").TransformOptions} [esbuildOptions={}] | ||
* @returns {import("esbuild").TransformOptions} | ||
@@ -571,0 +571,0 @@ */ |
{ | ||
"name": "terser-webpack-plugin", | ||
"version": "5.3.12", | ||
"version": "5.3.13", | ||
"description": "Terser plugin for webpack", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
export = TerserPlugin; | ||
/** | ||
* @template [T=TerserOptions] | ||
* @template [T=import("terser").MinifyOptions] | ||
*/ | ||
@@ -37,3 +37,3 @@ declare class TerserPlugin<T = import("terser").MinifyOptions> { | ||
* @param {any} environment | ||
* @returns {TerserECMA} | ||
* @returns {number} | ||
*/ | ||
@@ -80,4 +80,2 @@ private static getEcmaVersion; | ||
Asset, | ||
TerserECMA, | ||
TerserOptions, | ||
JestWorker, | ||
@@ -119,11 +117,12 @@ SourceMapInput, | ||
}; | ||
type DefinedDefaultMinimizerAndOptions<T> = T extends TerserOptions | ||
? { | ||
minify?: MinimizerImplementation<T> | undefined; | ||
terserOptions?: MinimizerOptions<T> | undefined; | ||
} | ||
: { | ||
minify: MinimizerImplementation<T>; | ||
terserOptions?: MinimizerOptions<T> | undefined; | ||
}; | ||
type DefinedDefaultMinimizerAndOptions<T> = | ||
T extends import("terser").MinifyOptions | ||
? { | ||
minify?: MinimizerImplementation<T> | undefined; | ||
terserOptions?: MinimizerOptions<T> | undefined; | ||
} | ||
: { | ||
minify: MinimizerImplementation<T>; | ||
terserOptions?: MinimizerOptions<T> | undefined; | ||
}; | ||
import { terserMinify } from "./utils"; | ||
@@ -137,4 +136,2 @@ import { uglifyJsMinify } from "./utils"; | ||
type Asset = import("webpack").Asset; | ||
type TerserECMA = import("./utils.js").TerserECMA; | ||
type TerserOptions = import("./utils.js").TerserOptions; | ||
type JestWorker = import("jest-worker").Worker; | ||
@@ -186,7 +183,19 @@ type SourceMapInput = import("@jridgewell/trace-mapping").SourceMapInput; | ||
type InferDefaultType<T> = T extends infer U ? U : CustomOptions; | ||
type PredefinedOptions = { | ||
module?: boolean | undefined; | ||
ecma?: import("terser").ECMA | undefined; | ||
type PredefinedOptions<T> = { | ||
module?: | ||
| (T extends { | ||
module?: infer P | undefined; | ||
} | ||
? P | ||
: string | boolean) | ||
| undefined; | ||
ecma?: | ||
| (T extends { | ||
ecma?: infer P_1 | undefined; | ||
} | ||
? P_1 | ||
: string | number) | ||
| undefined; | ||
}; | ||
type MinimizerOptions<T> = PredefinedOptions & InferDefaultType<T>; | ||
type MinimizerOptions<T> = PredefinedOptions<T> & InferDefaultType<T>; | ||
type BasicMinimizerImplementation<T> = ( | ||
@@ -193,0 +202,0 @@ input: Input, |
export type Task<T> = () => Promise<T>; | ||
export type SourceMapInput = import("@jridgewell/trace-mapping").SourceMapInput; | ||
export type TerserFormatOptions = import("terser").FormatOptions; | ||
export type TerserOptions = import("terser").MinifyOptions; | ||
export type TerserCompressOptions = import("terser").CompressOptions; | ||
export type TerserECMA = import("terser").ECMA; | ||
export type ExtractCommentsOptions = | ||
@@ -15,4 +11,4 @@ import("./index.js").ExtractCommentsOptions; | ||
export type MinimizedResult = import("./index.js").MinimizedResult; | ||
export type PredefinedOptions = import("./index.js").PredefinedOptions; | ||
export type CustomOptions = import("./index.js").CustomOptions; | ||
export type PredefinedOptions<T> = import("./index.js").PredefinedOptions<T>; | ||
export type ExtractedComments = Array<string>; | ||
@@ -40,3 +36,3 @@ /** | ||
* @param {SourceMapInput | undefined} sourceMap | ||
* @param {PredefinedOptions & CustomOptions} minimizerOptions | ||
* @param {PredefinedOptions<import("terser").MinifyOptions> & CustomOptions} minimizerOptions | ||
* @param {ExtractCommentsOptions | undefined} extractComments | ||
@@ -48,3 +44,4 @@ * @return {Promise<MinimizedResult>} | ||
sourceMap: SourceMapInput | undefined, | ||
minimizerOptions: PredefinedOptions & CustomOptions, | ||
minimizerOptions: PredefinedOptions<import("terser").MinifyOptions> & | ||
CustomOptions, | ||
extractComments: ExtractCommentsOptions | undefined | ||
@@ -65,3 +62,3 @@ ): Promise<MinimizedResult>; | ||
* @param {SourceMapInput | undefined} sourceMap | ||
* @param {PredefinedOptions & CustomOptions} minimizerOptions | ||
* @param {PredefinedOptions<import("uglify-js").MinifyOptions> & CustomOptions} minimizerOptions | ||
* @param {ExtractCommentsOptions | undefined} extractComments | ||
@@ -73,3 +70,4 @@ * @return {Promise<MinimizedResult>} | ||
sourceMap: SourceMapInput | undefined, | ||
minimizerOptions: PredefinedOptions & CustomOptions, | ||
minimizerOptions: PredefinedOptions<import("uglify-js").MinifyOptions> & | ||
CustomOptions, | ||
extractComments: ExtractCommentsOptions | undefined | ||
@@ -90,3 +88,3 @@ ): Promise<MinimizedResult>; | ||
* @param {SourceMapInput | undefined} sourceMap | ||
* @param {PredefinedOptions & CustomOptions} minimizerOptions | ||
* @param {PredefinedOptions<import("@swc/core").JsMinifyOptions> & CustomOptions} minimizerOptions | ||
* @return {Promise<MinimizedResult>} | ||
@@ -97,3 +95,4 @@ */ | ||
sourceMap: SourceMapInput | undefined, | ||
minimizerOptions: PredefinedOptions & CustomOptions | ||
minimizerOptions: PredefinedOptions<import("@swc/core").JsMinifyOptions> & | ||
CustomOptions | ||
): Promise<MinimizedResult>; | ||
@@ -113,3 +112,3 @@ export namespace swcMinify { | ||
* @param {SourceMapInput | undefined} sourceMap | ||
* @param {PredefinedOptions & CustomOptions} minimizerOptions | ||
* @param {PredefinedOptions<import("esbuild").TransformOptions> & CustomOptions} minimizerOptions | ||
* @return {Promise<MinimizedResult>} | ||
@@ -120,3 +119,4 @@ */ | ||
sourceMap: SourceMapInput | undefined, | ||
minimizerOptions: PredefinedOptions & CustomOptions | ||
minimizerOptions: PredefinedOptions<import("esbuild").TransformOptions> & | ||
CustomOptions | ||
): Promise<MinimizedResult>; | ||
@@ -123,0 +123,0 @@ export namespace esbuildMinify { |
89647
0.59%1829
0.49%0
-100%