express-zod-api
Advanced tools
Changelog
v20.21.0
input
property can be now omitted on the argument of the following methods:
Middlware::constructor
, EndpointsFactory::build()
, EndpointsFactory::addMiddleware()
;z.object({})
is used;Changelog
v20.20.1
Changelog
v20.20.0
errorHandler
option for testMiddleware()
method:
testMiddlware
itself
would not throw, enabling usage of all returned entities for mutiple assertions in test;import { testMiddleware, Middleware } from "express-zod-api";
const middlware = new Middleware({
input: z.object({}),
handler: async ({ logger }) => {
logger.info("logging something");
throw new Error("something went wrong");
},
});
test("a middleware throws, but it writes log as well", async () => {
const { loggerMock, responseMock } = await testMiddleware({
errorHandler: (error, response) => response.end(error.message),
middleware,
});
expect(loggerMock._getLogs().info).toEqual([["logging something"]]);
expect(responseMock._getData()).toBe("something went wrong");
});
Changelog
v20.19.0
level
made optional as well as the logger
option for createConfig()
;debug
level by default, or warn
when NODE_ENV=production
.BuiltinLogger
when its color
option is not set in config:
.child()
method is 50x times faster now by only detecting the color support once;Changelog
v20.18.0
ensureHttpError()
method that converts any Error
into HttpError
:
InputValidationError
to BadRequest
(status code 400
) and others to InternalServerError
(500
).getStatusCodeFromError()
— use the ensureHttpError().statusCode
instead.defaultResultHandler
, defaultEndpointsFactory
and Last Resort Handler only;NODE_ENV
is set to production
(displayed on startup);statusCode
used;5XX
, or treated that way by ensureHttpError()
;createHttpError()
and using its expose
option;import createHttpError from "http-errors";
// NODE_ENV=production
// Throwing HttpError from Endpoint or Middleware that is using defaultResultHandler or defaultEndpointsFactory:
createHttpError(401, "Token expired"); // —> "Token expired"
createHttpError(401, "Token expired", { expose: false }); // —> "Unauthorized"
createHttpError(500, "Something is broken"); // —> "Internal Server Error"
createHttpError(501, "We didn't make it yet", { expose: true }); // —> "We didn't make it yet"