UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

1 lines • 5.33 kB
{"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"}