Version 2.4 release notes

Loïc Poullain

Loïc Poullain

Fullstack developper and creator of FoalTS


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.


"settings": {
"ajv": {
"$data": true

Example of auth controller

import { Context, Post, ValidateBody } from '@foal/core';
export class AuthController {
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 {
disk: Disk;
async readProfileImage(ctx: Context<User>) {
return this.disk.createHttpResponse(ctx.user.avatar, {
cache: 'no-cache'

Bug fixes#

See issue #930.



Share this article on

Stay up to date with the newsletter.