// angular modules import { NgModule, APP_INITIALIZER, ModuleWithProviders, Injector,Optional,SkipSelf } from '@angular/core'; import { CommonModule, DatePipe } from '@angular/common'; import { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http'; import { FormsModule } from '@angular/forms'; // external modules import { OAuthModule,AuthConfig, OAuthService, OAuthStorage } from 'angular-oauth2-oidc'; // routing module import { AppCommonRoutingModule } from './common-routing.module'; import { MODULE_NAME } from './module-name'; //components import { ItemTypeService } from './services/itemtype.service'; import { FolderService } from './services/folder.service'; import { TimespanService} from './services/timespan.service'; import { ItemService} from './services/item.service'; import { EventService } from './services/event.service'; import { TypeaheadService } from './services/typeahead.service'; import { UserService } from './services/user.service'; import { AppConfig } from './shared/app.config'; import { AccessTokenInterceptor } from "./shared/accesstoken.interceptor"; import { appConfigFactory } from "./shared/app.config.factory"; import { AuthGuard } from './services/auth-guard.service'; import { NavBarGuard } from './services/nav-bar-guard.service'; import { FullScreenGuard } from './services/full-screen-guard.service'; import { SafePipe } from './shared/safe.pipe'; import { AppComponent} from './components/app/app.component'; import { AuthCallbackComponent } from './components/auth-callback/auth-callback.component'; import { AuthCallbackGuard } from './components/auth-callback/auth-callback.guard'; import { SessionClearedComponent } from './components/session-cleared/session-cleared.component'; import { ResumableFileUploadService } from './components/resumable-file-upload/resumable-file-upload.service'; import { ResumableFileUploadComponent } from './components/resumable-file-upload/resumable-file-upload.component'; import { NotFoundComponent } from './components/not-found/not-found.component'; import { NotImplementedComponent } from './components/not-implemented/not-implemented.component'; import { SidePanelComponent } from './components/side-panel/side-panel.component'; import { TimespanComponent } from './components/timespan/timespan.component'; import { TagInputComponent } from './components/tag-input/tag-input.component'; import {IEventMessage } from './models/event.message'; import { IItem, Item } from './models/item'; import {IItemType} from './models/item.type'; import {IItemTypes} from './models/item.types'; import {IItemTask,ItemTask} from './models/itemTask'; import {IListItem} from './models/list.item'; import {ITypeaheadItem} from './models/typeahead.item'; import {IUser} from './models/user'; import * as commonActions from './actions/app-common.actions'; import * as commonReducers from './reducers/app-common.reducer'; import * as commonEffects from './effects/app-common.effects'; import {NgbDateNativeAdapter} from './services/date-adapter.service' import { from } from 'rxjs'; export {FolderService, ItemTypeService, TimespanService, ItemService, EventService, TypeaheadService, UserService, AppConfig, AccessTokenInterceptor, AuthGuard, NavBarGuard, FullScreenGuard, AuthCallbackGuard, ResumableFileUploadService, NgbDateNativeAdapter }; @NgModule({ imports: [ OAuthModule.forRoot(), ] }) export class AppCommonServiceModule { constructor (@Optional() @SkipSelf() parentModule: AppCommonServiceModule) { if (parentModule) { throw new Error( 'AppCommonServiceModule is already loaded. Import it in the AppModule only'); } } static forRoot(): ModuleWithProviders { return { ngModule: AppCommonServiceModule, providers: [ AppConfig, { provide: APP_INITIALIZER, useFactory: appConfigFactory, deps: [Injector, AppConfig, OAuthService], multi: true }, { provide: HTTP_INTERCEPTORS, useClass: AccessTokenInterceptor, multi: true }, DatePipe ] }; } }