toml-nodejs
v0.3.1
Published
A TOML decoding library for Node.js
Downloads
35
Readme
toml-nodejs
A TOML decoding library for Node.js
Introduction
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.
Installation
toml-nodejs is available as a npm package.
npm install toml-nodejs
Getting started
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' },
// },
// }
TOML data types to JavaScript types
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 |
License
This project is licensed under the terms of the MIT license.