NodeJS – version 2.7 of Foal framework is here 🎉

Version 2.7 of Foal has been released! Here are the improvements that it brings.

The body of HttpResponse can be typed

The HttpResponse class becomes generic so as to enforce the type of its body property if needed.

import { Get, HttpR…


This content originally appeared on DEV Community and was authored by Loïc Poullain

Banner

Version 2.7 of Foal has been released! Here are the improvements that it brings.

The body of HttpResponse can be typed

The HttpResponse class becomes generic so as to enforce the type of its body property if needed.

import { Get, HttpResponse } from '@foal/core';

import { Product } from '../entities';

export class AppController {
  @Get('/products')
  async products(): HttpResponse<Product[]> {
    const products = await Product.find({});
    return new HttpResponse(products);
  }
}

It also allows you to infer the type of the body in your tests:

Generic HttpResponse

Support for signed cookies

Starting from this version, you can sign cookies and read them through the signedCookies attribute.

import { Context, HttpResponseOK, Get, Post } from '@foal/core';

class AppController {
  @Get('/')
  index(ctx: Context) {
    const cookie1: string|undefined = ctx.request.signedCookies.cookie1;
    // Do something.
    return new HttpResponseOK();
  }

  @Post('/sign-cookie')
  index() {
    return new HttpResponseOK()
      .setCookie('cookie1', 'value1', {
        signed: true
      });
  }
}

In order to use signed cookies, you must provide a secret with the configuration key settings.cookieParser.secret.

Environment name can be provided via NODE_ENV or FOAL_ENV

Version 2.7 allows to you to specify the environment name (production, development, etc) with the FOAL_ENV environment variable.

This can be useful if you have third party libraries whose behavior also depends on the value of NODE_ENV (see Github issue here).

foal generate entity and foal generate hook support sub-directories

Example with entities (models)

foal g entity user
foal g entity business/product

Output

src/
 '- app/
  '- entities/
   |- business/
   | |- product.entity.ts
   | '- index.ts
   |- user.entity.ts
   '- index.ts

Example with hooks

foal g hook log
foal g hook auth/admin-required

Output

src/
 '- app/
  '- hooks/
   |- auth/
   | |- admin-required.hook.ts
   | '- index.ts
   |- log.hook.ts
   '- index.ts

New afterPreMiddlewares option in createApp

It is now possible to run a custom middleware after all internal Express middlewares of the framework.

This can be useful in rare situations, for example when using the RequestContext helper in Mikro-ORM.

const app = await createApp({
   afterPreMiddlewares: [
      (req, res, next) => {
         RequestContext.create(orm.em, next);
      }
   ]
})

Contributors


This content originally appeared on DEV Community and was authored by Loïc Poullain


Print Share Comment Cite Upload Translate Updates
APA

Loïc Poullain | Sciencx (2021-12-13T17:48:30+00:00) NodeJS – version 2.7 of Foal framework is here 🎉. Retrieved from https://www.scien.cx/2021/12/13/nodejs-version-2-7-of-foal-framework-is-here-%f0%9f%8e%89/

MLA
" » NodeJS – version 2.7 of Foal framework is here 🎉." Loïc Poullain | Sciencx - Monday December 13, 2021, https://www.scien.cx/2021/12/13/nodejs-version-2-7-of-foal-framework-is-here-%f0%9f%8e%89/
HARVARD
Loïc Poullain | Sciencx Monday December 13, 2021 » NodeJS – version 2.7 of Foal framework is here 🎉., viewed ,<https://www.scien.cx/2021/12/13/nodejs-version-2-7-of-foal-framework-is-here-%f0%9f%8e%89/>
VANCOUVER
Loïc Poullain | Sciencx - » NodeJS – version 2.7 of Foal framework is here 🎉. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/12/13/nodejs-version-2-7-of-foal-framework-is-here-%f0%9f%8e%89/
CHICAGO
" » NodeJS – version 2.7 of Foal framework is here 🎉." Loïc Poullain | Sciencx - Accessed . https://www.scien.cx/2021/12/13/nodejs-version-2-7-of-foal-framework-is-here-%f0%9f%8e%89/
IEEE
" » NodeJS – version 2.7 of Foal framework is here 🎉." Loïc Poullain | Sciencx [Online]. Available: https://www.scien.cx/2021/12/13/nodejs-version-2-7-of-foal-framework-is-here-%f0%9f%8e%89/. [Accessed: ]
rf:citation
» NodeJS – version 2.7 of Foal framework is here 🎉 | Loïc Poullain | Sciencx | https://www.scien.cx/2021/12/13/nodejs-version-2-7-of-foal-framework-is-here-%f0%9f%8e%89/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.