npm i @devgurusio/nest-commercetools --save
@devgurusio/nest-commercetools This library contains two NestJS modules
This module can be used for create a byProjectKeyRequest from requestBuilder and inject repositories from commercetools-sdk-repositories.
This module requires commercetools-sdk-repositories
npm i @devgurusio/commercetools-sdk-repositories
Before injecting repositories to a module, it is necessary to create a byProjectKeyRequest. If config options needs an asynchronous load, forFeatureAsync can be used
Build an object that matches CommercetoolsPlatformModuleOptions interface and import CommercetoolsPlatformModule.forRoot method in app.module.ts
import { Module } from '@nestjs/common';
import { CommercetoolsPlatformModule } from '@devgurusio/nest-commercetools';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
CommercetoolsPlatformModule.forRoot({
auth: {
host: 'https://auth.commercetools.co',
projectKey: 'projectKey',
credentials: {
clientId: 'clientId',
clientSecret: 'clientSecret'
}
httpClient: fetch,
}
http: {
host: 'https://api.commercetools.co',
enableRetry: true,
retryConfig: {
maxRetries: 3
},
httpClient: fetch,
},
logger: false;
queue: { concurrency: 10 };
projectKey: 'projectKey';
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Build an object that mathes CommercetoolsPlatformModuleAsyncOptions and import CommercetoolsPlatformModule.forRootAsync method in app.module.ts
import { Module } from '@nestjs/common';
import { CommercetoolsPlatformModule } from '@devgurusio/nest-commercetools';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CommercetoolsConfigModule } from './commercetools-config/commercetools-config.module';
import { CommercetoolsConfigService } from './commercetools-config/commercetools-config.service';
@Module({
imports: [
CommercetoolsPlatformModule.forRootAsync({
imports: [CommercetoolsConfigModule],
useClass: CommercetoolsConfigService,
})
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
CommercetoolsConfigService should implement a createCommercetoolsPlatformOptions function that returns a CommercetoolsPlatformModuleOptions or Promise
This module can be used for create a SdkAuth client to work with CT HTTP API Authorization.
This module requires a fetch function
Build an object that matches CommercetoolsAuthorizationModuleOptions interface and import CommercetoolsAuthorizationModule.register method in the module you need to inject service.
import { Module } from '@nestjs/common';
import { CommercetoolsAuthorizationModule } from '@devgurusio/nest-commercetools';
import fetch from 'node-fetch';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
CommercetoolsAuthorizationModule.registerAsync({
host: 'https://auth.commercetools.co',
token: string
projectKey: 'projectKey',
scopes: ['manage_my_profile:projectKey']
fetch,
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Build an object that mathes CommercetoolsAuthorizationModuleAsyncOptions and import CommercetoolsAuthorizationModule.registerAsync method in app.module.ts
import { Module } from '@nestjs/common';
import { CommercetoolsAuthorizationModule } from '@devgurusio/nest-commercetools';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CommercetoolsConfigModule } from './commercetools-config/commercetools-config.module';
import { CommercetoolsAuthrizationConfigService } from './commercetools-config/commercetools-authorization-config.service';
@Module({
imports: [
CommercetoolsAuthorizationModule.forRootAsync({
imports: [CommercetoolsConfigModule],
useClass: CommercetoolsAuthorizationConfigService,
})
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
CommercetoolsAuthorizationConfigService should implement a createCommercetoolsAuthorizationOptions function that returns a CommercetoolsAuthorizationModuleOptions or Promise
If you want more extended info about async configuration for nest modules check out (NestJS Dynamic modules documentation)[https://docs.nestjs.com/fundamentals/dynamic-modules]