one
Version:
One is a new React Framework that makes Vite serve both native and web.
109 lines (106 loc) • 3.8 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: !0
});
},
__copyProps = (to, from, except, desc) => {
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
return to;
};
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
value: !0
}), mod);
var resolveResponse_exports = {};
__export(resolveResponse_exports, {
resolveAPIEndpoint: () => resolveAPIEndpoint,
resolveResponse: () => resolveResponse
});
module.exports = __toCommonJS(resolveResponse_exports);
var import_isResponse = require("../utils/isResponse.native.js"),
import_one_server_only = require("./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) {
(0, import_one_server_only.runWithAsyncLocalContext)(async function (id) {
try {
var response = await getResponse(),
modifiedResponse = await getResponseWithAddedHeaders(response, id);
res(modifiedResponse);
} catch (err) {
(0, import_isResponse.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 = import_one_server_only.asyncHeadersCache.get(id);
if (asyncHeaders) try {
_instanceof(response, Response) ? (0, import_one_server_only.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
}), (0, import_one_server_only.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;
}
//# sourceMappingURL=resolveResponse.native.js.map