index.js
function loadJsonFile(filename, cache, cwd)
{
    let _content = null;
    if (filename.toLowerCase().endsWith('.json'))
    {
        const _filename = path.resolve(cwd, filename);
        if (fs.existsSync(_filename))
        {
            if (_filename in cache)
            {
                _content = cache[_filename];
            }
            else
            {
                //------------------------------------------------------------------------------
                // La doble asignación se hace para evitar recursividades ya que si se trata de
                // incluir el mismo archivo al estar en caché no se analizaría.
                // Es un caso que no debería darse pero lo contemplamos.
                //------------------------------------------------------------------------------
                cache[_filename] = _content = fs.readFileSync(_filename, 'utf8');
                cache[_filename] = _content = parseJson(_content, cache, path.dirname(_filename));
            }
        }
        else
        {
            cache[_filename] = null;
        }
    }
    else
    {
        try
        {
            JSON.parse(filename);
            _content = parseJson(filename, cache, cwd);
        }
        catch (e)
        {
        }
    }

    return _content;
}
function loadJsonFile(filename, cache, cwd)
{
    let _content = null;
    if (filename.toLowerCase().endsWith('.json'))
    {
        const _filename = path.resolve(cwd, filename);
        if (fs.existsSync(_filename))
        {
            if (_filename in cache)
            {
                _content = cache[_filename];
            }
            else
            {
                //------------------------------------------------------------------------------
                // La doble asignación se hace para evitar recursividades ya que si se trata de
                // incluir el mismo archivo al estar en caché no se analizaría.
                // Es un caso que no debería darse pero lo contemplamos.
                //------------------------------------------------------------------------------
                cache[_filename] = _content = fs.readFileSync(_filename, 'utf8');
                cache[_filename] = _content = parseJson(_content, cache, path.dirname(_filename));
            }
        }
        else
        {
            cache[_filename] = null;
        }
    }
    else
    {
        try
        {
            JSON.parse(filename);
            _content = parseJson(filename, cache, cwd);
        }
        catch (e)
        {
        }
    }

    return _content;
}
function loadJsonFile ( filename , cache , cwd ) { let _content = null ; if ( filename . toLowerCase ( ) . endsWith ( '.json' ) ) { const _filename = path . resolve ( cwd , filename ) ; if ( fs . existsSync ( _filename ) ) { if ( _filename in cache ) { _content = cache [ _filename ] ; } else { //------------------------------------------------------------------------------ // La doble asignación se hace para evitar recursividades ya que si se trata de // incluir el mismo archivo al estar en caché no se analizaría. // Es un caso que no debería darse pero lo contemplamos. //------------------------------------------------------------------------------ cache [ _filename ] = _content = fs . readFileSync ( _filename , 'utf8' ) ; cache [ _filename ] = _content = parseJson ( _content , cache , path . dirname ( _filename ) ) ; } } else { cache [ _filename ] = null ; } } else { try { JSON . parse ( filename ) ; _content = parseJson ( filename , cache , cwd ) ; } catch ( e ) { } } return _content ; }
Lee el archivo JSON o el texto en formato JSON y busca los archivos JSON incluidos.
Si un archivo no existe se deja el texto tal cual.

@param {string} filename Ruta al archivo a leer o texto en formato JSON.
@param {object} cache    Archivos y textos procesados previamente.
@param {object} cwd      Directorio actual a usar para resolver las inclusiones.

@return {string|null} Texto JSON luego de ser procesado o `null` si no se pudo procesar.
Lee el archivo JSON o el texto en formato JSON y busca los archivos JSON incluidos . Si un archivo no existe se deja el texto tal cual .