UNPKG

yini-parser

Version:

Readable configuration without YAML foot-guns or JSON noise. The official Node.js parser for YINI config format — An INI-inspired configuration format with clear nesting, explicit types, and predictable parsing.

64 lines 2.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.inferModeFromArgs = exports.isOptionsObjectForm = exports.toCoreOptions = void 0; const failLevel_1 = require("./failLevel"); /** * Map user parse options to core options. */ const toCoreOptions = (userOpts, bailLevel) => { const level = bailLevel ?? (0, failLevel_1.mapFailLevelToBail)(userOpts.strictMode, userOpts.failLevel); return { rules: { initialMode: userOpts.strictMode ? 'strict' : 'lenient', onDuplicateKey: userOpts.onDuplicateKey, requireDocTerminator: userOpts.requireDocTerminator, treatEmptyValueAsNull: userOpts.treatEmptyValueAsNull, }, bailSensitivity: level, isIncludeMeta: userOpts.includeMetadata, // isWithDiagnostics: isDev() || isDebug() || userOpts.includeDiagnostics, isWithDiagnostics: userOpts.includeDiagnostics, // isWithTiming: isDev() || isDebug() || userOpts.includeTiming, isWithTiming: userOpts.includeTiming, // isKeepUndefinedInMeta: isDebug() || userOpts.preserveUndefinedInMeta, isKeepUndefinedInMeta: userOpts.preserveUndefinedInMeta, isQuiet: userOpts.quiet, // Suppress warnings, etc. isSilent: userOpts.silent, isThrowOnError: userOpts.throwOnError, }; }; exports.toCoreOptions = toCoreOptions; // Type guard: did the caller use the options-object form? const isOptionsObjectForm = (v) => { return (v != null && typeof v === 'object' && // Note: If one wants, this can be relax to "typeof v === 'object'" // but this keeps accidental booleans/strings out. ('strictMode' in v || 'failLevel' in v || 'includeMetadata' in v || 'includeDiagnostics' in v || 'includeTiming' in v || 'preserveUndefinedInMeta' in v || 'onDuplicateKey' in v || 'requireDocTerminator' in v || 'treatEmptyValueAsNull' in v || 'quiet' in v || 'silent' in v || 'isThrowOnError' in v)); }; exports.isOptionsObjectForm = isOptionsObjectForm; const inferModeFromArgs = (arg2) => { if (typeof arg2 === 'boolean') { return arg2 ? 'strict' : 'lenient'; } if (arg2 && typeof arg2 === 'object') { const sm = arg2.strictMode; if (typeof sm === 'boolean') { return sm ? 'strict' : 'lenient'; } } return 'lenient'; }; exports.inferModeFromArgs = inferModeFromArgs; //# sourceMappingURL=optionsFunctions.js.map