This repository has been archived by the owner on Jun 17, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 137
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
BEEEP: Move DI logic to jslib (#565)
- Loading branch information
Showing
1 changed file
with
395 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,395 @@ | ||
import { | ||
Injector, | ||
LOCALE_ID, | ||
NgModule, | ||
} from '@angular/core'; | ||
import { ToasterModule } from 'angular2-toaster'; | ||
|
||
import { ApiService } from 'jslib-common/services/api.service'; | ||
import { AppIdService } from 'jslib-common/services/appId.service'; | ||
import { AuditService } from 'jslib-common/services/audit.service'; | ||
import { AuthService } from 'jslib-common/services/auth.service'; | ||
import { CipherService } from 'jslib-common/services/cipher.service'; | ||
import { CollectionService } from 'jslib-common/services/collection.service'; | ||
import { ConsoleLogService } from 'jslib-common/services/consoleLog.service'; | ||
import { CryptoService } from 'jslib-common/services/crypto.service'; | ||
import { EnvironmentService } from 'jslib-common/services/environment.service'; | ||
import { EventService } from 'jslib-common/services/event.service'; | ||
import { ExportService } from 'jslib-common/services/export.service'; | ||
import { FileUploadService } from 'jslib-common/services/fileUpload.service'; | ||
import { FolderService } from 'jslib-common/services/folder.service'; | ||
import { KeyConnectorService } from 'jslib-common/services/keyConnector.service'; | ||
import { NotificationsService } from 'jslib-common/services/notifications.service'; | ||
import { PasswordGenerationService } from 'jslib-common/services/passwordGeneration.service'; | ||
import { PolicyService } from 'jslib-common/services/policy.service'; | ||
import { SearchService } from 'jslib-common/services/search.service'; | ||
import { SendService } from 'jslib-common/services/send.service'; | ||
import { SettingsService } from 'jslib-common/services/settings.service'; | ||
import { StateService } from 'jslib-common/services/state.service'; | ||
import { SyncService } from 'jslib-common/services/sync.service'; | ||
import { TokenService } from 'jslib-common/services/token.service'; | ||
import { TotpService } from 'jslib-common/services/totp.service'; | ||
import { UserService } from 'jslib-common/services/user.service'; | ||
import { UserVerificationService } from 'jslib-common/services/userVerification.service'; | ||
import { VaultTimeoutService } from 'jslib-common/services/vaultTimeout.service'; | ||
import { WebCryptoFunctionService } from 'jslib-common/services/webCryptoFunction.service'; | ||
|
||
import { ApiService as ApiServiceAbstraction } from 'jslib-common/abstractions/api.service'; | ||
import { AppIdService as AppIdServiceAbstraction } from 'jslib-common/abstractions/appId.service'; | ||
import { AuditService as AuditServiceAbstraction } from 'jslib-common/abstractions/audit.service'; | ||
import { AuthService as AuthServiceAbstraction } from 'jslib-common/abstractions/auth.service'; | ||
import { BroadcasterService as BroadcasterServiceAbstraction } from 'jslib-common/abstractions/broadcaster.service'; | ||
import { CipherService as CipherServiceAbstraction } from 'jslib-common/abstractions/cipher.service'; | ||
import { CollectionService as CollectionServiceAbstraction } from 'jslib-common/abstractions/collection.service'; | ||
import { CryptoService as CryptoServiceAbstraction } from 'jslib-common/abstractions/crypto.service'; | ||
import { CryptoFunctionService as CryptoFunctionServiceAbstraction } from 'jslib-common/abstractions/cryptoFunction.service'; | ||
import { EnvironmentService as EnvironmentServiceAbstraction, Urls } from 'jslib-common/abstractions/environment.service'; | ||
import { EventService as EventServiceAbstraction } from 'jslib-common/abstractions/event.service'; | ||
import { ExportService as ExportServiceAbstraction } from 'jslib-common/abstractions/export.service'; | ||
import { FileUploadService as FileUploadServiceAbstraction } from 'jslib-common/abstractions/fileUpload.service'; | ||
import { FolderService as FolderServiceAbstraction } from 'jslib-common/abstractions/folder.service'; | ||
import { I18nService as I18nServiceAbstraction } from 'jslib-common/abstractions/i18n.service'; | ||
import { KeyConnectorService as KeyConnectorServiceAbstraction } from 'jslib-common/abstractions/keyConnector.service'; | ||
import { LogService } from 'jslib-common/abstractions/log.service'; | ||
import { MessagingService as MessagingServiceAbstraction } from 'jslib-common/abstractions/messaging.service'; | ||
import { NotificationsService as NotificationsServiceAbstraction } from 'jslib-common/abstractions/notifications.service'; | ||
import { | ||
PasswordGenerationService as PasswordGenerationServiceAbstraction, | ||
} from 'jslib-common/abstractions/passwordGeneration.service'; | ||
import { PasswordRepromptService as PasswordRepromptServiceAbstraction } from 'jslib-common/abstractions/passwordReprompt.service'; | ||
import { PlatformUtilsService as PlatformUtilsServiceAbstraction } from 'jslib-common/abstractions/platformUtils.service'; | ||
import { PolicyService as PolicyServiceAbstraction } from 'jslib-common/abstractions/policy.service'; | ||
import { SearchService as SearchServiceAbstraction } from 'jslib-common/abstractions/search.service'; | ||
import { SendService as SendServiceAbstraction } from 'jslib-common/abstractions/send.service'; | ||
import { SettingsService as SettingsServiceAbstraction } from 'jslib-common/abstractions/settings.service'; | ||
import { StateService as StateServiceAbstraction } from 'jslib-common/abstractions/state.service'; | ||
import { StorageService as StorageServiceAbstraction } from 'jslib-common/abstractions/storage.service'; | ||
import { SyncService as SyncServiceAbstraction } from 'jslib-common/abstractions/sync.service'; | ||
import { TokenService as TokenServiceAbstraction } from 'jslib-common/abstractions/token.service'; | ||
import { TotpService as TotpServiceAbstraction } from 'jslib-common/abstractions/totp.service'; | ||
import { UserService as UserServiceAbstraction } from 'jslib-common/abstractions/user.service'; | ||
import { UserVerificationService as UserVerificationServiceAbstraction } from 'jslib-common/abstractions/userVerification.service'; | ||
import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from 'jslib-common/abstractions/vaultTimeout.service'; | ||
|
||
import { AuthGuardService } from './auth-guard.service'; | ||
import { BroadcasterService } from './broadcaster.service'; | ||
import { LockGuardService } from './lock-guard.service'; | ||
import { ModalService } from './modal.service'; | ||
import { PasswordRepromptService } from './passwordReprompt.service'; | ||
import { UnauthGuardService } from './unauth-guard.service'; | ||
import { ValidationService } from './validation.service'; | ||
|
||
@NgModule({ | ||
imports: [ | ||
ToasterModule, | ||
], | ||
declarations: [], | ||
providers: [ | ||
{ provide: 'WINDOW', useValue: window }, | ||
{ | ||
provide: LOCALE_ID, | ||
useFactory: (i18nService: I18nServiceAbstraction) => i18nService.translationLocale, | ||
deps: [I18nServiceAbstraction], | ||
}, | ||
ValidationService, | ||
AuthGuardService, | ||
UnauthGuardService, | ||
LockGuardService, | ||
ModalService, | ||
{ | ||
provide: AppIdServiceAbstraction, | ||
useClass: AppIdService, | ||
deps: [StorageServiceAbstraction], | ||
}, | ||
{ | ||
provide: AuditServiceAbstraction, | ||
useClass: AuditService, | ||
deps: [CryptoFunctionServiceAbstraction, ApiServiceAbstraction], | ||
}, | ||
{ | ||
provide: AuthServiceAbstraction, | ||
useClass: AuthService, | ||
deps: [ | ||
CryptoServiceAbstraction, | ||
ApiServiceAbstraction, | ||
UserServiceAbstraction, | ||
TokenServiceAbstraction, | ||
AppIdServiceAbstraction, | ||
I18nServiceAbstraction, | ||
PlatformUtilsServiceAbstraction, | ||
MessagingServiceAbstraction, | ||
VaultTimeoutServiceAbstraction, | ||
LogService, | ||
CryptoFunctionServiceAbstraction, | ||
EnvironmentServiceAbstraction, | ||
KeyConnectorServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: CipherServiceAbstraction, | ||
useFactory: (cryptoService: CryptoServiceAbstraction, userService: UserServiceAbstraction, | ||
settingsService: SettingsServiceAbstraction, apiService: ApiServiceAbstraction, | ||
fileUploadService: FileUploadServiceAbstraction, storageService: StorageServiceAbstraction, | ||
i18nService: I18nServiceAbstraction, injector: Injector, logService: LogService) => | ||
new CipherService(cryptoService, userService, settingsService, apiService, fileUploadService, | ||
storageService, i18nService, () => injector.get(SearchServiceAbstraction), logService), | ||
deps: [ | ||
CryptoServiceAbstraction, | ||
UserServiceAbstraction, | ||
SettingsServiceAbstraction, | ||
ApiServiceAbstraction, | ||
FileUploadServiceAbstraction, | ||
StorageServiceAbstraction, | ||
I18nServiceAbstraction, | ||
Injector, // TODO: Get rid of this circular dependency! | ||
LogService, | ||
], | ||
}, | ||
{ | ||
provide: FolderServiceAbstraction, | ||
useClass: FolderService, | ||
deps: [ | ||
CryptoServiceAbstraction, | ||
UserServiceAbstraction, | ||
ApiServiceAbstraction, | ||
StorageServiceAbstraction, | ||
I18nServiceAbstraction, | ||
CipherServiceAbstraction, | ||
], | ||
}, | ||
{ provide: LogService, useFactory: () => new ConsoleLogService(false) }, | ||
{ | ||
provide: CollectionServiceAbstraction, | ||
useClass: CollectionService, | ||
deps: [ | ||
CryptoServiceAbstraction, | ||
UserServiceAbstraction, | ||
StorageServiceAbstraction, | ||
I18nServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: EnvironmentServiceAbstraction, | ||
useClass: EnvironmentService, | ||
deps: [StorageServiceAbstraction], | ||
}, | ||
{ | ||
provide: TotpServiceAbstraction, | ||
useClass: TotpService, | ||
deps: [ | ||
StorageServiceAbstraction, | ||
CryptoFunctionServiceAbstraction, | ||
LogService, | ||
], | ||
}, | ||
{ provide: TokenServiceAbstraction, useClass: TokenService, deps: [StorageServiceAbstraction] }, | ||
{ | ||
provide: CryptoServiceAbstraction, | ||
useClass: CryptoService, | ||
deps: [ | ||
StorageServiceAbstraction, | ||
'SECURE_STORAGE', | ||
CryptoFunctionServiceAbstraction, | ||
PlatformUtilsServiceAbstraction, | ||
LogService, | ||
], | ||
}, | ||
{ | ||
provide: PasswordGenerationServiceAbstraction, | ||
useClass: PasswordGenerationService, | ||
deps: [ | ||
CryptoServiceAbstraction, | ||
StorageServiceAbstraction, | ||
PolicyServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: ApiServiceAbstraction, | ||
useFactory: (tokenService: TokenServiceAbstraction, platformUtilsService: PlatformUtilsServiceAbstraction, | ||
environmentService: EnvironmentServiceAbstraction, messagingService: MessagingServiceAbstraction) => | ||
new ApiService(tokenService, platformUtilsService, environmentService, | ||
async (expired: boolean) => messagingService.send('logout', { expired: expired })), | ||
deps: [ | ||
TokenServiceAbstraction, | ||
PlatformUtilsServiceAbstraction, | ||
EnvironmentServiceAbstraction, | ||
MessagingServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: FileUploadServiceAbstraction, | ||
useClass: FileUploadService, | ||
deps: [ | ||
LogService, | ||
ApiServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: SyncServiceAbstraction, | ||
useFactory: (userService: UserServiceAbstraction, apiService: ApiServiceAbstraction, | ||
settingsService: SettingsServiceAbstraction, folderService: FolderServiceAbstraction, | ||
cipherService: CipherServiceAbstraction, cryptoService: CryptoServiceAbstraction, | ||
collectionService: CollectionServiceAbstraction, storageService: StorageServiceAbstraction, | ||
messagingService: MessagingServiceAbstraction, policyService: PolicyServiceAbstraction, | ||
sendService: SendServiceAbstraction, logService: LogService, tokenService: TokenService, | ||
keyConnectorService: KeyConnectorServiceAbstraction) => new SyncService(userService, apiService, | ||
settingsService, folderService, cipherService, cryptoService, collectionService, storageService, | ||
messagingService, policyService, sendService, logService, tokenService, keyConnectorService, | ||
async (expired: boolean) => messagingService.send('logout', { expired: expired })), | ||
deps: [ | ||
UserServiceAbstraction, | ||
ApiServiceAbstraction, | ||
SettingsServiceAbstraction, | ||
FolderServiceAbstraction, | ||
CipherServiceAbstraction, | ||
CryptoServiceAbstraction, | ||
CollectionServiceAbstraction, | ||
StorageServiceAbstraction, | ||
MessagingServiceAbstraction, | ||
PolicyServiceAbstraction, | ||
SendServiceAbstraction, | ||
LogService, | ||
TokenServiceAbstraction, | ||
KeyConnectorServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: UserServiceAbstraction, | ||
useClass: UserService, | ||
deps: [TokenServiceAbstraction, StorageServiceAbstraction], | ||
}, | ||
{ provide: BroadcasterServiceAbstraction, useClass: BroadcasterService }, | ||
{ | ||
provide: SettingsServiceAbstraction, | ||
useClass: SettingsService, | ||
deps: [UserServiceAbstraction, StorageServiceAbstraction], | ||
}, | ||
{ | ||
provide: VaultTimeoutServiceAbstraction, | ||
useFactory: (cipherService: CipherServiceAbstraction, folderService: FolderServiceAbstraction, | ||
collectionService: CollectionServiceAbstraction, cryptoService: CryptoServiceAbstraction, | ||
platformUtilsService: PlatformUtilsServiceAbstraction, storageService: StorageServiceAbstraction, | ||
messagingService: MessagingServiceAbstraction, searchService: SearchServiceAbstraction, | ||
userService: UserServiceAbstraction, tokenService: TokenServiceAbstraction, | ||
policyService: PolicyServiceAbstraction, keyConnectorService: KeyConnectorServiceAbstraction) => | ||
new VaultTimeoutService(cipherService, folderService, collectionService, cryptoService, | ||
platformUtilsService, storageService, messagingService, searchService, userService, tokenService, | ||
policyService, keyConnectorService, null, | ||
async () => messagingService.send('logout', { expired: false })), | ||
deps: [ | ||
CipherServiceAbstraction, | ||
FolderServiceAbstraction, | ||
CollectionServiceAbstraction, | ||
CryptoServiceAbstraction, | ||
PlatformUtilsServiceAbstraction, | ||
StorageServiceAbstraction, | ||
MessagingServiceAbstraction, | ||
SearchServiceAbstraction, | ||
UserServiceAbstraction, | ||
TokenServiceAbstraction, | ||
PolicyServiceAbstraction, | ||
], | ||
}, | ||
{ provide: StateServiceAbstraction, useClass: StateService }, | ||
{ | ||
provide: ExportServiceAbstraction, | ||
useClass: ExportService, | ||
deps: [ | ||
FolderServiceAbstraction, | ||
CipherServiceAbstraction, | ||
ApiServiceAbstraction, | ||
CryptoServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: SearchServiceAbstraction, | ||
useClass: SearchService, | ||
deps: [ | ||
CipherServiceAbstraction, | ||
LogService, | ||
I18nServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: NotificationsServiceAbstraction, | ||
useFactory: (userService: UserServiceAbstraction, syncService: SyncServiceAbstraction, | ||
appIdService: AppIdServiceAbstraction, apiService: ApiServiceAbstraction, | ||
vaultTimeoutService: VaultTimeoutServiceAbstraction, environmentService: EnvironmentServiceAbstraction, | ||
messagingService: MessagingServiceAbstraction, logService: LogService) => | ||
new NotificationsService(userService, syncService, appIdService, apiService, vaultTimeoutService, | ||
environmentService, async () => messagingService.send('logout', { expired: true }), logService), | ||
deps: [ | ||
UserServiceAbstraction, | ||
SyncServiceAbstraction, | ||
AppIdServiceAbstraction, | ||
ApiServiceAbstraction, | ||
VaultTimeoutServiceAbstraction, | ||
EnvironmentServiceAbstraction, | ||
MessagingServiceAbstraction, | ||
LogService, | ||
], | ||
}, | ||
{ | ||
provide: CryptoFunctionServiceAbstraction, | ||
useClass: WebCryptoFunctionService, | ||
deps: ['WINDOW', PlatformUtilsServiceAbstraction], | ||
}, | ||
{ | ||
provide: EventServiceAbstraction, | ||
useClass: EventService, | ||
deps: [ | ||
StorageServiceAbstraction, | ||
ApiServiceAbstraction, | ||
UserServiceAbstraction, | ||
CipherServiceAbstraction, | ||
LogService, | ||
], | ||
}, | ||
{ | ||
provide: PolicyServiceAbstraction, | ||
useClass: PolicyService, | ||
deps: [ | ||
UserServiceAbstraction, | ||
StorageServiceAbstraction, | ||
ApiServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: SendServiceAbstraction, | ||
useClass: SendService, | ||
deps: [ | ||
CryptoServiceAbstraction, | ||
UserServiceAbstraction, | ||
ApiServiceAbstraction, | ||
FileUploadServiceAbstraction, | ||
StorageServiceAbstraction, | ||
I18nServiceAbstraction, | ||
CryptoFunctionServiceAbstraction, | ||
], | ||
}, | ||
{ | ||
provide: KeyConnectorServiceAbstraction, | ||
useClass: KeyConnectorService, | ||
deps: [ | ||
StorageServiceAbstraction, | ||
UserServiceAbstraction, | ||
CryptoServiceAbstraction, | ||
ApiServiceAbstraction, | ||
TokenServiceAbstraction, | ||
LogService, | ||
], | ||
}, | ||
{ | ||
provide: UserVerificationServiceAbstraction, | ||
useClass: UserVerificationService, | ||
deps: [ | ||
CryptoServiceAbstraction, | ||
I18nServiceAbstraction, | ||
ApiServiceAbstraction, | ||
], | ||
}, | ||
{ provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService }, | ||
], | ||
}) | ||
export class JslibServicesModule { | ||
} |