UNPKG

json-restructure

Version:

A TypeScript library for repairing malformed JSON strings

35 lines 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseJson = void 0; const types_1 = require("../types"); function parseJson(jsonString) { try { return JSON.parse(jsonString); } catch (error) { if (error instanceof SyntaxError) { const { message, lineNumber, columnNumber } = extractErrorDetails(error, jsonString); const errorMessage = `JsonParseError: ${message} (line ${lineNumber}, column ${columnNumber})`; const jsonParseError = new types_1.JsonParseError(errorMessage, lineNumber, columnNumber); throw jsonParseError; } throw error; } } exports.parseJson = parseJson; function extractErrorDetails(error, jsonString) { const match = /^Unexpected token (.) in JSON at position (\d+)/.exec(error.message); if (match) { const [, unexpectedToken, position] = match; const lineNumber = jsonString.slice(0, +position).split('\n').length; const previousLinesLength = jsonString.slice(0, +position).lastIndexOf('\n') + 1; const columnNumber = +position - previousLinesLength + 1; return { message: `Unexpected token '${unexpectedToken}' in JSON at line ${lineNumber}, column ${columnNumber}`, lineNumber, columnNumber, }; } return { message: error.message, lineNumber: -1, columnNumber: -1 }; } //# sourceMappingURL=jsonParser.js.map