@flxbl-io/sfp
Version:
sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model
60 lines • 4.84 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const UndirectedGraph_1 = __importDefault(require("./UndirectedGraph"));
const ProjectConfig_1 = __importDefault(require("../../core/project/ProjectConfig"));
/**
* Class for the manipulation of package build collections
*/
class BuildCollections {
constructor(projectDirectory) {
this.createGraphOfBuildCollections(projectDirectory);
}
get graph() {
return this._graph;
}
/**
* Constructs graph representation of collections
* @param projectDirectory
*/
createGraphOfBuildCollections(projectDirectory) {
this._graph = new UndirectedGraph_1.default();
let projectConfig = ProjectConfig_1.default.getSFDXProjectConfig(projectDirectory);
for (let pkg of projectConfig.packageDirectories) {
if (pkg.buildCollection) {
if (pkg.buildCollection instanceof Array) {
if (!this._graph.adjacencyList[pkg.package])
this._graph.addVertex(pkg.package);
pkg.buildCollection.forEach((packageInCollection) => {
// Create vertex for package in collection if it doesn't exist yet
if (!this._graph.adjacencyList[packageInCollection]) {
// Verify that the package in collection is a valid package, before adding to adj. list
if (projectConfig.packageDirectories.find((elem) => elem.package === packageInCollection)) {
this._graph.addVertex(packageInCollection);
}
else
throw new Error(`Package '${packageInCollection}' in collection ${pkg.buildCollection} is not a valid package`);
}
this._graph.addEdge(pkg.package, packageInCollection);
});
}
else
throw new Error(`Property 'buildCollection' must be of type Array. Received ${pkg.buildCollection}`);
}
}
}
/**
* Returns list of packages contained in the same collection as the package
* @param pkg
*/
listPackagesInCollection(pkg) {
return this._graph.dfs(pkg);
}
isPackageInACollection(pkg) {
return this._graph.adjacencyList[pkg] ? true : false;
}
}
exports.default = BuildCollections;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVpbGRDb2xsZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbXBsL3BhcmFsbGVsQnVpbGRlci9CdWlsZENvbGxlY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0VBQWdEO0FBQ2hELHFGQUE2RDtBQUU3RDs7R0FFRztBQUNILE1BQXFCLGdCQUFnQjtJQUlqQyxZQUFZLGdCQUF3QjtRQUNoQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSyw2QkFBNkIsQ0FBQyxnQkFBd0I7UUFDMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHlCQUFlLEVBQUUsQ0FBQztRQUVwQyxJQUFJLGFBQWEsR0FBRyx1QkFBYSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekUsS0FBSyxJQUFJLEdBQUcsSUFBSSxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxHQUFHLENBQUMsZUFBZSxZQUFZLEtBQUssRUFBRSxDQUFDO29CQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQzt3QkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBRWhGLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBRTt3QkFDaEQsa0VBQWtFO3dCQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDOzRCQUNsRCx1RkFBdUY7NEJBQ3ZGLElBQUksYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7Z0NBQ3hGLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7NEJBQy9DLENBQUM7O2dDQUNHLE1BQU0sSUFBSSxLQUFLLENBQ1gsWUFBWSxtQkFBbUIsbUJBQW1CLEdBQUcsQ0FBQyxlQUFlLHlCQUF5QixDQUNqRyxDQUFDO3dCQUNWLENBQUM7d0JBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO29CQUMxRCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDOztvQkFDRyxNQUFNLElBQUksS0FBSyxDQUNYLDhEQUE4RCxHQUFHLENBQUMsZUFBZSxFQUFFLENBQ3RGLENBQUM7WUFDVixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCx3QkFBd0IsQ0FBQyxHQUFXO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELHNCQUFzQixDQUFDLEdBQVc7UUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekQsQ0FBQztDQUNKO0FBMURELG1DQTBEQyJ9