line_push/node_modules/rc9/dist/index.js
2022-07-17 13:16:16 +08:00

125 lines
2.9 KiB
JavaScript

'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var fs = require('fs');
var path = require('path');
var os = require('os');
var destr = _interopDefault(require('destr'));
var flat = require('flat');
var defu = _interopDefault(require('defu'));
var RE_KEY_VAL = /^\s*([^=\s]+)\s*=\s*(.*)?\s*$/;
var RE_LINES = /\n|\r|\r\n/;
var defaults = {
name: '.conf',
dir: process.cwd(),
flat: false
};
function withDefaults(options) {
if (typeof options === 'string') {
options = {
name: options
};
}
return Object.assign(Object.assign({}, defaults), options);
}
function parse(contents, options) {
var config = {};
var lines = contents.split(RE_LINES);
for (var i = 0, list = lines; i < list.length; i += 1) {
var line = list[i];
var match = line.match(RE_KEY_VAL);
if (!match) {
continue;
} // Key
var key = match[1];
if (!key || key === '__proto__' || key === 'constructor') {
continue;
}
config[key] = destr(match[2].trim()
/* val */
);
}
return (options === null || options === void 0 ? void 0 : options.flat) ? config : flat.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 = os.homedir();
return read(options);
}
function serialize(config) {
return Object.entries(flat.flatten(config)).map(function (ref) {
var key = ref[0];
var val = ref[1];
return (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 = os.homedir();
write(config, options);
}
function update(config, options) {
options = withDefaults(options);
if (!options.flat) {
config = flat.unflatten(config, {
overwrite: true
});
}
var newConfig = defu(config, read(options));
write(newConfig, options);
return newConfig;
}
function updateUser(config, options) {
options = withDefaults(options);
options.dir = 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;