UNPKG

1.12 kBJavaScriptView Raw
1const _ = require('lodash');
2
3function checkForDuplicates(assets) {
4 let duplicateIds = _(assets)
5 .map('id')
6 .countBy()
7 .pickBy((value) => value > 1)
8 .keys()
9 .value();
10
11 if (!duplicateIds.length) {
12 return;
13 }
14
15 let invalidAssets = _.flatMap(duplicateIds, (id) => _.filter(assets, { id }));
16 return ['Duplicate IDs found:']
17 .concat(invalidAssets.map((asset) => `ID: "${asset.id}" Path: ${asset.relativePath}`))
18 .join('\n');
19}
20
21function validateViewBox(assets) {
22 let invalidAssets = _.filter(assets, (asset) => (
23 _.isUndefined(asset.svgData.attrs.viewBox)
24 ));
25
26 if (!invalidAssets.length) {
27 return;
28 }
29
30 return ['SVG files without viewBox found:']
31 .concat(invalidAssets.map((asset) => `Path: ${asset.relativePath}`))
32 .join('\n');
33}
34
35module.exports = function validateAssets(assets, strategy, ui) {
36 let validators = [
37 checkForDuplicates,
38 validateViewBox
39 ];
40
41 validators.forEach((validate) => {
42 let message = validate(assets);
43
44 if (message) {
45 ui.write('\n');
46 ui.writeWarnLine(`[ember-svg-jar][${strategy}] ${message}`);
47 }
48 });
49};