.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / node_modules / parse-json / index.js
1 'use strict';
2 const errorEx = require('error-ex');
3 const fallback = require('json-parse-better-errors');
4
5 const JSONError = errorEx('JSONError', {
6         fileName: errorEx.append('in %s')
7 });
8
9 module.exports = (input, reviver, filename) => {
10         if (typeof reviver === 'string') {
11                 filename = reviver;
12                 reviver = null;
13         }
14
15         try {
16                 try {
17                         return JSON.parse(input, reviver);
18                 } catch (err) {
19                         fallback(input, reviver);
20
21                         throw err;
22                 }
23         } catch (err) {
24                 err.message = err.message.replace(/\n/g, '');
25
26                 const jsonErr = new JSONError(err);
27                 if (filename) {
28                         jsonErr.fileName = filename;
29                 }
30
31                 throw jsonErr;
32         }
33 };