🚀 DAY 3 OF LAUNCH WEEK:Announcing Bun and vlt Support in Socket.Learn more →
Socket
Book a DemoInstallSign in
Socket

@aduh95/toml-prettifier

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aduh95/toml-prettifier

Opinionated TOML code formatter

Source
npmnpm
Version
1.2.1
Version published
Maintainers
1
Created
Source

TOML Prettifier

Opinionated TOML code formatter written in JavaScript.

Usage

Reading a TOML file using Node.js and overwrite it with the prettified version:

import { createReadStream, createWriteStream, promises as fs } from "fs";
import { join } from "path";
import { tmpdir } from "os";
import { createInterface as readLines } from "readline";

import TOMLPrettifier from "@aduh95/toml-prettifier";

/**
 * Prettifies a TOML file.
 * @param {string | URL | Buffer} inputFilePath
 */
export async function prettifyTOMLFile(inputFilePath) {
  // Read the input file line by line.
  const reader = readLines({
    input: createReadStream(inputFilePath),
    crlfDelay: Infinity,
  });
  // Create a temporary file to write the prettified TOML.
  const { handle, path: tmpFile } = await fs.mkstemp(join(tmpdir(), "pretty-"));
  const writer = createWriteStream(tmpFile, { fd: handle.fd });

  // Pass the input to TOMLPrettifier.
  for await (const line of TOMLPrettifier(reader)) {
    // Write the output to the temp file.
    writer.write(line + "\n");
  }
  // Close the temp file once filled up.
  await handle.close();

  // Replace the input file by the temp file.
  await fs.rename(tmpFile, inputFilePath);
}

Web and Deno usage

The API is the same, although you must init the @aduh95/toml package manually before using it. This uses a WASM module that must be initiate asynchronously and is used to prettify arrays and inline tables.

import TOMLPrettifier from "@aduh95/toml-prettifier";
import initTOMLWasm from "@aduh95/toml";

await initTOMLWasm();

Rules

There are no available configuration for the formatting.

  • Keys: unquote the keys when possible.
  • Multiline basic strings: wrapped to 80 char, and indented one level below the opening and closing char sequence.
  • Multiline literal strings: No transformations are made.
  • Comments:
    • They respect indentation.
    • One or several #s represent the start of a comment, followed by one space unless the comment is empty.
  • Arrays: If an array can fit on one line, it will be reformated to one line, otherwise each element will be on a new line, with a trailing comma.
  • Inline tables: keys are alphabetically ordered.
  • Empty lines: conserved, but any space is removed.

Keywords

toml

FAQs

Package last updated on 22 Jan 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts