UNPKG

@smooai/utils

Version:

A collection of shared utilities and tools used across SmooAI projects. This package provides common functionality to standardize and simplify development across all SmooAI repositories.

71 lines (70 loc) 2.75 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const require_chunk = require("../chunk-CoPdw6nB.cjs"); const require_validation_standardSchema = require("../validation/standardSchema.cjs"); const require_env_index = require("../env/index.cjs"); let zod = require("zod"); let _smooai_logger_AwsServerLogger = require("@smooai/logger/AwsServerLogger"); _smooai_logger_AwsServerLogger = require_chunk.__toESM(_smooai_logger_AwsServerLogger); let hono = require("hono"); let hono_aws_lambda = require("hono/aws-lambda"); let hono_http_exception = require("hono/http-exception"); let hono_logger = require("hono/logger"); let hono_pretty_json = require("hono/pretty-json"); let hono_request_id = require("hono/request-id"); //#region src/api/hono.ts const logger = new _smooai_logger_AwsServerLogger.default(); function addHonoMiddleware(_app) { const app = _app ?? new hono.Hono(); app.use((0, hono_request_id.requestId)()); app.use(async (c, next) => { const start = Date.now(); const namespace = `${c.req.method} ${c.req.path}`; logger.addRequestContext(c.req); logger.setNamespace(namespace); logger.addContext({ honoRequestId: c.get("requestId") }); logger.info(`Request started`); await next(); await logger.cloneAndAddResponseContext(c.res); logger.addTelemetryFields({ duration: Date.now() - start }); logger.info(`Request completed`); }); app.use(async (c, next) => { (0, hono_logger.logger)((str, ...rest) => { logger.info(str, ...rest); }); await next(); }); if (require_env_index.isRunningLocally()) app.use((0, hono_pretty_json.prettyJSON)()); app.onError((error, c) => { if (error instanceof require_validation_standardSchema.HumanReadableSchemaError) { logger.error(error, `A schema validation error occurred`); return c.json({ error: error.message, schemaError: error.schemaError }, 400); } else if (error instanceof zod.ZodError) { const prettyError = zod.z.prettifyError(error); logger.error(error, `A validation error occurred`); return c.json({ error: prettyError, details: error.issues }, 400); } else if (error instanceof hono_http_exception.HTTPException) { logger.error(error, `An HTTP error occurred`); return error.getResponse(); } logger.error(error, `An unknown error occurred`); return c.json({ error: error.message }, 500); }); return app; } function createHonoAwsLambdaHandler(app) { return (event, lambdaContext) => { logger.addLambdaContext(event, lambdaContext); return (0, hono_aws_lambda.handle)(app)(event, lambdaContext); }; } //#endregion exports.addHonoMiddleware = addHonoMiddleware; exports.createHonoAwsLambdaHandler = createHonoAwsLambdaHandler; //# sourceMappingURL=hono.cjs.map