265 lines
4.4 KiB
JavaScript
265 lines
4.4 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.validateConfig = validateConfig;
|
|
function _utils() {
|
|
const data = require("@parcel/utils");
|
|
_utils = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
// https://sharp.pixelplumbing.com/api-output#jpeg
|
|
const JPEG_OUTPUT_SCHEMA = {
|
|
type: 'object',
|
|
properties: {
|
|
quality: {
|
|
type: 'number'
|
|
},
|
|
progressive: {
|
|
type: 'boolean'
|
|
},
|
|
chromaSubsampling: {
|
|
type: 'string'
|
|
},
|
|
optimiseCoding: {
|
|
type: 'boolean'
|
|
},
|
|
optimizeCoding: {
|
|
type: 'boolean'
|
|
},
|
|
mozjpeg: {
|
|
type: 'boolean'
|
|
},
|
|
trellisQuantisation: {
|
|
type: 'boolean'
|
|
},
|
|
overshootDeringing: {
|
|
type: 'boolean'
|
|
},
|
|
optimiseScans: {
|
|
type: 'boolean'
|
|
},
|
|
optimizeScans: {
|
|
type: 'boolean'
|
|
},
|
|
quantisationTable: {
|
|
type: 'number'
|
|
},
|
|
quantizationTable: {
|
|
type: 'number'
|
|
},
|
|
force: {
|
|
type: 'boolean'
|
|
}
|
|
},
|
|
additionalProperties: true
|
|
};
|
|
|
|
// https://sharp.pixelplumbing.com/api-output#png
|
|
const PNG_OUTPUT_SCHEMA = {
|
|
type: 'object',
|
|
properties: {
|
|
quality: {
|
|
type: 'number'
|
|
},
|
|
progressive: {
|
|
type: 'boolean'
|
|
},
|
|
compressionLevel: {
|
|
type: 'number'
|
|
},
|
|
adaptiveFiltering: {
|
|
type: 'boolean'
|
|
},
|
|
palette: {
|
|
type: 'boolean'
|
|
},
|
|
colours: {
|
|
type: 'number'
|
|
},
|
|
colors: {
|
|
type: 'number'
|
|
},
|
|
dither: {
|
|
type: 'number'
|
|
},
|
|
force: {
|
|
type: 'boolean'
|
|
}
|
|
},
|
|
additionalProperties: true
|
|
};
|
|
|
|
// https://sharp.pixelplumbing.com/api-output#webp
|
|
const WEBP_OUTPUT_SCHEMA = {
|
|
type: 'object',
|
|
properties: {
|
|
quality: {
|
|
type: 'number'
|
|
},
|
|
alphaQuality: {
|
|
type: 'number'
|
|
},
|
|
lossless: {
|
|
type: 'boolean'
|
|
},
|
|
nearLossless: {
|
|
type: 'boolean'
|
|
},
|
|
smartSubsample: {
|
|
type: 'boolean'
|
|
},
|
|
reductionEffort: {
|
|
type: 'number'
|
|
},
|
|
pageHeight: {
|
|
type: 'number'
|
|
},
|
|
loop: {
|
|
type: 'number'
|
|
},
|
|
delay: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'number'
|
|
}
|
|
},
|
|
force: {
|
|
type: 'boolean'
|
|
}
|
|
},
|
|
additionalProperties: true
|
|
};
|
|
|
|
// https://sharp.pixelplumbing.com/api-output#gif
|
|
const GIF_OUTPUT_SCHEMA = {
|
|
type: 'object',
|
|
properties: {
|
|
pageHeight: {
|
|
type: 'number'
|
|
},
|
|
loop: {
|
|
type: 'number'
|
|
},
|
|
delay: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'number'
|
|
}
|
|
},
|
|
force: {
|
|
type: 'boolean'
|
|
}
|
|
},
|
|
additionalProperties: true
|
|
};
|
|
|
|
// https://sharp.pixelplumbing.com/api-output#tiff
|
|
const TIFF_OUTPUT_SCHEMA = {
|
|
type: 'object',
|
|
properties: {
|
|
quality: {
|
|
type: 'number'
|
|
},
|
|
force: {
|
|
type: 'boolean'
|
|
},
|
|
compression: {
|
|
type: 'string'
|
|
},
|
|
predictor: {
|
|
type: 'string'
|
|
},
|
|
pyramid: {
|
|
type: 'boolean'
|
|
},
|
|
tile: {
|
|
type: 'boolean'
|
|
},
|
|
tileWidth: {
|
|
type: 'number'
|
|
},
|
|
tileHeight: {
|
|
type: 'number'
|
|
},
|
|
xres: {
|
|
type: 'number'
|
|
},
|
|
yres: {
|
|
type: 'number'
|
|
},
|
|
bitdepth: {
|
|
type: 'number'
|
|
}
|
|
},
|
|
additionalProperties: true
|
|
};
|
|
|
|
// https://sharp.pixelplumbing.com/api-output#avif
|
|
const AVIF_OUTPUT_SCHEMA = {
|
|
type: 'object',
|
|
properties: {
|
|
quality: {
|
|
type: 'number'
|
|
},
|
|
lossless: {
|
|
type: 'boolean'
|
|
},
|
|
speed: {
|
|
type: 'number'
|
|
},
|
|
chromaSubsampling: {
|
|
type: 'string'
|
|
}
|
|
},
|
|
additionalProperties: true
|
|
};
|
|
|
|
// https://sharp.pixelplumbing.com/api-output#heif
|
|
const HEIF_OUTPUT_SCHEMA = {
|
|
type: 'object',
|
|
properties: {
|
|
quality: {
|
|
type: 'number'
|
|
},
|
|
compression: {
|
|
type: 'string'
|
|
},
|
|
lossless: {
|
|
type: 'boolean'
|
|
},
|
|
speed: {
|
|
type: 'number'
|
|
},
|
|
chromaSubsampling: {
|
|
type: 'string'
|
|
}
|
|
},
|
|
additionalProperties: true
|
|
};
|
|
const CONFIG_SCHEMA = {
|
|
type: 'object',
|
|
properties: {
|
|
// Fallback quality
|
|
quality: {
|
|
type: 'number'
|
|
},
|
|
jpeg: JPEG_OUTPUT_SCHEMA,
|
|
png: PNG_OUTPUT_SCHEMA,
|
|
webp: WEBP_OUTPUT_SCHEMA,
|
|
gif: GIF_OUTPUT_SCHEMA,
|
|
tiff: TIFF_OUTPUT_SCHEMA,
|
|
avif: AVIF_OUTPUT_SCHEMA,
|
|
heif: HEIF_OUTPUT_SCHEMA
|
|
},
|
|
additionalProperties: false
|
|
};
|
|
function validateConfig(data, filePath) {
|
|
_utils().validateSchema.diagnostic(CONFIG_SCHEMA, {
|
|
data,
|
|
filePath
|
|
}, '@parcel/transformer-image', 'Invalid sharp config');
|
|
} |