Aktueller Stand

This commit is contained in:
2026-01-23 01:33:35 +01:00
parent 082dc5e110
commit 2766dd12c5
10109 changed files with 1578841 additions and 77685 deletions

174
backend/node_modules/hono/dist/client/client.js generated vendored Normal file
View File

@@ -0,0 +1,174 @@
// src/client/client.ts
import { serialize } from "../utils/cookie.js";
import {
buildSearchParams,
deepMerge,
mergePath,
removeIndexString,
replaceUrlParam,
replaceUrlProtocol
} from "./utils.js";
var createProxy = (callback, path) => {
const proxy = new Proxy(() => {
}, {
get(_obj, key) {
if (typeof key !== "string" || key === "then") {
return void 0;
}
return createProxy(callback, [...path, key]);
},
apply(_1, _2, args) {
return callback({
path,
args
});
}
});
return proxy;
};
var ClientRequestImpl = class {
url;
method;
buildSearchParams;
queryParams = void 0;
pathParams = {};
rBody;
cType = void 0;
constructor(url, method, options) {
this.url = url;
this.method = method;
this.buildSearchParams = options.buildSearchParams;
}
fetch = async (args, opt) => {
if (args) {
if (args.query) {
this.queryParams = this.buildSearchParams(args.query);
}
if (args.form) {
const form = new FormData();
for (const [k, v] of Object.entries(args.form)) {
if (Array.isArray(v)) {
for (const v2 of v) {
form.append(k, v2);
}
} else {
form.append(k, v);
}
}
this.rBody = form;
}
if (args.json) {
this.rBody = JSON.stringify(args.json);
this.cType = "application/json";
}
if (args.param) {
this.pathParams = args.param;
}
}
let methodUpperCase = this.method.toUpperCase();
const headerValues = {
...args?.header,
...typeof opt?.headers === "function" ? await opt.headers() : opt?.headers
};
if (args?.cookie) {
const cookies = [];
for (const [key, value] of Object.entries(args.cookie)) {
cookies.push(serialize(key, value, { path: "/" }));
}
headerValues["Cookie"] = cookies.join(",");
}
if (this.cType) {
headerValues["Content-Type"] = this.cType;
}
const headers = new Headers(headerValues ?? void 0);
let url = this.url;
url = removeIndexString(url);
url = replaceUrlParam(url, this.pathParams);
if (this.queryParams) {
url = url + "?" + this.queryParams.toString();
}
methodUpperCase = this.method.toUpperCase();
const setBody = !(methodUpperCase === "GET" || methodUpperCase === "HEAD");
return (opt?.fetch || fetch)(url, {
body: setBody ? this.rBody : void 0,
method: methodUpperCase,
headers,
...opt?.init
});
};
};
var hc = (baseUrl, options) => createProxy(function proxyCallback(opts) {
const buildSearchParamsOption = options?.buildSearchParams ?? buildSearchParams;
const parts = [...opts.path];
const lastParts = parts.slice(-3).reverse();
if (lastParts[0] === "toString") {
if (lastParts[1] === "name") {
return lastParts[2] || "";
}
return proxyCallback.toString();
}
if (lastParts[0] === "valueOf") {
if (lastParts[1] === "name") {
return lastParts[2] || "";
}
return proxyCallback;
}
let method = "";
if (/^\$/.test(lastParts[0])) {
const last = parts.pop();
if (last) {
method = last.replace(/^\$/, "");
}
}
const path = parts.join("/");
const url = mergePath(baseUrl, path);
if (method === "url") {
let result = url;
if (opts.args[0]) {
if (opts.args[0].param) {
result = replaceUrlParam(url, opts.args[0].param);
}
if (opts.args[0].query) {
result = result + "?" + buildSearchParamsOption(opts.args[0].query).toString();
}
}
result = removeIndexString(result);
return new URL(result);
}
if (method === "ws") {
const webSocketUrl = replaceUrlProtocol(
opts.args[0] && opts.args[0].param ? replaceUrlParam(url, opts.args[0].param) : url,
"ws"
);
const targetUrl = new URL(webSocketUrl);
const queryParams = opts.args[0]?.query;
if (queryParams) {
Object.entries(queryParams).forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach((item) => targetUrl.searchParams.append(key, item));
} else {
targetUrl.searchParams.set(key, value);
}
});
}
const establishWebSocket = (...args) => {
if (options?.webSocket !== void 0 && typeof options.webSocket === "function") {
return options.webSocket(...args);
}
return new WebSocket(...args);
};
return establishWebSocket(targetUrl.toString());
}
const req = new ClientRequestImpl(url, method, {
buildSearchParams: buildSearchParamsOption
});
if (method) {
options ??= {};
const args = deepMerge(options, { ...opts.args[1] });
return req.fetch(opts.args[0], args);
}
return req;
}, []);
export {
hc
};

