dependency-cruiser
Version:
Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.
43 lines (38 loc) • 1.15 kB
JavaScript
import validate from "../../../validate/index.mjs";
import aggregateToFolders from "./aggregate-to-folders.mjs";
/**
* @param {import("../../../../types/dependency-cruiser.js").IFolder} pFolder
* @param {import('../../../../types/dependency-cruiser.js').IOptions} pOptions
* @returns
*/
function validateFolderDependency(pFolder, pOptions) {
return (pDependency) => ({
...pDependency,
...validate.folder(pOptions.ruleSet || {}, pFolder, pDependency),
});
}
function addFolderDependencyViolations(pOptions) {
return (pFolder) => ({
...pFolder,
dependencies: pFolder.dependencies.map(
validateFolderDependency(pFolder, pOptions)
),
});
}
/**
*
* @param {import('../../../../types/dependency-cruiser.js').IModule[]} pModules
* @param {import('../../../../types/dependency-cruiser.js').IOptions} pOptions
* @returns {any}
*/
export default function deriveFolderMetrics(pModules, pOptions) {
let lReturnValue = {};
if (pOptions.metrics) {
lReturnValue = {
folders: aggregateToFolders(pModules).map(
addFolderDependencyViolations(pOptions)
),
};
}
return lReturnValue;
}