{"version":3,"sources":["jsdelivr-header.js","/npm/npm@11.6.2/node_modules/jsonparse/jsonparse.js"],"names":[],"mappings":"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","file":"/npm/npm@11.6.2/node_modules/jsonparse/jsonparse.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/npm@11.6.2/node_modules/jsonparse/jsonparse.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*global Buffer*/\n// Named constants with unique integer values\nvar C = {};\n// Tokens\nvar LEFT_BRACE    = C.LEFT_BRACE    = 0x1;\nvar RIGHT_BRACE   = C.RIGHT_BRACE   = 0x2;\nvar LEFT_BRACKET  = C.LEFT_BRACKET  = 0x3;\nvar RIGHT_BRACKET = C.RIGHT_BRACKET = 0x4;\nvar COLON         = C.COLON         = 0x5;\nvar COMMA         = C.COMMA         = 0x6;\nvar TRUE          = C.TRUE          = 0x7;\nvar FALSE         = C.FALSE         = 0x8;\nvar NULL          = C.NULL          = 0x9;\nvar STRING        = C.STRING        = 0xa;\nvar NUMBER        = C.NUMBER        = 0xb;\n// Tokenizer States\nvar START   = C.START   = 0x11;\nvar STOP    = C.STOP    = 0x12;\nvar TRUE1   = C.TRUE1   = 0x21;\nvar TRUE2   = C.TRUE2   = 0x22;\nvar TRUE3   = C.TRUE3   = 0x23;\nvar FALSE1  = C.FALSE1  = 0x31;\nvar FALSE2  = C.FALSE2  = 0x32;\nvar FALSE3  = C.FALSE3  = 0x33;\nvar FALSE4  = C.FALSE4  = 0x34;\nvar NULL1   = C.NULL1   = 0x41;\nvar NULL2   = C.NULL2   = 0x42;\nvar NULL3   = C.NULL3   = 0x43;\nvar NUMBER1 = C.NUMBER1 = 0x51;\nvar NUMBER3 = C.NUMBER3 = 0x53;\nvar STRING1 = C.STRING1 = 0x61;\nvar STRING2 = C.STRING2 = 0x62;\nvar STRING3 = C.STRING3 = 0x63;\nvar STRING4 = C.STRING4 = 0x64;\nvar STRING5 = C.STRING5 = 0x65;\nvar STRING6 = C.STRING6 = 0x66;\n// Parser States\nvar VALUE   = C.VALUE   = 0x71;\nvar KEY     = C.KEY     = 0x72;\n// Parser Modes\nvar OBJECT  = C.OBJECT  = 0x81;\nvar ARRAY   = C.ARRAY   = 0x82;\n// Character constants\nvar BACK_SLASH =      \"\\\\\".charCodeAt(0);\nvar FORWARD_SLASH =   \"\\/\".charCodeAt(0);\nvar BACKSPACE =       \"\\b\".charCodeAt(0);\nvar FORM_FEED =       \"\\f\".charCodeAt(0);\nvar NEWLINE =         \"\\n\".charCodeAt(0);\nvar CARRIAGE_RETURN = \"\\r\".charCodeAt(0);\nvar TAB =             \"\\t\".charCodeAt(0);\n\nvar STRING_BUFFER_SIZE = 64 * 1024;\n\nfunction Parser() {\n  this.tState = START;\n  this.value = undefined;\n\n  this.string = undefined; // string data\n  this.stringBuffer = Buffer.alloc ? Buffer.alloc(STRING_BUFFER_SIZE) : new Buffer(STRING_BUFFER_SIZE);\n  this.stringBufferOffset = 0;\n  this.unicode = undefined; // unicode escapes\n  this.highSurrogate = undefined;\n\n  this.key = undefined;\n  this.mode = undefined;\n  this.stack = [];\n  this.state = VALUE;\n  this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n  this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n  this.temp_buffs = { \"2\": new Buffer(2), \"3\": new Buffer(3), \"4\": new Buffer(4) }; // for rebuilding chars split before boundary is reached\n\n  // Stream offset\n  this.offset = -1;\n}\n\n// Slow code to string converter (only used when throwing syntax errors)\nParser.toknam = function (code) {\n  var keys = Object.keys(C);\n  for (var i = 0, l = keys.length; i < l; i++) {\n    var key = keys[i];\n    if (C[key] === code) { return key; }\n  }\n  return code && (\"0x\" + code.toString(16));\n};\n\nvar proto = Parser.prototype;\nproto.onError = function (err) { throw err; };\nproto.charError = function (buffer, i) {\n  this.tState = STOP;\n  this.onError(new Error(\"Unexpected \" + JSON.stringify(String.fromCharCode(buffer[i])) + \" at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n};\nproto.appendStringChar = function (char) {\n  if (this.stringBufferOffset >= STRING_BUFFER_SIZE) {\n    this.string += this.stringBuffer.toString('utf8');\n    this.stringBufferOffset = 0;\n  }\n\n  this.stringBuffer[this.stringBufferOffset++] = char;\n};\nproto.appendStringBuf = function (buf, start, end) {\n  var size = buf.length;\n  if (typeof start === 'number') {\n    if (typeof end === 'number') {\n      if (end < 0) {\n        // adding a negative end decreeses the size\n        size = buf.length - start + end;\n      } else {\n        size = end - start;\n      }\n    } else {\n      size = buf.length - start;\n    }\n  }\n\n  if (size < 0) {\n    size = 0;\n  }\n\n  if (this.stringBufferOffset + size > STRING_BUFFER_SIZE) {\n    this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n    this.stringBufferOffset = 0;\n  }\n\n  buf.copy(this.stringBuffer, this.stringBufferOffset, start, end);\n  this.stringBufferOffset += size;\n};\nproto.write = function (buffer) {\n  if (typeof buffer === \"string\") buffer = new Buffer(buffer);\n  var n;\n  for (var i = 0, l = buffer.length; i < l; i++) {\n    if (this.tState === START){\n      n = buffer[i];\n      this.offset++;\n      if(n === 0x7b){ this.onToken(LEFT_BRACE, \"{\"); // {\n      }else if(n === 0x7d){ this.onToken(RIGHT_BRACE, \"}\"); // }\n      }else if(n === 0x5b){ this.onToken(LEFT_BRACKET, \"[\"); // [\n      }else if(n === 0x5d){ this.onToken(RIGHT_BRACKET, \"]\"); // ]\n      }else if(n === 0x3a){ this.onToken(COLON, \":\");  // :\n      }else if(n === 0x2c){ this.onToken(COMMA, \",\"); // ,\n      }else if(n === 0x74){ this.tState = TRUE1;  // t\n      }else if(n === 0x66){ this.tState = FALSE1;  // f\n      }else if(n === 0x6e){ this.tState = NULL1; // n\n      }else if(n === 0x22){ // \"\n        this.string = \"\";\n        this.stringBufferOffset = 0;\n        this.tState = STRING1;\n      }else if(n === 0x2d){ this.string = \"-\"; this.tState = NUMBER1; // -\n      }else{\n        if (n >= 0x30 && n < 0x40) { // 1-9\n          this.string = String.fromCharCode(n); this.tState = NUMBER3;\n        } else if (n === 0x20 || n === 0x09 || n === 0x0a || n === 0x0d) {\n          // whitespace\n        } else {\n          return this.charError(buffer, i);\n        }\n      }\n    }else if (this.tState === STRING1){ // After open quote\n      n = buffer[i]; // get current byte from buffer\n      // check for carry over of a multi byte char split between data chunks\n      // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n      if (this.bytes_remaining > 0) {\n        for (var j = 0; j < this.bytes_remaining; j++) {\n          this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = buffer[j];\n        }\n\n        this.appendStringBuf(this.temp_buffs[this.bytes_in_sequence]);\n        this.bytes_in_sequence = this.bytes_remaining = 0;\n        i = i + j - 1;\n      } else if (this.bytes_remaining === 0 && n >= 128) { // else if no remainder bytes carried over, parse multi byte (>=128) chars one at a time\n        if (n <= 193 || n > 244) {\n          return this.onError(new Error(\"Invalid UTF-8 character at position \" + i + \" in state \" + Parser.toknam(this.tState)));\n        }\n        if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;\n        if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;\n        if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;\n        if ((this.bytes_in_sequence + i) > buffer.length) { // if bytes needed to complete char fall outside buffer length, we have a boundary split\n          for (var k = 0; k <= (buffer.length - 1 - i); k++) {\n            this.temp_buffs[this.bytes_in_sequence][k] = buffer[i + k]; // fill temp buffer of correct size with bytes available in this chunk\n          }\n          this.bytes_remaining = (i + this.bytes_in_sequence) - buffer.length;\n          i = buffer.length - 1;\n        } else {\n          this.appendStringBuf(buffer, i, i + this.bytes_in_sequence);\n          i = i + this.bytes_in_sequence - 1;\n        }\n      } else if (n === 0x22) {\n        this.tState = START;\n        this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset);\n        this.stringBufferOffset = 0;\n        this.onToken(STRING, this.string);\n        this.offset += Buffer.byteLength(this.string, 'utf8') + 1;\n        this.string = undefined;\n      }\n      else if (n === 0x5c) {\n        this.tState = STRING2;\n      }\n      else if (n >= 0x20) { this.appendStringChar(n); }\n      else {\n          return this.charError(buffer, i);\n      }\n    }else if (this.tState === STRING2){ // After backslash\n      n = buffer[i];\n      if(n === 0x22){ this.appendStringChar(n); this.tState = STRING1;\n      }else if(n === 0x5c){ this.appendStringChar(BACK_SLASH); this.tState = STRING1;\n      }else if(n === 0x2f){ this.appendStringChar(FORWARD_SLASH); this.tState = STRING1;\n      }else if(n === 0x62){ this.appendStringChar(BACKSPACE); this.tState = STRING1;\n      }else if(n === 0x66){ this.appendStringChar(FORM_FEED); this.tState = STRING1;\n      }else if(n === 0x6e){ this.appendStringChar(NEWLINE); this.tState = STRING1;\n      }else if(n === 0x72){ this.appendStringChar(CARRIAGE_RETURN); this.tState = STRING1;\n      }else if(n === 0x74){ this.appendStringChar(TAB); this.tState = STRING1;\n      }else if(n === 0x75){ this.unicode = \"\"; this.tState = STRING3;\n      }else{\n        return this.charError(buffer, i);\n      }\n    }else if (this.tState === STRING3 || this.tState === STRING4 || this.tState === STRING5 || this.tState === STRING6){ // unicode hex codes\n      n = buffer[i];\n      // 0-9 A-F a-f\n      if ((n >= 0x30 && n < 0x40) || (n > 0x40 && n <= 0x46) || (n > 0x60 && n <= 0x66)) {\n        this.unicode += String.fromCharCode(n);\n        if (this.tState++ === STRING6) {\n          var intVal = parseInt(this.unicode, 16);\n          this.unicode = undefined;\n          if (this.highSurrogate !== undefined && intVal >= 0xDC00 && intVal < (0xDFFF + 1)) { //<56320,57343> - lowSurrogate\n            this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate, intVal)));\n            this.highSurrogate = undefined;\n          } else if (this.highSurrogate === undefined && intVal >= 0xD800 && intVal < (0xDBFF + 1)) { //<55296,56319> - highSurrogate\n            this.highSurrogate = intVal;\n          } else {\n            if (this.highSurrogate !== undefined) {\n              this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate)));\n              this.highSurrogate = undefined;\n            }\n            this.appendStringBuf(new Buffer(String.fromCharCode(intVal)));\n          }\n          this.tState = STRING1;\n        }\n      } else {\n        return this.charError(buffer, i);\n      }\n    } else if (this.tState === NUMBER1 || this.tState === NUMBER3) {\n        n = buffer[i];\n\n        switch (n) {\n          case 0x30: // 0\n          case 0x31: // 1\n          case 0x32: // 2\n          case 0x33: // 3\n          case 0x34: // 4\n          case 0x35: // 5\n          case 0x36: // 6\n          case 0x37: // 7\n          case 0x38: // 8\n          case 0x39: // 9\n          case 0x2e: // .\n          case 0x65: // e\n          case 0x45: // E\n          case 0x2b: // +\n          case 0x2d: // -\n            this.string += String.fromCharCode(n);\n            this.tState = NUMBER3;\n            break;\n          default:\n            this.tState = START;\n            var result = Number(this.string);\n\n            if (isNaN(result)){\n              return this.charError(buffer, i);\n            }\n\n            if ((this.string.match(/[0-9]+/) == this.string) && (result.toString() != this.string)) {\n              // Long string of digits which is an ID string and not valid and/or safe JavaScript integer Number\n              this.onToken(STRING, this.string);\n            } else {\n              this.onToken(NUMBER, result);\n            }\n\n            this.offset += this.string.length - 1;\n            this.string = undefined;\n            i--;\n            break;\n        }\n    }else if (this.tState === TRUE1){ // r\n      if (buffer[i] === 0x72) { this.tState = TRUE2; }\n      else { return this.charError(buffer, i); }\n    }else if (this.tState === TRUE2){ // u\n      if (buffer[i] === 0x75) { this.tState = TRUE3; }\n      else { return this.charError(buffer, i); }\n    }else if (this.tState === TRUE3){ // e\n      if (buffer[i] === 0x65) { this.tState = START; this.onToken(TRUE, true); this.offset+= 3; }\n      else { return this.charError(buffer, i); }\n    }else if (this.tState === FALSE1){ // a\n      if (buffer[i] === 0x61) { this.tState = FALSE2; }\n      else { return this.charError(buffer, i); }\n    }else if (this.tState === FALSE2){ // l\n      if (buffer[i] === 0x6c) { this.tState = FALSE3; }\n      else { return this.charError(buffer, i); }\n    }else if (this.tState === FALSE3){ // s\n      if (buffer[i] === 0x73) { this.tState = FALSE4; }\n      else { return this.charError(buffer, i); }\n    }else if (this.tState === FALSE4){ // e\n      if (buffer[i] === 0x65) { this.tState = START; this.onToken(FALSE, false); this.offset+= 4; }\n      else { return this.charError(buffer, i); }\n    }else if (this.tState === NULL1){ // u\n      if (buffer[i] === 0x75) { this.tState = NULL2; }\n      else { return this.charError(buffer, i); }\n    }else if (this.tState === NULL2){ // l\n      if (buffer[i] === 0x6c) { this.tState = NULL3; }\n      else { return this.charError(buffer, i); }\n    }else if (this.tState === NULL3){ // l\n      if (buffer[i] === 0x6c) { this.tState = START; this.onToken(NULL, null); this.offset += 3; }\n      else { return this.charError(buffer, i); }\n    }\n  }\n};\nproto.onToken = function (token, value) {\n  // Override this to get events\n};\n\nproto.parseError = function (token, value) {\n  this.tState = STOP;\n  this.onError(new Error(\"Unexpected \" + Parser.toknam(token) + (value ? (\"(\" + JSON.stringify(value) + \")\") : \"\") + \" in state \" + Parser.toknam(this.state)));\n};\nproto.push = function () {\n  this.stack.push({value: this.value, key: this.key, mode: this.mode});\n};\nproto.pop = function () {\n  var value = this.value;\n  var parent = this.stack.pop();\n  this.value = parent.value;\n  this.key = parent.key;\n  this.mode = parent.mode;\n  this.emit(value);\n  if (!this.mode) { this.state = VALUE; }\n};\nproto.emit = function (value) {\n  if (this.mode) { this.state = COMMA; }\n  this.onValue(value);\n};\nproto.onValue = function (value) {\n  // Override me\n};\nproto.onToken = function (token, value) {\n  if(this.state === VALUE){\n    if(token === STRING || token === NUMBER || token === TRUE || token === FALSE || token === NULL){\n      if (this.value) {\n        this.value[this.key] = value;\n      }\n      this.emit(value);\n    }else if(token === LEFT_BRACE){\n      this.push();\n      if (this.value) {\n        this.value = this.value[this.key] = {};\n      } else {\n        this.value = {};\n      }\n      this.key = undefined;\n      this.state = KEY;\n      this.mode = OBJECT;\n    }else if(token === LEFT_BRACKET){\n      this.push();\n      if (this.value) {\n        this.value = this.value[this.key] = [];\n      } else {\n        this.value = [];\n      }\n      this.key = 0;\n      this.mode = ARRAY;\n      this.state = VALUE;\n    }else if(token === RIGHT_BRACE){\n      if (this.mode === OBJECT) {\n        this.pop();\n      } else {\n        return this.parseError(token, value);\n      }\n    }else if(token === RIGHT_BRACKET){\n      if (this.mode === ARRAY) {\n        this.pop();\n      } else {\n        return this.parseError(token, value);\n      }\n    }else{\n      return this.parseError(token, value);\n    }\n  }else if(this.state === KEY){\n    if (token === STRING) {\n      this.key = value;\n      this.state = COLON;\n    } else if (token === RIGHT_BRACE) {\n      this.pop();\n    } else {\n      return this.parseError(token, value);\n    }\n  }else if(this.state === COLON){\n    if (token === COLON) { this.state = VALUE; }\n    else { return this.parseError(token, value); }\n  }else if(this.state === COMMA){\n    if (token === COMMA) {\n      if (this.mode === ARRAY) { this.key++; this.state = VALUE; }\n      else if (this.mode === OBJECT) { this.state = KEY; }\n\n    } else if (token === RIGHT_BRACKET && this.mode === ARRAY || token === RIGHT_BRACE && this.mode === OBJECT) {\n      this.pop();\n    } else {\n      return this.parseError(token, value);\n    }\n  }else{\n    return this.parseError(token, value);\n  }\n};\n\nParser.C = C;\n\nmodule.exports = Parser;\n"]}