UNPKG

@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
"use strict"; 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==