Security update for permissions_by_term
[yaffs-website] / node_modules / parse-json / index.js
1 'use strict';
2 var errorEx = require('error-ex');
3 var fallback = require('./vendor/parse');
4
5 var JSONError = errorEx('JSONError', {
6         fileName: errorEx.append('in %s')
7 });
8
9 module.exports = function (x, reviver, filename) {
10         if (typeof reviver === 'string') {
11                 filename = reviver;
12                 reviver = null;
13         }
14
15         try {
16                 try {
17                         return JSON.parse(x, reviver);
18                 } catch (err) {
19                         fallback.parse(x, {
20                                 mode: 'json',
21                                 reviver: reviver
22                         });
23
24                         throw err;
25                 }
26         } catch (err) {
27                 var jsonErr = new JSONError(err);
28
29                 if (filename) {
30                         jsonErr.fileName = filename;
31                 }
32
33                 throw jsonErr;
34         }
35 };