function readJSONSync( file, options ) {
	var opts;
	var f;
	if ( arguments.length > 1 ) {
		if ( isString( options ) ) {
			opts = {
				'encoding': options
			};
		} else {
			if ( !isObject( options ) ) {
				throw new TypeError( format( 'invalid argument. Options argument must be either a string or an object. Value: `%s`.', options ) );
			}
			opts = options;
		}
	} else {
		opts = {};
	}
	f = readFile( file, opts );
	if ( instanceOf( f, Error ) ) {
		return f;
	}
	f = f.toString();
	if ( opts.encoding === 'utf8' ) {
		f = removeBOM( f );
	}
	if ( opts.reviver ) {
		return parseJSON( f, opts.reviver );
	}
	return parseJSON( f );
}
Synchronously reads a file as JSON.

@param {(string|Buffer|integer)} file - file path or file descriptor
@param {(Options|string)} [options] - options
@param {(string|null)} [options.encoding] - file encoding
@param {string} [options.flag] - file status flag
@param {Function} [options.reviver] - JSON reviver
@throws {TypeError} options argument must be either a string or an object
@returns {(JSON|Error)} JSON or an error

@example
var resolve = require( 'path' ).resolve;
var instanceOf = require( '@stdlib/assert/instance-of' );

var out = readJSONSync( resolve( __dirname, '..', 'package.json' ) );
if ( instanceOf( out, Error ) ) {
    throw out;
}
console.dir( out );