View File

@@ -0,0 +1,62 @@
// src/client/fetch-result-please.ts
var nullBodyResponses = /* @__PURE__ */ new Set([101, 204, 205, 304]);
async function fetchRP(fetchRes) {
const _fetchRes = await fetchRes;
const hasBody = (_fetchRes.body || _fetchRes._bodyInit) && !nullBodyResponses.has(_fetchRes.status);
if (hasBody) {
const responseType = detectResponseType(_fetchRes);
_fetchRes._data = await _fetchRes[responseType]();
}
if (!_fetchRes.ok) {
throw new DetailedError(`${_fetchRes.status} ${_fetchRes.statusText}`, {
statusCode: _fetchRes?.status,
detail: {
data: _fetchRes?._data,
statusText: _fetchRes?.statusText
}
});
}
return _fetchRes._data;
}
var DetailedError = class extends Error {
/**
* Additional `message` that will be logged AND returned to client
*/
detail;
/**
* Additional `code` that will be logged AND returned to client
*/
code;
/**
* Additional value that will be logged AND NOT returned to client
*/
log;
/**
* Optionally set the status code to return, in a web server context
*/
statusCode;
constructor(message, options = {}) {
super(message);
this.name = "DetailedError";
this.log = options.log;
this.detail = options.detail;
this.code = options.code;
this.statusCode = options.statusCode;
}
};
var jsonRegex = /^application\/(?:[\w!#$%&*.^`~-]*\+)?json(?:;.+)?$/i;
function detectResponseType(response) {
const _contentType = response.headers.get("content-type");
if (!_contentType) {
return "text";
}
const contentType = _contentType.split(";").shift();
if (jsonRegex.test(contentType)) {
return "json";
}
return "text";
}
export {
DetailedError,
fetchRP
};

8
backend/node_modules/hono/dist/client/index.js generated vendored Normal file
View File

@@ -0,0 +1,8 @@
// src/client/index.ts
import { hc } from "./client.js";
import { parseResponse, DetailedError } from "./utils.js";
export {
DetailedError,
hc,
parseResponse
};

0
backend/node_modules/hono/dist/client/types.js generated vendored Normal file
View File

76
backend/node_modules/hono/dist/client/utils.js generated vendored Normal file
View File

@@ -0,0 +1,76 @@
// src/client/utils.ts
import { fetchRP, DetailedError } from "./fetch-result-please.js";
var mergePath = (base, path) => {
base = base.replace(/\/+$/, "");
base = base + "/";
path = path.replace(/^\/+/, "");
return base + path;
};
var replaceUrlParam = (urlString, params) => {
for (const [k, v] of Object.entries(params)) {
const reg = new RegExp("/:" + k + "(?:{[^/]+})?\\??");
urlString = urlString.replace(reg, v ? `/${v}` : "");
}
return urlString;
};
var buildSearchParams = (query) => {
const searchParams = new URLSearchParams();
for (const [k, v] of Object.entries(query)) {
if (v === void 0) {
continue;
}
if (Array.isArray(v)) {
for (const v2 of v) {
searchParams.append(k, v2);
}
} else {
searchParams.set(k, v);
}
}
return searchParams;
};
var replaceUrlProtocol = (urlString, protocol) => {
switch (protocol) {
case "ws":
return urlString.replace(/^http/, "ws");
case "http":
return urlString.replace(/^ws/, "http");
}
};
var removeIndexString = (urlString) => {
if (/^https?:\/\/[^\/]+?\/index(?=\?|$)/.test(urlString)) {
return urlString.replace(/\/index(?=\?|$)/, "/");
}
return urlString.replace(/\/index(?=\?|$)/, "");
};
function isObject(item) {
return typeof item === "object" && item !== null && !Array.isArray(item);
}
function deepMerge(target, source) {
if (!isObject(target) && !isObject(source)) {
return source;
}
const merged = { ...target };
for (const key in source) {
const value = source[key];
if (isObject(merged[key]) && isObject(value)) {
merged[key] = deepMerge(merged[key], value);
} else {
merged[key] = value;
}
}
return merged;
}
async function parseResponse(fetchRes) {
return fetchRP(fetchRes);
}
export {
DetailedError,
buildSearchParams,
deepMerge,
mergePath,
parseResponse,
removeIndexString,
replaceUrlParam,
replaceUrlProtocol
};