Son CV dans un terminal web en Javascript! https://terminal-cv.gregandev.fr
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

136 lines
4.1 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _validateConfig = require("./validateConfig");
function _plugin() {
const data = require("@parcel/plugin");
_plugin = function () {
return data;
};
return data;
}
function _nullthrows() {
const data = _interopRequireDefault(require("nullthrows"));
_nullthrows = function () {
return data;
};
return data;
}
function _workers() {
const data = _interopRequireDefault(require("@parcel/workers"));
_workers = function () {
return data;
};
return data;
}
var _loadSharp = _interopRequireDefault(require("./loadSharp"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// from https://github.com/lovell/sharp/blob/df7b8ba73808fc494be413e88cfb621b6279218c/lib/output.js#L6-L17
const FORMATS = new Map([['jpeg', 'jpeg'], ['jpg', 'jpeg'], ['png', 'png'], ['webp', 'webp'], ['gif', 'gif'], ['tiff', 'tiff'], ['avif', 'avif'], ['heic', 'heif'], ['heif', 'heif']]);
let isSharpLoadedOnMainThread = false;
var _default = new (_plugin().Transformer)({
async loadConfig({
config
}) {
let configFile = await config.getConfig(['sharp.config.json'], // '.sharprc', '.sharprc.json'
{
packageKey: 'sharp'
});
if (configFile !== null && configFile !== void 0 && configFile.contents) {
(0, _validateConfig.validateConfig)(configFile.contents, configFile.filePath);
return configFile.contents;
} else {
return {};
}
},
async transform({
config,
asset,
options
}) {
var _asset$query$get;
asset.bundleBehavior = 'isolated';
const originalFormat = FORMATS.get(asset.type);
if (!originalFormat) {
throw new Error(`The image transformer does not support ${asset.type} images.`);
}
const width = asset.query.has('width') ? parseInt(asset.query.get('width'), 10) : null;
const height = asset.query.has('height') ? parseInt(asset.query.get('height'), 10) : null;
const quality = asset.query.has('quality') ? parseInt(asset.query.get('quality'), 10) : config.quality;
let targetFormat = (_asset$query$get = asset.query.get('as')) === null || _asset$query$get === void 0 ? void 0 : _asset$query$get.toLowerCase().trim();
if (targetFormat && !FORMATS.has(targetFormat)) {
throw new Error(`The image transformer does not support ${targetFormat} images.`);
}
const format = (0, _nullthrows().default)(FORMATS.get(targetFormat || originalFormat));
const outputOptions = config[format];
if (width || height || quality || targetFormat || outputOptions) {
// Sharp must be required from the main thread as well to prevent errors when workers exit
// See https://sharp.pixelplumbing.com/install#worker-threads and https://github.com/lovell/sharp/issues/2263
if (_workers().default.isWorker() && !isSharpLoadedOnMainThread) {
let api = _workers().default.getWorkerApi();
await api.callMaster({
location: __dirname + '/loadSharp.js',
args: [options.packageManager, asset.filePath, options.shouldAutoInstall]
});
isSharpLoadedOnMainThread = true;
}
let inputBuffer = await asset.getBuffer();
let sharp = await (0, _loadSharp.default)(options.packageManager, asset.filePath, options.shouldAutoInstall, true);
let imagePipeline = sharp(inputBuffer);
imagePipeline.withMetadata();
if (width || height) {
imagePipeline.resize(width, height);
}
imagePipeline.rotate();
const normalizedOutputOptions = outputOptions || {};
if (format === 'jpeg') {
var _normalizedOutputOpti;
normalizedOutputOptions.mozjpeg = (_normalizedOutputOpti = normalizedOutputOptions.mozjpeg) !== null && _normalizedOutputOpti !== void 0 ? _normalizedOutputOpti : true;
}
imagePipeline[format]({
quality,
...normalizedOutputOptions
});
asset.type = format;
let buffer = await imagePipeline.toBuffer();
asset.setBuffer(buffer);
}
return [asset];
}
});
exports.default = _default;