tombi-wasm-lib
tombi-wasm-lib provides Tombi's formatter and linter for browsers. For
server-side Node.js, use tombi-lib instead.
Install
pnpm add tombi-wasm-libFormat TOML
Initialize the WASM module before calling format:
import init, { format, type TombiError } from "tombi-wasm-lib";
await init();
const source = `
[package]
name = "example"
`;
try {
const { formatted, diagnostics } = await format(source, "Cargo.toml");
if (formatted !== undefined) {
console.log(formatted);
}
for (const diagnostic of diagnostics) {
if (diagnostic.level === "error") {
console.error(diagnostic.message);
} else {
console.warn(diagnostic.message);
}
}
} catch (error) {
console.error((error as TombiError).message);
}format resolves to an object containing the formatted TOML when formatting
succeeds and an array of diagnostics. The diagnostics array is empty when none were
reported. When diagnostics prevent formatting, formatted is omitted.
Configuration and execution errors reject the Promise as TombiError.
Lint TOML
Initialize the WASM module before calling lint:
import init, { lint, type TombiError } from "tombi-wasm-lib";
await init();
const source = `
[package]
name = "example"
`;
try {
const { diagnostics } = await lint(source, "Cargo.toml");
if (diagnostics.length > 0) {
for (const diagnostic of diagnostics) {
const message = `${diagnostic.message} (${diagnostic.range.start.line}:${diagnostic.range.start.column})`;
if (diagnostic.level === "error") {
console.error(message);
} else {
console.warn(message);
}
}
} else {
console.log("No diagnostics");
}
} catch (error) {
// Configuration and execution errors reject the Promise.
console.error((error as TombiError).message);
}lint resolves to an object containing a diagnostics array. The array is empty when
no diagnostics were reported. Configuration and execution errors reject the Promise
as TombiError.
Both functions accept an optional options object as the third argument. config
replaces the automatically discovered configuration and accepts an object or string:
const config = {
content: `
toml-version = "v1.1.0"
[format.rules]
indent-width = 4
`,
path: "/workspace/tombi.toml",
};
await format(source, "Cargo.toml", { config });
await lint(source, "Cargo.toml", { config });
// The configuration content can be passed as a string shorthand. It is
// treated as the content of a virtual `tombi.toml`.
await format(source, "Cargo.toml", { config: config.content });When config is omitted, Tombi uses automatic discovery and falls back to the
default configuration if no configuration file is found.