UNPKG

sfdx-git-delta

Version:

Generate the sfdx content in source format and destructive change from two git commits

41 lines 1.6 kB
'use strict'; import { create } from 'xmlbuilder2'; import { OBJECT_TYPE } from '../constant/metadataConstants.js'; const xmlConf = { indent: ' ', newline: '\n', prettyPrint: true }; const frLocale = 'fr'; export default class PackageBuilder { config; constructor(config) { this.config = config; } buildPackage(strucDiffPerType) { const xml = create({ version: '1.0', encoding: 'UTF-8' }).ele('Package', { xmlns: 'http://soap.sforce.com/2006/04/metadata', }); Array.from(strucDiffPerType.keys()) .sort(this._sortTypesWithMetadata) .forEach(metadataType => [...strucDiffPerType.get(metadataType)] .sort(Intl.Collator(frLocale).compare) .reduce((type, member) => { type.ele('members').txt(member); return type; }, xml.ele('types')) .ele('name') .txt(metadataType)); xml.ele('version').txt(`${this.config.apiVersion}.0`); return xml.end(xmlConf); } _sortTypesWithMetadata = (x, y) => { // QUESTION: Why Object needs to be ordered first in package.xml so it can be deployed ? if (x === OBJECT_TYPE) return -1; // @deprecated To remove when the order will not impact the result of the deployment return new Intl.Collator(frLocale).compare(x, y); }; } export const fillPackageWithParameter = ({ store, type, member, }) => { if (!store.has(type)) { store.set(type, new Set()); } store.get(type)?.add(member); }; //# sourceMappingURL=packageHelper.js.map