UNPKG

heat-sfdx-metadata

Version:

![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat) [![npm version](https://badge.fury.io/js/heat-sfdx-metadata.svg)](https://badge.fury.io/js/heat-sfdx-metadata) [![Code Climate](https://codeclimate.com/github/takahitomiyamoto/hea

82 lines 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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