{"version":3,"file":"formats.cjs","names":["alpha","hexdig","atom","localPart","letDig","ldhStr","subDomain","domain","decOctet","ipv4Address","h16","ls32","mailbox","domain","ucschar","alpha","hexdig","decOctet","h16","ls32","decOctet","ipV4Address","hexdig","decOctet","ipV4Address","h16","ls32","hexdig","pctEncoded","iprivate","isUri","isUriReference","isIri","isIriReference","Hyperjump.isUri","Hyperjump.isUriReference","Hyperjump.isIri","Hyperjump.isIriReference","jsonPointer"],"sources":["../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc3339.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc5321.js","../node_modules/.pnpm/punycode@2.3.1/node_modules/punycode/punycode.js","../node_modules/.pnpm/idn-hostname@15.1.8/node_modules/idn-hostname/idnaMappingTableCompact.json","../node_modules/.pnpm/idn-hostname@15.1.8/node_modules/idn-hostname/index.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc1123.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/uts46.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc6531.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc2673.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc4291.js","../node_modules/.pnpm/@hyperjump+uri@1.3.3/node_modules/@hyperjump/uri/lib/index.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc3986.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc3987.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc4122.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc6570.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/rfc6901.js","../node_modules/.pnpm/@hyperjump+json-schema-formats@1.0.1/node_modules/@hyperjump/json-schema-formats/src/draft-bhutton-relative-json-pointer-00.js","../src/formats/additionalFormats.ts"],"sourcesContent":["import { daysInMonth, hasLeapSecond } from \"./date-math.js\";\n\n/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst dateFullyear = `\\\\d{4}`;\nconst dateMonth = `(?:0[1-9]|1[0-2])`; // 01-12\nconst dateMday = `(?:0[1-9]|[12][0-9]|3[01])`; // 01-28, 01-29, 01-30, 01-31 based on month/year\nconst fullDate = `(?<year>${dateFullyear})-(?<month>${dateMonth})-(?<day>${dateMday})`;\n\nconst datePattern = new RegExp(`^${fullDate}$`);\n\n/** @type API.isDate */\nexport const isDate = (date) => {\n  const parsedDate = datePattern.exec(date)?.groups;\n  if (!parsedDate) {\n    return false;\n  }\n\n  const day = Number.parseInt(parsedDate.day, 10);\n  const year = Number.parseInt(parsedDate.year, 10);\n\n  return day <= daysInMonth(parsedDate.month, year);\n};\n\nconst timeHour = `(?:[01]\\\\d|2[0-3])`; // 00-23\nconst timeMinute = `[0-5]\\\\d`; // 00-59\nconst timeSecond = `[0-5]\\\\d`; // 00-59\nconst timeSecondAllowLeapSeconds = `(?<seconds>[0-5]\\\\d|60)`; // 00-58, 00-59, 00-60 based on leap second rules\nconst timeSecfrac = `\\\\.\\\\d+`;\nconst timeNumoffset = `[+-]${timeHour}:${timeMinute}`;\nconst timeOffset = `(?:[zZ]|${timeNumoffset})`;\nconst partialTime = `${timeHour}:${timeMinute}:${timeSecond}(?:${timeSecfrac})?`;\nconst fullTime = `${partialTime}${timeOffset}`;\n\n/**\n * @type API.isTime\n * @function\n */\nexport const isTime = RegExp.prototype.test.bind(new RegExp(`^${fullTime}$`));\n\nconst timePattern = new RegExp(`^${timeHour}:${timeMinute}:${timeSecondAllowLeapSeconds}(?:${timeSecfrac})?${timeOffset}$`);\n\n/** @type (time: string) => { seconds: string } | undefined */\nconst parseTime = (time) => {\n  return /** @type {{ seconds: string } | undefined} */ (timePattern.exec(time)?.groups);\n};\n\n/** @type API.isDateTime */\nexport const isDateTime = (dateTime) => {\n  const date = dateTime.substring(0, 10);\n  const t = dateTime[10];\n  const time = dateTime.substring(11);\n  const seconds = parseTime(time)?.seconds;\n\n  return isDate(date)\n    && /^t$/i.test(t)\n    && !!seconds\n    && (seconds !== \"60\" || hasLeapSecond(new Date(`${date}T${time.replace(\"60\", \"59\")}`)));\n};\n\nconst durSecond = `\\\\d+S`;\nconst durMinute = `\\\\d+M(?:${durSecond})?`;\nconst durHour = `\\\\d+H(?:${durMinute})?`;\nconst durTime = `T(?:${durHour}|${durMinute}|${durSecond})`;\nconst durDay = `\\\\d+D`;\nconst durWeek = `\\\\d+W`;\nconst durMonth = `\\\\d+M(?:${durDay})?`;\nconst durYear = `\\\\d+Y(?:${durMonth})?`;\nconst durDate = `(?:${durDay}|${durMonth}|${durYear})(?:${durTime})?`;\nconst duration = `P(?:${durDate}|${durTime}|${durWeek})`;\n\n/**\n * @type API.isDuration\n * @function\n */\nexport const isDuration = RegExp.prototype.test.bind(new RegExp(`^${duration}$`));\n","/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst alpha = `[a-zA-Z]`;\nconst hexdig = `[\\\\da-fA-F]`;\n\n// Printable US-ASCII characters not including specials.\nconst atext = `[\\\\w!#$%&'*+\\\\-/=?^\\`{|}~]`;\nconst atom = `${atext}+`;\nconst dotString = `${atom}(?:\\\\.${atom})*`;\n\n// Any ASCII graphic or space without blackslash-quoting except double-quote and the backslash itself.\nconst qtextSMTP = `[\\\\x20-\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]`;\n// backslash followed by any ASCII graphic or space\nconst quotedPairSMTP = `\\\\\\\\[\\\\x20-\\\\x7E]`;\nconst qcontentSMTP = `(?:${qtextSMTP}|${quotedPairSMTP})`;\nconst quotedString = `\"${qcontentSMTP}*\"`;\n\nconst localPart = `(?:${dotString}|${quotedString})`; // MAY be case-sensitive\n\nconst letDig = `(?:${alpha}|\\\\d)`;\nconst ldhStr = `(?:${letDig}|-)*${letDig}`;\nconst subDomain = `${letDig}${ldhStr}?`;\nconst domain = `${subDomain}(?:\\\\.${subDomain})*`;\n\nconst decOctet = `(?:\\\\d|[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])`;\nconst ipv4Address = `${decOctet}\\\\.${decOctet}\\\\.${decOctet}\\\\.${decOctet}`;\n\nconst h16 = `${hexdig}{1,4}`;\nconst ls32 = `(?:${h16}:${h16}|${ipv4Address})`;\nconst ipv6Address = `(?:(?:${h16}:){6}${ls32}|::(?:${h16}:){5}${ls32}|(?:${h16})?::(?:${h16}:){4}${ls32}|(?:(?:${h16}:){0,1}${h16})?::(?:${h16}:){3}${ls32}|(?:(?:${h16}:){0,2}${h16})?::(?:${h16}:){2}${ls32}|(?:(?:${h16}:){0,3}${h16})?::(?:${h16}:){1}${ls32}|(?:(?:${h16}:){0,4}${h16})?::${ls32}|(?:(?:${h16}:){0,5}${h16})?::${h16}|(?:(?:${h16}:){0,6}${h16})?::)`;\nconst ipv6AddressLiteral = `IPv6:${ipv6Address}`;\n\nconst dcontent = `[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]`; // Printable US-ASCII excluding \"[\", \"\\\", \"]\"\nconst generalAddressLiteral = `${ldhStr}:${dcontent}+`;\n\nconst addressLiteral = `\\\\[(?:${ipv4Address}|${ipv6AddressLiteral}|${generalAddressLiteral})]`;\n\nconst mailbox = `${localPart}@(?:${domain}|${addressLiteral})`;\n\n/**\n * @type API.isEmail\n * @function\n */\nexport const isEmail = RegExp.prototype.test.bind(new RegExp(`^${mailbox}$`));\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n","","'use strict';\r\n// IDNA2008 validator using idnaMappingTableCompact.json\r\nconst punycode = require('punycode/');\r\nconst { props, viramas, ranges, mappings, bidi_ranges, joining_type_ranges } = require('./idnaMappingTableCompact.json');\r\n// --- Error classes (short messages; RFC refs included in message) ---\r\nconst throwIdnaContextJError = (msg) => { throw Object.assign(new SyntaxError(msg), { name: \"IdnaContextJError\" }); };\r\nconst throwIdnaContextOError = (msg) => { throw Object.assign(new SyntaxError(msg), { name: \"IdnaContextOError\" }); };\r\nconst throwIdnaUnicodeError = (msg) => { throw Object.assign(new SyntaxError(msg), { name: \"IdnaUnicodeError\" }); };\r\nconst throwIdnaLengthError = (msg) => { throw Object.assign(new SyntaxError(msg), { name: \"IdnaLengthError\" }); };\r\nconst throwIdnaSyntaxError = (msg) => { throw Object.assign(new SyntaxError(msg), { name: \"IdnaSyntaxError\" }); };\r\nconst throwPunycodeError = (msg) => { throw Object.assign(new SyntaxError(msg), { name: \"PunycodeError\" }); };\r\nconst throwIdnaBidiError = (msg) => { throw Object.assign(new SyntaxError(msg), { name: \"IdnaBidiError\" }); };\r\n// --- constants ---\r\nconst ZWNJ = 0x200c;\r\nconst ZWJ = 0x200d;\r\nconst MIDDLE_DOT = 0x00b7;\r\nconst GREEK_KERAIA = 0x0375;\r\nconst KATAKANA_MIDDLE_DOT = 0x30fb;\r\nconst HEBREW_GERESH = 0x05f3;\r\nconst HEBREW_GERSHAYIM = 0x05f4;\r\n// Viramas (used for special ZWJ/ZWNJ acceptance)\r\nconst VIRAMAS = new Set(viramas);\r\n// binary range lookup\r\nfunction getRange(range, key) {\r\n    if (!Array.isArray(range) || range.length === 0) return null;\r\n    let lb = 0;\r\n    let ub = range.length - 1;\r\n    while (lb <= ub) {\r\n        const mid = (lb + ub) >> 1;\r\n        const r = range[mid];\r\n        if (key < r[0]) ub = mid - 1;\r\n        else if (key > r[1]) lb = mid + 1;\r\n        else return r[2];\r\n    }\r\n    return null;\r\n}\r\n// mapping label (disallowed chars were removed from ranges, so undefined means disallowed or unassigned)\r\nfunction uts46map(label) {\r\n    const mappedCps = [];\r\n    for (let i = 0; i < label.length; ) {\r\n        const cp = label.codePointAt(i);\r\n        const prop = props[getRange(ranges, cp)];\r\n        const maps = mappings[String(cp)];\r\n        // mapping cases\r\n        if (prop === 'mapped' && Array.isArray(maps) && maps.length) {\r\n            for (const mcp of maps) mappedCps.push(mcp);\r\n        } else if (prop === 'valid' || prop === 'deviation') {\r\n            mappedCps.push(cp);\r\n        } else if (prop === 'ignored') {\r\n            // drop\r\n        } else {\r\n            throwIdnaUnicodeError(`${cpHex(cp)} is disallowed in hostname (RFC 5892, UTS #46).`);\r\n        }\r\n        i += cp > 0xffff ? 2 : 1;\r\n    }\r\n    // mapped → label\r\n    return String.fromCodePoint(...mappedCps);\r\n}\r\n// --- helpers ---\r\nfunction cpHex(cp) {\r\n    return `char '${String.fromCodePoint(cp)}' ` + JSON.stringify('(U+' + cp.toString(16).toUpperCase().padStart(4, '0') + ')');\r\n}\r\n// main validator\r\nfunction isIdnHostname(hostname) {\r\n    // basic hostname checks\r\n    if (typeof hostname !== 'string') throwIdnaSyntaxError('Label must be a string (RFC 5890 §2.3.2.3).');\r\n    // split hostname in labels by the separators defined in uts#46 §2.3\r\n    const rawLabels = hostname.split(/[\\x2E\\uFF0E\\u3002\\uFF61]/);\r\n    if (rawLabels.some((label) => label.length === 0)) throwIdnaLengthError('Label cannot be empty (consecutive or leading/trailing dot) (RFC 5890 §2.3.2.3).');\r\n    // checks per label (IDNA is defined for labels, not for parts of them and not for complete domain names. RFC 5890 §2.3.2.1)\r\n    let aceHostnameLength = 0;\r\n    for (const rawLabel of rawLabels) {\r\n        // ACE label (xn--) validation: decode and re-encode must match\r\n        let label = rawLabel;\r\n        if (/^xn--/i.test(rawLabel)) {\r\n            if (/[^\\p{ASCII}]/u.test(rawLabel)) throwIdnaSyntaxError(`A-label '${rawLabel}' cannot contain non-ASCII character(s) (RFC 5890 §2.3.2.1).`);\r\n            const aceBody = rawLabel.slice(4);\r\n            try {\r\n                label = punycode.decode(aceBody);\r\n            } catch (e) {\r\n                throwPunycodeError(`Invalid ASCII Compatible Encoding (ACE) of label '${rawLabel}' (RFC 5891 §4.4 → RFC 3492).`);\r\n            }\r\n            if (!/[^\\p{ASCII}]/u.test(label)) throwIdnaSyntaxError(`decoded A-label '${rawLabel}' result U-label '${label}' cannot be empty or all-ASCII character(s) (RFC 5890 §2.3.2.1).`);\r\n            if (punycode.encode(label) !== aceBody) throwPunycodeError(`Re-encode mismatch for ASCII Compatible Encoding (ACE) label '${rawLabel}' (RFC 5891 §4.4 → RFC 3492).`);\r\n        }\r\n        // mapping phase (here because decoded A-label may contain disallowed chars)\r\n        label = uts46map(label).normalize('NFC');\r\n        // final ACE label lenght accounting\r\n        let aceLabel;\r\n        try {\r\n            aceLabel = /[^\\p{ASCII}]/u.test(label) ? punycode.toASCII(label) : label;\r\n        } catch (e) {\r\n            throwPunycodeError(`ASCII conversion failed for '${label}' (RFC 3492).`);\r\n        }\r\n        if (aceLabel.length > 63) throwIdnaLengthError('Final ASCII Compatible Encoding (ACE) label cannot exceed 63 bytes (RFC 5890 §2.3.2.1).');\r\n        aceHostnameLength += aceLabel.length + 1;\r\n        // hyphen rules (the other one is covered by bidi)\r\n        if (/^-|-$/.test(label)) throwIdnaSyntaxError('Label cannot begin or end with hyphen-minus (RFC 5891 §4.2.3.1).');\r\n        if (label.indexOf('--') === 2) throwIdnaSyntaxError('Label cannot contain consecutive hyphen-minus in the 3rd and 4th positions (RFC 5891 §4.2.3.1).');\r\n        // leading combining marks check (some are not covered by bidi)\r\n        if (/^\\p{M}$/u.test(String.fromCodePoint(label.codePointAt(0)))) throwIdnaSyntaxError(`Label cannot begin with combining/enclosing mark ${cpHex(label.codePointAt(0))} (RFC 5891 §4.2.3.2).`);\r\n        // spread cps for context and bidi checks\r\n        const cps = Array.from(label).map((char) => char.codePointAt(0));\r\n        let joinTypes = '';\r\n        let digits = '';\r\n        let bidiClasses = [];\r\n        // per-codepoint contextual checks\r\n        for (let j = 0; j < cps.length; j++) {\r\n            const cp = cps[j];\r\n            // check ContextJ ZWNJ (uses joining types and virama rule)\r\n            if (cps.includes(ZWNJ)) {\r\n                joinTypes += VIRAMAS.has(cp) ? 'V' : cp === ZWNJ ? 'Z' : getRange(joining_type_ranges, cp) || 'U';\r\n                if (j === cps.length - 1 && /(?![LD][T]*)(?<!V)Z(?![T]*[RD])/.test(joinTypes)) throwIdnaContextJError(`char ${JSON.stringify('U+200C')} (ZWNJ) has invalid join context: '${joinTypes}' (RFC 5892 Appendix A.1).`);\r\n            }\r\n            // check ContextJ ZWJ (must be preceded by virama)\r\n            if (cp === ZWJ) {\r\n                if (j === 0 || !VIRAMAS.has(cps[j - 1])) {\r\n                    throwIdnaContextJError(`${cpHex(cp)} cannot appear at start or without a Virama before (RFC 5892 Appendix A.2).`);\r\n                }\r\n            }\r\n            // check ContextO MIDDLE_DOT\r\n            if (cp === MIDDLE_DOT) {\r\n                if (j === 0 || j === cps.length - 1 || !(cps[j - 1] === 0x6c && cps[j + 1] === 0x6c)) throwIdnaContextOError(`${cpHex(cp)} must be between two ASCII 'l' characters (RFC 5892 A.3).`);\r\n            }\r\n            // check ContextO GREEK_KERAIA, must be followed by a Greek character (next non-spacing mark)\r\n            if (cp === GREEK_KERAIA) {\r\n                if (!/^\\p{Mn}*\\p{sc=Greek}$/u.test(String.fromCodePoint(...cps.slice(j + 1)))) throwIdnaContextOError(`${cpHex(cp)} must be followed by Greek script (RFC 5892 A.4).`);\r\n            }\r\n            //  check ContextO HEBREW_GERESH and HEBREW_GERSHAYIM\r\n            if (cp === HEBREW_GERESH || cp === HEBREW_GERSHAYIM) {\r\n                if (j === 0 || !/^\\p{sc=Hebrew}$/u.test(String.fromCodePoint(cps[j - 1]))) throwIdnaContextOError(`${cpHex(cp)} must be preceded by Hebrew script (RFC 5892 A.5/A.6).`);\r\n            }\r\n            // check ContextO KATAKANA_MIDDLE_DOT, allowed only if label contains at least one Hiragana / Katakana / Han character\r\n            if (cp === KATAKANA_MIDDLE_DOT) {\r\n                if (!/[\\p{sc=Hiragana}\\p{sc=Katakana}\\p{sc=Han}]/u.test(String.fromCodePoint(...cps))) {\r\n                    throwIdnaContextOError(`${cpHex(cp)} requires at least one Hiragana/Katakana/Han in the label (RFC 5892 Appendix A.7).`);\r\n                }\r\n            }\r\n            // check mixed digit sets\r\n            if ((cp >= 0x0660 && cp <= 0x0669) || (cp >= 0x06f0 && cp <= 0x06f9)) digits += (cp < 0x06f0 ? 'a' : 'e' );\r\n            if (j === cps.length - 1 && /^(?=.*a)(?=.*e).*$/.test(digits)) throwIdnaContextOError('Arabic-Indic digits cannot be mixed with Extended Arabic-Indic digits (RFC 5892 Appendix A.8/A.9).');\r\n            // validate bidi\r\n            bidiClasses.push(getRange(bidi_ranges, cp));\r\n            if (j === cps.length - 1 && (bidiClasses.includes('R') || bidiClasses.includes('AL'))) {\r\n                // order of chars in label (RFC 5890 §2.3.3)\r\n                if (bidiClasses[0] === 'R' || bidiClasses[0] === 'AL') {\r\n                    for (let cls of bidiClasses) if (!['R', 'AL', 'AN', 'EN', 'ET', 'ES', 'CS', 'ON', 'BN', 'NSM'].includes(cls)) throwIdnaBidiError(`'${label}' breaks rule #2: Only R, AL, AN, EN, ET, ES, CS, ON, BN, NSM allowed in label (RFC 5893 §2.2)`);\r\n                    if (!/(R|AL|EN|AN)(NSM)*$/.test(bidiClasses.join(''))) throwIdnaBidiError(`'${label}' breaks rule #3: label must end with R, AL, EN, or AN, followed by zero or more NSM (RFC 5893 §2.3)`);\r\n                    if (bidiClasses.includes('EN') && bidiClasses.includes('AN')) throwIdnaBidiError(`'${label}' breaks rule #4: EN and AN cannot be mixed in the same label (RFC 5893 §2.4)`);\r\n                } else if (bidiClasses[0] === 'L') {\r\n                    for (let cls of bidiClasses) if (!['L', 'EN', 'ET', 'ES', 'CS', 'ON', 'BN', 'NSM'].includes(cls)) throwIdnaBidiError(`'${label}' breaks rule #5: Only L, EN, ET, ES, CS, ON, BN, NSM allowed in label (RFC 5893 §2.5)`);\r\n                    if (!/(L|EN)(NSM)*$/.test(bidiClasses.join(''))) throwIdnaBidiError(`'${label}' breaks rule #6: label must end with L or EN, followed by zero or more NSM (RFC 5893 §2.6)`);\r\n                } else {\r\n                    throwIdnaBidiError(`'${label}' breaks rule #1: label must start with L or R or AL (RFC 5893 §2.1)`);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (aceHostnameLength - 1 > 253) throwIdnaLengthError('Final ASCII Compatible Encoding (ACE) hostname cannot exceed 253 bytes (RFC 5890 → RFC 1034 §3.1).');\r\n    return true;\r\n}\r\n// return ACE hostname if valid\r\nconst idnHostname = (string) =>\r\n    isIdnHostname(string) &&\r\n    punycode.toASCII(\r\n        string\r\n            .split('.')\r\n            .map((label) => uts46map(label).normalize('NFC'))\r\n            .join('.')\r\n    );\r\n// export\r\nmodule.exports = { isIdnHostname, idnHostname, uts46map, punycode };\r\n","/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst label = `(?!-)[A-Za-z0-9-]{1,63}(?<!-)`;\nconst domain = `${label}(?:\\\\.${label})*`;\n\nconst domainPattern = new RegExp(`^${domain}$`);\n\n/** @type API.isHostname */\nexport const isHostname = (hostname) => {\n  return domainPattern.test(hostname) && hostname.length < 256;\n};\n","import { isIdnHostname } from \"idn-hostname\";\nimport { isHostname } from \"./rfc1123.js\";\n\n/**\n * @import * as API from \"./index.d.ts\"\n */\n\n/** @type API.isAsciiIdn */\nexport const isAsciiIdn = (hostname) => {\n  return isHostname(hostname) && isIdn(hostname);\n};\n\n/** @type API.isIdn */\nexport const isIdn = (hostname) => {\n  try {\n    return isIdnHostname(hostname);\n  } catch (_error) {\n    return false;\n  }\n};\n","import { isIdn } from \"./uts46.js\";\n\n/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst ucschar = `[\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}]`;\n\nconst alpha = `[a-zA-Z]`;\nconst hexdig = `[\\\\da-fA-F]`;\n\n// Printable US-ASCII characters not including specials.\nconst atext = `(?:[\\\\w!#$%&'*+\\\\-/=?^\\`{|}~]|${ucschar})`;\nconst atom = `${atext}+`;\nconst dotString = `${atom}(?:\\\\.${atom})*`;\n\n// Any ASCII graphic or space without blackslash-quoting except double-quote and the backslash itself.\nconst qtextSMTP = `(?:[\\\\x20-\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]|${ucschar})`;\n// backslash followed by any ASCII graphic or space\nconst quotedPairSMTP = `\\\\\\\\[\\\\x20-\\\\x7E]`;\nconst qcontentSMTP = `(?:${qtextSMTP}|${quotedPairSMTP})`;\nconst quotedString = `\"${qcontentSMTP}*\"`;\n\nconst localPart = `(?:${dotString}|${quotedString})`; // MAY be case-sensitive\n\nconst letDig = `(?:${alpha}|\\\\d)`;\nconst ldhStr = `(?:${letDig}|-)*${letDig}`;\nconst letDigUcs = `(?:${alpha}|\\\\d|${ucschar})`;\nconst ldhStrUcs = `(?:${letDigUcs}|-)*${letDigUcs}`;\nconst subDomain = `${letDigUcs}${ldhStrUcs}?`;\nconst domain = `${subDomain}(?:\\\\.${subDomain})*`;\n\nconst decOctet = `(?:\\\\d|[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])`;\nconst ipv4Address = `${decOctet}\\\\.${decOctet}\\\\.${decOctet}\\\\.${decOctet}`;\n\nconst h16 = `${hexdig}{1,4}`;\nconst ls32 = `(?:${h16}:${h16}|${ipv4Address})`;\nconst ipv6Address = `(?:(?:${h16}:){6}${ls32}|::(?:${h16}:){5}${ls32}|(?:${h16})?::(?:${h16}:){4}${ls32}|(?:(?:${h16}:){0,1}${h16})?::(?:${h16}:){3}${ls32}|(?:(?:${h16}:){0,2}${h16})?::(?:${h16}:){2}${ls32}|(?:(?:${h16}:){0,3}${h16})?::(?:${h16}:){1}${ls32}|(?:(?:${h16}:){0,4}${h16})?::${ls32}|(?:(?:${h16}:){0,5}${h16})?::${h16}|(?:(?:${h16}:){0,6}${h16})?::)`;\nconst ipv6AddressLiteral = `IPv6:${ipv6Address}`;\n\nconst dcontent = `[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]`; // Printable US-ASCII excluding \"[\", \"\\\", \"]\"\nconst generalAddressLiteral = `${ldhStr}:${dcontent}+`;\n\nconst addressLiteral = `\\\\[(?:${ipv4Address}|${ipv6AddressLiteral}|${generalAddressLiteral})\\\\]`;\n\nconst mailbox = `(?<localPart>${localPart})@(?:(?<ip>${addressLiteral})|(?<domain>${domain}))`;\n\nconst mailboxPattern = new RegExp(`^${mailbox}$`, \"u\");\n\n/** @type API.isIdnEmail */\nexport const isIdnEmail = (email) => {\n  const parsedEmail = mailboxPattern.exec(email)?.groups;\n\n  return !!parsedEmail && (!parsedEmail.domain || isIdn(parsedEmail.domain));\n};\n","/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst decOctet = `(?:\\\\d|[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])`;\nconst ipV4Address = `${decOctet}\\\\.${decOctet}\\\\.${decOctet}\\\\.${decOctet}`;\n\n/**\n * @type API.isIPv4\n * @function\n */\nexport const isIPv4 = RegExp.prototype.test.bind(new RegExp(`^${ipV4Address}$`));\n","/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst hexdig = `[a-fA-F0-9]`;\n\nconst decOctet = `(?:\\\\d|[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])`;\nconst ipV4Address = `${decOctet}\\\\.${decOctet}\\\\.${decOctet}\\\\.${decOctet}`;\n\nconst h16 = `${hexdig}{1,4}`;\nconst ls32 = `(?:${h16}:${h16}|${ipV4Address})`;\nconst ipV6Address = `(?:(?:${h16}:){6}${ls32}|::(?:${h16}:){5}${ls32}|(?:${h16})?::(?:${h16}:){4}${ls32}|(?:(?:${h16}:){0,1}${h16})?::(?:${h16}:){3}${ls32}|(?:(?:${h16}:){0,2}${h16})?::(?:${h16}:){2}${ls32}|(?:(?:${h16}:){0,3}${h16})?::(?:${h16}:){1}${ls32}|(?:(?:${h16}:){0,4}${h16})?::${ls32}|(?:(?:${h16}:){0,5}${h16})?::${h16}|(?:(?:${h16}:){0,6}${h16})?::)`;\n\n/**\n * @type API.isIPv6\n * @function\n */\nexport const isIPv6 = RegExp.prototype.test.bind(new RegExp(`^${ipV6Address}$`));\n","/**\n * @import * as API from \"./index.d.ts\"\n */\n\n/**\n * @template A\n * @typedef {(value: string) => A} Parser\n */\n\n/**\n * @typedef {(value: string) => string} Normalizer\n */\n\n/**\n * @typedef {{\n *   parseAbsolute: Parser<API.AbsoluteIdentifierComponents>;\n *   parseReference: Parser<API.RelativeIdentifierComponents>;\n *   parse: Parser<API.IdentifierComponents>;\n *   normalizePath: Normalizer;\n *   normalizeQuery: Normalizer;\n *   normalizeFragment: Normalizer;\n * }} Strategy\n */\n\n// Common\nconst hexdig = `[a-fA-F0-9]`;\nconst unreserved = `[a-zA-Z0-9-._~]`;\nconst subDelims = `[!$&'()*+,;=]`;\nconst pctEncoded = `%${hexdig}${hexdig}`;\n\nconst decOctet = `(?:\\\\d|[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])`;\nconst ipV4Address = `${decOctet}\\\\.${decOctet}\\\\.${decOctet}\\\\.${decOctet}`;\nconst h16 = `${hexdig}{1,4}`;\nconst ls32 = `(?:${h16}:${h16}|${ipV4Address})`;\nconst ipV6Address = `(?:(?:${h16}:){6}${ls32}|::(?:${h16}:){5}${ls32}|(?:${h16})?::(?:${h16}:){4}${ls32}|(?:(?:${h16}:){0,1}${h16})?::(?:${h16}:){3}${ls32}|(?:(?:${h16}:){0,2}${h16})?::(?:${h16}:){2}${ls32}|(?:(?:${h16}:){0,3}${h16})?::(?:${h16}:){1}${ls32}|(?:(?:${h16}:){0,4}${h16})?::${ls32}|(?:(?:${h16}:){0,5}${h16})?::${h16}|(?:(?:${h16}:){0,6}${h16})?::)`;\nconst ipVFuture = `v${hexdig}+\\\\.(?:${unreserved}|${subDelims}|:)+`;\nconst ipLiteral = `\\\\[(?:${ipV6Address}|${ipVFuture})\\\\]`;\nconst scheme = `(?<scheme>[a-zA-Z][a-zA-Z0-9-+.]*)`;\nconst port = `:(?<port>\\\\d*)`;\n\n// URI\nconst regName = `(?:${unreserved}|${pctEncoded}|${subDelims})*?`;\nconst host = `(?<host>${ipLiteral}|${ipV4Address}|${regName})`;\nconst userinfo = `(?<userinfo>(?:${unreserved}|${pctEncoded}|${subDelims}|:)*)`;\nconst pchar = `(?:${unreserved}|${pctEncoded}|${subDelims}|:|@)`;\nconst segment = `${pchar}*?`;\nconst pathAbEmpty = `(?:/${segment})*`;\n\nconst authority = `(?<authority>(?:${userinfo}@)?${host}(?:${port})?)`;\nconst path = `(?<path>${pathAbEmpty})`;\nconst pathWithoutAuthority = `(?<path2>(?!//)${segment}${pathAbEmpty})`;\nconst query = `(?:\\\\?(?<query>(?:${pchar}|/|\\\\?)*))?`;\nconst fragment = `(?:#(?<fragment>(?:${pchar}|/|\\\\?)*))?`;\n\nconst uri = `^${scheme}:(?://${authority}${path}|${pathWithoutAuthority})${query}${fragment}$`;\nconst uriReference = `^(?:${scheme}:|)(?://${authority}${path}|${pathWithoutAuthority})${query}${fragment}$`;\nconst absoluteUri = `^${scheme}:(?://${authority}${path}|${pathWithoutAuthority})${query}$`;\n\n// IRI\nconst iunreserved = `[a-zA-Z0-9\\\\-._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}]`;\nconst iprivate = `[\\\\u{E000}-\\\\u{F8FF}\\\\u{F0000}-\\\\u{FFFFD}\\\\u{100000}-\\\\u{10FFFD}]`;\n\nconst iregName = `(?:${iunreserved}|${pctEncoded}|${subDelims})*?`;\nconst ihost = `(?<host>${ipLiteral}|${ipV4Address}|${iregName})`;\nconst iuserinfo = `(?<userinfo>(?:${iunreserved}|${pctEncoded}|${subDelims}|:)*)`;\nconst ipchar = `(?:${iunreserved}|${pctEncoded}|${subDelims}|:|@)`;\nconst isegment = `${ipchar}*?`;\nconst ipathAbEmpty = `(?:/${isegment})*`;\n\nconst iauthority = `(?<authority>(?:${iuserinfo}@)?${ihost}(?:${port})?)`;\nconst ipath = `(?<path>${ipathAbEmpty})`;\nconst ipathWithoutAuthority = `(?<path2>(?!//)${isegment}${ipathAbEmpty})`;\nconst iquery = `(?:\\\\?(?<query>(?:${ipchar}|${iprivate}|/|\\\\?)*))?`;\nconst ifragment = `(?:#(?<fragment>(?:${ipchar}|/|\\\\?)*))?`;\n\nconst iri = `^${scheme}:(?://${iauthority}${ipath}|${ipathWithoutAuthority})${iquery}${ifragment}$`;\nconst iriReference = `^(?:${scheme}:|)(?://${iauthority}${ipath}|${ipathWithoutAuthority})${iquery}${ifragment}$`;\nconst absoluteIri = `^${scheme}:(?://${iauthority}${ipath}|${ipathWithoutAuthority})${iquery}$`;\n\n// Components\n/** @type (strategy: Strategy) => (reference: string, base: string) => string */\nconst resolveReference = (strategy) => (reference, base) => {\n  const resolvedComponents = /** @type API.IdentifierComponents */ (strategy.parseReference(reference));\n\n  if (resolvedComponents.scheme === undefined) {\n    const baseComponents = strategy.parseAbsolute(base);\n    resolvedComponents.scheme = baseComponents.scheme;\n\n    if (resolvedComponents.authority === undefined) {\n      resolvedComponents.authority = baseComponents.authority;\n      resolvedComponents.userinfo = baseComponents.userinfo;\n      resolvedComponents.host = baseComponents.host;\n      resolvedComponents.port = baseComponents.port;\n\n      if (resolvedComponents.path === \"\") {\n        resolvedComponents.path = baseComponents.path;\n\n        resolvedComponents.query ??= baseComponents.query;\n      } else if (!resolvedComponents.path.startsWith(\"/\")) {\n        resolvedComponents.path = mergePaths(resolvedComponents.path, baseComponents);\n      }\n    }\n  }\n\n  return composeIdentifier(strategy, resolvedComponents);\n};\n\n/** @type (path: string, base: API.IdentifierComponents) => string */\nconst mergePaths = (path, base) => {\n  if (base.authority && base.path === \"\") {\n    return \"/\" + path;\n  } else {\n    const position = base.path.lastIndexOf(\"/\");\n    return position === -1 ? path : base.path.slice(0, position + 1) + path;\n  }\n};\n\nconst isNoOpSegment = /^\\.?\\.\\/|^\\.\\.?$/;\nconst isSlashDotSegment = /^\\/\\.(?:\\/|$)/;\nconst isUpSegment = /^\\/\\.\\.(?:\\/|$)/;\n\n/** @type (path: string) => string */\nconst removeDotSegments = (path) => {\n  let output = \"\";\n\n  while (path.length > 0) {\n    if (isNoOpSegment.test(path)) {\n      path = removeSegment(path);\n    } else if (isSlashDotSegment.test(path)) {\n      path = replaceSegmentWithSlash(path);\n    } else if (isUpSegment.test(path)) {\n      path = replaceSegmentWithSlash(path);\n      output = removeLastSegment(output);\n    } else {\n      const segment = getSegment(path);\n      path = removeSegment(path);\n      output += segment;\n    }\n  }\n\n  return output;\n};\n\n/** @type (path: string) => string */\nconst removeSegment = (path) => {\n  const position = path.indexOf(\"/\", 1);\n  return position === -1 ? \"\" : \"/\" + path.slice(position + 1);\n};\n\n/** @type (path: string) => string */\nconst replaceSegmentWithSlash = (path) => {\n  const position = path.indexOf(\"/\", 1);\n  return position === -1 ? \"/\" : \"/\" + path.slice(position + 1);\n};\n\n/** @type (path: string) => string */\nconst removeLastSegment = (path) => {\n  const position = path.lastIndexOf(\"/\");\n  return position === -1 ? path : path.slice(0, position);\n};\n\n/** @type (path: string) => string */\nconst getSegment = (path) => {\n  const position = path.indexOf(\"/\", 1);\n  return position === -1 ? path : path.slice(0, position);\n};\n\n/** @type (strategy: Strategy, components: API.IdentifierComponents) => string */\nconst composeIdentifier = (strategy, components) => {\n  let resolved = components.scheme.toLowerCase() + \":\";\n  resolved += components.authority === undefined ? \"\" : \"//\"\n    + (components.userinfo === undefined ? \"\" : components.userinfo + \"@\")\n    + components.host.toLowerCase()\n    + (components.port === undefined ? \"\" : \":\" + components.port);\n  resolved += strategy.normalizePath(components.path);\n  resolved += components.query === undefined ? \"\" : \"?\" + strategy.normalizeQuery(components.query);\n  resolved += components.fragment === undefined ? \"\" : \"#\" + strategy.normalizeFragment(components.fragment);\n\n  return resolved;\n};\n\nconst percentEncoded = new RegExp(pctEncoded, \"g\");\n\n/** @type (isAllowed: (value: string) => boolean) => (match: string) => string */\nconst percentEncodedToChar = (isAllowed) => (match) => {\n  const charCode = parseInt(match.slice(1), 16);\n  const char = String.fromCharCode(charCode);\n\n  return isAllowed(char) ? char : match.toUpperCase();\n};\n\nconst isAllowedUnescapedInPath = RegExp.prototype.test.bind(new RegExp(`${unreserved}|${subDelims}|[:@]`));\nconst isAllowedUnescapedInIPath = RegExp.prototype.test.bind(new RegExp(`${iunreserved}|${subDelims}|[:@]`, \"u\"));\n\n/** @type (isAllowed: (value: string) => boolean) => (segment: string) => string */\nconst normalizePath = (isAllowed) => (segment) => removeDotSegments(segment).replaceAll(percentEncoded, percentEncodedToChar(isAllowed));\n\nconst isAllowedUnescapedInQuery = RegExp.prototype.test.bind(new RegExp(`${unreserved}|${subDelims}|[:@/?]`));\nconst isAllowedUnescapedInIQuery = RegExp.prototype.test.bind(new RegExp(`${iunreserved}|${subDelims}|[:@/?]`, \"u\"));\n\n/** @type (isAllowed: (value: string) => boolean) => (segment: string) => string */\nconst normalizeQuery = (isAllowed) => (query) => query.replaceAll(percentEncoded, percentEncodedToChar(isAllowed));\n\n// API\n/** @type API.isUri */\nexport const isUri = RegExp.prototype.test.bind(new RegExp(uri));\n/** @type API.isUriReference */\nexport const isUriReference = RegExp.prototype.test.bind(new RegExp(uriReference));\n/** @type API.isAbsoluteUri */\nexport const isAbsoluteUri = RegExp.prototype.test.bind(new RegExp(absoluteUri));\n\n/** @type API.isIri */\nexport const isIri = RegExp.prototype.test.bind(new RegExp(iri, \"u\"));\n/** @type API.isIriReference */\nexport const isIriReference = RegExp.prototype.test.bind(new RegExp(iriReference, \"u\"));\n/** @type API.isAbsoluteIri */\nexport const isAbsoluteIri = RegExp.prototype.test.bind(new RegExp(absoluteIri, \"u\"));\n\n/**\n * @type (pattern: RegExp, type: string) => (value: string) => any\n */\nconst createParser = (pattern, type) => (value) => {\n  const match = pattern.exec(value);\n  if (match === null) {\n    throw Error(`Invalid ${type}: ${value}`);\n  }\n  const groups = /** @type Record<string, string> */ (match.groups);\n  if (groups.authority === undefined) {\n    groups.path = groups.path2;\n  }\n  delete groups.path2;\n\n  return groups;\n};\n\n/** @type API.parseUri */\nexport const parseUri = createParser(new RegExp(uri), \"URI\");\n/** @type API.parseUriReference */\nexport const parseUriReference = createParser(new RegExp(uriReference), \"URI-reference\");\n/** @type API.parseAbsoluteUri */\nexport const parseAbsoluteUri = createParser(new RegExp(absoluteUri), \"absolute-URI\");\n\n/** @type API.parseIri */\nexport const parseIri = createParser(new RegExp(iri, \"u\"), \"IRI\");\n/** @type API.parseIriReference */\nexport const parseIriReference = createParser(new RegExp(iriReference, \"u\"), \"IRI-reference\");\n/** @type API.parseAbsoluteIri */\nexport const parseAbsoluteIri = createParser(new RegExp(absoluteIri, \"u\"), \"absolute-IRI\");\n\n/** @type Record<string, Strategy> */\nconst strategies = {\n  uri: {\n    parseAbsolute: parseAbsoluteUri,\n    parseReference: parseUriReference,\n    parse: parseUri,\n    normalizePath: normalizePath(isAllowedUnescapedInPath),\n    normalizeQuery: normalizeQuery(isAllowedUnescapedInQuery),\n    normalizeFragment: normalizeQuery(isAllowedUnescapedInQuery)\n  },\n  iri: {\n    parseAbsolute: parseAbsoluteIri,\n    parseReference: parseIriReference,\n    parse: parseIri,\n    normalizePath: normalizePath(isAllowedUnescapedInIPath),\n    normalizeQuery: normalizeQuery(isAllowedUnescapedInIQuery),\n    normalizeFragment: normalizeQuery(isAllowedUnescapedInIQuery)\n  }\n};\n\n/** @type (strategy: Strategy) => (identifier: string) => string */\nconst toAbsolute = (strategy) => (identifier) => {\n  const components = strategy.parse(identifier);\n  delete components.fragment;\n  return composeIdentifier(strategy, components);\n};\n\n/** @type API.toAbsoluteUri */\nexport const toAbsoluteUri = toAbsolute(strategies.uri);\n/** @type API.toAbsoluteIri */\nexport const toAbsoluteIri = toAbsolute(strategies.iri);\n\n/** @type (strategy: Strategy) => (identifier: string) => string */\nconst normalize = (strategy) => (identifier) => {\n  const components = strategy.parse(identifier);\n  return composeIdentifier(strategy, components);\n};\n\n/** @type API.normalizeUri */\nexport const normalizeUri = normalize(strategies.uri);\n/** @type API.normalizeIri */\nexport const normalizeIri = normalize(strategies.iri);\n\n/** @type API.resolveUri */\nexport const resolveUri = resolveReference(strategies.uri);\n/** @type API.resolveIri */\nexport const resolveIri = resolveReference(strategies.iri);\n\n/** @type (strategy: Strategy) => (uri: string, relativeTo: string) => string */\nconst toRelative = (strategy) => (uri, relativeTo) => {\n  const fromUri = strategy.parseAbsolute(uri);\n  const toUri = strategy.parse(relativeTo);\n\n  if (toUri.scheme !== fromUri.scheme) {\n    return relativeTo;\n  }\n\n  if (toUri.authority !== fromUri.authority) {\n    return relativeTo;\n  }\n\n  let result;\n\n  if (fromUri.path === toUri.path) {\n    result = \"\";\n  } else {\n    const fromSegments = fromUri.path.split(\"/\");\n    const toSegments = toUri.path.split(\"/\");\n\n    let position = 0;\n    while (fromSegments[position] === toSegments[position] && position < fromSegments.length - 1 && position < toSegments.length - 1) {\n      position++;\n    }\n\n    const segments = [];\n    for (let index = position + 1; index < fromSegments.length; index++) {\n      segments.push(\"..\");\n    }\n\n    for (let index = position; index < toSegments.length; index++) {\n      segments.push(toSegments[index]);\n    }\n\n    result = segments.join(\"/\");\n  }\n\n  if (toUri.query !== undefined) {\n    result += `?${toUri.query}`;\n  }\n\n  if (toUri.fragment !== undefined) {\n    result += `#${toUri.fragment}`;\n  }\n\n  return result;\n};\n\n/** @type API.toRelativeUri */\nexport const toRelativeUri = toRelative(strategies.uri);\n/** @type API.toRelativeIri */\nexport const toRelativeIri = toRelative(strategies.iri);\n","import * as Hyperjump from \"@hyperjump/uri\";\n\n/**\n * @import * as API from \"./index.d.ts\"\n */\n\n/**\n * @type API.isUri\n * @function\n */\nexport const isUri = Hyperjump.isUri;\n\n/**\n * @type API.isUriReference\n * @function\n */\nexport const isUriReference = Hyperjump.isUriReference;\n","import * as Hyperjump from \"@hyperjump/uri\";\n\n/**\n * @import * as API from \"./index.d.ts\"\n */\n\n/**\n * @type API.isIri\n * @function\n */\nexport const isIri = Hyperjump.isIri;\n\n/**\n * @type API.isIriReference\n * @function\n */\nexport const isIriReference = Hyperjump.isIriReference;\n","/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst hexDigit = `[0-9a-fA-F]`;\nconst hexOctet = `(?:${hexDigit}{2})`;\nconst timeLow = `${hexOctet}{4}`;\nconst timeMid = `${hexOctet}{2}`;\nconst timeHighAndVersion = `${hexOctet}{2}`;\nconst clockSeqAndReserved = hexOctet;\nconst clockSeqLow = hexOctet;\nconst node = `${hexOctet}{6}`;\n\nconst uuid = `${timeLow}\\\\-${timeMid}\\\\-${timeHighAndVersion}\\\\-${clockSeqAndReserved}${clockSeqLow}\\\\-${node}`;\n\n/**\n * @type API.isUuid\n * @function\n */\nexport const isUuid = RegExp.prototype.test.bind(new RegExp(`^${uuid}$`));\n","/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst alpha = `[a-zA-Z]`;\nconst hexdig = `[\\\\da-fA-F]`;\nconst pctEncoded = `%${hexdig}${hexdig}`;\n\nconst ucschar = `[\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}]`;\n\nconst iprivate = `[\\\\u{E000}-\\\\u{F8FF}\\\\u{F0000}-\\\\u{FFFFD}\\\\u{100000}-\\\\u{10FFFD}]`;\n\nconst opLevel2 = `[+#]`;\nconst opLevel3 = `[./;?&]`;\nconst opReserve = `[=,!@|]`;\nconst operator = `(?:${opLevel2}|${opLevel3}${opReserve})`;\n\nconst varchar = `(?:${alpha}|\\\\d|_|${pctEncoded})`;\nconst varname = `${varchar}(?:\\\\.?${varchar})*`;\nconst maxLength = `(?:[1-9]|\\\\d{0,3})`; // positive integer < 10000\nconst prefix = `:${maxLength}`;\nconst explode = `\\\\*`;\nconst modifierLevel4 = `(?:${prefix}|${explode})`;\nconst varspec = `${varname}${modifierLevel4}?`;\nconst variableList = `${varspec}(?:,${varspec})*`;\n\nconst expression = `\\\\{${operator}?${variableList}\\\\}`;\n\n// any Unicode character except: CTL, SP, DQUOTE, \"%\" (aside from pct-encoded), \"<\", \">\", \"\\\", \"^\", \"`\", \"{\", \"|\", \"}\"\nconst literals = `(?:[\\\\x21\\\\x23-\\\\x24\\\\x26-\\\\x3B\\\\x3D\\\\x3F-\\\\x5B\\\\x5D\\\\x5F\\\\x61-\\\\x7A\\\\x7E]|${ucschar}|${iprivate}|${pctEncoded})`;\n\nconst uriTemplate = `(?:${literals}|${expression})*`;\n\n/**\n * @type API.isUriTemplate\n * @function\n */\nexport const isUriTemplate = RegExp.prototype.test.bind(new RegExp(`^${uriTemplate}$`, \"u\"));\n","/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst unescaped = `[\\\\u{00}-\\\\u{2E}\\\\u{30}-\\\\u{7D}\\\\u{7F}-\\\\u{10FFFF}]`; // %x2F ('/') and %x7E ('~') are excluded from 'unescaped'\nconst escaped = `~[01]`; // representing '~' and '/', respectively\nconst referenceToken = `(?:${unescaped}|${escaped})*`;\nconst jsonPointer = `(?:/${referenceToken})*`;\n\n/**\n * @type API.isJsonPointer\n * @function\n */\nexport const isJsonPointer = RegExp.prototype.test.bind(new RegExp(`^${jsonPointer}$`, \"u\"));\n","/**\n * @import * as API from \"./index.d.ts\"\n */\n\nconst unescaped = `[\\\\u{00}-\\\\u{2E}\\\\u{30}-\\\\u{7D}\\\\u{7F}-\\\\u{10FFFF}]`; // %x2F ('/') and %x7E ('~') are excluded from 'unescaped'\nconst escaped = `~[01]`; // representing '~' and '/', respectively\nconst referenceToken = `(?:${unescaped}|${escaped})*`;\nconst jsonPointer = `(?:/${referenceToken})*`;\n\nconst nonNegativeInteger = `(?:0|[1-9][0-9]*)`;\nconst indexManipulation = `(?:[+-]${nonNegativeInteger})`;\nconst relativeJsonPointer = `${nonNegativeInteger}(?:${indexManipulation}?${jsonPointer}|#)`;\n\n/**\n * @type API.isRelativeJsonPointer\n * @function\n */\nexport const isRelativeJsonPointer = RegExp.prototype.test.bind(new RegExp(`^${relativeJsonPointer}$`, \"u\"));\n","/* eslint-disable no-control-regex */\nimport { isAsciiIdn, isUri, isIdnEmail, isIri, isIriReference, isIdn } from \"@hyperjump/json-schema-formats\";\nimport { type Draft } from \"src/Draft\";\nimport { JsonSchemaValidatorParams, ValidationReturnType } from \"src/Keyword\";\n\nconst isValidIPV4 = /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/;\nconst isValidIPV6 =\n    /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i;\nconst isValidURIRef =\n    /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n// uri-template: https://tools.ietf.org/html/rfc6570\nconst isValidURITemplate =\n    /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n\nexport function addFormats(drafts: Draft[]) {\n    drafts.forEach((draft) => (draft.formats = { ...formats, ...draft.formats }));\n}\n\nexport const formats: Record<string, (options: JsonSchemaValidatorParams) => ValidationReturnType> = {\n    hostname: ({ node, pointer, data }) => {\n        const { schema } = node;\n        if (typeof data !== \"string\" || isAsciiIdn(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-hostname-error\", { value: data, pointer, schema });\n    },\n\n    \"idn-hostname\": ({ node, pointer, data }) => {\n        if (typeof data !== \"string\" || isIdn(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-idn-hostname-error\", { value: data, pointer, schema: node.schema });\n    },\n\n    /**\n     * @draft 7\n     * [RFC6531] https://json-schema.org/draft-07/json-schema-validation.html#RFC6531\n     */\n    \"idn-email\": ({ node, pointer, data }) => {\n        if (typeof data !== \"string\" || data === \"\" || isIdnEmail(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-email-error\", { value: data, pointer, schema: node.schema });\n    },\n\n    ipv4: ({ node, pointer, data }) => {\n        const { schema } = node;\n        if (typeof data !== \"string\" || data === \"\") {\n            return undefined;\n        }\n        if (data && data[0] === \"0\") {\n            // leading zeroes should be rejected, as they are treated as octals\n            return node.createError(\"format-ipv4-leading-zero-error\", { value: data, pointer, schema });\n        }\n        if (data.length <= 15 && isValidIPV4.test(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-ipv4-error\", { value: data, pointer, schema });\n    },\n\n    ipv6: ({ node, pointer, data }) => {\n        const { schema } = node;\n        if (typeof data !== \"string\" || data === \"\") {\n            return undefined;\n        }\n        if (data && data[0] === \"0\") {\n            // leading zeroes should be rejected, as they are treated as octals\n            return node.createError(\"format-ipv6-leading-zero-error\", { value: data, pointer, schema });\n        }\n        if (data.length <= 45 && isValidIPV6.test(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-ipv6-error\", { value: data, pointer, schema });\n    },\n\n    iri: ({ node, pointer, data }) => {\n        const { schema } = node;\n        if (typeof data !== \"string\" || data === \"\" || isIri(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-iri-error\", { value: data, pointer, schema });\n    },\n\n    \"iri-reference\": ({ node, pointer, data }) => {\n        const { schema } = node;\n        if (typeof data !== \"string\" || data === \"\" || isIriReference(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-iri-reference-error\", { value: data, pointer, schema });\n    },\n    uri: ({ node, pointer, data }) => {\n        if (typeof data !== \"string\" || data === \"\" || isUri(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-uri-error\", { value: data, pointer, schema: node.schema });\n    },\n    \"uri-reference\": ({ node, pointer, data }) => {\n        const { schema } = node;\n        if (typeof data !== \"string\" || data === \"\") {\n            return undefined;\n        }\n        if (isValidURIRef.test(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-uri-reference-error\", { value: data, pointer, schema });\n    },\n\n    \"uri-template\": ({ node, pointer, data }) => {\n        const { schema } = node;\n        if (typeof data !== \"string\" || data === \"\") {\n            return undefined;\n        }\n        if (isValidURITemplate.test(data)) {\n            return undefined;\n        }\n        return node.createError(\"format-uri-template-error\", { value: data, pointer, schema });\n    }\n};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],"mappings":"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"}