You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							184 lines
						
					
					
						
							5.2 KiB
						
					
					
				
			
		
		
	
	
							184 lines
						
					
					
						
							5.2 KiB
						
					
					
				"use strict";
 | 
						|
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
 |