UNPKG

t7m

Version:

Transformer for Elysia and Hono

65 lines (64 loc) 2.39 kB
// src/hono/middleware.ts import { createMiddleware } from "hono/factory"; var T7M_PREFIX = "\x1B[36m[T7M]\x1B[0m"; var log = (message, data, transformerName) => { const nameTag = transformerName ? `\x1B[33m[${transformerName}]\x1B[0m` : ""; if (data !== undefined) { const jsonData = typeof data === "string" ? data : JSON.stringify(data, null, 2).substring(0, 300); console.log(T7M_PREFIX, nameTag, message, jsonData); } else { console.log(T7M_PREFIX, nameTag, message); } }; var t7mMiddleware = createMiddleware(async (c, next) => { const { include } = c.req.query(); const { include: includues } = c.req.queries(); c.transform = async function(input, transformer, extras, status, headers) { const { includes, wrapper, debug, props } = extras; if (debug) log(`Transforming (One): `, input, transformer.constructor.name); const processedIncludes = includes || includues || include?.split(","); if (debug && processedIncludes) log("Includes Received:", processedIncludes, transformer.constructor.name); const transformed = await transformer._transform({ input, props, unsafeIncludes: processedIncludes }); if (debug) log(`Transformed (One) ✅: `, transformed, transformer.constructor.name); const response = wrapper ? wrapper(transformed) : transformed; if (debug) log(`Response (One) ✅: `, response, transformer.constructor.name); return c.json(response, status, headers); }; c.transformMany = async function(inputs, transformer, extras, status, headers) { const { includes, wrapper, debug, props } = extras; if (debug) log(`Transforming (Many): `, inputs, transformer.constructor.name); const processedIncludes = includes || include?.split(","); if (debug && processedIncludes) log("Includes Received:", processedIncludes, transformer.constructor.name); const transformed = await transformer._transformMany({ inputs, props, unsafeIncludes: processedIncludes }); if (debug) log(`Transformed (Many) ✅: `, transformed, transformer.constructor.name); const response = wrapper ? wrapper(transformed) : transformed; if (debug) log(`Response (Many) ✅: `, response, transformer.constructor.name); return c.json(response, status, headers); }; await next(); }); export { t7mMiddleware };