heat-sfdx-metadata
Version:
 [](https://badge.fury.io/js/heat-sfdx-metadata) [;
exports.createManifestFile = void 0;
/**
* @name create-manifest-file.ts
* @description createManifestFile
*/
const heat_sfdx_common_1 = require("heat-sfdx-common");
const common_1 = require("../../common");
/**
* @name _getMetadataTypeMemberFileNames
*/
const _getMetadataTypeMemberFileNames = (config) => {
const dirents = (0, heat_sfdx_common_1.readdirSyncUtf8)(config.root);
return dirents
.filter((dirent) => dirent.isFile())
.map(({ name }) => name)
.filter((name) => {
return (0 ===
name.indexOf(config.prefix.metadataTypeMembers.replace(`${config.root}/`, '')));
});
};
/**
* @name _storeMetadataTypes
*/
const _storeMetadataTypes = (config, memberFileNames, folderNames) => {
let types = [];
for (let fileName of memberFileNames) {
const jsonString = (0, heat_sfdx_common_1.readFileSyncUtf8)(`${config.root}/${fileName}`);
const nameRaw = JSON.parse(jsonString).name;
const membersRaw = JSON.parse(jsonString).members;
const metadataTypeName = !folderNames.includes(nameRaw[0])
? nameRaw[0]
: common_1.METADATA_FOLDER2TYPE_MAP[nameRaw[0]];
const duplicatedTypes = types.filter((type) => {
return metadataTypeName === type.name[0];
});
const nonDuplicatedTypes = types.filter((type) => {
return metadataTypeName !== type.name[0];
});
const _name = [];
_name.push(metadataTypeName);
const _members = 0 === duplicatedTypes.length
? membersRaw
: duplicatedTypes[0].members.concat(membersRaw);
_members.sort();
nonDuplicatedTypes.push({
members: _members,
name: _name
});
types = nonDuplicatedTypes;
}
return types;
};
/**
* @name _createManifestJson
*/
const _createManifestJson = (config, types) => {
const version = [];
version.push(config.asOfVersion);
return {
Package: {
$: {
xmlns: 'http://soap.sforce.com/2006/04/metadata'
},
types: types,
version: version
}
};
};
/**
* @name createManifestFile
* @description create manifest file
*/
const createManifestFile = (config) => {
const folderNamesString = (0, heat_sfdx_common_1.readFileSyncUtf8)(config.metadataTypesFolder);
const types = _storeMetadataTypes(config, _getMetadataTypeMemberFileNames(config), JSON.parse(folderNamesString));
const manifestJson = _createManifestJson(config, types);
return (0, heat_sfdx_common_1.json2xml)(manifestJson);
};
exports.createManifestFile = createManifestFile;
//# sourceMappingURL=create-manifest-file.js.map