Version 2.4 release notes

Loïc Poullain

Loïc Poullain

Fullstack developper and creator of FoalTS

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


Share this article on

Stay up to date with the newsletter.