one
Version:
One is a new React Framework that makes Vite serve both native and web.
143 lines (140 loc) • 4.78 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: true
});
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from)) if (!__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: true
}), mod);
var resolveResponse_exports = {};
__export(resolveResponse_exports, {
resolveAPIEndpoint: () => resolveAPIEndpoint,
resolveResponse: () => resolveResponse,
withRequestContext: () => withRequestContext
});
module.exports = __toCommonJS(resolveResponse_exports);
var import_isResponse = require("../utils/isResponse.native.js");
var import_one_server_only = require("./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 = import_one_server_only.requestAsyncLocalStore !== null && import_one_server_only.requestAsyncLocalStore !== void 0 ? import_one_server_only.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 ((0, import_isResponse.isResponse)(err)) {
response = err;
} else {
throw err;
}
}
});
return response;
}
return (0, import_one_server_only.runWithAsyncLocalContext)(async function (id2) {
try {
var response2 = await getResponse();
return await getResponseWithAddedHeaders(response2, id2);
} catch (err) {
if ((0, import_isResponse.isResponse)(err)) {
return err;
}
throw err;
}
});
}
function withRequestContext(fn) {
var store = import_one_server_only.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 : import_one_server_only.asyncHeadersCache;
var asyncHeaders = cache.get(id);
if (asyncHeaders) {
try {
if (_instanceof(response, Response)) {
var cloned = response.clone();
var headers = new Headers();
(0, import_one_server_only.mergeHeaders)(headers, cloned.headers);
(0, import_one_server_only.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;
}
//# sourceMappingURL=resolveResponse.native.js.map