DEV Community

Cover image for Node.JS - Foal framework - version 2.4 is here
Loïc Poullain
Loïc Poullain

Posted on

2 1

Node.JS - Foal framework - version 2.4 is here

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
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

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.
  }
}

Enter fullscreen mode Exit fullscreen mode

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'
    });
  }
Enter fullscreen mode Exit fullscreen mode

Bug fixes

See issue #930.

Contributors

@ZakRabe

Top comments (0)

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay