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

0.1.0-beta.1 • Public • Published
nestjs-logo

Tresdoce NestJS Toolkit
QrCode

Node.js Npm NestJS
GitHub license Release

Este módulo está pensado para ser utilizado 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/qrcode
yarn add @tresdoce-nestjs-toolkit/qrcode

👨‍💻 Uso

El servicio QrCodeService tiene disponible la función createQrCode() que genera el código QR y lo retorna como URL en base64, y también cuenta con la función createQrCodeBuffer() la cual genera el código QR y lo retorna como imagen.

Para poder hacer uso de estas funcionalidades, es cuestión de importar el QrCodeModule en el módulo o bien inyectar el servicio QrCodeService en el provider del módulo, recomendable que sea en el módulo principal.

Importación de módulo

// ./src/app.module.ts
import { Module } from '@nestjs/common';
import { QrCodeModule } from '@tresdoce-nestjs-toolkit/qrcode';

@Module({
  //...
  imports: [
    //...
    QrCodeModule,
    //...
  ],
  //...
})
export class AppModule {}

Inyección de servicio

// ./src/app.module.ts
import { Module } from '@nestjs/common';
import { QrCodeService } from '@tresdoce-nestjs-toolkit/qrcode';

@Module({
  //...
  providers: [
    //...
    QrCodeService,
    //...
  ],
  //...
})
export class AppModule {}

Controllers

Dependiendo que tipo de código QR deseas retornar, la diferencia va a estar en el controlador de la aplicación.

// ./src/app.controller.ts
import { Controller, Get, Res } from '@nestjs/common';
import type { Response } from 'express';

import { AppService } from './app.service';

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

  // Retorna URL en base64 del código QR
  @Get('qr-code-url')
  async createQrCodeUrl() {
    return await this.appService.createQrCodeUrl();
  }

  // Retorna imagen del código QR
  @Get('qr-code-buffer')
  async createQrCodeBuffer(@Res() response: Response) {
    const qrCodeBuffer = await this.appService.createQrCodeBuffer();
    response.status(200);
    response.type('image/png');
    response.send(qrCodeBuffer);
  }
}

Services

Inyectamos el QrCodeService en el constructor de nuestro service para poder hacer uso de las funcionalidades.

La función para crear códigos QR admite dos parámetros, data que es un objeto que contiene el tipo de contenido y sus valores y options que es un objeto para customizar el código QR ya sea tamaño, version, margin, color, etc., este servicio ya cuenta con una configuración base, la cual se puede reemplazar los valores enviando los nuevos atributos.

Para más información sobre las opciones disponibles pódes visitar la documentación de QRCode - Options

// ./src/app.service.ts
import { Inject, Injectable } from '@nestjs/common';
import { QrCodeService } from '@tresdoce-nestjs-toolkit/qrcode';

@Injectable()
export class AppService {
  constructor(@Inject(QrCodeService) private qrcode: QrCodeService) {}

  // Genera código QR como URL en base64
  async createQrCodeUrl(): Promise<string> {
    const options = {
      width: 300,
    };
    return await this.qrcode.createQrCode({ type: 'text', text: 'Hola Mundo' }, options);
  }

  // Genera código QR como Buffer
  async createQrCodeBuffer(): Promise<Buffer> {
    const options = {
      width: 300,
    };
    return await this.qrcode.createQrCodeBuffer({ type: 'text', text: 'Hola Mundo' }, options);
  }
}

Tipos de código QR

El módulo cuenta con la generación de diversos contenidos en el código QR que va a depender de la estructura y contenido de la data que le envies a la función, sea URL o Buffer.

Texto plano
createQrCode({ type: 'text', text: 'Hola Mundo' });
qr-code-plain-text
URL
createQrCode({ type: 'url', url: 'https://www.ejemplo.com' });
qr-code-url
WIFI
createQrCode({
  type: 'wifi',
  ssid: 'MiWifi',
  password: 'password123',
  encryption: 'WPA',
});
qr-code-wifi
vCard
createQrCode({
  type: 'vcard',
  name: 'Juan Perez',
  phone: '+34123456789',
  email: 'juan.perez@ejemplo.com',
  organization: 'Ejemplo S.A.',
});
qr-code-vcard
Email
createQrCode({
  type: 'email',
  address: 'info@ejemplo.com',
  subject: 'Saludos',
  body: 'Hola, este es un email de ejemplo.',
});
qr-code-email
SMS
createQrCode({
  type: 'sms',
  phone: '+34123456789',
  message: 'Hola, ¿cómo estás?',
});
qr-code-sms
Whatsapp
createQrCode({
  type: 'whatsapp',
  phone: '+34123456789',
  message: 'Hola, ¿cómo estás?',
});
qr-code-whatsapp
Geolocalización
createQrCode({
  type: 'geo',
  latitude: -34.6395141,
  longitude: -58.4022226,
});
qr-code-geo
Evento
createQrCode({
  type: 'event',
  summary: 'Reunión de Trabajo',
  start: '20261015T170000Z',
  end: '20261015T190000Z',
});
qr-code-event
Criptomoneda
createQrCode({
  type: 'crypto',
  currency: 'bitcoin',
  address: '1BoatSLRHtKNngkdXEeobR76b53LETtpyT',
});
qr-code-cripto

📄 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/qrcode

Weekly Downloads

12

Version

0.1.0-beta.1

License

MIT

Unpacked Size

62.6 kB

Total Files

14

Last publish

Collaborators

  • rudemex