index.js
1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import Jimp, {
addType,
addJimpMethods,
addConstants,
jimpEvChange
} from '@jimp/core';
export default function configure(configuration, jimpInstance = Jimp) {
const jimpConfig = {
hasAlpha: {},
encoders: {},
decoders: {},
class: {},
constants: {}
};
function addToConfig(newConfig) {
Object.entries(newConfig).forEach(([key, value]) => {
jimpConfig[key] = {
...jimpConfig[key],
...value
};
});
}
function addImageType(typeModule) {
const type = typeModule();
if (Array.isArray(type.mime)) {
addType(...type.mime);
} else {
Object.entries(type.mime).forEach(mimeType => addType(...mimeType));
}
delete type.mime;
addToConfig(type);
}
function addPlugin(pluginModule) {
const plugin = pluginModule(jimpEvChange) || {};
if (!plugin.class && !plugin.constants) {
// Default to class function
addToConfig({ class: plugin });
} else {
addToConfig(plugin);
}
}
if (configuration.types) {
configuration.types.forEach(addImageType);
jimpInstance.decoders = {
...jimpInstance.decoders,
...jimpConfig.decoders
};
jimpInstance.encoders = {
...jimpInstance.encoders,
...jimpConfig.encoders
};
jimpInstance.hasAlpha = {
...jimpInstance.hasAlpha,
...jimpConfig.hasAlpha
};
}
if (configuration.plugins) {
configuration.plugins.forEach(addPlugin);
}
addJimpMethods(jimpConfig.class, jimpInstance);
addConstants(jimpConfig.constants, jimpInstance);
return Jimp;
}