Files
SnowLuma/.pnpm-store/v11/files/89/e0bd96efd475cb2ab2809e43f47887fae78c32a0fc764bdf075a3c444f2cefb9bce00c2a870bb2289f8455ff1f9c0901c03f003ad5270b66f021360b8f5bd4
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

33 lines
1.3 KiB
Plaintext

import { escapeToBuffer, raw, resolveCallbackSync, stringBufferToString } from "../../utils/html.js";
//#region src/helper/html/index.ts
/**
* @module
* html Helper for Hono.
*/
const html = (strings, ...values) => {
const buffer = [""];
for (let i = 0, len = strings.length - 1; i < len; i++) {
buffer[0] += strings[i];
const children = Array.isArray(values[i]) ? values[i].flat(Infinity) : [values[i]];
for (let i = 0, len = children.length; i < len; i++) {
const child = children[i];
if (typeof child === "string") escapeToBuffer(child, buffer);
else if (typeof child === "number") buffer[0] += child;
else if (typeof child === "boolean" || child === null || child === void 0) continue;
else if (typeof child === "object" && child.isEscaped) {
if (child.callbacks) buffer.unshift("", child);
else {
const tmp = child.toString();
if (tmp instanceof Promise) buffer.unshift("", tmp);
else buffer[0] += tmp;
}
} else if (child instanceof Promise) buffer.unshift("", child);
else escapeToBuffer(child.toString(), buffer);
}
}
buffer[0] += strings.at(-1);
return buffer.length === 1 ? "callbacks" in buffer ? raw(resolveCallbackSync(raw(buffer[0], buffer.callbacks))) : raw(buffer[0]) : stringBufferToString(buffer, buffer.callbacks);
};
//#endregion
export { html, raw };