UNPKG

read-config-ng

Version:
66 lines 1.68 kB
import * as path from 'path'; import json5Parser from './json5.js'; import yamlParser from './yaml.js'; import propertiesParser from './properties.js'; /** * Map of file extensions to their parsers */ const parsers = { 'json': json5Parser, 'json5': json5Parser, 'yml': yamlParser, 'yaml': yamlParser, 'properties': propertiesParser }; /** * Default parser (JSON5) */ const defaultParser = json5Parser; /** * Get the list of supported extensions */ export const extnames = Object.keys(parsers); /** * Resolve the appropriate parser for a file */ function resolveParser(filename) { // Check if filename is actually a format name if (parsers[filename]) { return parsers[filename]; } // Extract extension from filename let extname = path.extname(filename); if (extname[0] === '.') { extname = extname.substring(1); } return parsers[extname] || defaultParser; } /** * Load a configuration file asynchronously */ export async function load(filePath) { const parser = resolveParser(filePath); return await parser.load(filePath); } /** * Load a configuration file synchronously */ export function loadSync(filePath) { const parser = resolveParser(filePath); return parser.loadSync(filePath); } /** * Parse configuration content asynchronously */ export async function parse(format, content) { const parser = resolveParser(format); return await parser.parse(content); } /** * Parse configuration content synchronously */ export function parseSync(format, content) { const parser = resolveParser(format); return parser.parseSync(content); } //# sourceMappingURL=index.js.map