UNPKG

sf-decomposer

Version:

Break down large Salesforce metadata files into smaller, more manageable files for version control and then recreate deployment-compatible files.

40 lines 1.43 kB
'use strict'; /* eslint-disable no-await-in-loop */ import { readdir, writeFile, stat } from 'node:fs/promises'; import { join } from 'node:path'; import { parseXML, buildXMLString } from 'xml-disassembler'; export async function wrapAllFilesWithLoyaltyRoot(folderPath) { const files = await readdir(folderPath); for (const file of files) { if (!file.endsWith('.xml')) continue; const xmlPath = join(folderPath, file); const statResult = await stat(xmlPath); if (!statResult.isFile()) continue; const parsed = await parseXML(xmlPath); if (!parsed || typeof parsed !== 'object') continue; if ('LoyaltyProgramSetup' in parsed) { // Already wrapped continue; } // Remove '?xml' declaration if it exists const rootKey = Object.keys(parsed).find(k => k !== '?xml'); if (!rootKey) continue; const wrapped = { '?xml': { '@_version': '1.0', '@_encoding': 'UTF-8', }, LoyaltyProgramSetup: { '@_xmlns': 'http://soap.sforce.com/2006/04/metadata', [rootKey]: parsed[rootKey], }, }; const xmlString = buildXMLString(wrapped); await writeFile(xmlPath, xmlString, 'utf-8'); } } //# sourceMappingURL=wrapAllFilesWithLoyaltyRoot.js.map