config-disassembler
v3.0.2
Published
Node.js bindings for the Rust config-disassembler crate.
Maintainers
Readme
config-disassembler
Node.js bindings for the Rust config-disassembler crate via napi-rs.
Use it to disassemble large configuration files into smaller, version-control–friendly files and reassemble them later.
For full option documentation and behavior details, see the Rust crate documentation.
Install
npm install config-disassemblerXML API
import {
DisassembleXMLFileHandler,
ReassembleXMLFileHandler,
parseXml,
verifyXmlRoundtrip,
} from "config-disassembler";
await new DisassembleXMLFileHandler().disassemble({
filePath: "My.permissionset-meta.xml",
uniqueIdElements: "application,apexClass,name,flow,object,recordType,tab,field",
postPurge: true,
});
await new ReassembleXMLFileHandler().reassemble({
filePath: "My",
fileExtension: "permissionset-meta.xml",
});
const doc = await parseXml("My.permissionset-meta.xml");
if (doc) {
console.log(doc);
}
// Dry-run check: disassemble + reassemble in an isolated temp dir and report
// whether the round trip is lossless. The real file is never touched.
const result = await verifyXmlRoundtrip({
filePath: "My.permissionset-meta.xml",
uniqueIdElements: "application,apexClass,name,flow,object,recordType,tab,field",
});
if (result.status === "drift") {
throw new Error(`round-trip drift: ${result.reason}`);
}Value-Format API
import {
DisassembleConfigFileHandler,
ReassembleConfigFileHandler,
} from "config-disassembler";
const outDir = new DisassembleConfigFileHandler().disassemble({
input: "config.json",
outputFormat: "yaml",
uniqueId: "id",
});
new ReassembleConfigFileHandler().reassemble({
inputDir: outDir,
output: "config.rebuilt.json",
outputFormat: "json",
});Supported Platforms
This package ships with prebuilt native binaries as platform-specific optional npm packages — your package manager installs only the one matching your os / cpu / libc:
| Platform | Architectures | | ----------- | ------------------------------------ | | macOS | x64 (Intel), arm64 (Apple Silicon) | | Linux | x64 (gnu + musl), arm64 (gnu + musl) | | Windows | x64, arm64, ia32 |
If your platform or architecture isn't listed, please open an issue.
Use Case
For a use-case using the XML API, see sf-decomposer.
