{"version":3,"file":"resolveResponse.js","names":[],"sources":["esm/vite/resolveResponse.js"],"sourcesContent":["import { isResponse } from \"../utils/isResponse\";\nimport {\n  asyncHeadersCache,\n  mergeHeaders,\n  requestAsyncLocalStore,\n  runWithAsyncLocalContext\n} from \"./one-server-only\";\nlet _nextId = 1;\nfunction createId() {\n  return { _id: _nextId++ };\n}\nasync function resolveResponse(getResponse) {\n  const store = requestAsyncLocalStore ?? globalThis[\"__vxrnrequestAsyncLocalStore\"];\n  if (store) {\n    const id = createId();\n    let response;\n    await store.run(id, async () => {\n      try {\n        response = await getResponse();\n        response = await getResponseWithAddedHeaders(response, id);\n      } catch (err) {\n        if (isResponse(err)) {\n          response = err;\n        } else {\n          throw err;\n        }\n      }\n    });\n    return response;\n  }\n  return runWithAsyncLocalContext(async (id) => {\n    try {\n      const response = await getResponse();\n      return await getResponseWithAddedHeaders(response, id);\n    } catch (err) {\n      if (isResponse(err)) {\n        return err;\n      }\n      throw err;\n    }\n  });\n}\nfunction withRequestContext(fn) {\n  const store = requestAsyncLocalStore;\n  if (store) {\n    const id = createId();\n    return store.run(id, fn);\n  }\n  return fn();\n}\nfunction resolveAPIEndpoint(runEndpoint, request, params, env, executionCtx) {\n  return resolveResponse(async () => {\n    const imported = await runEndpoint();\n    const requestType = request.method || \"GET\";\n    const handler = imported[requestType] || imported.default;\n    if (!handler) {\n      const allowedMethods = [\n        \"GET\",\n        \"HEAD\",\n        \"POST\",\n        \"PUT\",\n        \"DELETE\",\n        \"CONNECT\",\n        \"OPTIONS\",\n        \"TRACE\",\n        \"PATCH\"\n      ].filter((method) => typeof imported[method] === \"function\").join(\", \");\n      return new Response(null, {\n        status: 405,\n        headers: { Allow: allowedMethods }\n      });\n    }\n    const worker = env !== void 0 || executionCtx !== void 0 ? { env, executionCtx } : void 0;\n    return await handler(request, { params, worker });\n  });\n}\nasync function getResponseWithAddedHeaders(response, id) {\n  const cache = globalThis[\"__vxrnasyncHeadersCache\"] ?? asyncHeadersCache;\n  const asyncHeaders = cache.get(id);\n  if (asyncHeaders) {\n    try {\n      if (response instanceof Response) {\n        const cloned = response.clone();\n        const headers = new Headers();\n        mergeHeaders(headers, cloned.headers);\n        mergeHeaders(headers, asyncHeaders);\n        response = new Response(cloned.body, {\n          status: cloned.status,\n          statusText: cloned.statusText,\n          headers\n        });\n      } else {\n        if (response && typeof response === \"object\") {\n          response = Response.json(response, { headers: asyncHeaders });\n        } else {\n          const headers = new Headers(asyncHeaders);\n          if (!headers.has(\"content-type\")) {\n            headers.set(\"content-type\", \"text/html\");\n          }\n          response = new Response(response, { headers });\n        }\n      }\n    } catch (err) {\n      console.error(` [one] error adding headers: ${err}`);\n    }\n  }\n  return response;\n}\nexport {\n  resolveAPIEndpoint,\n  resolveResponse,\n  withRequestContext\n};\n//# sourceMappingURL=resolveResponse.js.map\n"],"mappings":";;;;AAOA,IAAI,UAAU;AACd,SAAS,WAAW;CAClB,OAAO,EAAE,KAAK,UAAU;AAC1B;AACA,eAAe,gBAAgB,aAAa;CAC1C,MAAM,QAAQ,0BAA0B,WAAW;CACnD,IAAI,OAAO;EACT,MAAM,KAAK,SAAS;EACpB,IAAI;EACJ,MAAM,MAAM,IAAI,IAAI,YAAY;GAC9B,IAAI;IACF,WAAW,MAAM,YAAY;IAC7B,WAAW,MAAM,4BAA4B,UAAU,EAAE;GAC3D,SAAS,KAAK;IACZ,IAAI,WAAW,GAAG,GAAG;KACnB,WAAW;IACb,OAAO;KACL,MAAM;IACR;GACF;EACF,CAAC;EACD,OAAO;CACT;CACA,OAAO,yBAAyB,OAAO,OAAO;EAC5C,IAAI;GACF,MAAM,WAAW,MAAM,YAAY;GACnC,OAAO,MAAM,4BAA4B,UAAU,EAAE;EACvD,SAAS,KAAK;GACZ,IAAI,WAAW,GAAG,GAAG;IACnB,OAAO;GACT;GACA,MAAM;EACR;CACF,CAAC;AACH;AACA,SAAS,mBAAmB,IAAI;CAC9B,MAAM,QAAQ;CACd,IAAI,OAAO;EACT,MAAM,KAAK,SAAS;EACpB,OAAO,MAAM,IAAI,IAAI,EAAE;CACzB;CACA,OAAO,GAAG;AACZ;AACA,SAAS,mBAAmB,aAAa,SAAS,QAAQ,KAAK,cAAc;CAC3E,OAAO,gBAAgB,YAAY;EACjC,MAAM,WAAW,MAAM,YAAY;EACnC,MAAM,cAAc,QAAQ,UAAU;EACtC,MAAM,UAAU,SAAS,gBAAgB,SAAS;EAClD,IAAI,CAAC,SAAS;GACZ,MAAM,iBAAiB;IACrB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF,CAAC,CAAC,QAAQ,WAAW,OAAO,SAAS,YAAY,UAAU,CAAC,CAAC,KAAK,IAAI;GACtE,OAAO,IAAI,SAAS,MAAM;IACxB,QAAQ;IACR,SAAS,EAAE,OAAO,eAAe;GACnC,CAAC;EACH;EACA,MAAM,SAAS,QAAQ,KAAK,KAAK,iBAAiB,KAAK,IAAI;GAAE;GAAK;EAAa,IAAI,KAAK;EACxF,OAAO,MAAM,QAAQ,SAAS;GAAE;GAAQ;EAAO,CAAC;CAClD,CAAC;AACH;AACA,eAAe,4BAA4B,UAAU,IAAI;CACvD,MAAM,QAAQ,WAAW,8BAA8B;CACvD,MAAM,eAAe,MAAM,IAAI,EAAE;CACjC,IAAI,cAAc;EAChB,IAAI;GACF,IAAI,oBAAoB,UAAU;IAChC,MAAM,SAAS,SAAS,MAAM;IAC9B,MAAM,UAAU,IAAI,QAAQ;IAC5B,aAAa,SAAS,OAAO,OAAO;IACpC,aAAa,SAAS,YAAY;IAClC,WAAW,IAAI,SAAS,OAAO,MAAM;KACnC,QAAQ,OAAO;KACf,YAAY,OAAO;KACnB;IACF,CAAC;GACH,OAAO;IACL,IAAI,YAAY,OAAO,aAAa,UAAU;KAC5C,WAAW,SAAS,KAAK,UAAU,EAAE,SAAS,aAAa,CAAC;IAC9D,OAAO;KACL,MAAM,UAAU,IAAI,QAAQ,YAAY;KACxC,IAAI,CAAC,QAAQ,IAAI,cAAc,GAAG;MAChC,QAAQ,IAAI,gBAAgB,WAAW;KACzC;KACA,WAAW,IAAI,SAAS,UAAU,EAAE,QAAQ,CAAC;IAC/C;GACF;EACF,SAAS,KAAK;GACZ,QAAQ,MAAM,gCAAgC,KAAK;EACrD;CACF;CACA,OAAO;AACT"}