t7m
Version:
Transformer for Elysia and Hono
65 lines (64 loc) • 2.39 kB
JavaScript
// 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
};