{"version":3,"file":"encode.mjs","sources":["../../../../../node_modules/mdurl/lib/encode.mjs"],"sourcesContent":["const encodeCache = {}\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache (exclude) {\n  let cache = encodeCache[exclude]\n  if (cache) { return cache }\n\n  cache = encodeCache[exclude] = []\n\n  for (let i = 0; i < 128; i++) {\n    const ch = String.fromCharCode(i)\n\n    if (/^[0-9a-z]$/i.test(ch)) {\n      // always allow unencoded alphanumeric characters\n      cache.push(ch)\n    } else {\n      cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2))\n    }\n  }\n\n  for (let i = 0; i < exclude.length; i++) {\n    cache[exclude.charCodeAt(i)] = exclude[i]\n  }\n\n  return cache\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n//  - string       - string to encode\n//  - exclude      - list of characters to ignore (in addition to a-zA-Z0-9)\n//  - keepEscaped  - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode (string, exclude, keepEscaped) {\n  if (typeof exclude !== 'string') {\n    // encode(string, keepEscaped)\n    keepEscaped = exclude\n    exclude = encode.defaultChars\n  }\n\n  if (typeof keepEscaped === 'undefined') {\n    keepEscaped = true\n  }\n\n  const cache = getEncodeCache(exclude)\n  let result = ''\n\n  for (let i = 0, l = string.length; i < l; i++) {\n    const code = string.charCodeAt(i)\n\n    if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n      if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n        result += string.slice(i, i + 3)\n        i += 2\n        continue\n      }\n    }\n\n    if (code < 128) {\n      result += cache[code]\n      continue\n    }\n\n    if (code >= 0xD800 && code <= 0xDFFF) {\n      if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n        const nextCode = string.charCodeAt(i + 1)\n        if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n          result += encodeURIComponent(string[i] + string[i + 1])\n          i++\n          continue\n        }\n      }\n      result += '%EF%BF%BD'\n      continue\n    }\n\n    result += encodeURIComponent(string[i])\n  }\n\n  return result\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\"\nencode.componentChars = \"-_.!~*'()\"\n\nexport default encode\n"],"names":["encodeCache","getEncodeCache","exclude","cache","i","ch","encode","string","keepEscaped","result","l","code","nextCode"],"mappings":"AAAA,MAAMA,IAAc,CAAA;AAKpB,SAASC,EAAgBC,GAAS;AAChC,MAAIC,IAAQH,EAAYE,CAAO;AAC/B,MAAIC;AAAS,WAAOA;AAEpB,EAAAA,IAAQH,EAAYE,CAAO,IAAI,CAAA;AAE/B,WAASE,IAAI,GAAGA,IAAI,KAAKA,KAAK;AAC5B,UAAMC,IAAK,OAAO,aAAaD,CAAC;AAEhC,IAAI,cAAc,KAAKC,CAAE,IAEvBF,EAAM,KAAKE,CAAE,IAEbF,EAAM,KAAK,OAAO,MAAMC,EAAE,SAAS,EAAE,EAAE,eAAe,MAAM,EAAE,CAAC;AAAA,EAEnE;AAEA,WAASA,IAAI,GAAGA,IAAIF,EAAQ,QAAQE;AAClC,IAAAD,EAAMD,EAAQ,WAAWE,CAAC,CAAC,IAAIF,EAAQE,CAAC;AAG1C,SAAOD;AACT;AASA,SAASG,EAAQC,GAAQL,GAASM,GAAa;AAC7C,EAAI,OAAON,KAAY,aAErBM,IAAcN,GACdA,IAAUI,EAAO,eAGf,OAAOE,IAAgB,QACzBA,IAAc;AAGhB,QAAML,IAAQF,EAAeC,CAAO;AACpC,MAAIO,IAAS;AAEb,WAASL,IAAI,GAAGM,IAAIH,EAAO,QAAQH,IAAIM,GAAGN,KAAK;AAC7C,UAAMO,IAAOJ,EAAO,WAAWH,CAAC;AAEhC,QAAII,KAAeG,MAAS,MAAgBP,IAAI,IAAIM,KAC9C,iBAAiB,KAAKH,EAAO,MAAMH,IAAI,GAAGA,IAAI,CAAC,CAAC,GAAG;AACrD,MAAAK,KAAUF,EAAO,MAAMH,GAAGA,IAAI,CAAC,GAC/BA,KAAK;AACL;AAAA,IACF;AAGF,QAAIO,IAAO,KAAK;AACd,MAAAF,KAAUN,EAAMQ,CAAI;AACpB;AAAA,IACF;AAEA,QAAIA,KAAQ,SAAUA,KAAQ,OAAQ;AACpC,UAAIA,KAAQ,SAAUA,KAAQ,SAAUP,IAAI,IAAIM,GAAG;AACjD,cAAME,IAAWL,EAAO,WAAWH,IAAI,CAAC;AACxC,YAAIQ,KAAY,SAAUA,KAAY,OAAQ;AAC5C,UAAAH,KAAU,mBAAmBF,EAAOH,CAAC,IAAIG,EAAOH,IAAI,CAAC,CAAC,GACtDA;AACA;AAAA,QACF;AAAA,MACF;AACA,MAAAK,KAAU;AACV;AAAA,IACF;AAEA,IAAAA,KAAU,mBAAmBF,EAAOH,CAAC,CAAC;AAAA,EACxC;AAEA,SAAOK;AACT;AAEAH,EAAO,eAAe;AACtBA,EAAO,iBAAiB;","x_google_ignoreList":[0]}