snyk-poetry-lockfile-parser
Version:
Generate a dep graph given poetry.lock and pyproject.toml files
50 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.V1Parser = void 0;
class V1Parser {
constructor(manifest, includeDevDependencies) {
this.version = '1';
this.manifest = manifest;
this.includeDevDependencies = !!includeDevDependencies;
}
pkgInfoFrom() {
return {
name: this.manifest.tool.poetry.name,
version: this.manifest.tool.poetry.version,
};
}
dependenciesFrom() {
return Object.keys(this.manifest.tool.poetry.dependencies || []);
}
getGroupDevDepNames(obj) {
return Object.values(obj)
.map((group) => group.dependencies)
.map((depsObj) => Object.keys(depsObj))
.reduce((acc, curr) => [...acc, ...curr], []);
}
getAllDevDependencyNames() {
var _a, _b, _c;
// pre-v1.2.0 naming convention
const devDepsProperty = Object.keys((_a = this.manifest.tool.poetry['dev-dependencies']) !== null && _a !== void 0 ? _a : []);
// post-v1.2.0 dependency groups
// https://python-poetry.org/docs/master/managing-dependencies
// we will handle all tool.poetry.group.<group> as dev-deps
const groupDevDepsProperty = ((_b = this.manifest.tool) === null || _b === void 0 ? void 0 : _b.poetry.group)
? this.getGroupDevDepNames((_c = this.manifest.tool) === null || _c === void 0 ? void 0 : _c.poetry.group)
: [];
return [...devDepsProperty, ...groupDevDepsProperty];
}
getDependencies() {
const dependencies = this.dependenciesFrom().map((dep) => ({
name: dep,
isDev: false,
}));
const devDependencies = (this.includeDevDependencies ? this.getAllDevDependencyNames() : []).map((devDep) => ({
name: devDep,
isDev: true,
}));
return [...dependencies, ...devDependencies].filter((pkg) => pkg.name != 'python');
}
}
exports.V1Parser = V1Parser;
//# sourceMappingURL=v1Parser.js.map