1
- import { NgModule , ModuleWithProviders , inject } from '@angular/core' ;
2
- import { HttpClient , HttpClientModule } from '@angular/common/http' ;
1
+ import {
2
+ NgModule ,
3
+ ModuleWithProviders ,
4
+ inject ,
5
+ makeEnvironmentProviders ,
6
+ } from '@angular/core' ;
7
+ import {
8
+ HttpClient ,
9
+ provideHttpClient ,
10
+ withInterceptorsFromDi ,
11
+ } from '@angular/common/http' ;
3
12
import { HttpInnerClient , JsonSdkConfig } from './types' ;
4
13
import { AtomicFactory , JSON_API_SDK_CONFIG } from './token' ;
5
14
import { resultConfig } from './utils' ;
@@ -9,51 +18,56 @@ import {
9
18
AtomicOperationsService ,
10
19
} from './service' ;
11
20
21
+ export const getProviders = ( config : JsonSdkConfig ) => [
22
+ {
23
+ provide : JSON_API_SDK_CONFIG ,
24
+ useValue : resultConfig ( config ) ,
25
+ } ,
26
+ {
27
+ provide : JsonApiUtilsService ,
28
+ useFactory : ( ) => new JsonApiUtilsService ( inject ( JSON_API_SDK_CONFIG ) ) ,
29
+ } ,
30
+ {
31
+ provide : JsonApiSdkService ,
32
+ useFactory : ( ) =>
33
+ new JsonApiSdkService (
34
+ inject < HttpInnerClient > ( HttpClient as any ) ,
35
+ inject ( JsonApiUtilsService ) ,
36
+ inject ( JSON_API_SDK_CONFIG )
37
+ ) ,
38
+ } ,
39
+ {
40
+ provide : AtomicFactory ,
41
+ useFactory : ( ) => {
42
+ const jsonApiUtilsService = inject ( JsonApiUtilsService ) ;
43
+ const config = inject ( JSON_API_SDK_CONFIG ) ;
44
+ const httpClient = inject < HttpInnerClient > ( HttpClient as any ) ;
45
+
46
+ return ( ) => {
47
+ return new AtomicOperationsService (
48
+ jsonApiUtilsService ,
49
+ config ,
50
+ httpClient
51
+ ) ;
52
+ } ;
53
+ } ,
54
+ } ,
55
+ ] ;
56
+
57
+ export const provideJsonApi = ( config : JsonSdkConfig ) =>
58
+ makeEnvironmentProviders ( getProviders ( config ) ) ;
59
+
12
60
@NgModule ( {
13
- imports : [ HttpClientModule ] ,
61
+ imports : [ ] ,
62
+ providers : [ provideHttpClient ( withInterceptorsFromDi ( ) ) ] ,
14
63
} )
15
64
export class JsonApiAngular {
16
65
static forRoot ( config : JsonSdkConfig ) : ModuleWithProviders < JsonApiAngular > {
17
66
return {
18
67
ngModule : JsonApiAngular ,
19
- providers : [
20
- {
21
- provide : JSON_API_SDK_CONFIG ,
22
- useValue : resultConfig ( config ) ,
23
- } ,
24
- {
25
- provide : JsonApiUtilsService ,
26
- useFactory : ( ) =>
27
- new JsonApiUtilsService ( inject ( JSON_API_SDK_CONFIG ) ) ,
28
- } ,
29
- {
30
- provide : JsonApiSdkService ,
31
- useFactory : ( ) =>
32
- new JsonApiSdkService (
33
- inject < HttpInnerClient > ( HttpClient as any ) ,
34
- inject ( JsonApiUtilsService ) ,
35
- inject ( JSON_API_SDK_CONFIG )
36
- ) ,
37
- } ,
38
- {
39
- provide : AtomicFactory ,
40
- useFactory : ( ) => {
41
- const jsonApiUtilsService = inject ( JsonApiUtilsService ) ;
42
- const config = inject ( JSON_API_SDK_CONFIG ) ;
43
- const httpClient = inject < HttpInnerClient > ( HttpClient as any ) ;
44
-
45
- return ( ) => {
46
- return new AtomicOperationsService (
47
- jsonApiUtilsService ,
48
- config ,
49
- httpClient
50
- ) ;
51
- } ;
52
- } ,
53
- } ,
54
- ] ,
68
+ providers : getProviders ( config ) ,
55
69
} ;
56
70
}
57
71
}
58
72
59
- export { AtomicFactory } from './token' ;
73
+ export { AtomicFactory , JSON_API_SDK_CONFIG } from './token' ;
0 commit comments