| 1234567891011121314151617181920212223242526272829303132333435363738 | 'use strict'module.exports = parseJsonfunction parseJson (txt, reviver, context) {  context = context || 20  try {    return JSON.parse(txt, reviver)  } catch (e) {    if (typeof txt !== 'string') {      const isEmptyArray = Array.isArray(txt) && txt.length === 0      const errorMessage = 'Cannot parse ' +      (isEmptyArray ? 'an empty array' : String(txt))      throw new TypeError(errorMessage)    }    const syntaxErr = e.message.match(/^Unexpected token.*position\s+(\d+)/i)    const errIdx = syntaxErr    ? +syntaxErr[1]    : e.message.match(/^Unexpected end of JSON.*/i)    ? txt.length - 1    : null    if (errIdx != null) {      const start = errIdx <= context      ? 0      : errIdx - context      const end = errIdx + context >= txt.length      ? txt.length      : errIdx + context      e.message += ` while parsing near '${        start === 0 ? '' : '...'      }${txt.slice(start, end)}${        end === txt.length ? '' : '...'      }'`    } else {      e.message += ` while parsing '${txt.slice(0, context * 2)}'`    }    throw e  }}
 |