@meistericons/meistericons
Version:
Meistericons, an icon library,
38 lines (27 loc) • 1.32 kB
text/typescript
import { readdirSync, readFileSync } from "node:fs";
import path from "node:path";
import { fileURLToPath } from 'node:url';
export const toCamelCase = (string: string) =>
string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) =>
p2 ? p2.toUpperCase() : p1.toLowerCase()
);
export const toKebabCase = (string: string) =>
string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
export const toPascalCase = (string: string) =>
toCamelCase(string).charAt(0).toUpperCase() + toCamelCase(string).slice(1);
export const getCurrentDir = (filePath: string) =>
fileURLToPath(new URL(filePath));
export const readIconFiles = (iconDir: string) =>
readdirSync(iconDir).map((iconFile) => iconFile.replace(/.svg/, ""));
export const readSvgCode = (file: string) =>
readFileSync(file)
export const readAllMetadata = (dir: string) =>
readdirSync(dir)
// .map((iconFile) => iconFile.replace(/.svg/, ""))
.reduce((acc: any, fileName, i) => {
acc[path.basename(fileName, ".svg")] = readSvgCode(fileName);
return acc;
}, {});
export { default as generateExportFile } from './src/generateExportFile';
export { default as generateIconFile } from './src/generateIconFile';
export { default as generateTypes } from './src/generateTypes';