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' ;
312import { HttpInnerClient , JsonSdkConfig } from './types' ;
413import { AtomicFactory , JSON_API_SDK_CONFIG } from './token' ;
514import { resultConfig } from './utils' ;
@@ -9,51 +18,56 @@ import {
918 AtomicOperationsService ,
1019} from './service' ;
1120
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+
1260@NgModule ( {
13- imports : [ HttpClientModule ] ,
61+ imports : [ ] ,
62+ providers : [ provideHttpClient ( withInterceptorsFromDi ( ) ) ] ,
1463} )
1564export class JsonApiAngular {
1665 static forRoot ( config : JsonSdkConfig ) : ModuleWithProviders < JsonApiAngular > {
1766 return {
1867 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 ) ,
5569 } ;
5670 }
5771}
5872
59- export { AtomicFactory } from './token' ;
73+ export { AtomicFactory , JSON_API_SDK_CONFIG } from './token' ;
0 commit comments