A TOML decoding library for Node.js
TOML decoder for Node.js. This library is currently compliant with the v1.0.0 version of TOML.
What is TOML?
TOML is a file format for configuration files. It is intended to be easy to read and write due to obvious semantics which aim to be "minimal", and is designed to map unambiguously to a dictionary.
toml-nodejs is available as a npm package.
npm install toml-nodejs
Here is an example usage of toml-nodejs
decoder
import { decode } from 'toml-nodejs';
const input = `
# This is a TOML document
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00
[database]
enabled = true
ports = [ 8000, 8001, 8002 ]
data = [ ["delta", "phi"], [3.14] ]
temp_targets = { cpu = 79.5, case = 72.0 }
[servers]
[servers.alpha]
ip = "10.0.0.1"
role = "frontend"
[servers.beta]
ip = "10.0.0.2"
role = "backend"
`;
interface Output {
title: string;
owner: {
name: string;
dob: Date;
};
database: {
enabled: boolean;
ports: bigint[];
data: (string | number)[][];
temp_targets: {
cpu: number;
case: number;
};
};
servers: {
alpha: {
ip: string;
role: string;
};
beta: {
ip: string;
role: string;
};
};
}
const output = decode<Output>(input);
console.log(output);
// {
// title: 'TOML Example',
// owner: { name: 'Tom Preston-Werner', dob: Date /* 1979-05-27T07:32:00-08:00 */ },
// database: {
// enabled: true,
// ports: [8001n, 8001n, 8002n],
// data: [['delta', 'phi'], [3.14]],
// temp_targets: { cpu: 79.5, case: 72 },
// },
// servers: {
// alpha: { ip: '10.0.0.1', role: 'frontend' },
// beta: { ip: '10.0.0.2', role: 'backend' },
// },
// }
When retrieving the value of a key from a key/value pair, the value is typed according to the following table.
TOML data type | JavaScript type |
---|---|
string | String |
integer | BigInt |
float | Number |
boolean | Boolean |
offset date-time | Date |
local date-time | LocalDateTime |
local date | LocalDate |
local time | LocalTime |
array | Array |
inline table | Object |
This project is licensed under the terms of the MIT license.