dependency-owners
Version:
Determine ownership of dependencies in a project
23 lines (22 loc) • 1.28 kB
JavaScript
import * as PackageJsonLoader from '@dependency-owners/package-json-loader';
import path from 'node:path';
import { getOwners, getOwnersMapping } from "./utils/owners.js";
import { resolveDependencyLoader, } from "./utils/loader.js";
/**
* Get the owners of the specified dependencies.
* @param {Options} options - The options for the dependency owners lookup.
* @returns {Promise<Record<string, string[]>>} A mapping of dependency owners for the specified dependencies.
*/
export async function dependencyOwners(options) {
const { dependencies = [], loader = PackageJsonLoader, dependencyFile = path.join(process.cwd(), 'package.json'), configFile = path.join(process.cwd(), 'dependency-owners.json'), } = options || {};
const resolvedLoader = await resolveDependencyLoader(loader, dependencyFile);
if (!resolvedLoader) {
throw new Error(`No loader found for file: ${dependencyFile}`);
}
const ownersMapping = getOwnersMapping(configFile);
const resolvedDependencies = await resolvedLoader.load(dependencyFile);
const filteredDependencies = resolvedDependencies
.filter((dep) => dependencies.length === 0 || dependencies.includes(dep.name))
.map((dep) => dep.name);
return getOwners(filteredDependencies, ownersMapping);
}