@nestjs-donation-alerts/events v0.2.0
NestJS Donation Alerts API
A NestJS wrapper for @donation-alerts/events package.
!IMPORTANT These packages require
@donation-alertsversion 3.0.0 or higher.
Installation
This module can be used in combination with @nestjs-donation-alerts/auth and @nestjs-donation-alerts/api modules. Install them if necessary.
yarn:
yarn add @nestjs-donation-alerts/events @donation-alerts/api @donation-alerts/eventsnpm:
npm i @nestjs-donation-alerts/events @donation-alerts/api @donation-alerts/eventsUsage
For basic information, check out the general documentation at the root of the repository @nestjs-donation-alerts.
Also take a look at the @donation-alerts/events API reference.
Import and Registration
The module must be registered either with register or registerAsync static methods.
To create an events client, you must provide DonationAlertsEventsOptions. The options below extended from the EventsClientConfig interface provided by @donation-alerts/api package, so the example below may become outdated at some point.
interface DonationAlertsEventsOptions {
apiClient: ApiClient;
logger?: Partial<LoggerOptions>;
}The right approach would be using this module in combination with @nestjs-donation-alerts/auth and @nestjs-donation-alerts/api modules.
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AuthProvider } from '@donation-alerts/auth';
import { ApiClient } from '@donation-alerts/api';
import { DONATION_ALERTS_AUTH_PROVIDER, DonationAlertsAuthModule } from '@nestjs-donation-alerts/auth';
import { DONATION_ALERTS_API_CLIENT, DonationAlertsApiModule } from '@nestjs-donation-alerts/api';
import { DonationAlertsEventsModule } from '@nestjs-donation-alerts/events';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
DonationAlertsAuthModule.registerAsync({
isGlobal: true,
inject: [ConfigService],
useFactory: (configService: ConfigService) => {
return {
type: 'refreshing',
clientId: configService.get('DA_CLIENT_ID'),
clientSecret: configService.get('DA_CLIENT_SECRET'),
scopes: configService.get('DA_SCOPES')
};
}
}),
DonationAlertsApiModule.registerAsync({
isGlobal: true,
inject: [DONATION_ALERTS_AUTH_PROVIDER],
useFactory: (authProvider: AuthProvider) => {
// Here we are able to access the auth provider instance
// provided by DonationAlertsAuthModule
return { authProvider };
}
}),
DonationAlertsEventsModule.registerAsync({
isGlobal: true,
inject: [DONATION_ALERTS_API_CLIENT],
useFactory: (apiClient: ApiClient) => {
// Here we are able to access the API client instance
// provided by DonationAlertsApiModule
return { apiClient };
}
})
]
})
export class AppModule {}Using EventsClient
The module internally creates an EventsClient instance. You can inject it anywhere you need it using @InjectEventsClient() decorator:
import { Injectable } from '@nestjs/common';
import { EventsClient } from '@donation-alerts/events';
import { InjectEventsClient } from '@nestjs-donation-alerts/events';
@Injectable()
export class CustomProvider {
constructor(@InjectEventsClient() private readonly _eventsClient: EventsClient) {}
}Alternatively, you can use DONATION_ALERTS_EVENTS_CLIENT token to inject the EventsClient instance:
import { Inject, Injectable } from '@nestjs/common';
import { EventsClient } from '@donation-alerts/events';
import { DONATION_ALERTS_EVENTS_CLIENT } from '@nestjs-donation-alerts/events';
@Injectable()
export class CustomProvider {
constructor(@Inject(DONATION_ALERTS_EVENTS_CLIENT) private readonly _eventsClient: EventsClient) {}
}