@netlify/config
Version:
Netlify config module
21 lines (20 loc) • 940 B
JavaScript
import { parse as loadToml } from '@iarna/toml';
import tomlify from 'tomlify-j0.4';
// Parse from TOML to JavaScript
export const parseToml = function (configString) {
const config = loadToml(configString);
// `toml.parse()` returns an object with `null` prototype deeply, which can
// sometimes create problems with some utilities. We convert it.
// TOML can return Date instances, but JSON will stringify those, and we
// don't use Date in netlify.toml, so this should be ok.
return JSON.parse(JSON.stringify(config));
};
// Serialize JavaScript object to TOML
export const serializeToml = function (object) {
return tomlify.toToml(object, { space: 2, replace: replaceTomlValue });
};
// `tomlify-j0.4` serializes integers as floats, e.g. `200.0`.
// This is a problem with `redirects[*].status`.
const replaceTomlValue = function (key, value) {
return Number.isInteger(value) ? String(value) : false;
};