'use strict'; const errorEx = require('error-ex'); const fallback = require('json-parse-better-errors'); const JSONError = errorEx('JSONError', { fileName: errorEx.append('in %s') }); module.exports = (input, reviver, filename) => { if (typeof reviver === 'string') { filename = reviver; reviver = null; } try { try { return JSON.parse(input, reviver); } catch (err) { fallback(input, reviver); throw err; } } catch (err) { err.message = err.message.replace(/\n/g, ''); const jsonErr = new JSONError(err); if (filename) { jsonErr.fileName = filename; } throw jsonErr; } };