{
  "version": 3,
  "sources": ["../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/url.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/encode.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/jwt/jwa.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/helper/adapter/index.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/jwt/types.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/jwt/utf8.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/jwt/jws.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/jwt/jwt.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/jwt/index.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/request/constants.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/body.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/request.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/utils/html.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/context.js", "../../../node_modules/.bun/hono@4.11.1/node_modules/hono/dist/middleware/jwt/jwt.js", "../src/index.ts"],
  "sourcesContent": [
    "// src/utils/url.ts\nvar splitPath = (path) => {\n  const paths = path.split(\"/\");\n  if (paths[0] === \"\") {\n    paths.shift();\n  }\n  return paths;\n};\nvar splitRoutingPath = (routePath) => {\n  const { groups, path } = extractGroupsFromPath(routePath);\n  const paths = splitPath(path);\n  return replaceGroupMarks(paths, groups);\n};\nvar extractGroupsFromPath = (path) => {\n  const groups = [];\n  path = path.replace(/\\{[^}]+\\}/g, (match, index) => {\n    const mark = `@${index}`;\n    groups.push([mark, match]);\n    return mark;\n  });\n  return { groups, path };\n};\nvar replaceGroupMarks = (paths, groups) => {\n  for (let i = groups.length - 1; i >= 0; i--) {\n    const [mark] = groups[i];\n    for (let j = paths.length - 1; j >= 0; j--) {\n      if (paths[j].includes(mark)) {\n        paths[j] = paths[j].replace(mark, groups[i][1]);\n        break;\n      }\n    }\n  }\n  return paths;\n};\nvar patternCache = {};\nvar getPattern = (label, next) => {\n  if (label === \"*\") {\n    return \"*\";\n  }\n  const match = label.match(/^\\:([^\\{\\}]+)(?:\\{(.+)\\})?$/);\n  if (match) {\n    const cacheKey = `${label}#${next}`;\n    if (!patternCache[cacheKey]) {\n      if (match[2]) {\n        patternCache[cacheKey] = next && next[0] !== \":\" && next[0] !== \"*\" ? [cacheKey, match[1], new RegExp(`^${match[2]}(?=/${next})`)] : [label, match[1], new RegExp(`^${match[2]}$`)];\n      } else {\n        patternCache[cacheKey] = [label, match[1], true];\n      }\n    }\n    return patternCache[cacheKey];\n  }\n  return null;\n};\nvar tryDecode = (str, decoder) => {\n  try {\n    return decoder(str);\n  } catch {\n    return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match) => {\n      try {\n        return decoder(match);\n      } catch {\n        return match;\n      }\n    });\n  }\n};\nvar tryDecodeURI = (str) => tryDecode(str, decodeURI);\nvar getPath = (request) => {\n  const url = request.url;\n  const start = url.indexOf(\"/\", url.indexOf(\":\") + 4);\n  let i = start;\n  for (; i < url.length; i++) {\n    const charCode = url.charCodeAt(i);\n    if (charCode === 37) {\n      const queryIndex = url.indexOf(\"?\", i);\n      const path = url.slice(start, queryIndex === -1 ? void 0 : queryIndex);\n      return tryDecodeURI(path.includes(\"%25\") ? path.replace(/%25/g, \"%2525\") : path);\n    } else if (charCode === 63) {\n      break;\n    }\n  }\n  return url.slice(start, i);\n};\nvar getQueryStrings = (url) => {\n  const queryIndex = url.indexOf(\"?\", 8);\n  return queryIndex === -1 ? \"\" : \"?\" + url.slice(queryIndex + 1);\n};\nvar getPathNoStrict = (request) => {\n  const result = getPath(request);\n  return result.length > 1 && result.at(-1) === \"/\" ? result.slice(0, -1) : result;\n};\nvar mergePath = (base, sub, ...rest) => {\n  if (rest.length) {\n    sub = mergePath(sub, ...rest);\n  }\n  return `${base?.[0] === \"/\" ? \"\" : \"/\"}${base}${sub === \"/\" ? \"\" : `${base?.at(-1) === \"/\" ? \"\" : \"/\"}${sub?.[0] === \"/\" ? sub.slice(1) : sub}`}`;\n};\nvar checkOptionalParameter = (path) => {\n  if (path.charCodeAt(path.length - 1) !== 63 || !path.includes(\":\")) {\n    return null;\n  }\n  const segments = path.split(\"/\");\n  const results = [];\n  let basePath = \"\";\n  segments.forEach((segment) => {\n    if (segment !== \"\" && !/\\:/.test(segment)) {\n      basePath += \"/\" + segment;\n    } else if (/\\:/.test(segment)) {\n      if (/\\?/.test(segment)) {\n        if (results.length === 0 && basePath === \"\") {\n          results.push(\"/\");\n        } else {\n          results.push(basePath);\n        }\n        const optionalSegment = segment.replace(\"?\", \"\");\n        basePath += \"/\" + optionalSegment;\n        results.push(basePath);\n      } else {\n        basePath += \"/\" + segment;\n      }\n    }\n  });\n  return results.filter((v, i, a) => a.indexOf(v) === i);\n};\nvar _decodeURI = (value) => {\n  if (!/[%+]/.test(value)) {\n    return value;\n  }\n  if (value.indexOf(\"+\") !== -1) {\n    value = value.replace(/\\+/g, \" \");\n  }\n  return value.indexOf(\"%\") !== -1 ? tryDecode(value, decodeURIComponent_) : value;\n};\nvar _getQueryParam = (url, key, multiple) => {\n  let encoded;\n  if (!multiple && key && !/[%+]/.test(key)) {\n    let keyIndex2 = url.indexOf(\"?\", 8);\n    if (keyIndex2 === -1) {\n      return void 0;\n    }\n    if (!url.startsWith(key, keyIndex2 + 1)) {\n      keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);\n    }\n    while (keyIndex2 !== -1) {\n      const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1);\n      if (trailingKeyCode === 61) {\n        const valueIndex = keyIndex2 + key.length + 2;\n        const endIndex = url.indexOf(\"&\", valueIndex);\n        return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex));\n      } else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) {\n        return \"\";\n      }\n      keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);\n    }\n    encoded = /[%+]/.test(url);\n    if (!encoded) {\n      return void 0;\n    }\n  }\n  const results = {};\n  encoded ??= /[%+]/.test(url);\n  let keyIndex = url.indexOf(\"?\", 8);\n  while (keyIndex !== -1) {\n    const nextKeyIndex = url.indexOf(\"&\", keyIndex + 1);\n    let valueIndex = url.indexOf(\"=\", keyIndex);\n    if (valueIndex > nextKeyIndex && nextKeyIndex !== -1) {\n      valueIndex = -1;\n    }\n    let name = url.slice(\n      keyIndex + 1,\n      valueIndex === -1 ? nextKeyIndex === -1 ? void 0 : nextKeyIndex : valueIndex\n    );\n    if (encoded) {\n      name = _decodeURI(name);\n    }\n    keyIndex = nextKeyIndex;\n    if (name === \"\") {\n      continue;\n    }\n    let value;\n    if (valueIndex === -1) {\n      value = \"\";\n    } else {\n      value = url.slice(valueIndex + 1, nextKeyIndex === -1 ? void 0 : nextKeyIndex);\n      if (encoded) {\n        value = _decodeURI(value);\n      }\n    }\n    if (multiple) {\n      if (!(results[name] && Array.isArray(results[name]))) {\n        results[name] = [];\n      }\n      ;\n      results[name].push(value);\n    } else {\n      results[name] ??= value;\n    }\n  }\n  return key ? results[key] : results;\n};\nvar getQueryParam = _getQueryParam;\nvar getQueryParams = (url, key) => {\n  return _getQueryParam(url, key, true);\n};\nvar decodeURIComponent_ = decodeURIComponent;\nexport {\n  checkOptionalParameter,\n  decodeURIComponent_,\n  getPath,\n  getPathNoStrict,\n  getPattern,\n  getQueryParam,\n  getQueryParams,\n  getQueryStrings,\n  mergePath,\n  splitPath,\n  splitRoutingPath,\n  tryDecode\n};\n",
    "// src/utils/encode.ts\nvar decodeBase64Url = (str) => {\n  return decodeBase64(str.replace(/_|-/g, (m) => ({ _: \"/\", \"-\": \"+\" })[m] ?? m));\n};\nvar encodeBase64Url = (buf) => encodeBase64(buf).replace(/\\/|\\+/g, (m) => ({ \"/\": \"_\", \"+\": \"-\" })[m] ?? m);\nvar encodeBase64 = (buf) => {\n  let binary = \"\";\n  const bytes = new Uint8Array(buf);\n  for (let i = 0, len = bytes.length; i < len; i++) {\n    binary += String.fromCharCode(bytes[i]);\n  }\n  return btoa(binary);\n};\nvar decodeBase64 = (str) => {\n  const binary = atob(str);\n  const bytes = new Uint8Array(new ArrayBuffer(binary.length));\n  const half = binary.length / 2;\n  for (let i = 0, j = binary.length - 1; i <= half; i++, j--) {\n    bytes[i] = binary.charCodeAt(i);\n    bytes[j] = binary.charCodeAt(j);\n  }\n  return bytes;\n};\nexport {\n  decodeBase64,\n  decodeBase64Url,\n  encodeBase64,\n  encodeBase64Url\n};\n",
    "// src/utils/jwt/jwa.ts\nvar AlgorithmTypes = /* @__PURE__ */ ((AlgorithmTypes2) => {\n  AlgorithmTypes2[\"HS256\"] = \"HS256\";\n  AlgorithmTypes2[\"HS384\"] = \"HS384\";\n  AlgorithmTypes2[\"HS512\"] = \"HS512\";\n  AlgorithmTypes2[\"RS256\"] = \"RS256\";\n  AlgorithmTypes2[\"RS384\"] = \"RS384\";\n  AlgorithmTypes2[\"RS512\"] = \"RS512\";\n  AlgorithmTypes2[\"PS256\"] = \"PS256\";\n  AlgorithmTypes2[\"PS384\"] = \"PS384\";\n  AlgorithmTypes2[\"PS512\"] = \"PS512\";\n  AlgorithmTypes2[\"ES256\"] = \"ES256\";\n  AlgorithmTypes2[\"ES384\"] = \"ES384\";\n  AlgorithmTypes2[\"ES512\"] = \"ES512\";\n  AlgorithmTypes2[\"EdDSA\"] = \"EdDSA\";\n  return AlgorithmTypes2;\n})(AlgorithmTypes || {});\nexport {\n  AlgorithmTypes\n};\n",
    "// src/helper/adapter/index.ts\nvar env = (c, runtime) => {\n  const global = globalThis;\n  const globalEnv = global?.process?.env;\n  runtime ??= getRuntimeKey();\n  const runtimeEnvHandlers = {\n    bun: () => globalEnv,\n    node: () => globalEnv,\n    \"edge-light\": () => globalEnv,\n    deno: () => {\n      return Deno.env.toObject();\n    },\n    workerd: () => c.env,\n    // On Fastly Compute, you can use the ConfigStore to manage user-defined data.\n    fastly: () => ({}),\n    other: () => ({})\n  };\n  return runtimeEnvHandlers[runtime]();\n};\nvar knownUserAgents = {\n  deno: \"Deno\",\n  bun: \"Bun\",\n  workerd: \"Cloudflare-Workers\",\n  node: \"Node.js\"\n};\nvar getRuntimeKey = () => {\n  const global = globalThis;\n  const userAgentSupported = typeof navigator !== \"undefined\" && typeof navigator.userAgent === \"string\";\n  if (userAgentSupported) {\n    for (const [runtimeKey, userAgent] of Object.entries(knownUserAgents)) {\n      if (checkUserAgentEquals(userAgent)) {\n        return runtimeKey;\n      }\n    }\n  }\n  if (typeof global?.EdgeRuntime === \"string\") {\n    return \"edge-light\";\n  }\n  if (global?.fastly !== void 0) {\n    return \"fastly\";\n  }\n  if (global?.process?.release?.name === \"node\") {\n    return \"node\";\n  }\n  return \"other\";\n};\nvar checkUserAgentEquals = (platform) => {\n  const userAgent = navigator.userAgent;\n  return userAgent.startsWith(platform);\n};\nexport {\n  checkUserAgentEquals,\n  env,\n  getRuntimeKey,\n  knownUserAgents\n};\n",
    "// src/utils/jwt/types.ts\nvar JwtAlgorithmNotImplemented = class extends Error {\n  constructor(alg) {\n    super(`${alg} is not an implemented algorithm`);\n    this.name = \"JwtAlgorithmNotImplemented\";\n  }\n};\nvar JwtTokenInvalid = class extends Error {\n  constructor(token) {\n    super(`invalid JWT token: ${token}`);\n    this.name = \"JwtTokenInvalid\";\n  }\n};\nvar JwtTokenNotBefore = class extends Error {\n  constructor(token) {\n    super(`token (${token}) is being used before it's valid`);\n    this.name = \"JwtTokenNotBefore\";\n  }\n};\nvar JwtTokenExpired = class extends Error {\n  constructor(token) {\n    super(`token (${token}) expired`);\n    this.name = \"JwtTokenExpired\";\n  }\n};\nvar JwtTokenIssuedAt = class extends Error {\n  constructor(currentTimestamp, iat) {\n    super(\n      `Invalid \"iat\" claim, must be a valid number lower than \"${currentTimestamp}\" (iat: \"${iat}\")`\n    );\n    this.name = \"JwtTokenIssuedAt\";\n  }\n};\nvar JwtTokenIssuer = class extends Error {\n  constructor(expected, iss) {\n    super(`expected issuer \"${expected}\", got ${iss ? `\"${iss}\"` : \"none\"} `);\n    this.name = \"JwtTokenIssuer\";\n  }\n};\nvar JwtHeaderInvalid = class extends Error {\n  constructor(header) {\n    super(`jwt header is invalid: ${JSON.stringify(header)}`);\n    this.name = \"JwtHeaderInvalid\";\n  }\n};\nvar JwtHeaderRequiresKid = class extends Error {\n  constructor(header) {\n    super(`required \"kid\" in jwt header: ${JSON.stringify(header)}`);\n    this.name = \"JwtHeaderRequiresKid\";\n  }\n};\nvar JwtTokenSignatureMismatched = class extends Error {\n  constructor(token) {\n    super(`token(${token}) signature mismatched`);\n    this.name = \"JwtTokenSignatureMismatched\";\n  }\n};\nvar JwtPayloadRequiresAud = class extends Error {\n  constructor(payload) {\n    super(`required \"aud\" in jwt payload: ${JSON.stringify(payload)}`);\n    this.name = \"JwtPayloadRequiresAud\";\n  }\n};\nvar JwtTokenAudience = class extends Error {\n  constructor(expected, aud) {\n    super(\n      `expected audience \"${Array.isArray(expected) ? expected.join(\", \") : expected}\", got \"${aud}\"`\n    );\n    this.name = \"JwtTokenAudience\";\n  }\n};\nvar CryptoKeyUsage = /* @__PURE__ */ ((CryptoKeyUsage2) => {\n  CryptoKeyUsage2[\"Encrypt\"] = \"encrypt\";\n  CryptoKeyUsage2[\"Decrypt\"] = \"decrypt\";\n  CryptoKeyUsage2[\"Sign\"] = \"sign\";\n  CryptoKeyUsage2[\"Verify\"] = \"verify\";\n  CryptoKeyUsage2[\"DeriveKey\"] = \"deriveKey\";\n  CryptoKeyUsage2[\"DeriveBits\"] = \"deriveBits\";\n  CryptoKeyUsage2[\"WrapKey\"] = \"wrapKey\";\n  CryptoKeyUsage2[\"UnwrapKey\"] = \"unwrapKey\";\n  return CryptoKeyUsage2;\n})(CryptoKeyUsage || {});\nexport {\n  CryptoKeyUsage,\n  JwtAlgorithmNotImplemented,\n  JwtHeaderInvalid,\n  JwtHeaderRequiresKid,\n  JwtPayloadRequiresAud,\n  JwtTokenAudience,\n  JwtTokenExpired,\n  JwtTokenInvalid,\n  JwtTokenIssuedAt,\n  JwtTokenIssuer,\n  JwtTokenNotBefore,\n  JwtTokenSignatureMismatched\n};\n",
    "// src/utils/jwt/utf8.ts\nvar utf8Encoder = new TextEncoder();\nvar utf8Decoder = new TextDecoder();\nexport {\n  utf8Decoder,\n  utf8Encoder\n};\n",
    "// src/utils/jwt/jws.ts\nimport { getRuntimeKey } from \"../../helper/adapter/index.js\";\nimport { decodeBase64 } from \"../encode.js\";\nimport { CryptoKeyUsage, JwtAlgorithmNotImplemented } from \"./types.js\";\nimport { utf8Encoder } from \"./utf8.js\";\nasync function signing(privateKey, alg, data) {\n  const algorithm = getKeyAlgorithm(alg);\n  const cryptoKey = await importPrivateKey(privateKey, algorithm);\n  return await crypto.subtle.sign(algorithm, cryptoKey, data);\n}\nasync function verifying(publicKey, alg, signature, data) {\n  const algorithm = getKeyAlgorithm(alg);\n  const cryptoKey = await importPublicKey(publicKey, algorithm);\n  return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n}\nfunction pemToBinary(pem) {\n  return decodeBase64(pem.replace(/-+(BEGIN|END).*/g, \"\").replace(/\\s/g, \"\"));\n}\nasync function importPrivateKey(key, alg) {\n  if (!crypto.subtle || !crypto.subtle.importKey) {\n    throw new Error(\"`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.\");\n  }\n  if (isCryptoKey(key)) {\n    if (key.type !== \"private\" && key.type !== \"secret\") {\n      throw new Error(\n        `unexpected key type: CryptoKey.type is ${key.type}, expected private or secret`\n      );\n    }\n    return key;\n  }\n  const usages = [CryptoKeyUsage.Sign];\n  if (typeof key === \"object\") {\n    return await crypto.subtle.importKey(\"jwk\", key, alg, false, usages);\n  }\n  if (key.includes(\"PRIVATE\")) {\n    return await crypto.subtle.importKey(\"pkcs8\", pemToBinary(key), alg, false, usages);\n  }\n  return await crypto.subtle.importKey(\"raw\", utf8Encoder.encode(key), alg, false, usages);\n}\nasync function importPublicKey(key, alg) {\n  if (!crypto.subtle || !crypto.subtle.importKey) {\n    throw new Error(\"`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.\");\n  }\n  if (isCryptoKey(key)) {\n    if (key.type === \"public\" || key.type === \"secret\") {\n      return key;\n    }\n    key = await exportPublicJwkFrom(key);\n  }\n  if (typeof key === \"string\" && key.includes(\"PRIVATE\")) {\n    const privateKey = await crypto.subtle.importKey(\"pkcs8\", pemToBinary(key), alg, true, [\n      CryptoKeyUsage.Sign\n    ]);\n    key = await exportPublicJwkFrom(privateKey);\n  }\n  const usages = [CryptoKeyUsage.Verify];\n  if (typeof key === \"object\") {\n    return await crypto.subtle.importKey(\"jwk\", key, alg, false, usages);\n  }\n  if (key.includes(\"PUBLIC\")) {\n    return await crypto.subtle.importKey(\"spki\", pemToBinary(key), alg, false, usages);\n  }\n  return await crypto.subtle.importKey(\"raw\", utf8Encoder.encode(key), alg, false, usages);\n}\nasync function exportPublicJwkFrom(privateKey) {\n  if (privateKey.type !== \"private\") {\n    throw new Error(`unexpected key type: ${privateKey.type}`);\n  }\n  if (!privateKey.extractable) {\n    throw new Error(\"unexpected private key is unextractable\");\n  }\n  const jwk = await crypto.subtle.exportKey(\"jwk\", privateKey);\n  const { kty } = jwk;\n  const { alg, e, n } = jwk;\n  const { crv, x, y } = jwk;\n  return { kty, alg, e, n, crv, x, y, key_ops: [CryptoKeyUsage.Verify] };\n}\nfunction getKeyAlgorithm(name) {\n  switch (name) {\n    case \"HS256\":\n      return {\n        name: \"HMAC\",\n        hash: {\n          name: \"SHA-256\"\n        }\n      };\n    case \"HS384\":\n      return {\n        name: \"HMAC\",\n        hash: {\n          name: \"SHA-384\"\n        }\n      };\n    case \"HS512\":\n      return {\n        name: \"HMAC\",\n        hash: {\n          name: \"SHA-512\"\n        }\n      };\n    case \"RS256\":\n      return {\n        name: \"RSASSA-PKCS1-v1_5\",\n        hash: {\n          name: \"SHA-256\"\n        }\n      };\n    case \"RS384\":\n      return {\n        name: \"RSASSA-PKCS1-v1_5\",\n        hash: {\n          name: \"SHA-384\"\n        }\n      };\n    case \"RS512\":\n      return {\n        name: \"RSASSA-PKCS1-v1_5\",\n        hash: {\n          name: \"SHA-512\"\n        }\n      };\n    case \"PS256\":\n      return {\n        name: \"RSA-PSS\",\n        hash: {\n          name: \"SHA-256\"\n        },\n        saltLength: 32\n        // 256 >> 3\n      };\n    case \"PS384\":\n      return {\n        name: \"RSA-PSS\",\n        hash: {\n          name: \"SHA-384\"\n        },\n        saltLength: 48\n        // 384 >> 3\n      };\n    case \"PS512\":\n      return {\n        name: \"RSA-PSS\",\n        hash: {\n          name: \"SHA-512\"\n        },\n        saltLength: 64\n        // 512 >> 3,\n      };\n    case \"ES256\":\n      return {\n        name: \"ECDSA\",\n        hash: {\n          name: \"SHA-256\"\n        },\n        namedCurve: \"P-256\"\n      };\n    case \"ES384\":\n      return {\n        name: \"ECDSA\",\n        hash: {\n          name: \"SHA-384\"\n        },\n        namedCurve: \"P-384\"\n      };\n    case \"ES512\":\n      return {\n        name: \"ECDSA\",\n        hash: {\n          name: \"SHA-512\"\n        },\n        namedCurve: \"P-521\"\n      };\n    case \"EdDSA\":\n      return {\n        name: \"Ed25519\",\n        namedCurve: \"Ed25519\"\n      };\n    default:\n      throw new JwtAlgorithmNotImplemented(name);\n  }\n}\nfunction isCryptoKey(key) {\n  const runtime = getRuntimeKey();\n  if (runtime === \"node\" && !!crypto.webcrypto) {\n    return key instanceof crypto.webcrypto.CryptoKey;\n  }\n  return key instanceof CryptoKey;\n}\nexport {\n  signing,\n  verifying\n};\n",
    "// src/utils/jwt/jwt.ts\nimport { decodeBase64Url, encodeBase64Url } from \"../../utils/encode.js\";\nimport { AlgorithmTypes } from \"./jwa.js\";\nimport { signing, verifying } from \"./jws.js\";\nimport {\n  JwtHeaderInvalid,\n  JwtHeaderRequiresKid,\n  JwtPayloadRequiresAud,\n  JwtTokenAudience,\n  JwtTokenExpired,\n  JwtTokenInvalid,\n  JwtTokenIssuedAt,\n  JwtTokenIssuer,\n  JwtTokenNotBefore,\n  JwtTokenSignatureMismatched\n} from \"./types.js\";\nimport { utf8Decoder, utf8Encoder } from \"./utf8.js\";\nvar encodeJwtPart = (part) => encodeBase64Url(utf8Encoder.encode(JSON.stringify(part)).buffer).replace(/=/g, \"\");\nvar encodeSignaturePart = (buf) => encodeBase64Url(buf).replace(/=/g, \"\");\nvar decodeJwtPart = (part) => JSON.parse(utf8Decoder.decode(decodeBase64Url(part)));\nfunction isTokenHeader(obj) {\n  if (typeof obj === \"object\" && obj !== null) {\n    const objWithAlg = obj;\n    return \"alg\" in objWithAlg && Object.values(AlgorithmTypes).includes(objWithAlg.alg) && (!(\"typ\" in objWithAlg) || objWithAlg.typ === \"JWT\");\n  }\n  return false;\n}\nvar sign = async (payload, privateKey, alg = \"HS256\") => {\n  const encodedPayload = encodeJwtPart(payload);\n  let encodedHeader;\n  if (typeof privateKey === \"object\" && \"alg\" in privateKey) {\n    alg = privateKey.alg;\n    encodedHeader = encodeJwtPart({ alg, typ: \"JWT\", kid: privateKey.kid });\n  } else {\n    encodedHeader = encodeJwtPart({ alg, typ: \"JWT\" });\n  }\n  const partialToken = `${encodedHeader}.${encodedPayload}`;\n  const signaturePart = await signing(privateKey, alg, utf8Encoder.encode(partialToken));\n  const signature = encodeSignaturePart(signaturePart);\n  return `${partialToken}.${signature}`;\n};\nvar verify = async (token, publicKey, algOrOptions) => {\n  const {\n    alg = \"HS256\",\n    iss,\n    nbf = true,\n    exp = true,\n    iat = true,\n    aud\n  } = typeof algOrOptions === \"string\" ? { alg: algOrOptions } : algOrOptions || {};\n  const tokenParts = token.split(\".\");\n  if (tokenParts.length !== 3) {\n    throw new JwtTokenInvalid(token);\n  }\n  const { header, payload } = decode(token);\n  if (!isTokenHeader(header)) {\n    throw new JwtHeaderInvalid(header);\n  }\n  const now = Date.now() / 1e3 | 0;\n  if (nbf && payload.nbf && payload.nbf > now) {\n    throw new JwtTokenNotBefore(token);\n  }\n  if (exp && payload.exp && payload.exp <= now) {\n    throw new JwtTokenExpired(token);\n  }\n  if (iat && payload.iat && now < payload.iat) {\n    throw new JwtTokenIssuedAt(now, payload.iat);\n  }\n  if (iss) {\n    if (!payload.iss) {\n      throw new JwtTokenIssuer(iss, null);\n    }\n    if (typeof iss === \"string\" && payload.iss !== iss) {\n      throw new JwtTokenIssuer(iss, payload.iss);\n    }\n    if (iss instanceof RegExp && !iss.test(payload.iss)) {\n      throw new JwtTokenIssuer(iss, payload.iss);\n    }\n  }\n  if (aud) {\n    if (!payload.aud) {\n      throw new JwtPayloadRequiresAud(payload);\n    }\n    const audiences = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n    const matched = audiences.some(\n      (payloadAud) => aud instanceof RegExp ? aud.test(payloadAud) : typeof aud === \"string\" ? payloadAud === aud : Array.isArray(aud) && aud.includes(payloadAud)\n    );\n    if (!matched) {\n      throw new JwtTokenAudience(aud, payload.aud);\n    }\n  }\n  const headerPayload = token.substring(0, token.lastIndexOf(\".\"));\n  const verified = await verifying(\n    publicKey,\n    alg,\n    decodeBase64Url(tokenParts[2]),\n    utf8Encoder.encode(headerPayload)\n  );\n  if (!verified) {\n    throw new JwtTokenSignatureMismatched(token);\n  }\n  return payload;\n};\nvar verifyWithJwks = async (token, options, init) => {\n  const verifyOpts = options.verification || {};\n  const header = decodeHeader(token);\n  if (!isTokenHeader(header)) {\n    throw new JwtHeaderInvalid(header);\n  }\n  if (!header.kid) {\n    throw new JwtHeaderRequiresKid(header);\n  }\n  if (options.jwks_uri) {\n    const response = await fetch(options.jwks_uri, init);\n    if (!response.ok) {\n      throw new Error(`failed to fetch JWKS from ${options.jwks_uri}`);\n    }\n    const data = await response.json();\n    if (!data.keys) {\n      throw new Error('invalid JWKS response. \"keys\" field is missing');\n    }\n    if (!Array.isArray(data.keys)) {\n      throw new Error('invalid JWKS response. \"keys\" field is not an array');\n    }\n    if (options.keys) {\n      options.keys.push(...data.keys);\n    } else {\n      options.keys = data.keys;\n    }\n  } else if (!options.keys) {\n    throw new Error('verifyWithJwks requires options for either \"keys\" or \"jwks_uri\" or both');\n  }\n  const matchingKey = options.keys.find((key) => key.kid === header.kid);\n  if (!matchingKey) {\n    throw new JwtTokenInvalid(token);\n  }\n  return await verify(token, matchingKey, {\n    alg: matchingKey.alg || header.alg,\n    ...verifyOpts\n  });\n};\nvar decode = (token) => {\n  try {\n    const [h, p] = token.split(\".\");\n    const header = decodeJwtPart(h);\n    const payload = decodeJwtPart(p);\n    return {\n      header,\n      payload\n    };\n  } catch {\n    throw new JwtTokenInvalid(token);\n  }\n};\nvar decodeHeader = (token) => {\n  try {\n    const [h] = token.split(\".\");\n    return decodeJwtPart(h);\n  } catch {\n    throw new JwtTokenInvalid(token);\n  }\n};\nexport {\n  decode,\n  decodeHeader,\n  isTokenHeader,\n  sign,\n  verify,\n  verifyWithJwks\n};\n",
    "// src/utils/jwt/index.ts\nimport { decode, sign, verify, verifyWithJwks } from \"./jwt.js\";\nvar Jwt = { sign, verify, decode, verifyWithJwks };\nexport {\n  Jwt\n};\n",
    "// src/request/constants.ts\nvar GET_MATCH_RESULT = /* @__PURE__ */ Symbol();\nexport {\n  GET_MATCH_RESULT\n};\n",
    "// src/utils/body.ts\nimport { HonoRequest } from \"../request.js\";\nvar parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {\n  const { all = false, dot = false } = options;\n  const headers = request instanceof HonoRequest ? request.raw.headers : request.headers;\n  const contentType = headers.get(\"Content-Type\");\n  if (contentType?.startsWith(\"multipart/form-data\") || contentType?.startsWith(\"application/x-www-form-urlencoded\")) {\n    return parseFormData(request, { all, dot });\n  }\n  return {};\n};\nasync function parseFormData(request, options) {\n  const formData = await request.formData();\n  if (formData) {\n    return convertFormDataToBodyData(formData, options);\n  }\n  return {};\n}\nfunction convertFormDataToBodyData(formData, options) {\n  const form = /* @__PURE__ */ Object.create(null);\n  formData.forEach((value, key) => {\n    const shouldParseAllValues = options.all || key.endsWith(\"[]\");\n    if (!shouldParseAllValues) {\n      form[key] = value;\n    } else {\n      handleParsingAllValues(form, key, value);\n    }\n  });\n  if (options.dot) {\n    Object.entries(form).forEach(([key, value]) => {\n      const shouldParseDotValues = key.includes(\".\");\n      if (shouldParseDotValues) {\n        handleParsingNestedValues(form, key, value);\n        delete form[key];\n      }\n    });\n  }\n  return form;\n}\nvar handleParsingAllValues = (form, key, value) => {\n  if (form[key] !== void 0) {\n    if (Array.isArray(form[key])) {\n      ;\n      form[key].push(value);\n    } else {\n      form[key] = [form[key], value];\n    }\n  } else {\n    if (!key.endsWith(\"[]\")) {\n      form[key] = value;\n    } else {\n      form[key] = [value];\n    }\n  }\n};\nvar handleParsingNestedValues = (form, key, value) => {\n  let nestedForm = form;\n  const keys = key.split(\".\");\n  keys.forEach((key2, index) => {\n    if (index === keys.length - 1) {\n      nestedForm[key2] = value;\n    } else {\n      if (!nestedForm[key2] || typeof nestedForm[key2] !== \"object\" || Array.isArray(nestedForm[key2]) || nestedForm[key2] instanceof File) {\n        nestedForm[key2] = /* @__PURE__ */ Object.create(null);\n      }\n      nestedForm = nestedForm[key2];\n    }\n  });\n};\nexport {\n  parseBody\n};\n",
    "// src/request.ts\nimport { HTTPException } from \"./http-exception.js\";\nimport { GET_MATCH_RESULT } from \"./request/constants.js\";\nimport { parseBody } from \"./utils/body.js\";\nimport { decodeURIComponent_, getQueryParam, getQueryParams, tryDecode } from \"./utils/url.js\";\nvar tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);\nvar HonoRequest = class {\n  /**\n   * `.raw` can get the raw Request object.\n   *\n   * @see {@link https://hono.dev/docs/api/request#raw}\n   *\n   * @example\n   * ```ts\n   * // For Cloudflare Workers\n   * app.post('/', async (c) => {\n   *   const metadata = c.req.raw.cf?.hostMetadata?\n   *   ...\n   * })\n   * ```\n   */\n  raw;\n  #validatedData;\n  // Short name of validatedData\n  #matchResult;\n  routeIndex = 0;\n  /**\n   * `.path` can get the pathname of the request.\n   *\n   * @see {@link https://hono.dev/docs/api/request#path}\n   *\n   * @example\n   * ```ts\n   * app.get('/about/me', (c) => {\n   *   const pathname = c.req.path // `/about/me`\n   * })\n   * ```\n   */\n  path;\n  bodyCache = {};\n  constructor(request, path = \"/\", matchResult = [[]]) {\n    this.raw = request;\n    this.path = path;\n    this.#matchResult = matchResult;\n    this.#validatedData = {};\n  }\n  param(key) {\n    return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams();\n  }\n  #getDecodedParam(key) {\n    const paramKey = this.#matchResult[0][this.routeIndex][1][key];\n    const param = this.#getParamValue(paramKey);\n    return param && /\\%/.test(param) ? tryDecodeURIComponent(param) : param;\n  }\n  #getAllDecodedParams() {\n    const decoded = {};\n    const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]);\n    for (const key of keys) {\n      const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);\n      if (value !== void 0) {\n        decoded[key] = /\\%/.test(value) ? tryDecodeURIComponent(value) : value;\n      }\n    }\n    return decoded;\n  }\n  #getParamValue(paramKey) {\n    return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey;\n  }\n  query(key) {\n    return getQueryParam(this.url, key);\n  }\n  queries(key) {\n    return getQueryParams(this.url, key);\n  }\n  header(name) {\n    if (name) {\n      return this.raw.headers.get(name) ?? void 0;\n    }\n    const headerData = {};\n    this.raw.headers.forEach((value, key) => {\n      headerData[key] = value;\n    });\n    return headerData;\n  }\n  async parseBody(options) {\n    return this.bodyCache.parsedBody ??= await parseBody(this, options);\n  }\n  #cachedBody = (key) => {\n    const { bodyCache, raw } = this;\n    const cachedBody = bodyCache[key];\n    if (cachedBody) {\n      return cachedBody;\n    }\n    const anyCachedKey = Object.keys(bodyCache)[0];\n    if (anyCachedKey) {\n      return bodyCache[anyCachedKey].then((body) => {\n        if (anyCachedKey === \"json\") {\n          body = JSON.stringify(body);\n        }\n        return new Response(body)[key]();\n      });\n    }\n    return bodyCache[key] = raw[key]();\n  };\n  /**\n   * `.json()` can parse Request body of type `application/json`\n   *\n   * @see {@link https://hono.dev/docs/api/request#json}\n   *\n   * @example\n   * ```ts\n   * app.post('/entry', async (c) => {\n   *   const body = await c.req.json()\n   * })\n   * ```\n   */\n  json() {\n    return this.#cachedBody(\"text\").then((text) => JSON.parse(text));\n  }\n  /**\n   * `.text()` can parse Request body of type `text/plain`\n   *\n   * @see {@link https://hono.dev/docs/api/request#text}\n   *\n   * @example\n   * ```ts\n   * app.post('/entry', async (c) => {\n   *   const body = await c.req.text()\n   * })\n   * ```\n   */\n  text() {\n    return this.#cachedBody(\"text\");\n  }\n  /**\n   * `.arrayBuffer()` parse Request body as an `ArrayBuffer`\n   *\n   * @see {@link https://hono.dev/docs/api/request#arraybuffer}\n   *\n   * @example\n   * ```ts\n   * app.post('/entry', async (c) => {\n   *   const body = await c.req.arrayBuffer()\n   * })\n   * ```\n   */\n  arrayBuffer() {\n    return this.#cachedBody(\"arrayBuffer\");\n  }\n  /**\n   * Parses the request body as a `Blob`.\n   * @example\n   * ```ts\n   * app.post('/entry', async (c) => {\n   *   const body = await c.req.blob();\n   * });\n   * ```\n   * @see https://hono.dev/docs/api/request#blob\n   */\n  blob() {\n    return this.#cachedBody(\"blob\");\n  }\n  /**\n   * Parses the request body as `FormData`.\n   * @example\n   * ```ts\n   * app.post('/entry', async (c) => {\n   *   const body = await c.req.formData();\n   * });\n   * ```\n   * @see https://hono.dev/docs/api/request#formdata\n   */\n  formData() {\n    return this.#cachedBody(\"formData\");\n  }\n  /**\n   * Adds validated data to the request.\n   *\n   * @param target - The target of the validation.\n   * @param data - The validated data to add.\n   */\n  addValidatedData(target, data) {\n    this.#validatedData[target] = data;\n  }\n  valid(target) {\n    return this.#validatedData[target];\n  }\n  /**\n   * `.url()` can get the request url strings.\n   *\n   * @see {@link https://hono.dev/docs/api/request#url}\n   *\n   * @example\n   * ```ts\n   * app.get('/about/me', (c) => {\n   *   const url = c.req.url // `http://localhost:8787/about/me`\n   *   ...\n   * })\n   * ```\n   */\n  get url() {\n    return this.raw.url;\n  }\n  /**\n   * `.method()` can get the method name of the request.\n   *\n   * @see {@link https://hono.dev/docs/api/request#method}\n   *\n   * @example\n   * ```ts\n   * app.get('/about/me', (c) => {\n   *   const method = c.req.method // `GET`\n   * })\n   * ```\n   */\n  get method() {\n    return this.raw.method;\n  }\n  get [GET_MATCH_RESULT]() {\n    return this.#matchResult;\n  }\n  /**\n   * `.matchedRoutes()` can return a matched route in the handler\n   *\n   * @deprecated\n   *\n   * Use matchedRoutes helper defined in \"hono/route\" instead.\n   *\n   * @see {@link https://hono.dev/docs/api/request#matchedroutes}\n   *\n   * @example\n   * ```ts\n   * app.use('*', async function logger(c, next) {\n   *   await next()\n   *   c.req.matchedRoutes.forEach(({ handler, method, path }, i) => {\n   *     const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]')\n   *     console.log(\n   *       method,\n   *       ' ',\n   *       path,\n   *       ' '.repeat(Math.max(10 - path.length, 0)),\n   *       name,\n   *       i === c.req.routeIndex ? '<- respond from here' : ''\n   *     )\n   *   })\n   * })\n   * ```\n   */\n  get matchedRoutes() {\n    return this.#matchResult[0].map(([[, route]]) => route);\n  }\n  /**\n   * `routePath()` can retrieve the path registered within the handler\n   *\n   * @deprecated\n   *\n   * Use routePath helper defined in \"hono/route\" instead.\n   *\n   * @see {@link https://hono.dev/docs/api/request#routepath}\n   *\n   * @example\n   * ```ts\n   * app.get('/posts/:id', (c) => {\n   *   return c.json({ path: c.req.routePath })\n   * })\n   * ```\n   */\n  get routePath() {\n    return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path;\n  }\n};\nvar cloneRawRequest = async (req) => {\n  if (!req.raw.bodyUsed) {\n    return req.raw.clone();\n  }\n  const cacheKey = Object.keys(req.bodyCache)[0];\n  if (!cacheKey) {\n    throw new HTTPException(500, {\n      message: \"Cannot clone request: body was already consumed and not cached. Please use HonoRequest methods (e.g., req.json(), req.text()) instead of consuming req.raw directly.\"\n    });\n  }\n  const requestInit = {\n    body: await req[cacheKey](),\n    cache: req.raw.cache,\n    credentials: req.raw.credentials,\n    headers: req.header(),\n    integrity: req.raw.integrity,\n    keepalive: req.raw.keepalive,\n    method: req.method,\n    mode: req.raw.mode,\n    redirect: req.raw.redirect,\n    referrer: req.raw.referrer,\n    referrerPolicy: req.raw.referrerPolicy,\n    signal: req.raw.signal\n  };\n  return new Request(req.url, requestInit);\n};\nexport {\n  HonoRequest,\n  cloneRawRequest\n};\n",
    "// src/utils/html.ts\nvar HtmlEscapedCallbackPhase = {\n  Stringify: 1,\n  BeforeStream: 2,\n  Stream: 3\n};\nvar raw = (value, callbacks) => {\n  const escapedString = new String(value);\n  escapedString.isEscaped = true;\n  escapedString.callbacks = callbacks;\n  return escapedString;\n};\nvar escapeRe = /[&<>'\"]/;\nvar stringBufferToString = async (buffer, callbacks) => {\n  let str = \"\";\n  callbacks ||= [];\n  const resolvedBuffer = await Promise.all(buffer);\n  for (let i = resolvedBuffer.length - 1; ; i--) {\n    str += resolvedBuffer[i];\n    i--;\n    if (i < 0) {\n      break;\n    }\n    let r = resolvedBuffer[i];\n    if (typeof r === \"object\") {\n      callbacks.push(...r.callbacks || []);\n    }\n    const isEscaped = r.isEscaped;\n    r = await (typeof r === \"object\" ? r.toString() : r);\n    if (typeof r === \"object\") {\n      callbacks.push(...r.callbacks || []);\n    }\n    if (r.isEscaped ?? isEscaped) {\n      str += r;\n    } else {\n      const buf = [str];\n      escapeToBuffer(r, buf);\n      str = buf[0];\n    }\n  }\n  return raw(str, callbacks);\n};\nvar escapeToBuffer = (str, buffer) => {\n  const match = str.search(escapeRe);\n  if (match === -1) {\n    buffer[0] += str;\n    return;\n  }\n  let escape;\n  let index;\n  let lastIndex = 0;\n  for (index = match; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        escape = \"&quot;\";\n        break;\n      case 39:\n        escape = \"&#39;\";\n        break;\n      case 38:\n        escape = \"&amp;\";\n        break;\n      case 60:\n        escape = \"&lt;\";\n        break;\n      case 62:\n        escape = \"&gt;\";\n        break;\n      default:\n        continue;\n    }\n    buffer[0] += str.substring(lastIndex, index) + escape;\n    lastIndex = index + 1;\n  }\n  buffer[0] += str.substring(lastIndex, index);\n};\nvar resolveCallbackSync = (str) => {\n  const callbacks = str.callbacks;\n  if (!callbacks?.length) {\n    return str;\n  }\n  const buffer = [str];\n  const context = {};\n  callbacks.forEach((c) => c({ phase: HtmlEscapedCallbackPhase.Stringify, buffer, context }));\n  return buffer[0];\n};\nvar resolveCallback = async (str, phase, preserveCallbacks, context, buffer) => {\n  if (typeof str === \"object\" && !(str instanceof String)) {\n    if (!(str instanceof Promise)) {\n      str = str.toString();\n    }\n    if (str instanceof Promise) {\n      str = await str;\n    }\n  }\n  const callbacks = str.callbacks;\n  if (!callbacks?.length) {\n    return Promise.resolve(str);\n  }\n  if (buffer) {\n    buffer[0] += str;\n  } else {\n    buffer = [str];\n  }\n  const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then(\n    (res) => Promise.all(\n      res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer))\n    ).then(() => buffer[0])\n  );\n  if (preserveCallbacks) {\n    return raw(await resStr, callbacks);\n  } else {\n    return resStr;\n  }\n};\nexport {\n  HtmlEscapedCallbackPhase,\n  escapeToBuffer,\n  raw,\n  resolveCallback,\n  resolveCallbackSync,\n  stringBufferToString\n};\n",
    "// src/context.ts\nimport { HonoRequest } from \"./request.js\";\nimport { HtmlEscapedCallbackPhase, resolveCallback } from \"./utils/html.js\";\nvar TEXT_PLAIN = \"text/plain; charset=UTF-8\";\nvar setDefaultContentType = (contentType, headers) => {\n  return {\n    \"Content-Type\": contentType,\n    ...headers\n  };\n};\nvar Context = class {\n  #rawRequest;\n  #req;\n  /**\n   * `.env` can get bindings (environment variables, secrets, KV namespaces, D1 database, R2 bucket etc.) in Cloudflare Workers.\n   *\n   * @see {@link https://hono.dev/docs/api/context#env}\n   *\n   * @example\n   * ```ts\n   * // Environment object for Cloudflare Workers\n   * app.get('*', async c => {\n   *   const counter = c.env.COUNTER\n   * })\n   * ```\n   */\n  env = {};\n  #var;\n  finalized = false;\n  /**\n   * `.error` can get the error object from the middleware if the Handler throws an error.\n   *\n   * @see {@link https://hono.dev/docs/api/context#error}\n   *\n   * @example\n   * ```ts\n   * app.use('*', async (c, next) => {\n   *   await next()\n   *   if (c.error) {\n   *     // do something...\n   *   }\n   * })\n   * ```\n   */\n  error;\n  #status;\n  #executionCtx;\n  #res;\n  #layout;\n  #renderer;\n  #notFoundHandler;\n  #preparedHeaders;\n  #matchResult;\n  #path;\n  /**\n   * Creates an instance of the Context class.\n   *\n   * @param req - The Request object.\n   * @param options - Optional configuration options for the context.\n   */\n  constructor(req, options) {\n    this.#rawRequest = req;\n    if (options) {\n      this.#executionCtx = options.executionCtx;\n      this.env = options.env;\n      this.#notFoundHandler = options.notFoundHandler;\n      this.#path = options.path;\n      this.#matchResult = options.matchResult;\n    }\n  }\n  /**\n   * `.req` is the instance of {@link HonoRequest}.\n   */\n  get req() {\n    this.#req ??= new HonoRequest(this.#rawRequest, this.#path, this.#matchResult);\n    return this.#req;\n  }\n  /**\n   * @see {@link https://hono.dev/docs/api/context#event}\n   * The FetchEvent associated with the current request.\n   *\n   * @throws Will throw an error if the context does not have a FetchEvent.\n   */\n  get event() {\n    if (this.#executionCtx && \"respondWith\" in this.#executionCtx) {\n      return this.#executionCtx;\n    } else {\n      throw Error(\"This context has no FetchEvent\");\n    }\n  }\n  /**\n   * @see {@link https://hono.dev/docs/api/context#executionctx}\n   * The ExecutionContext associated with the current request.\n   *\n   * @throws Will throw an error if the context does not have an ExecutionContext.\n   */\n  get executionCtx() {\n    if (this.#executionCtx) {\n      return this.#executionCtx;\n    } else {\n      throw Error(\"This context has no ExecutionContext\");\n    }\n  }\n  /**\n   * @see {@link https://hono.dev/docs/api/context#res}\n   * The Response object for the current request.\n   */\n  get res() {\n    return this.#res ||= new Response(null, {\n      headers: this.#preparedHeaders ??= new Headers()\n    });\n  }\n  /**\n   * Sets the Response object for the current request.\n   *\n   * @param _res - The Response object to set.\n   */\n  set res(_res) {\n    if (this.#res && _res) {\n      _res = new Response(_res.body, _res);\n      for (const [k, v] of this.#res.headers.entries()) {\n        if (k === \"content-type\") {\n          continue;\n        }\n        if (k === \"set-cookie\") {\n          const cookies = this.#res.headers.getSetCookie();\n          _res.headers.delete(\"set-cookie\");\n          for (const cookie of cookies) {\n            _res.headers.append(\"set-cookie\", cookie);\n          }\n        } else {\n          _res.headers.set(k, v);\n        }\n      }\n    }\n    this.#res = _res;\n    this.finalized = true;\n  }\n  /**\n   * `.render()` can create a response within a layout.\n   *\n   * @see {@link https://hono.dev/docs/api/context#render-setrenderer}\n   *\n   * @example\n   * ```ts\n   * app.get('/', (c) => {\n   *   return c.render('Hello!')\n   * })\n   * ```\n   */\n  render = (...args) => {\n    this.#renderer ??= (content) => this.html(content);\n    return this.#renderer(...args);\n  };\n  /**\n   * Sets the layout for the response.\n   *\n   * @param layout - The layout to set.\n   * @returns The layout function.\n   */\n  setLayout = (layout) => this.#layout = layout;\n  /**\n   * Gets the current layout for the response.\n   *\n   * @returns The current layout function.\n   */\n  getLayout = () => this.#layout;\n  /**\n   * `.setRenderer()` can set the layout in the custom middleware.\n   *\n   * @see {@link https://hono.dev/docs/api/context#render-setrenderer}\n   *\n   * @example\n   * ```tsx\n   * app.use('*', async (c, next) => {\n   *   c.setRenderer((content) => {\n   *     return c.html(\n   *       <html>\n   *         <body>\n   *           <p>{content}</p>\n   *         </body>\n   *       </html>\n   *     )\n   *   })\n   *   await next()\n   * })\n   * ```\n   */\n  setRenderer = (renderer) => {\n    this.#renderer = renderer;\n  };\n  /**\n   * `.header()` can set headers.\n   *\n   * @see {@link https://hono.dev/docs/api/context#header}\n   *\n   * @example\n   * ```ts\n   * app.get('/welcome', (c) => {\n   *   // Set headers\n   *   c.header('X-Message', 'Hello!')\n   *   c.header('Content-Type', 'text/plain')\n   *\n   *   return c.body('Thank you for coming')\n   * })\n   * ```\n   */\n  header = (name, value, options) => {\n    if (this.finalized) {\n      this.#res = new Response(this.#res.body, this.#res);\n    }\n    const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();\n    if (value === void 0) {\n      headers.delete(name);\n    } else if (options?.append) {\n      headers.append(name, value);\n    } else {\n      headers.set(name, value);\n    }\n  };\n  status = (status) => {\n    this.#status = status;\n  };\n  /**\n   * `.set()` can set the value specified by the key.\n   *\n   * @see {@link https://hono.dev/docs/api/context#set-get}\n   *\n   * @example\n   * ```ts\n   * app.use('*', async (c, next) => {\n   *   c.set('message', 'Hono is hot!!')\n   *   await next()\n   * })\n   * ```\n   */\n  set = (key, value) => {\n    this.#var ??= /* @__PURE__ */ new Map();\n    this.#var.set(key, value);\n  };\n  /**\n   * `.get()` can use the value specified by the key.\n   *\n   * @see {@link https://hono.dev/docs/api/context#set-get}\n   *\n   * @example\n   * ```ts\n   * app.get('/', (c) => {\n   *   const message = c.get('message')\n   *   return c.text(`The message is \"${message}\"`)\n   * })\n   * ```\n   */\n  get = (key) => {\n    return this.#var ? this.#var.get(key) : void 0;\n  };\n  /**\n   * `.var` can access the value of a variable.\n   *\n   * @see {@link https://hono.dev/docs/api/context#var}\n   *\n   * @example\n   * ```ts\n   * const result = c.var.client.oneMethod()\n   * ```\n   */\n  // c.var.propName is a read-only\n  get var() {\n    if (!this.#var) {\n      return {};\n    }\n    return Object.fromEntries(this.#var);\n  }\n  #newResponse(data, arg, headers) {\n    const responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders ?? new Headers();\n    if (typeof arg === \"object\" && \"headers\" in arg) {\n      const argHeaders = arg.headers instanceof Headers ? arg.headers : new Headers(arg.headers);\n      for (const [key, value] of argHeaders) {\n        if (key.toLowerCase() === \"set-cookie\") {\n          responseHeaders.append(key, value);\n        } else {\n          responseHeaders.set(key, value);\n        }\n      }\n    }\n    if (headers) {\n      for (const [k, v] of Object.entries(headers)) {\n        if (typeof v === \"string\") {\n          responseHeaders.set(k, v);\n        } else {\n          responseHeaders.delete(k);\n          for (const v2 of v) {\n            responseHeaders.append(k, v2);\n          }\n        }\n      }\n    }\n    const status = typeof arg === \"number\" ? arg : arg?.status ?? this.#status;\n    return new Response(data, { status, headers: responseHeaders });\n  }\n  newResponse = (...args) => this.#newResponse(...args);\n  /**\n   * `.body()` can return the HTTP response.\n   * You can set headers with `.header()` and set HTTP status code with `.status`.\n   * This can also be set in `.text()`, `.json()` and so on.\n   *\n   * @see {@link https://hono.dev/docs/api/context#body}\n   *\n   * @example\n   * ```ts\n   * app.get('/welcome', (c) => {\n   *   // Set headers\n   *   c.header('X-Message', 'Hello!')\n   *   c.header('Content-Type', 'text/plain')\n   *   // Set HTTP status code\n   *   c.status(201)\n   *\n   *   // Return the response body\n   *   return c.body('Thank you for coming')\n   * })\n   * ```\n   */\n  body = (data, arg, headers) => this.#newResponse(data, arg, headers);\n  /**\n   * `.text()` can render text as `Content-Type:text/plain`.\n   *\n   * @see {@link https://hono.dev/docs/api/context#text}\n   *\n   * @example\n   * ```ts\n   * app.get('/say', (c) => {\n   *   return c.text('Hello!')\n   * })\n   * ```\n   */\n  text = (text, arg, headers) => {\n    return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(\n      text,\n      arg,\n      setDefaultContentType(TEXT_PLAIN, headers)\n    );\n  };\n  /**\n   * `.json()` can render JSON as `Content-Type:application/json`.\n   *\n   * @see {@link https://hono.dev/docs/api/context#json}\n   *\n   * @example\n   * ```ts\n   * app.get('/api', (c) => {\n   *   return c.json({ message: 'Hello!' })\n   * })\n   * ```\n   */\n  json = (object, arg, headers) => {\n    return this.#newResponse(\n      JSON.stringify(object),\n      arg,\n      setDefaultContentType(\"application/json\", headers)\n    );\n  };\n  html = (html, arg, headers) => {\n    const res = (html2) => this.#newResponse(html2, arg, setDefaultContentType(\"text/html; charset=UTF-8\", headers));\n    return typeof html === \"object\" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);\n  };\n  /**\n   * `.redirect()` can Redirect, default status code is 302.\n   *\n   * @see {@link https://hono.dev/docs/api/context#redirect}\n   *\n   * @example\n   * ```ts\n   * app.get('/redirect', (c) => {\n   *   return c.redirect('/')\n   * })\n   * app.get('/redirect-permanently', (c) => {\n   *   return c.redirect('/', 301)\n   * })\n   * ```\n   */\n  redirect = (location, status) => {\n    const locationString = String(location);\n    this.header(\n      \"Location\",\n      // Multibyes should be encoded\n      // eslint-disable-next-line no-control-regex\n      !/[^\\x00-\\xFF]/.test(locationString) ? locationString : encodeURI(locationString)\n    );\n    return this.newResponse(null, status ?? 302);\n  };\n  /**\n   * `.notFound()` can return the Not Found Response.\n   *\n   * @see {@link https://hono.dev/docs/api/context#notfound}\n   *\n   * @example\n   * ```ts\n   * app.get('/notfound', (c) => {\n   *   return c.notFound()\n   * })\n   * ```\n   */\n  notFound = () => {\n    this.#notFoundHandler ??= () => new Response();\n    return this.#notFoundHandler(this);\n  };\n};\nexport {\n  Context,\n  TEXT_PLAIN\n};\n",
    "// src/middleware/jwt/jwt.ts\nimport { getCookie, getSignedCookie } from \"../../helper/cookie/index.js\";\nimport { HTTPException } from \"../../http-exception.js\";\nimport { Jwt } from \"../../utils/jwt/index.js\";\nimport \"../../context.js\";\nvar jwt = (options) => {\n  const verifyOpts = options.verification || {};\n  if (!options || !options.secret) {\n    throw new Error('JWT auth middleware requires options for \"secret\"');\n  }\n  if (!crypto.subtle || !crypto.subtle.importKey) {\n    throw new Error(\"`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.\");\n  }\n  return async function jwt2(ctx, next) {\n    const headerName = options.headerName || \"Authorization\";\n    const credentials = ctx.req.raw.headers.get(headerName);\n    let token;\n    if (credentials) {\n      const parts = credentials.split(/\\s+/);\n      if (parts.length !== 2) {\n        const errDescription = \"invalid credentials structure\";\n        throw new HTTPException(401, {\n          message: errDescription,\n          res: unauthorizedResponse({\n            ctx,\n            error: \"invalid_request\",\n            errDescription\n          })\n        });\n      } else {\n        token = parts[1];\n      }\n    } else if (options.cookie) {\n      if (typeof options.cookie == \"string\") {\n        token = getCookie(ctx, options.cookie);\n      } else if (options.cookie.secret) {\n        if (options.cookie.prefixOptions) {\n          token = await getSignedCookie(\n            ctx,\n            options.cookie.secret,\n            options.cookie.key,\n            options.cookie.prefixOptions\n          );\n        } else {\n          token = await getSignedCookie(ctx, options.cookie.secret, options.cookie.key);\n        }\n      } else {\n        if (options.cookie.prefixOptions) {\n          token = getCookie(ctx, options.cookie.key, options.cookie.prefixOptions);\n        } else {\n          token = getCookie(ctx, options.cookie.key);\n        }\n      }\n    }\n    if (!token) {\n      const errDescription = \"no authorization included in request\";\n      throw new HTTPException(401, {\n        message: errDescription,\n        res: unauthorizedResponse({\n          ctx,\n          error: \"invalid_request\",\n          errDescription\n        })\n      });\n    }\n    let payload;\n    let cause;\n    try {\n      payload = await Jwt.verify(token, options.secret, {\n        alg: options.alg,\n        ...verifyOpts\n      });\n    } catch (e) {\n      cause = e;\n    }\n    if (!payload) {\n      throw new HTTPException(401, {\n        message: \"Unauthorized\",\n        res: unauthorizedResponse({\n          ctx,\n          error: \"invalid_token\",\n          statusText: \"Unauthorized\",\n          errDescription: \"token verification failure\"\n        }),\n        cause\n      });\n    }\n    ctx.set(\"jwtPayload\", payload);\n    await next();\n  };\n};\nfunction unauthorizedResponse(opts) {\n  return new Response(\"Unauthorized\", {\n    status: 401,\n    statusText: opts.statusText,\n    headers: {\n      \"WWW-Authenticate\": `Bearer realm=\"${opts.ctx.req.url}\",error=\"${opts.error}\",error_description=\"${opts.errDescription}\"`\n    }\n  });\n}\nvar verifyWithJwks = Jwt.verifyWithJwks;\nvar verify = Jwt.verify;\nvar decode = Jwt.decode;\nvar sign = Jwt.sign;\nexport {\n  decode,\n  jwt,\n  sign,\n  verify,\n  verifyWithJwks\n};\n",
    "import type { PlanetCore } from 'gravito-core';\nimport type { Context, Next } from 'hono';\nimport { sign, verify } from 'hono/jwt';\n\nexport interface OrbitAuthOptions {\n  secret: string;\n  exposeAs?: string; // Default: 'auth'\n}\n\nexport type AuthPayload = {\n  sub: string;\n  role?: string;\n  [key: string]: unknown;\n};\n\nexport default function orbitAuth(core: PlanetCore, options: OrbitAuthOptions) {\n  const { secret, exposeAs = 'auth' } = options;\n  const logger = core.logger;\n\n  logger.info(`[OrbitAuth] Initializing Auth (Exposed as: ${exposeAs})`);\n\n  // Helper Methods\n  const authService = {\n    async sign(payload: AuthPayload): Promise<string> {\n      // Hook: Allow plugins to modify payload before signing\n      const finalPayload = await core.hooks.applyFilters('auth:payload', payload);\n      return sign(finalPayload, secret);\n    },\n\n    async verify(token: string): Promise<AuthPayload> {\n      return (await verify(token, secret)) as AuthPayload;\n    },\n  };\n\n  // Inject helper into context\n  core.app.use('*', async (c: Context, next: Next) => {\n    c.set(exposeAs, authService);\n    await next();\n  });\n\n  // Action: Auth Initialized\n  core.hooks.doAction('auth:init', authService);\n\n  return authService;\n}\n"
  ],
  "mappings": "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",
  "debugId": "67F2C68394C3722C64756E2164756E21",
  "names": []
}