{"version":3,"sources":["jsdelivr-header.js","/npm/@stephen-riley/pcre@0.9.0/src/lib/PCRE.js"],"names":[],"mappings":"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","file":"/npm/@stephen-riley/pcre@0.9.0/dist/lib/PCRE.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@stephen-riley/pcre@0.9.0/dist/lib/PCRE.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import libpcre2 from '../../dist/libpcre2.js'\nimport assert from 'assert'\nimport { TextDecoder } from 'util'\n\nconst utf16Decoder = new TextDecoder('utf-16')\nlet initialized = false\nconst cfunc = {}\n\nconst ptrSym = Symbol('ptr')\nconst nametableSym = Symbol('nametable')\nconst patternSym = Symbol('pattern')\n\nconst PCRE2_NO_MATCH = -1\nconst PCRE2_ERROR_NOMEMORY = -48\nconst PCRE2_SUBSTITUTE_GLOBAL = 0x00000100\n\nconst MAX_OUTPUT_BUFFER_SIZE = 1 * 1024 * 1024\n\nexport default class PCRE {\n  static async init() {\n    await libpcre2.loaded\n\n    Object.assign(cfunc, {\n      malloc(bytes) { return libpcre2._malloc(bytes) },\n      free(ptr) { return libpcre2._free(ptr) },\n      version: libpcre2.cwrap('version', 'number', ['number']),\n      compile: libpcre2.cwrap('compile', 'number', ['array', 'number', 'string']),\n      destroyCode: libpcre2.cwrap('destroyCode', null, ['number']),\n      lastErrorMessage: libpcre2.cwrap('lastErrorMessage', 'number', ['number', 'number']),\n      lastErrorOffset: libpcre2.cwrap('lastErrorOffset', 'number'),\n      match: libpcre2.cwrap('match', 'number', ['number', 'array', 'number', 'number']),\n      substitute: libpcre2.cwrap('substitute', 'number', ['number', 'array', 'number', 'number', 'number', 'number', 'array', 'number', 'number', 'number']),\n      createMatchData: libpcre2.cwrap('createMatchData', 'number', ['number']),\n      destroyMatchData: libpcre2.cwrap('destroyMatchData', null, ['number']),\n      getOvectorCount: libpcre2.cwrap('getOvectorCount', 'number', ['number']),\n      getOvectorPtr: libpcre2.cwrap('getOvectorPointer', 'number', ['number']),\n      getCaptureCount: libpcre2.cwrap('getCaptureCount', 'number', ['number']),\n      getMatchNameCount: libpcre2.cwrap('getMatchNameCount', 'number', ['number']),\n      getMatchNameTableEntrySize: libpcre2.cwrap('getMatchNameTableEntrySize', 'number', ['number']),\n      getMatchNameTable: libpcre2.cwrap('getMatchNameTable', 'number', ['number']),\n    })\n\n    initialized = true\n  }\n\n  static version() {\n    assert(initialized)\n    const len = cfunc.version(0)\n    const ptr = allocateStringBuffer(len)\n    cfunc.version(ptr)\n    return copyAndFreeStringBuffer(ptr, len)\n  }\n\n  constructor(pattern, flags = '') {\n    assert(initialized)\n    const patternBuffer = Buffer.from(pattern, 'utf16le')\n    const ptr = cfunc.compile(patternBuffer, patternBuffer.length / 2, flags)\n\n    if (ptr === 0) {\n      const { errorMessage, offset } = this.getLastError()\n      const err = new Error(errorMessage)\n      err.offset = offset\n      throw err\n    }\n\n    this[ptrSym] = ptr\n    this[patternSym] = pattern\n\n    // extract the nametable \n    const nameCount = this.getMatchNameCount()\n    const entrySize = this.getMatchNameTableEntrySize()\n    const tableBuf = this.getMatchNameTable()\n    this[nametableSym] = convertNameTable(tableBuf, nameCount, entrySize)\n  }\n\n  destroy() {\n    if (this[ptrSym] === 0) return\n    cfunc.destroyCode(this[ptrSym])\n    this[ptrSym] = 0\n  }\n\n  getLastError() {\n    const errMsgBufLen = 256\n    const errMsgBuf = allocateStringBuffer(errMsgBufLen)\n    const actualErrMsgLen = cfunc.lastErrorMessage(errMsgBuf, errMsgBufLen)\n    const errorMessage = copyAndFreeStringBuffer(errMsgBuf, actualErrMsgLen)\n    const offset = cfunc.lastErrorOffset()\n\n    return { errorMessage, offset }\n  }\n\n  createMatchData() {\n    return cfunc.createMatchData(this[ptrSym])\n  }\n\n  destroyMatchData(matchDataPtr) {\n    cfunc.destroyMatchData(matchDataPtr)\n  }\n\n  exec(subject, options) {\n    if (options) {\n      return this.matchAll(subject)\n    }\n    else {\n      return this.match(subject)\n    }\n  }\n\n  match(subject, start) {\n    assert(this[ptrSym])\n\n    if (start >= subject.length) {\n      return null\n    }\n\n    const startOffset = start || 0\n\n    const subjectBuffer = Buffer.from(subject, 'utf16le')\n\n    const matchDataPtr = this.createMatchData()\n\n    const result = cfunc.match(\n      this[ptrSym],\n      subjectBuffer,\n      subjectBuffer.length / 2,\n      startOffset,\n      matchDataPtr\n    )\n\n    if (result < 0) {\n      this.destroyMatchData(matchDataPtr)\n\n      if (result === PCRE2_NO_MATCH) {\n        return null\n      }\n      else {\n        const msg = getPCRE2Error(result)\n        const err = new Error(msg)\n        err.code = result\n        throw err\n      }\n    }\n\n    // extract the matches from the pcre2_match_data block\n    const matchCount = this.getOvectorCount(matchDataPtr)\n    const vectorPtr = this.getOvectorPtr(matchDataPtr)\n    const matches = convertOVector(subject, vectorPtr, matchCount)\n\n    // merge in nametable entries\n    const results = { ...matches }\n    for (let i in matches) {\n      if (i in this[nametableSym]) {\n        const name = this[nametableSym][i]\n        results[name] = matches[i]\n      }\n    }\n\n    this.destroyMatchData(matchDataPtr)\n\n    results.length = matchCount\n    return results\n  }\n\n  matchAll(subject) {\n    let safety = 1000\n\n    let results = []\n    let iter\n    let start = 0\n\n    while ((iter = this.match(subject, start)) !== null) {\n      results.push(iter)\n      start = iter[0].end\n\n      safety--\n      assert(safety > 0, 'safety limit exceeded')\n    }\n\n    return results\n  }\n\n  substituteAll(subject, replacement) {\n    return this.substitute(subject, replacement, 0, PCRE2_SUBSTITUTE_GLOBAL)\n  }\n\n  substitute(subject, replacement, startOffset, options) {\n    assert(this[ptrSym])\n\n    if (startOffset >= subject.length) {\n      return null\n    }\n\n    startOffset = startOffset || 0\n    options = options || 0\n\n    const subjectBuffer = Buffer.from(subject, 'utf16le')\n\n    const matchDataPtr = this.createMatchData()\n\n    const replacementBuffer = Buffer.from(replacement, 'utf16le')\n\n    let factor = 1.5\n\n    for (; ;) {\n      // This size is in character units, not bytes\n      const outputBufferSize = Math.trunc(subject.length * factor)\n\n      if (outputBufferSize > MAX_OUTPUT_BUFFER_SIZE) {\n        return PCRE2_ERROR_NOMEMORY\n      }\n\n      const outputBuffer = allocateStringBuffer(outputBufferSize)\n\n      const result = cfunc.substitute(\n        this[ptrSym],\n        subjectBuffer,\n        subjectBuffer.length / 2,\n        startOffset,\n        matchDataPtr,\n        options,\n        replacementBuffer,\n        replacementBuffer.length / 2,\n        outputBuffer,\n        outputBufferSize)\n\n      if (result < 0) {\n        this.destroyMatchData(matchDataPtr)\n\n        if (result === PCRE2_ERROR_NOMEMORY) {\n          cfunc.free(outputBuffer)\n          factor *= 2\n          continue\n        }\n        else {\n          cfunc.free(outputBuffer)\n          const msg = getPCRE2Error(result)\n          const err = new Error(msg)\n          err.code = result\n          throw err\n        }\n      }\n\n      return copyAndFreeStringBuffer(outputBuffer, result)\n    }\n  }\n\n  getOvectorCount(matchDataPtr) {\n    assert(matchDataPtr)\n    return cfunc.getOvectorCount(matchDataPtr)\n  }\n\n  getOvectorPtr(matchDataPtr) {\n    assert(matchDataPtr)\n    return cfunc.getOvectorPtr(matchDataPtr)\n  }\n\n  getCaptureCount() {\n    if (this[ptrSym] === 0) return\n    return cfunc.getCaptureCount(this[ptrSym])\n  }\n\n  getMatchNameCount() {\n    if (this[ptrSym] === 0) return\n    return cfunc.getMatchNameCount(this[ptrSym])\n  }\n\n  getMatchNameTableEntrySize() {\n    if (this[ptrSym] === 0) return\n    return cfunc.getMatchNameTableEntrySize(this[ptrSym])\n  }\n\n  getMatchNameTable() {\n    if (this[ptrSym] === 0) return\n    return cfunc.getMatchNameTable(this[ptrSym])\n  }\n}\n\nfunction allocateStringBuffer(len) {\n  return cfunc.malloc(len * 2)\n}\n\nfunction copyStringBuffer(ptr, len) {\n  len = libpcre2.HEAPU16[(ptr / 2) + (len - 1)] === 0 ? len - 1 : len\n  const encodedString = libpcre2.HEAP8.subarray(ptr, ptr + (len * 2))\n  return utf16Decoder.decode(encodedString)\n}\n\nfunction copyAndFreeStringBuffer(ptr, len) {\n  const string = copyStringBuffer(ptr, len)\n  cfunc.free(ptr)\n  return string\n}\n\nfunction convertOVector(subject, vectorPtr, vectorCount) {\n  const table = []\n\n  for (let i = 0; i < vectorCount; i++) {\n    let ptr = vectorPtr + i * 4 * 2\n    const start = libpcre2.getValue(ptr, 'i32', false)\n    const end = libpcre2.getValue(ptr + 4, 'i32', false)\n    const match = subject.substring(start, end)\n    table.push({ start, end, match })\n  }\n\n  return table\n}\n\nfunction convertNameTable(nameTablePtr, entries, entrySize) {\n  const table = {}\n\n  for (let i = 0; i < entries; i++) {\n    let ptr = nameTablePtr + entrySize * i * 2\n\n    const index = libpcre2.getValue(ptr, 'i16', false)\n    const name = copyStringBuffer(ptr + 2, utf16lelen(ptr + 2))\n    table[index] = name\n  }\n\n  return table\n}\n\nfunction utf16lelen(ptr) {\n  let len = 0\n  while (libpcre2.getValue(ptr, 'i16', false) !== 0) {\n    len++\n    ptr += 2\n  }\n  return len\n}\n\nconst ERRORS = {\n  \"-1\": \"PCRE2_ERROR_NOMATCH\",\n  \"-2\": \"PCRE2_ERROR_PARTIAL\",\n  \"-3\": \"PCRE2_ERROR_UTF8_ERR1\",\n  \"-4\": \"PCRE2_ERROR_UTF8_ERR2\",\n  \"-5\": \"PCRE2_ERROR_UTF8_ERR3\",\n  \"-6\": \"PCRE2_ERROR_UTF8_ERR4\",\n  \"-7\": \"PCRE2_ERROR_UTF8_ERR5\",\n  \"-8\": \"PCRE2_ERROR_UTF8_ERR6\",\n  \"-9\": \"PCRE2_ERROR_UTF8_ERR7\",\n  \"-10\": \"PCRE2_ERROR_UTF8_ERR8\",\n  \"-11\": \"PCRE2_ERROR_UTF8_ERR9\",\n  \"-12\": \"PCRE2_ERROR_UTF8_ERR10\",\n  \"-13\": \"PCRE2_ERROR_UTF8_ERR11\",\n  \"-14\": \"PCRE2_ERROR_UTF8_ERR12\",\n  \"-15\": \"PCRE2_ERROR_UTF8_ERR13\",\n  \"-16\": \"PCRE2_ERROR_UTF8_ERR14\",\n  \"-17\": \"PCRE2_ERROR_UTF8_ERR15\",\n  \"-18\": \"PCRE2_ERROR_UTF8_ERR16\",\n  \"-19\": \"PCRE2_ERROR_UTF8_ERR17\",\n  \"-20\": \"PCRE2_ERROR_UTF8_ERR18\",\n  \"-21\": \"PCRE2_ERROR_UTF8_ERR19\",\n  \"-22\": \"PCRE2_ERROR_UTF8_ERR20\",\n  \"-23\": \"PCRE2_ERROR_UTF8_ERR21\",\n  \"-24\": \"PCRE2_ERROR_UTF16_ERR1\",\n  \"-25\": \"PCRE2_ERROR_UTF16_ERR2\",\n  \"-26\": \"PCRE2_ERROR_UTF16_ERR3\",\n  \"-27\": \"PCRE2_ERROR_UTF32_ERR1\",\n  \"-28\": \"PCRE2_ERROR_UTF32_ERR2\",\n  \"-29\": \"PCRE2_ERROR_BADDATA\",\n  \"-30\": \"PCRE2_ERROR_MIXEDTABLES\",\n  \"-31\": \"PCRE2_ERROR_BADMAGIC\",\n  \"-32\": \"PCRE2_ERROR_BADMODE\",\n  \"-33\": \"PCRE2_ERROR_BADOFFSET\",\n  \"-34\": \"PCRE2_ERROR_BADOPTION\",\n  \"-35\": \"PCRE2_ERROR_BADREPLACEMENT\",\n  \"-36\": \"PCRE2_ERROR_BADUTFOFFSET\",\n  \"-37\": \"PCRE2_ERROR_CALLOUT\",\n  \"-38\": \"PCRE2_ERROR_DFA_BADRESTART\",\n  \"-39\": \"PCRE2_ERROR_DFA_RECURSE\",\n  \"-40\": \"PCRE2_ERROR_DFA_UCOND\",\n  \"-41\": \"PCRE2_ERROR_DFA_UFUNC\",\n  \"-42\": \"PCRE2_ERROR_DFA_UITEM\",\n  \"-43\": \"PCRE2_ERROR_DFA_WSSIZE\",\n  \"-44\": \"PCRE2_ERROR_INTERNAL\",\n  \"-45\": \"PCRE2_ERROR_JIT_BADOPTION\",\n  \"-46\": \"PCRE2_ERROR_JIT_STACKLIMIT\",\n  \"-47\": \"PCRE2_ERROR_MATCHLIMIT\",\n  \"-48\": \"PCRE2_ERROR_NOMEMORY\",\n  \"-49\": \"PCRE2_ERROR_NOSUBSTRING\",\n  \"-50\": \"PCRE2_ERROR_NOUNIQUESUBSTRING\",\n  \"-51\": \"PCRE2_ERROR_NULL\",\n  \"-52\": \"PCRE2_ERROR_RECURSELOOP\",\n  \"-53\": \"PCRE2_ERROR_DEPTHLIMIT\",\n  \"-54\": \"PCRE2_ERROR_UNAVAILABLE\",\n  \"-55\": \"PCRE2_ERROR_UNSET\",\n  \"-56\": \"PCRE2_ERROR_BADOFFSETLIMIT\",\n  \"-57\": \"PCRE2_ERROR_BADREPESCAPE\",\n  \"-58\": \"PCRE2_ERROR_REPMISSINGBRACE\",\n  \"-59\": \"PCRE2_ERROR_BADSUBSTITUTION\",\n  \"-60\": \"PCRE2_ERROR_BADSUBSPATTERN\",\n  \"-61\": \"PCRE2_ERROR_TOOMANYREPLACE\",\n  \"-62\": \"PCRE2_ERROR_BADSERIALIZEDDATA\",\n  \"-63\": \"PCRE2_ERROR_HEAPLIMIT\",\n  \"-64\": \"PCRE2_ERROR_CONVERT_SYNTAX\",\n  \"-65\": \"PCRE2_ERROR_INTERNAL_DUPMATCH\",\n  \"-66\": \"PCRE2_ERROR_DFA_UINVALID_UTF\",\n}\n\nfunction getPCRE2Error(result) {\n  const code = `${result}`\n\n  if (code in ERRORS) {\n    return ERRORS[code]\n  }\n  else {\n    return \"UNKNOWN\"\n  }\n}\n"]}