{"version":3,"file":"punyCode-DOEGy9d-.cjs","names":["createMessage","getPreciseType"],"sources":["../src/urls/utils/punyCode.ts"],"sourcesContent":["/** ---------------------------------------------------------\n * * ***Constants for `Punycode-UtilsJS` algorithm.***\n * ---------------------------------------------------------\n * These constants are used internally for encoding and decoding.\n *\n * Unicode domain names to ASCII (`Punycode-UtilsJS`) and vice versa.\n */\n\nimport { createMessage } from \"@/_private/logger\";\n\nimport { getPreciseType } from \"@/predicates/type/getPreciseType\";\nimport { assertIsString } from \"@/assertions/strings/assertIsString\";\n\n/**\n * Constant `maxInt` for validate.\n */\nconst maxInt = 2147483647;\n\n/**\n * Boot-string parameters for `Punycode-UtilsJS`.\n */\nconst base = 36,\n  tMin = 1,\n  tMax = 26,\n  skew = 38,\n  damp = 700;\n\n/**\n * Initial bias and code point.\n */\nconst initialBias = 72,\n  initialN = 128,\n  delimiter = \"-\";\n\n/**\n * Regular expressions used internally.\n * - Matches `Punycode-UtilsJS` prefix.\n */\nconst regexPunycode = /^xn--/;\n/**\n * Regular expressions used internally.\n * - Matches non-ASCII chars.\n */\nconst regexNonASCII = /[^\\0-\\x7F]/;\n/**\n * Regular expressions used internally.\n * - Matches domain label separators.\n */\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g;\n\n/**\n * Error messages used internally.\n */\nconst errors: Record<string, string> = {\n  overflow: \"Overflow: input needs wider integers to process\",\n  \"not-basic\": \"Illegal input >= 0x80 (not a basic code point)\",\n  \"invalid-input\": \"Invalid input\"\n};\n\n/**\n * Aliases of `Math.floor`.\n */\nconst floor = Math.floor;\n/**\n * Aliases of `String.fromCharCode`.\n */\nconst stringFromCharCode = String.fromCharCode;\n\n/** ---------------------------------------------------------\n * * ***Throws a RangeError with a predefined error message.***\n * ---------------------------------------------------------\n *\n * @param type - Key of the error type to throw.\n */\nfunction error(type: keyof typeof errors): never {\n  throw new RangeError(errors[type]);\n}\n\n/** ---------------------------------------------------------\n * * ***Maps an array using a callback function.***\n * ---------------------------------------------------------\n *\n * @param array - Array to transform.\n * @param fn - Function to apply to each element.\n *\n * ---\n * @returns Transformed array.\n */\nfunction map<T, U>(array: T[], fn: (v: T) => U): U[] {\n  const result: U[] = [];\n  let length = array.length;\n  while (length--) {\n    if (array[length]) {\n      result[length] = fn(array[length]!);\n    }\n  }\n  return result;\n}\n\n/** ---------------------------------------------------------\n * * ***Maps a domain name using a callback on each label.***\n * ---------------------------------------------------------\n * Handles email-like domains (local@domain).\n *\n * ---\n * @param domain - Domain string to process.\n * @param fn - Function applied to each domain label.\n *\n * ---\n * @returns Transformed domain string.\n */\nfunction mapDomain(domain: string, fn: (v: string) => string): string {\n  const parts = domain.split(\"@\");\n  let result = \"\";\n  if (parts.length > 1) {\n    result = parts[0] + \"@\";\n    if (parts[1]) domain = parts[1];\n  }\n  domain = domain.replace(regexSeparators, \"\\x2E\");\n  const labels = domain.split(\".\");\n  return result + map(labels, fn).join(\".\");\n}\n\n/** ---------------------------------------------------------\n * * ***Converts a UCS-2 encoded string to an array of Unicode code points.***\n * ---------------------------------------------------------\n *\n * @param input - String to decode.\n *\n * ---\n * @returns Array of Unicode code points.\n */\nfunction ucs2decode(input: string): number[] {\n  assertIsString(input, {\n    message: ({ currentType, validType }) =>\n      createMessage(\n        \"punycodeUtilsJS.ucs2.decode\",\n        `Parameter \\`input\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n      )\n  });\n\n  const output: number[] = [];\n  let counter = 0;\n  const length = input.length;\n  while (counter < length) {\n    const value = input.charCodeAt(counter++);\n    if (value >= 0xd800 && value <= 0xdbff && counter < length) {\n      const extra = input.charCodeAt(counter++);\n      if ((extra & 0xfc00) === 0xdc00)\n        output.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n      else {\n        output.push(value);\n        counter--;\n      }\n    } else output.push(value);\n  }\n  return output;\n}\n\n/** ---------------------------------------------------------\n * * ***Encodes an array of Unicode code points to a string.***\n * ---------------------------------------------------------\n *\n * @param points - Array of Unicode code points.\n *\n * ---\n * @returns Encoded string.\n */\nconst ucs2encode = (points: number[]): string => {\n  if (\n    !Array.isArray(points) ||\n    !points.every((p) => typeof p === \"number\" && Number.isFinite(p))\n  ) {\n    throw new TypeError(\n      createMessage(\n        \"punycodeUtilsJS.ucs2.encode\",\n        `Parameter \\`points\\` must be an array of numbers, but received: \\`${getPreciseType(\n          points\n        )}\\`.`\n      )\n    );\n  }\n\n  return String.fromCodePoint(...points);\n};\n\n/** ---------------------------------------------------------\n * * ***Converts a basic code point to its digit value for `Punycode-UtilsJS`.***\n * ---------------------------------------------------------\n *\n * @param codePoint - Unicode code point.\n *\n * ---\n * @returns Digit value.\n */\nfunction basicToDigit(codePoint: number): number {\n  if (codePoint >= 0x30 && codePoint < 0x3a) return 26 + (codePoint - 0x30);\n  if (codePoint >= 0x41 && codePoint < 0x5b) return codePoint - 0x41;\n  if (codePoint >= 0x61 && codePoint < 0x7b) return codePoint - 0x61;\n  return base;\n}\n\n/** ---------------------------------------------------------\n * * ***Converts a digit to a basic code point for `Punycode-UtilsJS`.***\n * ---------------------------------------------------------\n *\n * @param digit - Numeric value.\n * @param flag - Bias flag (0 or 1).\n *\n * ---\n * @returns Code point.\n */\nfunction digitToBasic(digit: number, flag: number): number {\n  return digit + 22 + 75 * (digit < 26 ? 1 : 0) - Number(flag !== 0) * 32;\n}\n\n/** ---------------------------------------------------------\n * * ***Bias adaptation function for `Punycode-UtilsJS` encoding/decoding.***\n * ---------------------------------------------------------\n *\n * @param delta - Delta value.\n * @param numPoints - Number of code points.\n * @param firstTime - Indicates first adaptation.\n *\n * ---\n * @returns Adapted bias.\n */\nfunction adapt(delta: number, numPoints: number, firstTime: boolean): number {\n  let k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  while (delta > ((base - tMin) * tMax) >> 1) {\n    delta = floor(delta / (base - tMin));\n    k += base;\n  }\n  return floor(k + ((base - tMin + 1) * delta) / (delta + skew));\n}\n\n/** ---------------------------------------------------------\n * * ***Decodes a `Punycode-UtilsJS` string to Unicode.***\n * ---------------------------------------------------------\n *\n * @param input - `Punycode-UtilsJS` string.\n *\n * ---\n * @returns Decoded Unicode string.\n */\nfunction decode(input: string): string {\n  assertIsString(input, {\n    message: ({ currentType, validType }) =>\n      createMessage(\n        \"punycodeUtilsJS.decode\",\n        `Parameter \\`input\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n      )\n  });\n\n  const output: number[] = [];\n  const inputLength = input.length;\n  let i = 0,\n    n = initialN,\n    bias = initialBias;\n\n  let basic = input.lastIndexOf(delimiter);\n  if (basic < 0) basic = 0;\n\n  for (let j = 0; j < basic; j++) {\n    if (input.charCodeAt(j) >= 0x80) error(\"not-basic\");\n    output.push(input.charCodeAt(j));\n  }\n\n  for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; ) {\n    const oldIdx = i;\n    let w = 1;\n    for (let k = base; ; k += base) {\n      if (index >= inputLength) error(\"invalid-input\");\n      const digit = basicToDigit(input.charCodeAt(index++));\n      if (digit >= base) error(\"invalid-input\");\n      if (digit > floor((maxInt - i) / w)) error(\"overflow\");\n      i += digit * w;\n      const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n      if (digit < t) break;\n      const baseMinusT = base - t;\n      if (w > floor(maxInt / baseMinusT)) error(\"overflow\");\n      w *= baseMinusT;\n    }\n    const out = output.length + 1;\n    bias = adapt(i - oldIdx, out, oldIdx === 0);\n    if (floor(i / out) > maxInt - n) error(\"overflow\");\n    n += floor(i / out);\n    i %= out;\n    output.splice(i++, 0, n);\n  }\n  return String.fromCodePoint(...output);\n}\n\n/** ---------------------------------------------------------\n * * ***Encodes a Unicode string to `Punycode-UtilsJS`.***\n * ---------------------------------------------------------\n *\n * @param input - Unicode string.\n *\n * ---\n * @returns `Punycode-UtilsJS` string.\n */\nfunction encode(input: string): string {\n  assertIsString(input, {\n    message: ({ currentType, validType }) =>\n      createMessage(\n        \"punycodeUtilsJS.encode\",\n        `Parameter \\`input\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n      )\n  });\n\n  const output: string[] = [];\n  const points = ucs2decode(input);\n  const inputLength = points.length;\n  let n = initialN,\n    delta = 0,\n    bias = initialBias;\n\n  for (const cp of points) if (cp < 0x80) output.push(stringFromCharCode(cp));\n  const basicLength = output.length;\n  let handledCPCount = basicLength;\n  if (basicLength) output.push(delimiter);\n\n  while (handledCPCount < inputLength) {\n    let m = maxInt;\n    for (const cp of points) if (cp >= n && cp < m) m = cp;\n\n    const handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne))\n      error(\"overflow\");\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (const cp of points) {\n      if (cp < n) delta++;\n      if (cp === n) {\n        let q = delta;\n        for (let k = base; ; k += base) {\n          const t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n          if (q < t) break;\n          output.push(\n            stringFromCharCode(digitToBasic(t + ((q - t) % (base - t)), 0))\n          );\n          q = floor((q - t) / (base - t));\n        }\n        output.push(stringFromCharCode(digitToBasic(q, 0)));\n        bias = adapt(\n          delta,\n          handledCPCountPlusOne,\n          handledCPCount === basicLength\n        );\n        delta = 0;\n        handledCPCount++;\n      }\n    }\n    delta++;\n    n++;\n  }\n\n  return output.join(\"\");\n}\n\n/** ---------------------------------------------------------\n * * ***Converts `Punycode-UtilsJS` to Unicode for domain names.***\n * ---------------------------------------------------------\n *\n * @param input - Domain or label.\n *\n * ---\n * @returns Unicode string.\n */\nfunction toUnicode(input: string): string {\n  assertIsString(input, {\n    message: ({ currentType, validType }) =>\n      createMessage(\n        \"punycodeUtilsJS.toUnicode\",\n        `Parameter \\`input\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n      )\n  });\n\n  return mapDomain(input, (str) =>\n    regexPunycode.test(str) ? decode(str.slice(4).toLowerCase()) : str\n  );\n}\n\n/** ---------------------------------------------------------\n * * ***Converts Unicode to ASCII (`Punycode-UtilsJS`) for domain names.***\n * ---------------------------------------------------------\n *\n * @param input - Domain or label.\n *\n * ---\n * @returns ASCII string.\n */\nfunction toASCII(input: string): string {\n  assertIsString(input, {\n    message: ({ currentType, validType }) =>\n      createMessage(\n        \"punycodeUtilsJS.toASCII\",\n        `Parameter \\`input\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n      )\n  });\n\n  return mapDomain(input, (str) =>\n    regexNonASCII.test(str) ? \"xn--\" + encode(str) : str\n  );\n}\n\ntype PunycodeUtilsJS = {\n  /** ---------------------------------------------------------\n   * * ***Version of the `Punycode-UtilsJS` implementation.***\n   * ---------------------------------------------------------\n   *\n   * @example\n   * console.log(punycodeUtilsJS.version); // \"1.0.0\"\n   */\n  version: string;\n  /** ---------------------------------------------------------\n   * * ***UCS-2 utility functions.***\n   * ---------------------------------------------------------\n   */\n  ucs2: {\n    /** ---------------------------------------------------------\n     * * ***Decodes a UCS-2 encoded string to an array of Unicode code points.***\n     * ---------------------------------------------------------\n     *\n     * @param input - The UCS-2 string to decode.\n     *\n     * ---\n     * @returns Array of Unicode code points.\n     *\n     * ---\n     * @example\n     * punycodeUtilsJS.ucs2.decode(\"𐍈\");\n     * // ➔ [66376]\n     */\n    decode: (input: string) => number[];\n    /** ---------------------------------------------------------\n     * * ***Encodes an array of Unicode code points to a UCS-2 string.***\n     * ---------------------------------------------------------\n     *\n     * @param points - Array of Unicode code points.\n     *\n     * ---\n     * @returns Encoded string.\n     *\n     * ---\n     * @example\n     * punycodeUtilsJS.ucs2.encode([66376]);\n     * // ➔ \"𐍈\"\n     */\n    encode: (points: number[]) => string;\n  };\n  /** ---------------------------------------------------------\n   * * ***Decodes a `Punycode-UtilsJS` string to a Unicode string.***\n   * ---------------------------------------------------------\n   *\n   * @param input - The `Punycode-UtilsJS` string to decode.\n   *\n   * ---\n   * @returns Decoded Unicode string.\n   *\n   * ---\n   * @example\n   * punycodeUtilsJS.decode(\"xn--fsq\");\n   * // ➔ \"ü\"\n   */\n  decode: (input: string) => string;\n  /** ---------------------------------------------------------\n   * * ***Encodes a Unicode string to `Punycode-UtilsJS`.***\n   * ---------------------------------------------------------\n   *\n   * @param input - Unicode string to encode.\n   *\n   * ---\n   * @returns `Punycode-UtilsJS` string.\n   *\n   * ---\n   * @example\n   * punycodeUtilsJS.encode(\"ü\");\n   * // ➔ \"xn--fsq\"\n   */\n  encode: (input: string) => string;\n  /** ---------------------------------------------------------\n   * * ***Converts a Unicode domain or label to ASCII (`Punycode-UtilsJS`).***\n   * ---------------------------------------------------------\n   *\n   * @param input - Domain or label string.\n   *\n   * ---\n   * @returns ASCII string suitable for DNS.\n   *\n   * ---\n   * @example\n   * punycodeUtilsJS.toASCII(\"пример.рф\");\n   * // ➔ \"xn--e1afmkfd.xn--p1ai\"\n   */\n  toASCII: (input: string) => string;\n  /** ---------------------------------------------------------\n   * * ***Converts an ASCII (`Punycode-UtilsJS`) domain or label to Unicode.***\n   * ---------------------------------------------------------\n   *\n   * @param input - ASCII string (with xn-- prefix if needed).\n   *\n   * ---\n   * @returns Unicode string.\n   *\n   * ---\n   * @example\n   * punycodeUtilsJS.toUnicode(\"xn--e1afmkfd.xn--p1ai\");\n   * // ➔ \"пример.рф\"\n   */\n  toUnicode: (input: string) => string;\n};\n\n/** ---------------------------------------------------------\n * * ***`Punycode-UtilsJS` object exposing all API functions and version.***\n * ---------------------------------------------------------\n * **Provides encoding and decoding of Unicode domain names to ASCII (`Punycode-UtilsJS`) and vice versa.**\n *\n * - Useful for `IDN` (**Internationalized Domain Names**) support.\n */\nconst punycodeUtilsJS: PunycodeUtilsJS = {\n  version: \"1.0.0\",\n  ucs2: {\n    decode: ucs2decode,\n    encode: ucs2encode\n  },\n  decode: decode,\n  encode: encode,\n  toASCII: toASCII,\n  toUnicode: toUnicode\n};\n\n/**\n * Export individual functions.\n */\nexport { punycodeUtilsJS };\n"],"mappings":"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"}
