Path: blob/master/node_modules/@jimp/custom/src/index.js
1129 views
import Jimp, {1addType,2addJimpMethods,3addConstants,4jimpEvChange5} from '@jimp/core';67export default function configure(configuration, jimpInstance = Jimp) {8const jimpConfig = {9hasAlpha: {},10encoders: {},11decoders: {},12class: {},13constants: {}14};1516function addToConfig(newConfig) {17Object.entries(newConfig).forEach(([key, value]) => {18jimpConfig[key] = {19...jimpConfig[key],20...value21};22});23}2425function addImageType(typeModule) {26const type = typeModule();2728if (Array.isArray(type.mime)) {29addType(...type.mime);30} else {31Object.entries(type.mime).forEach(mimeType => addType(...mimeType));32}3334delete type.mime;35addToConfig(type);36}3738function addPlugin(pluginModule) {39const plugin = pluginModule(jimpEvChange) || {};40if (!plugin.class && !plugin.constants) {41// Default to class function42addToConfig({ class: plugin });43} else {44addToConfig(plugin);45}46}4748if (configuration.types) {49configuration.types.forEach(addImageType);5051jimpInstance.decoders = {52...jimpInstance.decoders,53...jimpConfig.decoders54};55jimpInstance.encoders = {56...jimpInstance.encoders,57...jimpConfig.encoders58};59jimpInstance.hasAlpha = {60...jimpInstance.hasAlpha,61...jimpConfig.hasAlpha62};63}6465if (configuration.plugins) {66configuration.plugins.forEach(addPlugin);67}6869addJimpMethods(jimpConfig.class, jimpInstance);70addConstants(jimpConfig.constants, jimpInstance);7172return Jimp;73}747576