@flxbl-io/sfp
Version:
sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model
38 lines • 4.13 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ProjectConfig_1 = __importDefault(require("../../core/project/ProjectConfig"));
const lodash_1 = __importDefault(require("lodash"));
class ReleaseDefinitionSorter {
sortReleaseDefinitions(releaseDefinitions, leadingSfProjectConfig, logger) {
let clonedReleaseDefintions = lodash_1.default.cloneDeep(releaseDefinitions);
const allPackagesInConfig = ProjectConfig_1.default.getAllPackagesFromProjectConfig(leadingSfProjectConfig);
const packageOccurrenceCount = new Map();
// Count occurrences of each package across all release definitions
clonedReleaseDefintions.forEach((releaseDefinition) => {
Object.keys(releaseDefinition.artifacts).forEach((pkg) => {
if (allPackagesInConfig.includes(pkg)) {
// Only consider packages present in the project config
packageOccurrenceCount.set(pkg, (packageOccurrenceCount.get(pkg) || 0) + 1);
}
});
});
// Annotate each release definition with the index of its first unique package
clonedReleaseDefintions.forEach((releasedefnition) => {
releasedefnition['firstUniquePackageIndex'] = allPackagesInConfig.length; // Default to length (i.e., end) if no unique package is found
for (const pkg of allPackagesInConfig) {
if (releasedefnition.artifacts[pkg] && packageOccurrenceCount.get(pkg) === 1) {
// Check if the package is unique
releasedefnition['firstUniquePackageIndex'] = allPackagesInConfig.indexOf(pkg);
break; // Found the first unique package, no need to continue
}
}
});
// Sort based on the first unique package's index, placing those without a unique package at the end
return clonedReleaseDefintions.sort((a, b) => a['firstUniquePackageIndex'] - b['firstUniquePackageIndex']);
}
}
exports.default = ReleaseDefinitionSorter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVsZWFzZURlZmluaXRpb25Tb3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW1wbC9yZWxlYXNlL1JlbGVhc2VEZWZpbml0aW9uU29ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEscUZBQTZEO0FBSzdELG9EQUF1QjtBQUV2QixNQUFxQix1QkFBdUI7SUFFakMsc0JBQXNCLENBQ3pCLGtCQUF1QyxFQUN2QyxzQkFBMkIsRUFDM0IsTUFBYztRQUdkLElBQUksdUJBQXVCLEdBQXVCLGdCQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbEYsTUFBTSxtQkFBbUIsR0FBRyx1QkFBYSxDQUFDLCtCQUErQixDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbEcsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUV6RCxtRUFBbUU7UUFDbkUsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNyRCxJQUFJLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNwQyx1REFBdUQ7b0JBQ3ZELHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hGLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsOEVBQThFO1FBQzlFLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDakQsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyw4REFBOEQ7WUFDeEksS0FBSyxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzNFLGlDQUFpQztvQkFDakMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQy9FLE1BQU0sQ0FBQyxzREFBc0Q7Z0JBQ2pFLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxvR0FBb0c7UUFDcEcsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO0lBQy9HLENBQUM7Q0FDSjtBQW5DRCwwQ0FtQ0MifQ==