Saltar al contenido principal

Version 2.4 release notes

· 2 min de lectura
Loïc Poullain
Creator of FoalTS. Software engineer.

Banner

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.

Contributors

@ZakRabe