UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

113 lines (111 loc) 3.58 kB
import { isResponse } from "../utils/isResponse.native.js"; import { asyncHeadersCache, mergeHeaders, requestAsyncLocalStore, runWithAsyncLocalContext } from "./one-server-only.native.js"; function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return !!right[Symbol.hasInstance](left); } else { return left instanceof right; } } function _type_of(obj) { "@swc/helpers - typeof"; return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } var _nextId = 1; function createId() { return { _id: _nextId++ }; } async function resolveResponse(getResponse) { var store = requestAsyncLocalStore !== null && requestAsyncLocalStore !== void 0 ? requestAsyncLocalStore : globalThis["__vxrnrequestAsyncLocalStore"]; if (store) { var id = createId(); var response; await store.run(id, async function () { try { response = await getResponse(); response = await getResponseWithAddedHeaders(response, id); } catch (err) { if (isResponse(err)) { response = err; } else { throw err; } } }); return response; } return runWithAsyncLocalContext(async function (id2) { try { var response2 = await getResponse(); return await getResponseWithAddedHeaders(response2, id2); } catch (err) { if (isResponse(err)) { return err; } throw err; } }); } function withRequestContext(fn) { var store = requestAsyncLocalStore; if (store) { var id = createId(); return store.run(id, fn); } return fn(); } function resolveAPIEndpoint(runEndpoint, request, params) { return resolveResponse(async function () { var imported = await runEndpoint(); var requestType = request.method || "GET"; var handler = imported[requestType] || imported.default; if (!handler) { console.warn(`No handler found for request ${requestType}`); return; } return await handler(request, { params }); }); } async function getResponseWithAddedHeaders(response, id) { var _globalThis___vxrnasyncHeadersCache; var cache = (_globalThis___vxrnasyncHeadersCache = globalThis["__vxrnasyncHeadersCache"]) !== null && _globalThis___vxrnasyncHeadersCache !== void 0 ? _globalThis___vxrnasyncHeadersCache : asyncHeadersCache; var asyncHeaders = cache.get(id); if (asyncHeaders) { try { if (_instanceof(response, Response)) { var cloned = response.clone(); var headers = new Headers(); mergeHeaders(headers, cloned.headers); mergeHeaders(headers, asyncHeaders); response = new Response(cloned.body, { status: cloned.status, statusText: cloned.statusText, headers }); } else { if (response && (typeof response === "undefined" ? "undefined" : _type_of(response)) === "object") { response = Response.json(response, { headers: asyncHeaders }); } else { var headers1 = new Headers(asyncHeaders); if (!headers1.has("content-type")) { headers1.set("content-type", "text/html"); } response = new Response(response, { headers: headers1 }); } } } catch (err) { console.error(` [one] error adding headers: ${err}`); } } return response; } export { resolveAPIEndpoint, resolveResponse, withRequestContext }; //# sourceMappingURL=resolveResponse.native.js.map