aboutsummaryrefslogtreecommitdiff
path: root/sandbox/testAppNevena/Front/node_modules/ajv/lib/runtime/parseJson.ts
diff options
context:
space:
mode:
authorDanijel Andjelkovic <adanijel99@gmail.com>2022-03-01 21:54:41 +0100
committerDanijel Andjelkovic <adanijel99@gmail.com>2022-03-01 21:54:41 +0100
commit6c8128f9fd5a5d0be115806c35a21b3d683df8d6 (patch)
treef46c2f6b3b9b294ff32bd75c08ccdc9e7a8cc4ef /sandbox/testAppNevena/Front/node_modules/ajv/lib/runtime/parseJson.ts
parent2400b84e95913665da6279114168148444b8f9ab (diff)
parent7d3640f824f46490b47bd95f1c5a16644f712068 (diff)
Merge branch 'dev' of http://gitlab.pmf.kg.ac.rs/igrannonica/neuronstellar into logo
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/ajv/lib/runtime/parseJson.ts')
-rw-r--r--sandbox/testAppNevena/Front/node_modules/ajv/lib/runtime/parseJson.ts176
1 files changed, 176 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/ajv/lib/runtime/parseJson.ts b/sandbox/testAppNevena/Front/node_modules/ajv/lib/runtime/parseJson.ts
new file mode 100644
index 00000000..92579afe
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/ajv/lib/runtime/parseJson.ts
@@ -0,0 +1,176 @@
+const rxParseJson = /position\s(\d+)$/
+
+export function parseJson(s: string, pos: number): unknown {
+ let endPos: number | undefined
+ parseJson.message = undefined
+ let matches: RegExpExecArray | null
+ if (pos) s = s.slice(pos)
+ try {
+ parseJson.position = pos + s.length
+ return JSON.parse(s)
+ } catch (e) {
+ matches = rxParseJson.exec((e as Error).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
+ }
+ }
+}
+
+parseJson.message = undefined as string | undefined
+parseJson.position = 0 as number
+parseJson.code = 'require("ajv/dist/runtime/parseJson").parseJson'
+
+export function parseJsonNumber(s: string, pos: number, maxDigits?: number): number | undefined {
+ let numStr = ""
+ let c: string
+ 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?: number): boolean {
+ let digit = false
+ while (((c = s[pos]), c >= "0" && c <= "9" && (maxLen === undefined || maxLen-- > 0))) {
+ digit = true
+ numStr += c
+ pos++
+ }
+ return digit
+ }
+
+ function errorMessage(): void {
+ parseJsonNumber.position = pos
+ parseJsonNumber.message = pos < s.length ? `unexpected token ${s[pos]}` : "unexpected end"
+ }
+}
+
+parseJsonNumber.message = undefined as string | undefined
+parseJsonNumber.position = 0 as number
+parseJsonNumber.code = 'require("ajv/dist/runtime/parseJson").parseJsonNumber'
+
+const escapedChars: {[X in string]?: string} = {
+ b: "\b",
+ f: "\f",
+ n: "\n",
+ r: "\r",
+ t: "\t",
+ '"': '"',
+ "/": "/",
+ "\\": "\\",
+}
+
+const CODE_A: number = "a".charCodeAt(0)
+const CODE_0: number = "0".charCodeAt(0)
+
+export function parseJsonString(s: string, pos: number): string | undefined {
+ let str = ""
+ let c: string | undefined
+ 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: string): void {
+ parseJsonString.position = pos
+ parseJsonString.message = msg
+ }
+}
+
+parseJsonString.message = undefined as string | undefined
+parseJsonString.position = 0 as number
+parseJsonString.code = 'require("ajv/dist/runtime/parseJson").parseJsonString'