123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- const fs = require('fs');
- const path = require('path');
- const os = require('os');
- const destr = require('destr');
- const flat = require('flat');
- const defu = require('defu');
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
- const destr__default = /*#__PURE__*/_interopDefaultLegacy(destr);
- const flat__default = /*#__PURE__*/_interopDefaultLegacy(flat);
- const defu__default = /*#__PURE__*/_interopDefaultLegacy(defu);
- const RE_KEY_VAL = /^\s*([^=\s]+)\s*=\s*(.*)?\s*$/;
- const RE_LINES = /\n|\r|\r\n/;
- const defaults = {
- name: ".conf",
- dir: process.cwd(),
- flat: false
- };
- function withDefaults(options) {
- if (typeof options === "string") {
- options = { name: options };
- }
- return { ...defaults, ...options };
- }
- function parse(contents, options = {}) {
- const config = {};
- const lines = contents.split(RE_LINES);
- for (const line of lines) {
- const match = line.match(RE_KEY_VAL);
- if (!match) {
- continue;
- }
- const key = match[1];
- if (!key || key === "__proto__" || key === "constructor") {
- continue;
- }
- const val = destr__default(match[2].trim());
- if (key.endsWith("[]")) {
- const nkey = key.substr(0, key.length - 2);
- config[nkey] = (config[nkey] || []).concat(val);
- continue;
- }
- config[key] = val;
- }
- return options.flat ? config : flat__default.unflatten(config, { overwrite: true });
- }
- function parseFile(path, options) {
- if (!fs.existsSync(path)) {
- return {};
- }
- return parse(fs.readFileSync(path, "utf-8"), options);
- }
- function read(options) {
- options = withDefaults(options);
- return parseFile(path.resolve(options.dir, options.name), options);
- }
- function readUser(options) {
- options = withDefaults(options);
- options.dir = process.env.XDG_CONFIG_HOME || os.homedir();
- return read(options);
- }
- function serialize(config) {
- return Object.entries(flat__default.flatten(config)).map(([key, val]) => `${key}=${typeof val === "string" ? val : JSON.stringify(val)}`).join("\n");
- }
- function write(config, options) {
- options = withDefaults(options);
- fs.writeFileSync(path.resolve(options.dir, options.name), serialize(config), {
- encoding: "utf-8"
- });
- }
- function writeUser(config, options) {
- options = withDefaults(options);
- options.dir = process.env.XDG_CONFIG_HOME || os.homedir();
- write(config, options);
- }
- function update(config, options) {
- options = withDefaults(options);
- if (!options.flat) {
- config = flat__default.unflatten(config, { overwrite: true });
- }
- const newConfig = defu__default(config, read(options));
- write(newConfig, options);
- return newConfig;
- }
- function updateUser(config, options) {
- options = withDefaults(options);
- options.dir = process.env.XDG_CONFIG_HOME || os.homedir();
- return update(config, options);
- }
- exports.defaults = defaults;
- exports.parse = parse;
- exports.parseFile = parseFile;
- exports.read = read;
- exports.readUser = readUser;
- exports.serialize = serialize;
- exports.update = update;
- exports.updateUser = updateUser;
- exports.write = write;
- exports.writeUser = writeUser;
|