nouveau-theatre-de-besancon/node_modules/gulp-terser/dist/gulpTerser.js
2024-09-20 10:32:49 +02:00

61 lines
2.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const through2_1 = require("through2");
const terser_1 = require("terser");
const PluginError = require("plugin-error");
const applySourceMap = require("vinyl-sourcemaps-apply");
const PLUGIN_NAME = 'terser';
/**
* @param { MinifyOptions } gulpTerserOptions: gulp-terser configuration
* @param { typeof minify | undefined } customMinifyFunccustom minify function
*/
function gulpTerser(gulpTerserOptions = {}, customMinifyFunc) {
const minifyFunc = customMinifyFunc !== null && customMinifyFunc !== void 0 ? customMinifyFunc : terser_1.minify;
return (0, through2_1.obj)(async function (chunk, enc, callback) {
if (chunk.isStream()) {
this.emit('error', new PluginError(PLUGIN_NAME, 'Streams are not supported!'));
return callback();
}
if (chunk.isBuffer()) {
try {
const terserOptions = { ...gulpTerserOptions };
// SourceMap configuration
if (chunk.sourceMap) {
if (!terserOptions.sourceMap || terserOptions.sourceMap === true) {
terserOptions.sourceMap = {};
}
terserOptions.sourceMap.filename = chunk.sourceMap.file;
}
const chunkString = chunk.contents.toString('utf8');
let build = {};
// gulp version compatibility
if (('sourceMap' in chunk) && ('file' in chunk.sourceMap)) {
build[chunk.sourceMap.file] = chunkString;
}
else {
build = chunkString;
}
// Compressed code (terser5 is asynchronous, terser4 is synchronous)
const minifyOutput = await minifyFunc(build, terserOptions);
if ('error' in minifyOutput) {
throw new Error(minifyOutput['error']['message']);
}
// Buffer
if (minifyOutput.code) {
chunk.contents = ('from' in Buffer) ? Buffer.from(minifyOutput.code) : new Buffer(minifyOutput.code);
}
// Output source-map
if (chunk.sourceMap && minifyOutput.map) {
applySourceMap(chunk, minifyOutput.map);
}
this.push(chunk);
return callback();
}
catch (err) {
this.emit('error', new PluginError(PLUGIN_NAME, err));
return callback();
}
}
});
}
exports.default = gulpTerser;