@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.
38 lines (37 loc) • 1.57 kB
JavaScript
import { HumanReadableSchemaError } from "../validation/standardSchema.mjs";
import { ApiError } from "./ApiError.mjs";
import { ZodError, z } from "zod";
import ServerLogger from "@smooai/logger/AwsServerLogger";
//#region src/api/sqsHandler.ts
const logger = new ServerLogger();
function sqsHandler(handler) {
return async (event, context) => {
try {
const batchItemFailures = [];
logger.addLambdaContext(void 0, context);
for (const record of event.Records) try {
logger.addSQSRecordContext(record);
await handler({
...record,
body: record.body ? JSON.parse(record.body) : {}
}, context);
} catch (error) {
if (error instanceof ApiError) logger.error(error, `An API error occurred: Status: ${error.status} (${error.statusText}); Message: ${error.message}`);
else if (error instanceof HumanReadableSchemaError) logger.error(error, `A schema validation error occurred: ${error.message}`);
else if (error instanceof ZodError) {
const prettyError = z.prettifyError(error);
logger.error(error, `A validation error occurred: ${prettyError}`);
} else if (error instanceof Error) logger.error(error, `An unexpected error occurred: ${error.message}`);
else logger.error(error, `An unexpected error occurred: ${error}`);
batchItemFailures.push({ itemIdentifier: record.messageId });
}
return { batchItemFailures };
} catch (error) {
logger.error(error, `An unexpected error occurred: ${error}`);
throw error;
}
};
}
//#endregion
export { sqsHandler };
//# sourceMappingURL=sqsHandler.mjs.map