import path from "path"; type TImport = { [key: string]: string | { import: string; }; } | string[]; type TGetPath = (path: string) => string; type TAliases = Record; /** * Возвращает объект с абсолютными путями * @param imports{Object|Array=} поле импортов из package * @param basePath{String=} базовый путь * @param getPath{Function=} callback для получения имени пути * @returns {Record} * @example * import { getAliases } from "@delement/ui/utils/node"; * * const aliases = getAliases({ "#package/*": "./src/package/*" }, process.cwd()); */ const getAliases = (imports: TImport, basePath: string = "", getPath: TGetPath = (path) => path): TAliases => { if (Array.isArray(imports)) { return Object.fromEntries(imports .map((folder) => [ folder.split("/").pop(), path.resolve(basePath, getPath(folder)) ])); } else { return Object.fromEntries(Object.entries(imports) .filter(([ , p ]) => { return typeof p === "object" ? !!p.import : p; }) .map(([ name = "", p ]) => { const value = typeof p === "object" ? p.import : p; return [ name, path.resolve(basePath, getPath(value.toString())) ]; })); } }; export { getAliases, };