express-zod-api
Advanced tools
Changelog
v1.0.0
Changelog
v0.7.1
defaultResultHandler
and ResultHandler
calls in server.ts
.Changelog
v0.7.0
// example
const middleware = createMiddleware({
input: z
.object({
one: z.string(),
})
.or(
z.object({
two: z.number(),
}),
),
middleware: async ({ input }) => ({
input, // => type: { one: string } | { two: number }
}),
});
z.transform()
in handler's output schema.// example
const endpoint = factory.build({
methods: ["post"],
input: z.object({}),
output: z.object({
value: z.string().transform((str) => str.length),
}),
handler: async ({ input, options }) => ({
value: "test", // => in response: { value: 4 }
}),
});
EndpointsFactory::constructor()
is now prohibited. Please use .addMiddleware()
and .setResultHandler()
as the right way in order to achieve the correct input schema type in handlers.Changelog
v0.6.0
ZodNullable
, ZodOptional
, ZodUnion
and ZodIntersection
properties.Changelog
v0.5.0
ConfigType
changes:// before
export interface ConfigType {
server: {
listen: number | string;
cors: boolean;
jsonParser?: NextHandleFunction;
resultHandler?: ResultHandler;
};
logger: LoggerConfig | winston.Logger;
}
// after
export type ConfigType = (
| {
server: {
// server configuration
listen: number | string; // preserved
jsonParser?: NextHandleFunction; // preserved
};
}
| {
// or your custom express app
app: Express;
}
) & {
cors: boolean; // moved
resultHandler?: ResultHandler; // moved
logger: LoggerConfig | Logger;
};
// before
initRouting({ app, logger, config, routing });
// after
const config: ConfigType = { app /* ..., */ };
attachRouting(config, routing);
Changelog
v0.4.0
createLogger()
now accepts LoggerConfig
as an argument:// before
createLogger(config);
// after
createLogger(config.logger);