@tresdoce-nestjs-toolkit/core
TypeScript icon, indicating that this package has built-in type declarations

1.2.1 • Public • Published
nestjs-logo

Tresdoce NestJS Toolkit
Core

Node.js Npm NestJS
GitHub license Release

⚠️ Es importante tener en cuenta que este módulo se encuentra implementado en el package @tresdoce-nestjs-toolkit/paas, ya que es una funcionalidad core para el starter.

Este módulo está pensada para ser utilizada en NestJS Starter, o cualquier proyecto que utilice una configuración centralizada, siguiendo la misma arquitectura del starter.

Glosario


📝 Requerimientos básicos

🛠️ Instalar dependencia

npm install -S @tresdoce-nestjs-toolkit/core
yarn add @tresdoce-nestjs-toolkit/core

👨‍💻 Uso

Validation Schema

La validación del los parámetros (envs) que requiere la aplicación son validados por medio de la función validateSchemaForApp, esta tienen integrado la validación los schemas obligatorios y base para la app.

ValidationSchema for App

// ./src/config/validationSchema.ts
import Joi from 'joi';
import { validateSchemaForApp } from '@tresdoce-nestjs-toolkit/core';

export const validationSchema = validateSchemaForApp({
  // Custom parameters
  TEST_KEY: Joi.string().optional(),
  RICK_AND_MORTY_API_URL: Joi.string().required(),
  RICK_AND_MORTY_API_URL_LIVENESS: Joi.string().required(),
});

corePathsExcludes

Es una variable que contiene una lista de paths con sus methods con el fin de ser excluidos tanto del prefix de la app, como asi también de otras funcionalidades para que no generen registros innecesarios, como puede ser el caso de los logscon los endpoints del helath.

// ./src/main.ts
import { corePathsExcludes } from '@tresdoce-nestjs-toolkit/core';

async function bootstrap() {
  //...
  app.setGlobalPrefix(`${server.context}`, {
    exclude: [...corePathsExcludes()],
  });
  //...
}

setHttpsOptions

Para implementar SSL en la app, se requiere tener la ruta del certy la privKey para poder instanciarlo en los options.

// ./src/main.ts
import { setHttpsOptions } from '@tresdoce-nestjs-toolkit/core';

const certPath = './path/to/secrets/public-certificate.pem';
const pkeyPath = './path/to/secrets/private-key.pem';

async function bootstrap() {
  //...
  async function bootstrap() {
    const app = await NestFactory.create(AppModule, {
      httpsOptions: setHttpsOptions(certPath, pkeyPath),
    });
  }
  //...
}

Decorators

Public

Decorador para definir si un endpoint es público.

// ./src/app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
import { Public } from '@tresdoce-nestjs-toolkit/core';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  // Publico
  @Get('')
  @Public()
  getTestEnv(): string {
    return this.appService.getTestEnv();
  }

  // Privado
  @Get('my-util')
  getMyUtil() {
    return this.appService.getMyCustomUtil();
  }
}

Roles

Decorador para definir el metadata de roles.

// ./src/app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
import { Roles } from '@tresdoce-nestjs-toolkit/core';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  // Only user role
  @Get('')
  @Roles('user')
  getTestEnv(): string {
    return this.appService.getTestEnv();
  }

  // Only user and admin role
  @Get('my-util')
  @Roles('user', 'admin')
  getMyUtil() {
    return this.appService.getMyCustomUtil();
  }
}

📄 Changelog

Todos los cambios notables de este paquete se documentarán en el archivo Changelog.


Mex

Made with ❤

Readme

Keywords

Package Sidebar

Install

npm i @tresdoce-nestjs-toolkit/core

Weekly Downloads

35

Version

1.2.1

License

MIT

Unpacked Size

36.9 kB

Total Files

28

Last publish

Collaborators

  • rudemex