Files
SSCOM/node_modules/.vite/deps/@tauri-apps_plugin-http.js
2026-02-24 12:43:16 +08:00

103 lines
3.4 KiB
JavaScript

import {
Channel,
invoke
} from "./chunk-DSY64NDS.js";
import "./chunk-DC5AMYBS.js";
// node_modules/.pnpm/@tauri-apps+plugin-http@2.5.0/node_modules/@tauri-apps/plugin-http/dist-js/index.js
var ERROR_REQUEST_CANCELLED = "Request cancelled";
async function fetch(input, init) {
const signal = init == null ? void 0 : init.signal;
if (signal == null ? void 0 : signal.aborted) {
throw new Error(ERROR_REQUEST_CANCELLED);
}
const maxRedirections = init == null ? void 0 : init.maxRedirections;
const connectTimeout = init == null ? void 0 : init.connectTimeout;
const proxy = init == null ? void 0 : init.proxy;
const danger = init == null ? void 0 : init.danger;
if (init) {
delete init.maxRedirections;
delete init.connectTimeout;
delete init.proxy;
delete init.danger;
}
const headers = (init == null ? void 0 : init.headers) ? init.headers instanceof Headers ? init.headers : new Headers(init.headers) : new Headers();
const req = new Request(input, init);
const buffer = await req.arrayBuffer();
const data = buffer.byteLength !== 0 ? Array.from(new Uint8Array(buffer)) : null;
for (const [key, value] of req.headers) {
if (!headers.get(key)) {
headers.set(key, value);
}
}
const headersArray = headers instanceof Headers ? Array.from(headers.entries()) : Array.isArray(headers) ? headers : Object.entries(headers);
const mappedHeaders = headersArray.map(([name, val]) => [
name,
// we need to ensure we have all header values as strings
// eslint-disable-next-line
typeof val === "string" ? val : val.toString()
]);
if (signal == null ? void 0 : signal.aborted) {
throw new Error(ERROR_REQUEST_CANCELLED);
}
const rid = await invoke("plugin:http|fetch", {
clientConfig: {
method: req.method,
url: req.url,
headers: mappedHeaders,
data,
maxRedirections,
connectTimeout,
proxy,
danger
}
});
const abort = () => invoke("plugin:http|fetch_cancel", { rid });
if (signal == null ? void 0 : signal.aborted) {
abort();
throw new Error(ERROR_REQUEST_CANCELLED);
}
signal == null ? void 0 : signal.addEventListener("abort", () => void abort());
const { status, statusText, url, headers: responseHeaders, rid: responseRid } = await invoke("plugin:http|fetch_send", {
rid
});
const body = [101, 103, 204, 205, 304].includes(status) ? null : new ReadableStream({
start: (controller) => {
const streamChannel = new Channel();
streamChannel.onmessage = (res2) => {
if (signal == null ? void 0 : signal.aborted) {
controller.error(ERROR_REQUEST_CANCELLED);
return;
}
const resUint8 = new Uint8Array(res2);
const lastByte = resUint8[resUint8.byteLength - 1];
const actualRes = resUint8.slice(0, resUint8.byteLength - 1);
if (lastByte == 1) {
controller.close();
return;
}
controller.enqueue(actualRes);
};
invoke("plugin:http|fetch_read_body", {
rid: responseRid,
streamChannel
}).catch((e) => {
controller.error(e);
});
}
});
const res = new Response(body, {
status,
statusText
});
Object.defineProperty(res, "url", { value: url });
Object.defineProperty(res, "headers", {
value: new Headers(responseHeaders)
});
return res;
}
export {
fetch
};
//# sourceMappingURL=@tauri-apps_plugin-http.js.map