A WebAssembly-powered library to efficiently update TOML files, based on Rust's toml_edit
crate.
The primary function exported for JavaScript usage is updateTomlValues
.
import { updateTomlValues } from "@shopify/toml-patch";
const originalToml = `
[package]
name = "my-package"
version = "0.1.0"
[dependencies]
serde = "1.0"
`;
const pathsToUpdate = "package.version,dependencies.serde,new_table.key";
const correspondingValues = '"0.2.0","$undefined","new value"'; // Use "$undefined" to remove a key
try {
const updatedToml = updateTomlValues(
originalToml,
pathsToUpdate,
correspondingValues
);
console.log(updatedToml);
/*
Output:
[package]
name = "my-package"
version = "0.2.0"
[dependencies]
[new_table]
key = "new value"
*/
} catch (error) {
console.error("Failed to update TOML:", error);
}
Arguments:
toml_content
(string): The original TOML content.paths_str
(string): A comma-separated string of dotted paths (e.g.,"table.key
).values_str
(string): A comma-separated string of values corresponding to the paths. Values are parsed as TOML values (so strings need to be quoted). Use the special string"$undefined"
to remove the specified key.
Returns:
- (string): The updated TOML content as a string.
This project uses Rust and wasm-pack
.
- Install Rust: https://www.rust-lang.org/tools/install
- Install
wasm-pack
:cargo install wasm-pack
- Build:
wasm-pack build --target bundler --release --scope="shopify"
- Test:
wasm-pack test --node