UNPKG

hono

Version:

Web framework built on Web Standards

42 lines (41 loc) 1.49 kB
// src/helper/html/index.ts import { escapeToBuffer, raw, resolveCallbackSync, stringBufferToString } from "../../utils/html.js"; var html = (strings, ...values) => { const buffer = [""]; for (let i = 0, len = strings.length - 1; i < len; i++) { buffer[0] += strings[i]; const children = values[i] instanceof Array ? values[i].flat(Infinity) : [values[i]]; for (let i2 = 0, len2 = children.length; i2 < len2; i2++) { const child = children[i2]; 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[strings.length - 1]; return buffer.length === 1 ? "callbacks" in buffer ? raw(resolveCallbackSync(raw(buffer[0], buffer.callbacks))) : raw(buffer[0]) : stringBufferToString(buffer, buffer.callbacks); }; export { html, raw };