1.2.1 • Published 4 months ago

@tresdoce-nestjs-toolkit/core v1.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

⚠️ 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.


1.2.1

4 months ago

1.2.0

6 months ago

1.0.0

9 months ago

0.7.2-beta.0

9 months ago

0.7.0-beta.0

10 months ago

0.7.0-beta.1

10 months ago

0.7.0-beta.2

10 months ago

1.2.0-beta.0

6 months ago

1.1.0-beta.2

9 months ago

1.1.0-beta.1

9 months ago

1.1.1-beta.0

8 months ago

1.1.0-beta.0

9 months ago

1.1.0-beta.5

9 months ago

1.1.0-beta.4

9 months ago

1.1.0-beta.3

9 months ago

0.7.1

10 months ago

1.1.2-beta.0

6 months ago

0.7.0

10 months ago

1.1.1

8 months ago

1.1.0

9 months ago

1.1.2

6 months ago

0.7.1-beta.0

10 months ago

0.7.1-beta.1

10 months ago

1.0.0-beta.2

9 months ago

1.0.0-beta.0

9 months ago

1.0.0-beta.1

9 months ago

0.6.0

11 months ago

0.6.0-beta.0

11 months ago

0.5.0-beta.1

12 months ago

0.5.0-beta.0

12 months ago

0.5.0-beta.4

12 months ago

0.5.0-beta.3

12 months ago

0.5.0-beta.2

12 months ago

0.5.0

12 months ago

0.5.1

12 months ago

0.4.0-beta.0

1 year ago

0.4.0

1 year ago

0.3.4-beta.1

1 year ago

0.3.4-beta.0

1 year ago

0.3.3-beta.0

1 year ago

0.3.5-beta.0

1 year ago

0.3.5

1 year ago

0.3.4

1 year ago

0.3.3

1 year ago

0.3.2

1 year ago

0.3.0

2 years ago

0.3.0-beta.0

2 years ago

0.3.0-beta.1

2 years ago

0.3.1

2 years ago

0.1.0-beta.3

2 years ago

0.1.1-beta.0

2 years ago

0.1.0-beta.5

2 years ago

0.1.0-beta.4

2 years ago

0.2.0-beta.0

2 years ago

0.1.0

2 years ago

0.2.0

2 years ago

0.1.1

2 years ago

0.1.0-beta.6

2 years ago

0.1.0-beta.2

2 years ago

0.1.0-beta.1

2 years ago

0.1.0-beta.0

2 years ago