Spaces:
Running
Running
; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.parseJsonString = exports.parseJsonNumber = exports.parseJson = void 0; | |
const rxParseJson = /position\s(\d+)$/; | |
function parseJson(s, pos) { | |
let endPos; | |
parseJson.message = undefined; | |
let matches; | |
if (pos) | |
s = s.slice(pos); | |
try { | |
parseJson.position = pos + s.length; | |
return JSON.parse(s); | |
} | |
catch (e) { | |
matches = rxParseJson.exec(e.message); | |
if (!matches) { | |
parseJson.message = "unexpected end"; | |
return undefined; | |
} | |
endPos = +matches[1]; | |
const c = s[endPos]; | |
s = s.slice(0, endPos); | |
parseJson.position = pos + endPos; | |
try { | |
return JSON.parse(s); | |
} | |
catch (e1) { | |
parseJson.message = `unexpected token ${c}`; | |
return undefined; | |
} | |
} | |
} | |
exports.parseJson = parseJson; | |
parseJson.message = undefined; | |
parseJson.position = 0; | |
parseJson.code = 'require("ajv/dist/runtime/parseJson").parseJson'; | |
function parseJsonNumber(s, pos, maxDigits) { | |
let numStr = ""; | |
let c; | |
parseJsonNumber.message = undefined; | |
if (s[pos] === "-") { | |
numStr += "-"; | |
pos++; | |
} | |
if (s[pos] === "0") { | |
numStr += "0"; | |
pos++; | |
} | |
else { | |
if (!parseDigits(maxDigits)) { | |
errorMessage(); | |
return undefined; | |
} | |
} | |
if (maxDigits) { | |
parseJsonNumber.position = pos; | |
return +numStr; | |
} | |
if (s[pos] === ".") { | |
numStr += "."; | |
pos++; | |
if (!parseDigits()) { | |
errorMessage(); | |
return undefined; | |
} | |
} | |
if (((c = s[pos]), c === "e" || c === "E")) { | |
numStr += "e"; | |
pos++; | |
if (((c = s[pos]), c === "+" || c === "-")) { | |
numStr += c; | |
pos++; | |
} | |
if (!parseDigits()) { | |
errorMessage(); | |
return undefined; | |
} | |
} | |
parseJsonNumber.position = pos; | |
return +numStr; | |
function parseDigits(maxLen) { | |
let digit = false; | |
while (((c = s[pos]), c >= "0" && c <= "9" && (maxLen === undefined || maxLen-- > 0))) { | |
digit = true; | |
numStr += c; | |
pos++; | |
} | |
return digit; | |
} | |
function errorMessage() { | |
parseJsonNumber.position = pos; | |
parseJsonNumber.message = pos < s.length ? `unexpected token ${s[pos]}` : "unexpected end"; | |
} | |
} | |
exports.parseJsonNumber = parseJsonNumber; | |
parseJsonNumber.message = undefined; | |
parseJsonNumber.position = 0; | |
parseJsonNumber.code = 'require("ajv/dist/runtime/parseJson").parseJsonNumber'; | |
const escapedChars = { | |
b: "\b", | |
f: "\f", | |
n: "\n", | |
r: "\r", | |
t: "\t", | |
'"': '"', | |
"/": "/", | |
"\\": "\\", | |
}; | |
const CODE_A = "a".charCodeAt(0); | |
const CODE_0 = "0".charCodeAt(0); | |
function parseJsonString(s, pos) { | |
let str = ""; | |
let c; | |
parseJsonString.message = undefined; | |
// eslint-disable-next-line no-constant-condition, @typescript-eslint/no-unnecessary-condition | |
while (true) { | |
c = s[pos++]; | |
if (c === '"') | |
break; | |
if (c === "\\") { | |
c = s[pos]; | |
if (c in escapedChars) { | |
str += escapedChars[c]; | |
pos++; | |
} | |
else if (c === "u") { | |
pos++; | |
let count = 4; | |
let code = 0; | |
while (count--) { | |
code <<= 4; | |
c = s[pos]; | |
if (c === undefined) { | |
errorMessage("unexpected end"); | |
return undefined; | |
} | |
c = c.toLowerCase(); | |
if (c >= "a" && c <= "f") { | |
code += c.charCodeAt(0) - CODE_A + 10; | |
} | |
else if (c >= "0" && c <= "9") { | |
code += c.charCodeAt(0) - CODE_0; | |
} | |
else { | |
errorMessage(`unexpected token ${c}`); | |
return undefined; | |
} | |
pos++; | |
} | |
str += String.fromCharCode(code); | |
} | |
else { | |
errorMessage(`unexpected token ${c}`); | |
return undefined; | |
} | |
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition | |
} | |
else if (c === undefined) { | |
errorMessage("unexpected end"); | |
return undefined; | |
} | |
else { | |
if (c.charCodeAt(0) >= 0x20) { | |
str += c; | |
} | |
else { | |
errorMessage(`unexpected token ${c}`); | |
return undefined; | |
} | |
} | |
} | |
parseJsonString.position = pos; | |
return str; | |
function errorMessage(msg) { | |
parseJsonString.position = pos; | |
parseJsonString.message = msg; | |
} | |
} | |
exports.parseJsonString = parseJsonString; | |
parseJsonString.message = undefined; | |
parseJsonString.position = 0; | |
parseJsonString.code = 'require("ajv/dist/runtime/parseJson").parseJsonString'; | |
//# sourceMappingURL=parseJson.js.map |