@uxf/icons-generator 1.3.0 → 10.0.0-beta.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -21
- package/src/scripts/check.js +20 -0
- package/src/scripts/gen.js +65 -0
- package/{types.d.ts → src/types.d.ts} +5 -5
- package/src/types.js +13 -0
- package/src/utils/_compareSprites.js +11 -0
- package/src/utils/_createConfigFileContent.js +8 -0
- package/src/utils/_createDefinitionFileContent.js +48 -0
- package/src/utils/_createIconContent.js +7 -0
- package/src/utils/_createPath.js +15 -0
- package/src/utils/_createSpriteContent.js +31 -0
- package/src/utils/_generateConfigFile.js +14 -0
- package/src/utils/_generateDefinitionFile.js +19 -0
- package/src/utils/_generateSeparateIconFiles.js +32 -0
- package/src/utils/_generateSpriteFile.js +11 -0
- package/src/utils/_getConfig.js +46 -0
- package/src/utils/_removeUnusedSeparateIconFiles.js +15 -0
- package/src/utils/check/_check.js +28 -0
- package/src/utils/check/_validateConfigFile.js +19 -0
- package/src/utils/check/_validateDefinitions.js +20 -0
- package/src/utils/check/_validateSeparateIcons.js +40 -0
- package/src/utils/check/_validateSourceData.js +31 -0
- package/src/utils/check/_validateSprite.js +10 -0
- package/tests/icons.config.js +48 -0
- package/scripts/check.js +0 -21
- package/scripts/gen.js +0 -66
- package/types.js +0 -14
- package/utils/_compareSprites.js +0 -13
- package/utils/_createConfigFileContent.js +0 -10
- package/utils/_createDefinitionFileContent.js +0 -50
- package/utils/_createIconContent.js +0 -9
- package/utils/_createPath.js +0 -17
- package/utils/_createSpriteContent.js +0 -33
- package/utils/_generateConfigFile.js +0 -16
- package/utils/_generateDefinitionFile.js +0 -21
- package/utils/_generateSeparateIconFiles.js +0 -34
- package/utils/_generateSpriteFile.js +0 -13
- package/utils/_getConfig.js +0 -50
- package/utils/_removeUnusedSeparateIconFiles.js +0 -17
- package/utils/check/_check.js +0 -29
- package/utils/check/_validateConfigFile.js +0 -21
- package/utils/check/_validateDefinitions.js +0 -22
- package/utils/check/_validateSeparateIcons.js +0 -42
- package/utils/check/_validateSourceData.js +0 -33
- package/utils/check/_validateSprite.js +0 -12
- /package/{scripts → src/scripts}/check.d.ts +0 -0
- /package/{scripts → src/scripts}/gen.d.ts +0 -0
- /package/{utils → src/utils}/_compareSprites.d.ts +0 -0
- /package/{utils → src/utils}/_createConfigFileContent.d.ts +0 -0
- /package/{utils → src/utils}/_createDefinitionFileContent.d.ts +0 -0
- /package/{utils → src/utils}/_createIconContent.d.ts +0 -0
- /package/{utils → src/utils}/_createPath.d.ts +0 -0
- /package/{utils → src/utils}/_createSpriteContent.d.ts +0 -0
- /package/{utils → src/utils}/_generateConfigFile.d.ts +0 -0
- /package/{utils → src/utils}/_generateDefinitionFile.d.ts +0 -0
- /package/{utils → src/utils}/_generateSeparateIconFiles.d.ts +0 -0
- /package/{utils → src/utils}/_generateSpriteFile.d.ts +0 -0
- /package/{utils → src/utils}/_getConfig.d.ts +0 -0
- /package/{utils → src/utils}/_removeUnusedSeparateIconFiles.d.ts +0 -0
- /package/{utils → src/utils}/check/_check.d.ts +0 -0
- /package/{utils → src/utils}/check/_validateConfigFile.d.ts +0 -0
- /package/{utils → src/utils}/check/_validateDefinitions.d.ts +0 -0
- /package/{utils → src/utils}/check/_validateSeparateIcons.d.ts +0 -0
- /package/{utils → src/utils}/check/_validateSourceData.d.ts +0 -0
- /package/{utils → src/utils}/check/_validateSprite.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/icons-generator",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0-beta.76",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "npm run-script clean && npm run-script compile",
|
|
8
8
|
"clean": "rm -rf ./dist",
|
|
9
|
-
"compile": "tsc -P tsconfig.
|
|
10
|
-
"
|
|
11
|
-
"typecheck": "tsc --noEmit --skipLibCheck",
|
|
12
|
-
"test": "npm run lint:ts && npm run typecheck",
|
|
13
|
-
"jest": "jest --coverage=true"
|
|
9
|
+
"compile": "tsc -P tsconfig.json",
|
|
10
|
+
"typecheck": "tsc --noEmit --skipLibCheck"
|
|
14
11
|
},
|
|
15
12
|
"publishConfig": {
|
|
16
13
|
"access": "public"
|
|
@@ -19,20 +16,6 @@
|
|
|
19
16
|
"type": "git",
|
|
20
17
|
"url": "git+https://gitlab.com/uxf-npm/icons-generator.git"
|
|
21
18
|
},
|
|
22
|
-
"devDependencies": {
|
|
23
|
-
"@babel/cli": "^7.15.7",
|
|
24
|
-
"@babel/core": "^7.15.8",
|
|
25
|
-
"@babel/plugin-transform-typescript": "^7.15.8",
|
|
26
|
-
"@babel/preset-env": "^7.15.8",
|
|
27
|
-
"@uxf/eslint-config": "^1.2.3",
|
|
28
|
-
"eslint": "^8.8.0",
|
|
29
|
-
"eslint-config-prettier": "^8.3.0",
|
|
30
|
-
"eslint-plugin-prettier": "^4.0.0",
|
|
31
|
-
"jest": "^27.2.5",
|
|
32
|
-
"prettier": "^2.4.1",
|
|
33
|
-
"ts-jest": "^27.0.5",
|
|
34
|
-
"typescript": "^4.4.4"
|
|
35
|
-
},
|
|
36
19
|
"dependencies": {
|
|
37
20
|
"fast-xml-parser": "^3.20.3",
|
|
38
21
|
"fs": "*"
|
|
@@ -47,4 +30,4 @@
|
|
|
47
30
|
"url": "https://gitlab.com/uxf-npm/icons-generator/issues"
|
|
48
31
|
},
|
|
49
32
|
"homepage": "https://gitlab.com/uxf-npm/icons-generator#readme"
|
|
50
|
-
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const _getConfig_1 = require("../utils/_getConfig");
|
|
5
|
+
const _check_1 = require("../utils/check/_check");
|
|
6
|
+
const config = (0, _getConfig_1._getConfig)();
|
|
7
|
+
let error = false;
|
|
8
|
+
try {
|
|
9
|
+
(0, _check_1._check)(config);
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
// eslint-disable-next-line no-console
|
|
13
|
+
console.error(e);
|
|
14
|
+
error = true;
|
|
15
|
+
}
|
|
16
|
+
if (!error) {
|
|
17
|
+
// eslint-disable-next-line no-console
|
|
18
|
+
console.log("Everything OK!");
|
|
19
|
+
}
|
|
20
|
+
process.exit(error ? 1 : 0);
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const _generateConfigFile_1 = require("../utils/_generateConfigFile");
|
|
5
|
+
const _generateDefinitionFile_1 = require("../utils/_generateDefinitionFile");
|
|
6
|
+
const _generateSeparateIconFiles_1 = require("../utils/_generateSeparateIconFiles");
|
|
7
|
+
const _generateSpriteFile_1 = require("../utils/_generateSpriteFile");
|
|
8
|
+
const _getConfig_1 = require("../utils/_getConfig");
|
|
9
|
+
const _check_1 = require("../utils/check/_check");
|
|
10
|
+
const _validateSourceData_1 = require("../utils/check/_validateSourceData");
|
|
11
|
+
const _removeUnusedSeparateIconFiles_1 = require("../utils/_removeUnusedSeparateIconFiles");
|
|
12
|
+
const config = (0, _getConfig_1._getConfig)();
|
|
13
|
+
let error = false;
|
|
14
|
+
let shouldUpdate = false;
|
|
15
|
+
try {
|
|
16
|
+
(0, _validateSourceData_1._validateSourceData)({ source: config.icons, mode: config.mode });
|
|
17
|
+
try {
|
|
18
|
+
(0, _check_1._check)(config);
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
shouldUpdate = true;
|
|
22
|
+
}
|
|
23
|
+
(0, _validateSourceData_1._validateSourceData)({ source: config.icons, mode: config.mode });
|
|
24
|
+
if (shouldUpdate) {
|
|
25
|
+
(0, _generateSpriteFile_1._generateSpriteFile)({ source: config.icons, spriteFile: config.spriteFile, mode: config.mode });
|
|
26
|
+
// eslint-disable-next-line no-console
|
|
27
|
+
console.log("Icon sprite file generated.");
|
|
28
|
+
(0, _generateDefinitionFile_1._generateDefinitionFile)({
|
|
29
|
+
source: config.icons,
|
|
30
|
+
resultFile: config.definitionFile,
|
|
31
|
+
typescript: config.typescript,
|
|
32
|
+
mode: config.mode,
|
|
33
|
+
typeName: config.typeName,
|
|
34
|
+
moduleDefinition: config.moduleDefinition,
|
|
35
|
+
customContent: config.customDefinitionContent,
|
|
36
|
+
});
|
|
37
|
+
// eslint-disable-next-line no-console
|
|
38
|
+
console.log("Definition file generated.");
|
|
39
|
+
(0, _removeUnusedSeparateIconFiles_1._removeUnusedSeparateIconFiles)({
|
|
40
|
+
source: config.icons,
|
|
41
|
+
directory: config.generatedDirectory,
|
|
42
|
+
spriteFileName: config.spriteFileName,
|
|
43
|
+
});
|
|
44
|
+
(0, _generateSeparateIconFiles_1._generateSeparateIconFiles)({ source: config.icons, directory: config.generatedDirectory, mode: config.mode });
|
|
45
|
+
// eslint-disable-next-line no-console
|
|
46
|
+
console.log("Separate icons generated.");
|
|
47
|
+
(0, _generateConfigFile_1._generateConfigFile)({
|
|
48
|
+
configFile: config.configFile,
|
|
49
|
+
spriteFileName: config.spriteFileName,
|
|
50
|
+
generatedRelativeDirectory: config.generatedRelativeDirectory,
|
|
51
|
+
});
|
|
52
|
+
// eslint-disable-next-line no-console
|
|
53
|
+
console.log("Config file generated.");
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// eslint-disable-next-line no-console
|
|
57
|
+
console.log("No changes in config, no icons generated.");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
// eslint-disable-next-line no-console
|
|
62
|
+
console.error(e);
|
|
63
|
+
error = true;
|
|
64
|
+
}
|
|
65
|
+
process.exit(error ? 1 : 0);
|
|
@@ -6,25 +6,25 @@ export declare enum ModuleDefinitionFormat {
|
|
|
6
6
|
Type = "type",
|
|
7
7
|
Interface = "interface"
|
|
8
8
|
}
|
|
9
|
-
export
|
|
9
|
+
export type ModuleDefinition = {
|
|
10
10
|
moduleName: string;
|
|
11
11
|
typeName: string;
|
|
12
12
|
format: ModuleDefinitionFormat;
|
|
13
13
|
};
|
|
14
|
-
export
|
|
14
|
+
export type SimpleIcon = {
|
|
15
15
|
data: string;
|
|
16
16
|
height: number;
|
|
17
17
|
width: number;
|
|
18
18
|
};
|
|
19
|
-
export
|
|
20
|
-
|
|
19
|
+
export type SizedIcon = Record<number, string>;
|
|
20
|
+
type IconsByMode = {
|
|
21
21
|
icons: Record<string, SimpleIcon>;
|
|
22
22
|
mode: Mode.Simple;
|
|
23
23
|
} | {
|
|
24
24
|
icons: Record<string, SizedIcon>;
|
|
25
25
|
mode: Mode.Sizes;
|
|
26
26
|
};
|
|
27
|
-
export
|
|
27
|
+
export type Config = {
|
|
28
28
|
configDirectory: string;
|
|
29
29
|
configFile: string;
|
|
30
30
|
customDefinitionContent?: string;
|
package/src/types.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModuleDefinitionFormat = exports.Mode = void 0;
|
|
4
|
+
var Mode;
|
|
5
|
+
(function (Mode) {
|
|
6
|
+
Mode["Simple"] = "simple";
|
|
7
|
+
Mode["Sizes"] = "sizes";
|
|
8
|
+
})(Mode || (exports.Mode = Mode = {}));
|
|
9
|
+
var ModuleDefinitionFormat;
|
|
10
|
+
(function (ModuleDefinitionFormat) {
|
|
11
|
+
ModuleDefinitionFormat["Type"] = "type";
|
|
12
|
+
ModuleDefinitionFormat["Interface"] = "interface";
|
|
13
|
+
})(ModuleDefinitionFormat || (exports.ModuleDefinitionFormat = ModuleDefinitionFormat = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._compareSprites = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const _createSpriteContent_1 = require("./_createSpriteContent");
|
|
6
|
+
function _compareSprites({ source, spriteFile, mode }) {
|
|
7
|
+
const spriteTextContent = (0, _createSpriteContent_1._createSpriteContent)({ source, mode });
|
|
8
|
+
const oldSvgContent = (0, fs_1.existsSync)(spriteFile) ? (0, fs_1.readFileSync)(spriteFile).toString() : "";
|
|
9
|
+
return spriteTextContent === oldSvgContent;
|
|
10
|
+
}
|
|
11
|
+
exports._compareSprites = _compareSprites;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._createConfigFileContent = void 0;
|
|
4
|
+
function _createConfigFileContent({ spriteFileName, generatedRelativeDirectory, }) {
|
|
5
|
+
const iconsVersion = new Date().getTime();
|
|
6
|
+
return `export const ICONS_VERSION = "${iconsVersion}";\nexport const ICON_SPRITE = "${generatedRelativeDirectory.replace("/public", "")}${spriteFileName}";\n`;
|
|
7
|
+
}
|
|
8
|
+
exports._createConfigFileContent = _createConfigFileContent;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._createDefinitionFileContent = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
function _createDefinitionFileContent({ source, typescript, mode, typeName, moduleDefinition, customContent, }) {
|
|
6
|
+
let size;
|
|
7
|
+
let newIcons = `// this file is generated automatically, do not change anything manually in the contents of this file\n\nexport const ICONS = {\n`;
|
|
8
|
+
Object.keys(source).map((name) => {
|
|
9
|
+
switch (mode) {
|
|
10
|
+
case types_1.Mode.Simple:
|
|
11
|
+
newIcons += ` "${name}": { w: ${source[name].width}, h: ${source[name].height} },\n`;
|
|
12
|
+
break;
|
|
13
|
+
case types_1.Mode.Sizes:
|
|
14
|
+
size = source[name];
|
|
15
|
+
newIcons += ` "${name}": [${Object.keys(size).join(", ")}],\n`;
|
|
16
|
+
break;
|
|
17
|
+
default:
|
|
18
|
+
throw new Error("Unknown mode " + mode);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
newIcons += "}";
|
|
22
|
+
if (typescript) {
|
|
23
|
+
newIcons += ` as const;\n\nexport type ${typeName} = keyof typeof ICONS;\n`;
|
|
24
|
+
if (moduleDefinition) {
|
|
25
|
+
newIcons += `\ndeclare module "${moduleDefinition.moduleName}" {\n`;
|
|
26
|
+
switch (moduleDefinition.format) {
|
|
27
|
+
case types_1.ModuleDefinitionFormat.Interface:
|
|
28
|
+
newIcons += ` interface ${moduleDefinition.typeName} {\n`;
|
|
29
|
+
Object.keys(source).map((name) => {
|
|
30
|
+
newIcons += ` "${name}": true;\n`;
|
|
31
|
+
});
|
|
32
|
+
newIcons += ` }\n`;
|
|
33
|
+
break;
|
|
34
|
+
case types_1.ModuleDefinitionFormat.Type:
|
|
35
|
+
newIcons += ` type ${moduleDefinition.typeName} = "${Object.keys(source).join('" | "')}";\n`;
|
|
36
|
+
break;
|
|
37
|
+
default:
|
|
38
|
+
throw new Error("Unknown mode " + mode);
|
|
39
|
+
}
|
|
40
|
+
newIcons += "}\n";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (customContent) {
|
|
44
|
+
newIcons += `\n${customContent}`;
|
|
45
|
+
}
|
|
46
|
+
return newIcons;
|
|
47
|
+
}
|
|
48
|
+
exports._createDefinitionFileContent = _createDefinitionFileContent;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._createIconContent = void 0;
|
|
4
|
+
function _createIconContent({ width, height, content }) {
|
|
5
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${width} ${height}">${content}</svg>`;
|
|
6
|
+
}
|
|
7
|
+
exports._createIconContent = _createIconContent;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._createPath = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
function _createPath(path, isFile = true) {
|
|
6
|
+
const arr = path.split("/");
|
|
7
|
+
if (isFile) {
|
|
8
|
+
arr.pop();
|
|
9
|
+
}
|
|
10
|
+
const dirPath = arr.join("/");
|
|
11
|
+
if (!(0, fs_1.existsSync)(dirPath)) {
|
|
12
|
+
(0, fs_1.mkdirSync)(dirPath, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports._createPath = _createPath;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._createSpriteContent = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
function _createSpriteContent({ source, mode }) {
|
|
6
|
+
let spriteTextContent = `<svg xmlns="http://www.w3.org/2000/svg">`;
|
|
7
|
+
switch (mode) {
|
|
8
|
+
case types_1.Mode.Simple:
|
|
9
|
+
Object.keys(source).map((name) => {
|
|
10
|
+
const svg = source[name];
|
|
11
|
+
spriteTextContent += `<symbol id="icon-sprite--${name}" viewBox="0 0 ${svg.width} ${svg.height}">`;
|
|
12
|
+
spriteTextContent += svg.data;
|
|
13
|
+
spriteTextContent += `</symbol>`;
|
|
14
|
+
});
|
|
15
|
+
break;
|
|
16
|
+
case types_1.Mode.Sizes:
|
|
17
|
+
Object.keys(source).map((name) => {
|
|
18
|
+
const sizes = source[name];
|
|
19
|
+
return Object.keys(sizes).map((s) => {
|
|
20
|
+
const svg = sizes[s];
|
|
21
|
+
spriteTextContent += `<symbol id="icon-sprite--${name}_${s}" viewBox="0 0 ${s} ${s}">${svg}</symbol>`;
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
break;
|
|
25
|
+
default:
|
|
26
|
+
throw new Error("Unknown mode " + mode);
|
|
27
|
+
}
|
|
28
|
+
spriteTextContent += `</svg>`;
|
|
29
|
+
return spriteTextContent;
|
|
30
|
+
}
|
|
31
|
+
exports._createSpriteContent = _createSpriteContent;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._generateConfigFile = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const _createConfigFileContent_1 = require("./_createConfigFileContent");
|
|
6
|
+
const _createPath_1 = require("./_createPath");
|
|
7
|
+
function _generateConfigFile({ configFile, spriteFileName, generatedRelativeDirectory, }) {
|
|
8
|
+
(0, _createPath_1._createPath)(configFile);
|
|
9
|
+
(0, fs_1.writeFileSync)(configFile, (0, _createConfigFileContent_1._createConfigFileContent)({
|
|
10
|
+
spriteFileName: spriteFileName,
|
|
11
|
+
generatedRelativeDirectory: generatedRelativeDirectory,
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
exports._generateConfigFile = _generateConfigFile;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._generateDefinitionFile = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const _createDefinitionFileContent_1 = require("./_createDefinitionFileContent");
|
|
6
|
+
const _createPath_1 = require("./_createPath");
|
|
7
|
+
function _generateDefinitionFile({ source, resultFile, typescript, mode, typeName, moduleDefinition, customContent, }) {
|
|
8
|
+
const newIcons = (0, _createDefinitionFileContent_1._createDefinitionFileContent)({
|
|
9
|
+
source,
|
|
10
|
+
typescript,
|
|
11
|
+
mode,
|
|
12
|
+
typeName,
|
|
13
|
+
moduleDefinition,
|
|
14
|
+
customContent,
|
|
15
|
+
});
|
|
16
|
+
(0, _createPath_1._createPath)(resultFile);
|
|
17
|
+
(0, fs_1.writeFileSync)(resultFile, newIcons);
|
|
18
|
+
}
|
|
19
|
+
exports._generateDefinitionFile = _generateDefinitionFile;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._generateSeparateIconFiles = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const _createPath_1 = require("./_createPath");
|
|
7
|
+
const _createIconContent_1 = require("./_createIconContent");
|
|
8
|
+
function _generateSeparateIconFiles({ source, directory, mode, }) {
|
|
9
|
+
(0, _createPath_1._createPath)(directory, false);
|
|
10
|
+
switch (mode) {
|
|
11
|
+
case types_1.Mode.Simple:
|
|
12
|
+
Object.keys(source).map((name) => {
|
|
13
|
+
const svg = source[name];
|
|
14
|
+
const content = (0, _createIconContent_1._createIconContent)({ width: svg.width, height: svg.height, content: svg.data });
|
|
15
|
+
(0, fs_1.writeFileSync)(directory + name + ".svg", content);
|
|
16
|
+
});
|
|
17
|
+
break;
|
|
18
|
+
case types_1.Mode.Sizes:
|
|
19
|
+
Object.keys(source).map((name) => {
|
|
20
|
+
const size = source[name];
|
|
21
|
+
Object.keys(size).map((s) => {
|
|
22
|
+
const svg = size[s];
|
|
23
|
+
const content = (0, _createIconContent_1._createIconContent)({ width: s, height: s, content: svg });
|
|
24
|
+
(0, fs_1.writeFileSync)(directory + name + "_" + s + ".svg", content);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
break;
|
|
28
|
+
default:
|
|
29
|
+
throw new Error("Unknown mode " + mode);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports._generateSeparateIconFiles = _generateSeparateIconFiles;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._generateSpriteFile = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const _createPath_1 = require("./_createPath");
|
|
6
|
+
const _createSpriteContent_1 = require("./_createSpriteContent");
|
|
7
|
+
function _generateSpriteFile({ source, spriteFile, mode }) {
|
|
8
|
+
(0, _createPath_1._createPath)(spriteFile);
|
|
9
|
+
(0, fs_1.writeFileSync)(spriteFile, (0, _createSpriteContent_1._createSpriteContent)({ source, mode }));
|
|
10
|
+
}
|
|
11
|
+
exports._generateSpriteFile = _generateSpriteFile;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._getConfig = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
function _getModuleDefinition(data) {
|
|
6
|
+
if (!data) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
moduleName: data.moduleName || "icons",
|
|
11
|
+
typeName: data.typeName || "IconsSet",
|
|
12
|
+
format: data.format || "interface",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function _getConfig() {
|
|
16
|
+
var _a;
|
|
17
|
+
const confFile = (_a = process.argv.filter((c) => c.includes("--configFile="))[0]) === null || _a === void 0 ? void 0 : _a.split("=")[1];
|
|
18
|
+
/* eslint-disable-next-line @typescript-eslint/no-var-requires */
|
|
19
|
+
const loadedConfig = require(process.cwd() + "/" + (confFile || "icons.config.js"));
|
|
20
|
+
const config = {
|
|
21
|
+
configDirectory: loadedConfig.configDirectory || "/src/config/",
|
|
22
|
+
icons: loadedConfig.icons || {},
|
|
23
|
+
mode: loadedConfig.mode || types_1.Mode.Simple,
|
|
24
|
+
spriteFileName: loadedConfig.spriteFileName || "_icon-sprite.svg",
|
|
25
|
+
typeName: loadedConfig.typeName || "IconsSet",
|
|
26
|
+
typescript: loadedConfig.typescript || true,
|
|
27
|
+
customDefinitionContent: loadedConfig.customDefinitionContent || undefined,
|
|
28
|
+
moduleDefinition: _getModuleDefinition(loadedConfig.moduleDefinition),
|
|
29
|
+
};
|
|
30
|
+
const ext = config.typescript ? "ts" : "js";
|
|
31
|
+
const definitionFile = process.cwd() + config.configDirectory + `icons.${ext}`;
|
|
32
|
+
const configFile = process.cwd() + config.configDirectory + `icons-config.${ext}`;
|
|
33
|
+
const generatedRelativeDirectory = loadedConfig.generatedDirectory || "/public/icons-generated/";
|
|
34
|
+
const generatedDirectory = process.cwd() + generatedRelativeDirectory;
|
|
35
|
+
const spriteFile = generatedDirectory + "/" + config.spriteFileName;
|
|
36
|
+
return {
|
|
37
|
+
...config,
|
|
38
|
+
configFile,
|
|
39
|
+
definitionFile,
|
|
40
|
+
ext,
|
|
41
|
+
generatedDirectory,
|
|
42
|
+
generatedRelativeDirectory,
|
|
43
|
+
spriteFile,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
exports._getConfig = _getConfig;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._removeUnusedSeparateIconFiles = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const _createPath_1 = require("./_createPath");
|
|
6
|
+
function _removeUnusedSeparateIconFiles({ source, directory, spriteFileName, }) {
|
|
7
|
+
(0, _createPath_1._createPath)(directory, false);
|
|
8
|
+
const dir = (0, fs_1.readdirSync)(directory, { withFileTypes: true });
|
|
9
|
+
dir.map((file) => {
|
|
10
|
+
if (file.isFile() && !(file.name in source) && file.name !== spriteFileName) {
|
|
11
|
+
(0, fs_1.unlinkSync)(directory + file.name);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
exports._removeUnusedSeparateIconFiles = _removeUnusedSeparateIconFiles;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._check = void 0;
|
|
4
|
+
const _validateConfigFile_1 = require("./_validateConfigFile");
|
|
5
|
+
const _validateDefinitions_1 = require("./_validateDefinitions");
|
|
6
|
+
const _validateSeparateIcons_1 = require("./_validateSeparateIcons");
|
|
7
|
+
const _validateSourceData_1 = require("./_validateSourceData");
|
|
8
|
+
const _validateSprite_1 = require("./_validateSprite");
|
|
9
|
+
function _check(config) {
|
|
10
|
+
(0, _validateSourceData_1._validateSourceData)({ source: config.icons, mode: config.mode });
|
|
11
|
+
(0, _validateSprite_1._validateSprite)({ source: config.icons, spriteFile: config.spriteFile, mode: config.mode });
|
|
12
|
+
(0, _validateDefinitions_1._validateDefinitions)({
|
|
13
|
+
source: config.icons,
|
|
14
|
+
resultFile: config.definitionFile,
|
|
15
|
+
typescript: config.typescript,
|
|
16
|
+
mode: config.mode,
|
|
17
|
+
typeName: config.typeName,
|
|
18
|
+
moduleDefinition: config.moduleDefinition,
|
|
19
|
+
customContent: config.customDefinitionContent,
|
|
20
|
+
});
|
|
21
|
+
(0, _validateSeparateIcons_1._validateSeparateIcons)({ source: config.icons, generatedDir: config.generatedDirectory, mode: config.mode });
|
|
22
|
+
(0, _validateConfigFile_1._validateConfigFile)({
|
|
23
|
+
configFile: config.configFile,
|
|
24
|
+
spriteFileName: config.spriteFileName,
|
|
25
|
+
generatedRelativeDirectory: config.generatedRelativeDirectory,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
exports._check = _check;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._validateConfigFile = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const _createConfigFileContent_1 = require("../_createConfigFileContent");
|
|
6
|
+
function normalize(content) {
|
|
7
|
+
return content.replace(/ICONS_VERSION = "[0-9]+"/g, "%%VERSION%%");
|
|
8
|
+
}
|
|
9
|
+
function _validateConfigFile({ spriteFileName, generatedRelativeDirectory, configFile, }) {
|
|
10
|
+
const newContent = (0, _createConfigFileContent_1._createConfigFileContent)({
|
|
11
|
+
spriteFileName,
|
|
12
|
+
generatedRelativeDirectory,
|
|
13
|
+
});
|
|
14
|
+
const oldContent = (0, fs_1.existsSync)(configFile) ? (0, fs_1.readFileSync)(configFile).toString() : "";
|
|
15
|
+
if (normalize(newContent) !== normalize(oldContent)) {
|
|
16
|
+
throw new Error("Config file doesn't contain all valid information");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports._validateConfigFile = _validateConfigFile;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._validateDefinitions = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const _createDefinitionFileContent_1 = require("../_createDefinitionFileContent");
|
|
6
|
+
function _validateDefinitions({ source, resultFile, typescript, mode, typeName, moduleDefinition, customContent, }) {
|
|
7
|
+
const newContent = (0, _createDefinitionFileContent_1._createDefinitionFileContent)({
|
|
8
|
+
source,
|
|
9
|
+
typescript,
|
|
10
|
+
mode,
|
|
11
|
+
typeName,
|
|
12
|
+
moduleDefinition,
|
|
13
|
+
customContent,
|
|
14
|
+
});
|
|
15
|
+
const oldContent = (0, fs_1.existsSync)(resultFile) ? (0, fs_1.readFileSync)(resultFile).toString() : "";
|
|
16
|
+
if (newContent !== oldContent) {
|
|
17
|
+
throw new Error("Definition file doesn't contain all valid icons from config");
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports._validateDefinitions = _validateDefinitions;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._validateSeparateIcons = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const types_1 = require("../../types");
|
|
6
|
+
const _createIconContent_1 = require("../_createIconContent");
|
|
7
|
+
function _validateSeparateIcons({ source, generatedDir, mode, }) {
|
|
8
|
+
switch (mode) {
|
|
9
|
+
case types_1.Mode.Simple:
|
|
10
|
+
Object.keys(source).map((name) => {
|
|
11
|
+
const svg = source[name];
|
|
12
|
+
const content = (0, _createIconContent_1._createIconContent)({ width: svg.width, height: svg.height, content: svg.data });
|
|
13
|
+
const oldContent = (0, fs_1.existsSync)(generatedDir + name + ".svg")
|
|
14
|
+
? (0, fs_1.readFileSync)(generatedDir + name + ".svg").toString()
|
|
15
|
+
: "";
|
|
16
|
+
if (content !== oldContent) {
|
|
17
|
+
throw new Error(`SVG file for icon "${name}" has no valid content for current config`);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
break;
|
|
21
|
+
case types_1.Mode.Sizes:
|
|
22
|
+
Object.keys(source).map((name) => {
|
|
23
|
+
const size = source[name];
|
|
24
|
+
Object.keys(size).map((s) => {
|
|
25
|
+
const svg = size[s];
|
|
26
|
+
const content = (0, _createIconContent_1._createIconContent)({ width: s, height: s, content: svg });
|
|
27
|
+
const oldContent = (0, fs_1.existsSync)(generatedDir + name + "_" + s + ".svg")
|
|
28
|
+
? (0, fs_1.readFileSync)(generatedDir + name + "_" + s + ".svg").toString()
|
|
29
|
+
: "";
|
|
30
|
+
if (content !== oldContent) {
|
|
31
|
+
throw new Error(`SVG file for icon "${name}" has no valid content for current config`);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
throw new Error("Unknown mode " + mode);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports._validateSeparateIcons = _validateSeparateIcons;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._validateSourceData = void 0;
|
|
4
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
5
|
+
const types_1 = require("../../types");
|
|
6
|
+
function _validateSourceData({ source, mode }) {
|
|
7
|
+
switch (mode) {
|
|
8
|
+
case types_1.Mode.Simple:
|
|
9
|
+
Object.keys(source).map((name) => {
|
|
10
|
+
const svg = source[name];
|
|
11
|
+
if ((0, fast_xml_parser_1.validate)(`<svg>${svg.data}</svg>`) !== true) {
|
|
12
|
+
throw new Error(`Invalid SVG data for icon "${name}"`);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
break;
|
|
16
|
+
case types_1.Mode.Sizes:
|
|
17
|
+
Object.keys(source).map((name) => {
|
|
18
|
+
const sizes = source[name];
|
|
19
|
+
return Object.keys(sizes).map((s) => {
|
|
20
|
+
const svg = sizes[s];
|
|
21
|
+
if ((0, fast_xml_parser_1.validate)(`<svg>${svg}</svg>`) !== true) {
|
|
22
|
+
throw new Error(`Invalid SVG data for icon "${name}"`);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
break;
|
|
27
|
+
default:
|
|
28
|
+
throw new Error("Unknown mode " + mode);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports._validateSourceData = _validateSourceData;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._validateSprite = void 0;
|
|
4
|
+
const _compareSprites_1 = require("../_compareSprites");
|
|
5
|
+
function _validateSprite({ source, spriteFile, mode }) {
|
|
6
|
+
if (!(0, _compareSprites_1._compareSprites)({ source, mode, spriteFile })) {
|
|
7
|
+
throw new Error("SVG file doesn't contain all valid icons from config");
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports._validateSprite = _validateSprite;
|