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
			| 
											3 years ago
										 | "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
 |