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
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; |