@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.
1 lines • 3.37 kB
Source Map (JSON)
{"version":3,"sources":["../../src/api/hono.ts"],"sourcesContent":["import { isRunningLocally } from '@/env/env';\nimport { HumanReadableSchemaError } from '@/validation/standardSchema';\nimport AwsLambdaLogger from '@smooai/logger/AwsLambdaLogger';\nimport { APIGatewayProxyEventV2, Context } from 'aws-lambda';\nimport { Hono } from 'hono';\nimport { handle, LambdaContext, LambdaEvent } from 'hono/aws-lambda';\nimport { HTTPException } from 'hono/http-exception';\nimport { logger as honoLogger } from 'hono/logger';\nimport { prettyJSON } from 'hono/pretty-json';\nimport { requestId } from 'hono/request-id';\nimport { ZodError } from 'zod';\nimport { fromZodError } from 'zod-validation-error';\n\nconst logger = new AwsLambdaLogger();\n\nexport function createAwsLambdaHonoApp(appFunction: (app: Hono) => Hono): ReturnType<typeof handle> {\n const app = new Hono();\n\n app.use(requestId());\n app.use(\n honoLogger((str, ...rest) => {\n logger.info(str, ...rest);\n }),\n );\n app.use(async (c, next) => {\n logger.addContext({\n honoRequestId: c.get('requestId'),\n });\n await next();\n });\n if (isRunningLocally()) {\n app.use(prettyJSON());\n }\n\n app.onError((error) => {\n if (error instanceof HumanReadableSchemaError) {\n logger.error(error, `A schema validation error occurred: ${error.message}`);\n throw new HTTPException(400, {\n cause: error,\n message: error.message,\n });\n } else if (error instanceof ZodError) {\n const validationError = fromZodError(error);\n logger.error(error, `A validation error occurred: ${validationError.toString()}`);\n throw new HTTPException(400, {\n cause: error,\n message: validationError.toString(),\n });\n }\n throw error;\n });\n\n const appWithRoutes = appFunction(app);\n return (event: LambdaEvent, lambdaContext?: LambdaContext) => {\n logger.addLambdaContext(event as unknown as APIGatewayProxyEventV2, lambdaContext as unknown as Context);\n return handle(appWithRoutes)(event, lambdaContext);\n };\n}\n"],"mappings":";;;;;;;;;AAEA,OAAO,qBAAqB;AAE5B,SAAS,YAAY;AACrB,SAAS,cAA0C;AACnD,SAAS,qBAAqB;AAC9B,SAAS,UAAU,kBAAkB;AACrC,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;AAE7B,IAAM,SAAS,IAAI,gBAAgB;AAE5B,SAAS,uBAAuB,aAA6D;AAChG,QAAM,MAAM,IAAI,KAAK;AAErB,MAAI,IAAI,UAAU,CAAC;AACnB,MAAI;AAAA,IACA,WAAW,CAAC,QAAQ,SAAS;AACzB,aAAO,KAAK,KAAK,GAAG,IAAI;AAAA,IAC5B,CAAC;AAAA,EACL;AACA,MAAI,IAAI,OAAO,GAAG,SAAS;AACvB,WAAO,WAAW;AAAA,MACd,eAAe,EAAE,IAAI,WAAW;AAAA,IACpC,CAAC;AACD,UAAM,KAAK;AAAA,EACf,CAAC;AACD,MAAI,iBAAiB,GAAG;AACpB,QAAI,IAAI,WAAW,CAAC;AAAA,EACxB;AAEA,MAAI,QAAQ,CAAC,UAAU;AACnB,QAAI,iBAAiB,0BAA0B;AAC3C,aAAO,MAAM,OAAO,uCAAuC,MAAM,OAAO,EAAE;AAC1E,YAAM,IAAI,cAAc,KAAK;AAAA,QACzB,OAAO;AAAA,QACP,SAAS,MAAM;AAAA,MACnB,CAAC;AAAA,IACL,WAAW,iBAAiB,UAAU;AAClC,YAAM,kBAAkB,aAAa,KAAK;AAC1C,aAAO,MAAM,OAAO,gCAAgC,gBAAgB,SAAS,CAAC,EAAE;AAChF,YAAM,IAAI,cAAc,KAAK;AAAA,QACzB,OAAO;AAAA,QACP,SAAS,gBAAgB,SAAS;AAAA,MACtC,CAAC;AAAA,IACL;AACA,UAAM;AAAA,EACV,CAAC;AAED,QAAM,gBAAgB,YAAY,GAAG;AACrC,SAAO,CAAC,OAAoB,kBAAkC;AAC1D,WAAO,iBAAiB,OAA4C,aAAmC;AACvG,WAAO,OAAO,aAAa,EAAE,OAAO,aAAa;AAAA,EACrD;AACJ;","names":[]}