forked from singlesly/bingx-api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnest-bingx.module.ts
More file actions
49 lines (46 loc) · 1.32 KB
/
Copy pathnest-bingx.module.ts
File metadata and controls
49 lines (46 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { DynamicModule, Module } from '@nestjs/common';
import { BingxApiClient } from 'bingx-api/bingx-client';
import { HttpRequestExecutor, RequestExecutorInterface } from 'bingx-api/bingx';
import { NestBingxConfigurationInterface } from 'bingx-api/nest-bingx/nest-bingx-configuration.interface';
@Module({
providers: [
HttpRequestExecutor,
{
provide: BingxApiClient,
inject: [HttpRequestExecutor],
useFactory: (httpRequestExecutor: HttpRequestExecutor) =>
new BingxApiClient(httpRequestExecutor),
},
],
exports: [BingxApiClient],
})
export class NestBingxModule {
public static configure(
configuration: NestBingxConfigurationInterface,
): DynamicModule {
const {
requestExecutor = HttpRequestExecutor,
providers = [],
imports = [],
} = configuration;
const injectionToken = 'CUSTOM_REQUEST_EXECUTOR';
return {
module: NestBingxModule,
imports,
providers: [
...providers,
{
useClass: requestExecutor,
provide: injectionToken,
},
{
provide: BingxApiClient,
inject: [injectionToken],
useFactory: (requestExecutor: RequestExecutorInterface) =>
new BingxApiClient(requestExecutor),
},
],
exports: [BingxApiClient],
};
}
}