{
  "version": 3,
  "sources": ["../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/middleware/cors/index.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/compose.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/request/constants.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/utils/body.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/utils/url.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/request.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/utils/html.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/context.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/router.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/utils/constants.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/hono-base.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/router/pattern-router/router.js", "../../../../../../node_modules/.pnpm/hono@4.12.5/node_modules/hono/dist/preset/tiny.js", "../../../../src/workers/core/constants.ts", "../../../../src/workers/r2/public.worker.ts"],
  "sourcesContent": ["// src/middleware/cors/index.ts\nvar cors = (options) => {\n  const defaults = {\n    origin: \"*\",\n    allowMethods: [\"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\", \"PATCH\"],\n    allowHeaders: [],\n    exposeHeaders: []\n  };\n  const opts = {\n    ...defaults,\n    ...options\n  };\n  const findAllowOrigin = ((optsOrigin) => {\n    if (typeof optsOrigin === \"string\") {\n      if (optsOrigin === \"*\") {\n        return () => optsOrigin;\n      } else {\n        return (origin) => optsOrigin === origin ? origin : null;\n      }\n    } else if (typeof optsOrigin === \"function\") {\n      return optsOrigin;\n    } else {\n      return (origin) => optsOrigin.includes(origin) ? origin : null;\n    }\n  })(opts.origin);\n  const findAllowMethods = ((optsAllowMethods) => {\n    if (typeof optsAllowMethods === \"function\") {\n      return optsAllowMethods;\n    } else if (Array.isArray(optsAllowMethods)) {\n      return () => optsAllowMethods;\n    } else {\n      return () => [];\n    }\n  })(opts.allowMethods);\n  return async function cors2(c, next) {\n    function set(key, value) {\n      c.res.headers.set(key, value);\n    }\n    const allowOrigin = await findAllowOrigin(c.req.header(\"origin\") || \"\", c);\n    if (allowOrigin) {\n      set(\"Access-Control-Allow-Origin\", allowOrigin);\n    }\n    if (opts.credentials) {\n      set(\"Access-Control-Allow-Credentials\", \"true\");\n    }\n    if (opts.exposeHeaders?.length) {\n      set(\"Access-Control-Expose-Headers\", opts.exposeHeaders.join(\",\"));\n    }\n    if (c.req.method === \"OPTIONS\") {\n      if (opts.origin !== \"*\") {\n        set(\"Vary\", \"Origin\");\n      }\n      if (opts.maxAge != null) {\n        set(\"Access-Control-Max-Age\", opts.maxAge.toString());\n      }\n      const allowMethods = await findAllowMethods(c.req.header(\"origin\") || \"\", c);\n      if (allowMethods.length) {\n        set(\"Access-Control-Allow-Methods\", allowMethods.join(\",\"));\n      }\n      let headers = opts.allowHeaders;\n      if (!headers?.length) {\n        const requestHeaders = c.req.header(\"Access-Control-Request-Headers\");\n        if (requestHeaders) {\n          headers = requestHeaders.split(/\\s*,\\s*/);\n        }\n      }\n      if (headers?.length) {\n        set(\"Access-Control-Allow-Headers\", headers.join(\",\"));\n        c.res.headers.append(\"Vary\", \"Access-Control-Request-Headers\");\n      }\n      c.res.headers.delete(\"Content-Length\");\n      c.res.headers.delete(\"Content-Type\");\n      return new Response(null, {\n        headers: c.res.headers,\n        status: 204,\n        statusText: \"No Content\"\n      });\n    }\n    await next();\n    if (opts.origin !== \"*\") {\n      c.header(\"Vary\", \"Origin\", { append: true });\n    }\n  };\n};\nexport {\n  cors\n};\n", "// src/compose.ts\nvar compose = (middleware, onError, onNotFound) => {\n  return (context, next) => {\n    let index = -1;\n    return dispatch(0);\n    async function dispatch(i) {\n      if (i <= index) {\n        throw new Error(\"next() called multiple times\");\n      }\n      index = i;\n      let res;\n      let isError = false;\n      let handler;\n      if (middleware[i]) {\n        handler = middleware[i][0][0];\n        context.req.routeIndex = i;\n      } else {\n        handler = i === middleware.length && next || void 0;\n      }\n      if (handler) {\n        try {\n          res = await handler(context, () => dispatch(i + 1));\n        } catch (err) {\n          if (err instanceof Error && onError) {\n            context.error = err;\n            res = await onError(err, context);\n            isError = true;\n          } else {\n            throw err;\n          }\n        }\n      } else {\n        if (context.finalized === false && onNotFound) {\n          res = await onNotFound(context);\n        }\n      }\n      if (res && (context.finalized === false || isError)) {\n        context.res = res;\n      }\n      return context;\n    }\n  };\n};\nexport {\n  compose\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/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 hashIndex = url.indexOf(\"#\", i);\n      const end = queryIndex === -1 ? hashIndex === -1 ? void 0 : hashIndex : hashIndex === -1 ? queryIndex : Math.min(queryIndex, hashIndex);\n      const path = url.slice(start, end);\n      return tryDecodeURI(path.includes(\"%25\") ? path.replace(/%25/g, \"%2525\") : path);\n    } else if (charCode === 63 || charCode === 35) {\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  tryDecodeURI\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 createResponseInstance = (body, init) => new Response(body, init);\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 ||= createResponseInstance(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 = createResponseInstance(_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 = createResponseInstance(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 createResponseInstance(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 ??= () => createResponseInstance();\n    return this.#notFoundHandler(this);\n  };\n};\nexport {\n  Context,\n  TEXT_PLAIN\n};\n", "// src/router.ts\nvar METHOD_NAME_ALL = \"ALL\";\nvar METHOD_NAME_ALL_LOWERCASE = \"all\";\nvar METHODS = [\"get\", \"post\", \"put\", \"delete\", \"options\", \"patch\"];\nvar MESSAGE_MATCHER_IS_ALREADY_BUILT = \"Can not add a route since the matcher is already built.\";\nvar UnsupportedPathError = class extends Error {\n};\nexport {\n  MESSAGE_MATCHER_IS_ALREADY_BUILT,\n  METHODS,\n  METHOD_NAME_ALL,\n  METHOD_NAME_ALL_LOWERCASE,\n  UnsupportedPathError\n};\n", "// src/utils/constants.ts\nvar COMPOSED_HANDLER = \"__COMPOSED_HANDLER\";\nexport {\n  COMPOSED_HANDLER\n};\n", "// src/hono-base.ts\nimport { compose } from \"./compose.js\";\nimport { Context } from \"./context.js\";\nimport { METHODS, METHOD_NAME_ALL, METHOD_NAME_ALL_LOWERCASE } from \"./router.js\";\nimport { COMPOSED_HANDLER } from \"./utils/constants.js\";\nimport { getPath, getPathNoStrict, mergePath } from \"./utils/url.js\";\nvar notFoundHandler = (c) => {\n  return c.text(\"404 Not Found\", 404);\n};\nvar errorHandler = (err, c) => {\n  if (\"getResponse\" in err) {\n    const res = err.getResponse();\n    return c.newResponse(res.body, res);\n  }\n  console.error(err);\n  return c.text(\"Internal Server Error\", 500);\n};\nvar Hono = class _Hono {\n  get;\n  post;\n  put;\n  delete;\n  options;\n  patch;\n  all;\n  on;\n  use;\n  /*\n    This class is like an abstract class and does not have a router.\n    To use it, inherit the class and implement router in the constructor.\n  */\n  router;\n  getPath;\n  // Cannot use `#` because it requires visibility at JavaScript runtime.\n  _basePath = \"/\";\n  #path = \"/\";\n  routes = [];\n  constructor(options = {}) {\n    const allMethods = [...METHODS, METHOD_NAME_ALL_LOWERCASE];\n    allMethods.forEach((method) => {\n      this[method] = (args1, ...args) => {\n        if (typeof args1 === \"string\") {\n          this.#path = args1;\n        } else {\n          this.#addRoute(method, this.#path, args1);\n        }\n        args.forEach((handler) => {\n          this.#addRoute(method, this.#path, handler);\n        });\n        return this;\n      };\n    });\n    this.on = (method, path, ...handlers) => {\n      for (const p of [path].flat()) {\n        this.#path = p;\n        for (const m of [method].flat()) {\n          handlers.map((handler) => {\n            this.#addRoute(m.toUpperCase(), this.#path, handler);\n          });\n        }\n      }\n      return this;\n    };\n    this.use = (arg1, ...handlers) => {\n      if (typeof arg1 === \"string\") {\n        this.#path = arg1;\n      } else {\n        this.#path = \"*\";\n        handlers.unshift(arg1);\n      }\n      handlers.forEach((handler) => {\n        this.#addRoute(METHOD_NAME_ALL, this.#path, handler);\n      });\n      return this;\n    };\n    const { strict, ...optionsWithoutStrict } = options;\n    Object.assign(this, optionsWithoutStrict);\n    this.getPath = strict ?? true ? options.getPath ?? getPath : getPathNoStrict;\n  }\n  #clone() {\n    const clone = new _Hono({\n      router: this.router,\n      getPath: this.getPath\n    });\n    clone.errorHandler = this.errorHandler;\n    clone.#notFoundHandler = this.#notFoundHandler;\n    clone.routes = this.routes;\n    return clone;\n  }\n  #notFoundHandler = notFoundHandler;\n  // Cannot use `#` because it requires visibility at JavaScript runtime.\n  errorHandler = errorHandler;\n  /**\n   * `.route()` allows grouping other Hono instance in routes.\n   *\n   * @see {@link https://hono.dev/docs/api/routing#grouping}\n   *\n   * @param {string} path - base Path\n   * @param {Hono} app - other Hono instance\n   * @returns {Hono} routed Hono instance\n   *\n   * @example\n   * ```ts\n   * const app = new Hono()\n   * const app2 = new Hono()\n   *\n   * app2.get(\"/user\", (c) => c.text(\"user\"))\n   * app.route(\"/api\", app2) // GET /api/user\n   * ```\n   */\n  route(path, app) {\n    const subApp = this.basePath(path);\n    app.routes.map((r) => {\n      let handler;\n      if (app.errorHandler === errorHandler) {\n        handler = r.handler;\n      } else {\n        handler = async (c, next) => (await compose([], app.errorHandler)(c, () => r.handler(c, next))).res;\n        handler[COMPOSED_HANDLER] = r.handler;\n      }\n      subApp.#addRoute(r.method, r.path, handler);\n    });\n    return this;\n  }\n  /**\n   * `.basePath()` allows base paths to be specified.\n   *\n   * @see {@link https://hono.dev/docs/api/routing#base-path}\n   *\n   * @param {string} path - base Path\n   * @returns {Hono} changed Hono instance\n   *\n   * @example\n   * ```ts\n   * const api = new Hono().basePath('/api')\n   * ```\n   */\n  basePath(path) {\n    const subApp = this.#clone();\n    subApp._basePath = mergePath(this._basePath, path);\n    return subApp;\n  }\n  /**\n   * `.onError()` handles an error and returns a customized Response.\n   *\n   * @see {@link https://hono.dev/docs/api/hono#error-handling}\n   *\n   * @param {ErrorHandler} handler - request Handler for error\n   * @returns {Hono} changed Hono instance\n   *\n   * @example\n   * ```ts\n   * app.onError((err, c) => {\n   *   console.error(`${err}`)\n   *   return c.text('Custom Error Message', 500)\n   * })\n   * ```\n   */\n  onError = (handler) => {\n    this.errorHandler = handler;\n    return this;\n  };\n  /**\n   * `.notFound()` allows you to customize a Not Found Response.\n   *\n   * @see {@link https://hono.dev/docs/api/hono#not-found}\n   *\n   * @param {NotFoundHandler} handler - request handler for not-found\n   * @returns {Hono} changed Hono instance\n   *\n   * @example\n   * ```ts\n   * app.notFound((c) => {\n   *   return c.text('Custom 404 Message', 404)\n   * })\n   * ```\n   */\n  notFound = (handler) => {\n    this.#notFoundHandler = handler;\n    return this;\n  };\n  /**\n   * `.mount()` allows you to mount applications built with other frameworks into your Hono application.\n   *\n   * @see {@link https://hono.dev/docs/api/hono#mount}\n   *\n   * @param {string} path - base Path\n   * @param {Function} applicationHandler - other Request Handler\n   * @param {MountOptions} [options] - options of `.mount()`\n   * @returns {Hono} mounted Hono instance\n   *\n   * @example\n   * ```ts\n   * import { Router as IttyRouter } from 'itty-router'\n   * import { Hono } from 'hono'\n   * // Create itty-router application\n   * const ittyRouter = IttyRouter()\n   * // GET /itty-router/hello\n   * ittyRouter.get('/hello', () => new Response('Hello from itty-router'))\n   *\n   * const app = new Hono()\n   * app.mount('/itty-router', ittyRouter.handle)\n   * ```\n   *\n   * @example\n   * ```ts\n   * const app = new Hono()\n   * // Send the request to another application without modification.\n   * app.mount('/app', anotherApp, {\n   *   replaceRequest: (req) => req,\n   * })\n   * ```\n   */\n  mount(path, applicationHandler, options) {\n    let replaceRequest;\n    let optionHandler;\n    if (options) {\n      if (typeof options === \"function\") {\n        optionHandler = options;\n      } else {\n        optionHandler = options.optionHandler;\n        if (options.replaceRequest === false) {\n          replaceRequest = (request) => request;\n        } else {\n          replaceRequest = options.replaceRequest;\n        }\n      }\n    }\n    const getOptions = optionHandler ? (c) => {\n      const options2 = optionHandler(c);\n      return Array.isArray(options2) ? options2 : [options2];\n    } : (c) => {\n      let executionContext = void 0;\n      try {\n        executionContext = c.executionCtx;\n      } catch {\n      }\n      return [c.env, executionContext];\n    };\n    replaceRequest ||= (() => {\n      const mergedPath = mergePath(this._basePath, path);\n      const pathPrefixLength = mergedPath === \"/\" ? 0 : mergedPath.length;\n      return (request) => {\n        const url = new URL(request.url);\n        url.pathname = url.pathname.slice(pathPrefixLength) || \"/\";\n        return new Request(url, request);\n      };\n    })();\n    const handler = async (c, next) => {\n      const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c));\n      if (res) {\n        return res;\n      }\n      await next();\n    };\n    this.#addRoute(METHOD_NAME_ALL, mergePath(path, \"*\"), handler);\n    return this;\n  }\n  #addRoute(method, path, handler) {\n    method = method.toUpperCase();\n    path = mergePath(this._basePath, path);\n    const r = { basePath: this._basePath, path, method, handler };\n    this.router.add(method, path, [handler, r]);\n    this.routes.push(r);\n  }\n  #handleError(err, c) {\n    if (err instanceof Error) {\n      return this.errorHandler(err, c);\n    }\n    throw err;\n  }\n  #dispatch(request, executionCtx, env, method) {\n    if (method === \"HEAD\") {\n      return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, \"GET\")))();\n    }\n    const path = this.getPath(request, { env });\n    const matchResult = this.router.match(method, path);\n    const c = new Context(request, {\n      path,\n      matchResult,\n      env,\n      executionCtx,\n      notFoundHandler: this.#notFoundHandler\n    });\n    if (matchResult[0].length === 1) {\n      let res;\n      try {\n        res = matchResult[0][0][0][0](c, async () => {\n          c.res = await this.#notFoundHandler(c);\n        });\n      } catch (err) {\n        return this.#handleError(err, c);\n      }\n      return res instanceof Promise ? res.then(\n        (resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c))\n      ).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c);\n    }\n    const composed = compose(matchResult[0], this.errorHandler, this.#notFoundHandler);\n    return (async () => {\n      try {\n        const context = await composed(c);\n        if (!context.finalized) {\n          throw new Error(\n            \"Context is not finalized. Did you forget to return a Response object or `await next()`?\"\n          );\n        }\n        return context.res;\n      } catch (err) {\n        return this.#handleError(err, c);\n      }\n    })();\n  }\n  /**\n   * `.fetch()` will be entry point of your app.\n   *\n   * @see {@link https://hono.dev/docs/api/hono#fetch}\n   *\n   * @param {Request} request - request Object of request\n   * @param {Env} Env - env Object\n   * @param {ExecutionContext} - context of execution\n   * @returns {Response | Promise<Response>} response of request\n   *\n   */\n  fetch = (request, ...rest) => {\n    return this.#dispatch(request, rest[1], rest[0], request.method);\n  };\n  /**\n   * `.request()` is a useful method for testing.\n   * You can pass a URL or pathname to send a GET request.\n   * app will return a Response object.\n   * ```ts\n   * test('GET /hello is ok', async () => {\n   *   const res = await app.request('/hello')\n   *   expect(res.status).toBe(200)\n   * })\n   * ```\n   * @see https://hono.dev/docs/api/hono#request\n   */\n  request = (input, requestInit, Env, executionCtx) => {\n    if (input instanceof Request) {\n      return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx);\n    }\n    input = input.toString();\n    return this.fetch(\n      new Request(\n        /^https?:\\/\\//.test(input) ? input : `http://localhost${mergePath(\"/\", input)}`,\n        requestInit\n      ),\n      Env,\n      executionCtx\n    );\n  };\n  /**\n   * `.fire()` automatically adds a global fetch event listener.\n   * This can be useful for environments that adhere to the Service Worker API, such as non-ES module Cloudflare Workers.\n   * @deprecated\n   * Use `fire` from `hono/service-worker` instead.\n   * ```ts\n   * import { Hono } from 'hono'\n   * import { fire } from 'hono/service-worker'\n   *\n   * const app = new Hono()\n   * // ...\n   * fire(app)\n   * ```\n   * @see https://hono.dev/docs/api/hono#fire\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API\n   * @see https://developers.cloudflare.com/workers/reference/migrate-to-module-workers/\n   */\n  fire = () => {\n    addEventListener(\"fetch\", (event) => {\n      event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method));\n    });\n  };\n};\nexport {\n  Hono as HonoBase\n};\n", "// src/router/pattern-router/router.ts\nimport { METHOD_NAME_ALL, UnsupportedPathError } from \"../../router.js\";\nvar emptyParams = /* @__PURE__ */ Object.create(null);\nvar PatternRouter = class {\n  name = \"PatternRouter\";\n  #routes = [];\n  add(method, path, handler) {\n    const endsWithWildcard = path.at(-1) === \"*\";\n    if (endsWithWildcard) {\n      path = path.slice(0, -2);\n    }\n    if (path.at(-1) === \"?\") {\n      path = path.slice(0, -1);\n      this.add(method, path.replace(/\\/[^/]+$/, \"\"), handler);\n    }\n    const parts = (path.match(/\\/?(:\\w+(?:{(?:(?:{[\\d,]+})|[^}])+})?)|\\/?[^\\/\\?]+/g) || []).map(\n      (part) => {\n        const match = part.match(/^\\/:([^{]+)(?:{(.*)})?/);\n        return match ? `/(?<${match[1]}>${match[2] || \"[^/]+\"})` : part === \"/*\" ? \"/[^/]+\" : part.replace(/[.\\\\+*[^\\]$()]/g, \"\\\\$&\");\n      }\n    );\n    try {\n      this.#routes.push([\n        new RegExp(`^${parts.join(\"\")}${endsWithWildcard ? \"\" : \"/?$\"}`),\n        method,\n        handler\n      ]);\n    } catch {\n      throw new UnsupportedPathError();\n    }\n  }\n  match(method, path) {\n    const handlers = [];\n    for (let i = 0, len = this.#routes.length; i < len; i++) {\n      const [pattern, routeMethod, handler] = this.#routes[i];\n      if (routeMethod === method || routeMethod === METHOD_NAME_ALL) {\n        const match = pattern.exec(path);\n        if (match) {\n          handlers.push([handler, match.groups || emptyParams]);\n        }\n      }\n    }\n    return [handlers];\n  }\n};\nexport {\n  PatternRouter\n};\n", "// src/preset/tiny.ts\nimport { HonoBase } from \"../hono-base.js\";\nimport { PatternRouter } from \"../router/pattern-router/index.js\";\nvar Hono = class extends HonoBase {\n  constructor(options = {}) {\n    super(options);\n    this.router = new PatternRouter();\n  }\n};\nexport {\n  Hono\n};\n", "/**\n * Reserved `/cdn-cgi/` paths for internal Miniflare endpoints.\n * These paths are reserved by Cloudflare's network and won't conflict with user routes.\n */\nexport const CorePaths = {\n\t/** Magic proxy used by getPlatformProxy */\n\tPLATFORM_PROXY: \"/cdn-cgi/platform-proxy\",\n\t/** Trigger scheduled event handlers */\n\tSCHEDULED: \"/cdn-cgi/handler/scheduled\",\n\t/** Trigger email event handlers */\n\tEMAIL: \"/cdn-cgi/handler/email\",\n\t/** Handler path prefix for validation */\n\tHANDLER_PREFIX: \"/cdn-cgi/handler/\",\n\t/** Live reload WebSocket endpoint */\n\tLIVE_RELOAD: \"/cdn-cgi/mf/reload\",\n\t/** Local explorer UI and API */\n\tEXPLORER: \"/cdn-cgi/explorer\",\n\t/** Legacy way to trigger scheduled event handlers */\n\tLEGACY_SCHEDULED: \"/cdn-cgi/mf/scheduled\",\n\t/** Stream video serving endpoint */\n\tSTREAM_VIDEO: \"/cdn-cgi/mf/stream\",\n\t/** Local image delivery endpoint for serving hosted images */\n\tIMAGE_DELIVERY: \"/cdn-cgi/mf/imagedelivery\",\n\t/** Public R2 bucket object serving endpoint */\n\tR2_PUBLIC: \"/cdn-cgi/local/r2/public\",\n} as const;\n\nexport const CoreHeaders = {\n\tCUSTOM_FETCH_SERVICE: \"MF-Custom-Fetch-Service\",\n\tCUSTOM_NODE_SERVICE: \"MF-Custom-Node-Service\",\n\tORIGINAL_URL: \"MF-Original-URL\",\n\t/**\n\t * Stores the original hostname when using the `upstream` option.\n\t * When requests are proxied to an upstream, the `Host` header is rewritten\n\t * to match the upstream. This header preserves the original hostname\n\t * so Workers can access it if needed.\n\t */\n\tORIGINAL_HOSTNAME: \"MF-Original-Hostname\",\n\tPROXY_SHARED_SECRET: \"MF-Proxy-Shared-Secret\",\n\tDISABLE_PRETTY_ERROR: \"MF-Disable-Pretty-Error\",\n\tERROR_STACK: \"MF-Experimental-Error-Stack\",\n\tROUTE_OVERRIDE: \"MF-Route-Override\",\n\tCF_BLOB: \"MF-CF-Blob\",\n\t/** Used by the Vite plugin to pass through the original `sec-fetch-mode` header */\n\tSEC_FETCH_MODE: \"MF-Sec-Fetch-Mode\",\n\n\t// API Proxy\n\tOP_SECRET: \"MF-Op-Secret\",\n\tOP: \"MF-Op\",\n\tOP_TARGET: \"MF-Op-Target\",\n\tOP_KEY: \"MF-Op-Key\",\n\tOP_SYNC: \"MF-Op-Sync\",\n\tOP_STRINGIFIED_SIZE: \"MF-Op-Stringified-Size\",\n\tOP_RESULT_TYPE: \"MF-Op-Result-Type\",\n\tOP_ORIGINAL_URL: \"MF-Op-Original-URL\",\n} as const;\n\nexport const CoreBindings = {\n\tSERVICE_LOOPBACK: \"MINIFLARE_LOOPBACK\",\n\tSERVICE_USER_ROUTE_PREFIX: \"MINIFLARE_USER_ROUTE_\",\n\tSERVICE_USER_FALLBACK: \"MINIFLARE_USER_FALLBACK\",\n\tTEXT_CUSTOM_SERVICE: \"MINIFLARE_CUSTOM_SERVICE\",\n\t// Backs the Images binding (`env.IMAGES`) \u2014 see imagesLocalFetcher.\n\tIMAGES_BINDING_SERVICE: \"MINIFLARE_IMAGES_BINDING_SERVICE\",\n\t// Backs `fetch(url, { cf: { image } })` transforms \u2014 see cfImageLocalFetcher.\n\tIMAGES_FETCH_SERVICE: \"MINIFLARE_IMAGES_FETCH_SERVICE\",\n\tTEXT_UPSTREAM_URL: \"MINIFLARE_UPSTREAM_URL\",\n\tJSON_CF_BLOB: \"CF_BLOB\",\n\tJSON_ROUTES: \"MINIFLARE_ROUTES\",\n\tJSON_LOG_LEVEL: \"MINIFLARE_LOG_LEVEL\",\n\tDATA_LIVE_RELOAD_SCRIPT: \"MINIFLARE_LIVE_RELOAD_SCRIPT\",\n\tDURABLE_OBJECT_NAMESPACE_PROXY: \"MINIFLARE_PROXY\",\n\tDATA_PROXY_SECRET: \"MINIFLARE_PROXY_SECRET\",\n\tDATA_PROXY_SHARED_SECRET: \"MINIFLARE_PROXY_SHARED_SECRET\",\n\tTRIGGER_HANDLERS: \"TRIGGER_HANDLERS\",\n\tLOG_REQUESTS: \"LOG_REQUESTS\",\n\tSTRIP_DISABLE_PRETTY_ERROR: \"STRIP_DISABLE_PRETTY_ERROR\",\n\tSERVICE_LOCAL_EXPLORER: \"MINIFLARE_LOCAL_EXPLORER\",\n\tEXPLORER_DISK: \"MINIFLARE_EXPLORER_DISK\",\n\tJSON_LOCAL_EXPLORER_BINDING_MAP: \"LOCAL_EXPLORER_BINDING_MAP\",\n\tJSON_LOCAL_EXPLORER_WORKER_NAMES: \"LOCAL_EXPLORER_WORKER_NAMES\",\n\tJSON_EXPLORER_WORKER_OPTS: \"MINIFLARE_EXPLORER_WORKER_OPTS\",\n\tSERVICE_CACHE: \"MINIFLARE_CACHE\",\n\tSERVICE_DEV_REGISTRY_PROXY: \"MINIFLARE_DEV_REGISTRY_PROXY\",\n\tJSON_TELEMETRY_CONFIG: \"MINIFLARE_TELEMETRY_CONFIG\",\n\tDEV_REGISTRY_DEBUG_PORT: \"DEV_REGISTRY_DEBUG_PORT\",\n\tSERVICE_STREAM: \"MINIFLARE_STREAM\",\n\tSERVICE_IMAGES_DELIVERY: \"MINIFLARE_IMAGES_DELIVERY\",\n\tSERVICE_R2_PUBLIC: \"MINIFLARE_R2_PUBLIC\",\n} as const;\n\nexport const ProxyOps = {\n\t// Get the target or a property of the target\n\tGET: \"GET\",\n\t// Get the descriptor for a property of the target\n\tGET_OWN_DESCRIPTOR: \"GET_OWN_DESCRIPTOR\",\n\t// Get the target's own property names\n\tGET_OWN_KEYS: \"GET_OWN_KEYS\",\n\t// Call a method on the target\n\tCALL: \"CALL\",\n\t// Remove the strong reference to the target on the \"heap\", allowing it to be\n\t// garbage collected\n\tFREE: \"FREE\",\n} as const;\nexport const ProxyAddresses = {\n\tGLOBAL: 0, // globalThis\n\tENV: 1, // env\n\tUSER_START: 2,\n} as const;\n\n// ### Proxy Special Cases\n// The proxy supports serialising `Request`/`Response`s for the Cache API. It\n// doesn't support serialising `WebSocket`s though. Rather than attempting this,\n// we call `Fetcher#fetch()` using `dispatchFetch()` directly, using the passed\n// request. This gives us WebSocket support, and is much more efficient, since\n// there's no need to serialise the `Request`/`Response`: we just pass\n// everything to `dispatchFetch()` and return what that gives us.\nexport function isFetcherFetch(targetName: string, key: string) {\n\t// `DurableObject` and `WorkerRpc` are the internal names of `DurableObjectStub`:\n\t// https://github.com/cloudflare/workerd/blob/62b9ceee4c94d2b238692397dc4f604fef84f474/src/workerd/api/actor.h#L86\n\t// https://github.com/cloudflare/workerd/blob/62b9ceee4c94d2b238692397dc4f604fef84f474/src/workerd/api/worker-rpc.h#L30\n\treturn (\n\t\t(targetName === \"Fetcher\" ||\n\t\t\ttargetName === \"DurableObject\" ||\n\t\t\ttargetName === \"WorkerRpc\") &&\n\t\tkey === \"fetch\"\n\t);\n}\n// `R2Object#writeHttpMetadata()` is one of the few functions that mutates its\n// arguments. This would be proxied correctly if the argument were a native\n// target proxy itself, but `Headers` can be constructed in Node. Instead, we\n// respond with the updated headers in the proxy server, then copy them to the\n// original argument on the client.\nexport function isR2ObjectWriteHttpMetadata(targetName: string, key: string) {\n\t// `HeadResult` and `GetResult` are the internal names of `R2Object` and `R2ObjectBody` respectively:\n\t// https://github.com/cloudflare/workerd/blob/ae612f0563d864c82adbfa4c2e5ed78b547aa0a1/src/workerd/api/r2-bucket.h#L210\n\t// https://github.com/cloudflare/workerd/blob/ae612f0563d864c82adbfa4c2e5ed78b547aa0a1/src/workerd/api/r2-bucket.h#L263-L264\n\treturn (\n\t\t(targetName === \"HeadResult\" || targetName === \"GetResult\") &&\n\t\tkey === \"writeHttpMetadata\"\n\t);\n}\n\n/**\n * See #createMediaProxy() comment for why this is special\n */\nexport function isImagesInput(targetName: string, key: string) {\n\treturn targetName === \"ImagesBindingImpl\" && key === \"input\";\n}\n\n// Durable Object stub RPC calls should always be async to avoid blocking the\n// Node.js event loop. The internal names are \"DurableObject\" and \"WorkerRpc\".\n// https://github.com/cloudflare/workerd/blob/62b9ceee/src/workerd/api/actor.h#L86\n// https://github.com/cloudflare/workerd/blob/62b9ceee/src/workerd/api/worker-rpc.h#L30\nexport function isDurableObjectStub(targetName: string) {\n\treturn targetName === \"DurableObject\" || targetName === \"WorkerRpc\";\n}\n", "import { cors } from \"hono/cors\";\nimport { Hono } from \"hono/tiny\";\nimport { CorePaths } from \"../core/constants\";\n\ntype Env = Record<string, R2Bucket>;\n\nfunction objectHeaders(object: R2Object): Headers {\n\tconst headers = new Headers();\n\tobject.writeHttpMetadata(headers);\n\theaders.set(\"ETag\", object.httpEtag);\n\theaders.set(\"Last-Modified\", object.uploaded.toUTCString());\n\theaders.set(\"Accept-Ranges\", \"bytes\");\n\treturn headers;\n}\n\nconst app = new Hono<{ Bindings: Env }>().basePath(CorePaths.R2_PUBLIC);\n\napp.use(\n\tcors({ origin: \"*\", allowMethods: [\"GET\", \"HEAD\"], exposeHeaders: [\"*\"] })\n);\n\napp.on([\"GET\", \"HEAD\"], \"/:bucketId/:key{.+}\", async (c) => {\n\tconst bucketId = decodeURIComponent(c.req.param(\"bucketId\"));\n\tconst key = decodeURIComponent(c.req.param(\"key\"));\n\n\tconst bucket = c.env[bucketId];\n\tif (bucket === undefined) {\n\t\treturn c.notFound();\n\t}\n\n\tconst hasRange = c.req.header(\"Range\") !== undefined;\n\t// `bucket.head()` cannot evaluate conditional headers (the R2 head\n\t// operation only carries the key), so HEAD also uses `bucket.get()` and\n\t// discards the body.\n\tconst object = await bucket.get(key, {\n\t\tonlyIf: c.req.raw.headers,\n\t\trange: hasRange && c.req.method === \"GET\" ? c.req.raw.headers : undefined,\n\t});\n\n\tif (object === null) {\n\t\treturn c.notFound();\n\t}\n\n\tconst headers = objectHeaders(object);\n\n\tif (!(\"body\" in object)) {\n\t\t// Some conditional header failed, but `bucket.get()` reports the\n\t\t// failure without naming the header. We need to determine which header\n\t\t// failed to determine the status code to return.\n\t\t//\n\t\t// https://datatracker.ietf.org/doc/html/rfc7232#section-6 gives the\n\t\t// order for checking headers. We know at least one header failed.\n\t\t// We must first check for a precondition header failure.\n\t\t//\n\t\t// The logic in `_testR2Conditional` ensures we can simultaneously\n\t\t// check both \"If-Match\" and \"If-Unmodified-Since\" (since a failure in\n\t\t// \"If-Unmodified-Since\" can be suppressed by success for a present\n\t\t// \"If-Match\"). These both yield status 412s upon failure.\n\t\tlet preconditions: Headers | undefined;\n\t\tfor (const name of [\"If-Match\", \"If-Unmodified-Since\"]) {\n\t\t\tconst value = c.req.raw.headers.get(name);\n\t\t\tif (value !== null) {\n\t\t\t\tpreconditions ??= new Headers();\n\t\t\t\tpreconditions.set(name, value);\n\t\t\t}\n\t\t}\n\t\tif (preconditions !== undefined) {\n\t\t\tconst recheck = await bucket.get(key, { onlyIf: preconditions });\n\t\t\tif (recheck === null) {\n\t\t\t\treturn c.notFound();\n\t\t\t}\n\t\t\tif (!(\"body\" in recheck)) {\n\t\t\t\treturn c.body(null, { status: 412, headers: objectHeaders(recheck) });\n\t\t\t}\n\t\t}\n\n\t\t// Otherwise, the preconditions hold, so the failure came from a cache validator.\n\t\treturn c.body(null, { status: 304, headers });\n\t}\n\n\tif (c.req.method === \"HEAD\") {\n\t\theaders.set(\"Content-Length\", `${object.size}`);\n\t\treturn c.body(null, { headers });\n\t}\n\n\tconst range = object.range;\n\tif (\n\t\thasRange &&\n\t\trange !== undefined &&\n\t\t\"offset\" in range &&\n\t\t\"length\" in range\n\t) {\n\t\tconst { offset = 0, length = object.size - offset } = range;\n\t\theaders.set(\n\t\t\t\"Content-Range\",\n\t\t\t`bytes ${offset}-${offset + length - 1}/${object.size}`\n\t\t);\n\t\theaders.set(\"Content-Length\", `${length}`);\n\t\treturn c.body(object.body, { status: 206, headers });\n\t}\n\n\theaders.set(\"Content-Length\", `${object.size}`);\n\treturn c.body(object.body, { headers });\n});\n\napp.all(\"/:bucketId/:key{.+}\", (c) =>\n\tc.text(\"Method Not Allowed\", 405, { Allow: \"GET, HEAD, OPTIONS\" })\n);\n\nexport default app;\n"],
  "mappings": "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",
  "names": ["raw", "app", "Hono", "Hono"]
}
