|
|
- '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;
- }
- };
|