UNPKG

jsonc-simple-parser

Version:

A simple JSON parser that supports comments and optional trailing commas.

28 lines (27 loc) 920 B
/* IMPORT */ import strip from './strip/index.js'; /* HELPERS */ const _parse = JSON.parse; /* MAIN */ const parse = (text, reviver) => { text = `${text}`; // "text" can actually be anything, but we need a string here if (reviver) { // A "reviver" could have side effects, it may not be safe to call it twice return _parse(strip(text), reviver); } else { try { // Shortcut in case there are no comments or trailing commas return _parse(text); } catch (error) { // Stripping out any potential comments and trailing commas and trying again const textStripped = strip(text); if (text === textStripped) { // Parsing it again would inevitably lead to the same error throw error; } else { return _parse(textStripped); } } } }; /* EXPORT */ export default parse;