Version 2.4 of Foal has been released! Here are the improvements that it brings.
$data
references for validation
Version 2.4 allows you to enable the AJV $data
option so that you can use the verified data values as validators for other values.
config/default.json
{
"settings": {
"ajv": {
"$data": true
}
}
}
Example of auth controller
import { Context, Post, ValidateBody } from '@foal/core';
export class AuthController {
@Post('/signup')
@ValidateBody({
type: 'object',
properties: {
username: { type: 'string' },
password: { type: 'string' },
// "password" and "confirmPassword" should be identical.
confirmPassword: {
const: {
$data: '1/password',
},
type: 'string',
},
}
required: [ 'username', 'password', 'confirmPassword' ],
additionalProperties: false
})
signup(ctx: Context) {
// Do something.
}
}
Cache option for file downloading
Starting from version 2.4 the Disk.createHttpResponse
method accepts an optional parameter to specify the value of the Cache-Control
header.
import { Context, dependency, Get } from '@foal/core';
import { Disk } from '@foal/storage';
import { User } from '../entities';
export class ProfileController {
@dependency
disk: Disk;
@Get('/avatar')
async readProfileImage(ctx: Context<User>) {
return this.disk.createHttpResponse(ctx.user.avatar, {
cache: 'no-cache'
});
}
Bug fixes
See issue #930.
Top comments (0)