UNPKG

one

Version:

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

82 lines (80 loc) 2.73 kB
import { isResponse } from "../utils/isResponse.native.js"; import { asyncHeadersCache, mergeHeaders, runWithAsyncLocalContext } from "./one-server-only.native.js"; function _instanceof(left, right) { return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right; } function _type_of(obj) { "@swc/helpers - typeof"; return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj; } function resolveResponse(getResponse) { return new Promise(function (res, rej) { runWithAsyncLocalContext(async function (id) { try { var response = await getResponse(), modifiedResponse = await getResponseWithAddedHeaders(response, id); res(modifiedResponse); } catch (err) { isResponse(err) ? res(err) : rej(err); } }); }); } function resolveAPIEndpoint(runEndpoint, request, params) { return resolveResponse(async function () { var imported = await runEndpoint(), requestType = request.method || "GET", 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 asyncHeaders = asyncHeadersCache.get(id); if (asyncHeaders) try { _instanceof(response, Response) ? mergeHeaders(response.headers, asyncHeaders) : response && (typeof response > "u" ? "undefined" : _type_of(response)) === "object" ? response = Response.json(response, { headers: asyncHeaders }) : response = new Response(response, { headers: asyncHeaders }); } catch (err) { if (`${err}`.includes("immutable")) { var body = response.body ? await streamToString(response.body) : ""; response = new Response(body, { headers: response.headers, status: response.status, statusText: response.statusText }), mergeHeaders(response.headers, asyncHeaders); } else console.error(` [one] error adding headers: ${err}`); } return response; } async function streamToString(stream) { var reader = stream.getReader(), decoder = new TextDecoder(), result = ""; try { for (;;) { var { done, value } = await reader.read(); if (done) break; result += decoder.decode(value, { stream: !0 }); } } catch (error) { console.error("Error reading the stream:", error); } finally { reader.releaseLock(); } return result; } export { resolveAPIEndpoint, resolveResponse }; //# sourceMappingURL=resolveResponse.native.js.map