@salesforce/acu-pack
Version:
SFDX CLI Extensions
118 lines • 4.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SfdxCore = void 0;
const child_process_1 = require("child_process");
const utils_1 = require("../lib/utils");
const sfdx_project_1 = require("../lib/sfdx-project");
const constants_1 = require("../lib/constants");
const xml_merge_1 = require("./xml-merge");
class SfdxCore {
static command(cmd) {
return new Promise((resolve, reject) => {
(0, child_process_1.exec)(cmd, SfdxCore.bufferOptions, (error, stdout) => {
let response;
try {
if (stdout && String(stdout) !== '') {
response = JSON.parse(stdout);
}
}
catch (err) {
/* eslint-disable-next-line no-console */
console.warn(stdout);
}
finally {
if (!response) {
if (error) {
reject(error.message);
}
else {
resolve(stdout);
}
}
else {
if (response.status !== 0) {
reject(response);
}
else {
resolve(response.result);
}
}
}
});
});
}
static async getPackageBase(version = null) {
return {
Package: {
$: {
xmlns: constants_1.default.DEFAULT_XML_NAMESPACE
},
types: [],
version: version || (await sfdx_project_1.default.default()).sourceApiVersion
}
};
}
static async createPackage(packageTypes, version = null) {
const packageObj = await SfdxCore.getPackageBase(version);
const typeNames = utils_1.default.sortArray(Array.from(packageTypes.keys()));
for (const typeName of typeNames) {
const members = utils_1.default.sortArray(packageTypes.get(typeName));
packageObj.Package.types.push({
name: [typeName],
members
});
}
/* eslint-disable-next-line @typescript-eslint/no-unsafe-return */
return packageObj;
}
/* eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types */
static minifyPackage(packageObj) {
if (!packageObj) {
return null;
}
const popIndexes = [];
let typeIndex = 0;
for (const sType of packageObj.Package.types) {
if (sType?.members) {
const memPopIndexes = [];
let memIndex = 0;
for (const member of sType.members) {
if (!member || member === '') {
memPopIndexes.push(memIndex);
}
memIndex++;
}
while (memPopIndexes.length) {
sType.members.splice(memPopIndexes.pop(), 1);
}
}
if (!sType?.members || sType.members.length === 0) {
popIndexes.push(typeIndex);
}
typeIndex++;
}
while (popIndexes.length) {
packageObj.Package.types.splice(popIndexes.pop(), 1);
}
return packageObj;
}
/* eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types */
static async writePackageFile(metadataMap, packageFilePath, append, xmlOptions) {
// Convert into Package format
const sfdxPackage = await SfdxCore.createPackage(metadataMap);
if (append) {
await xml_merge_1.default.mergeXmlToFile(sfdxPackage, packageFilePath);
}
else {
await utils_1.default.writeObjectToXmlFile(packageFilePath, sfdxPackage, xmlOptions);
}
}
}
exports.SfdxCore = SfdxCore;
SfdxCore.ASTERIX = '*';
SfdxCore.MAIN = 'main';
SfdxCore.DEFAULT = 'default';
SfdxCore.EMAIL_TEMPLATE_XML_NAME = 'EmailTemplate';
SfdxCore.bufferOptions = { env: process.env, maxBuffer: 10 * 1024 * 1024 };
SfdxCore.jsonSpaces = 2;
//# sourceMappingURL=sfdx-core.js.map