52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
import { ConfigServiceAbstraction } from "@bitwarden/common/platform/abstractions/config/config.service.abstraction";
|
|
import { ConfigService } from "@bitwarden/common/platform/services/config/config.service";
|
|
|
|
import {
|
|
authServiceFactory,
|
|
AuthServiceInitOptions,
|
|
} from "../../../auth/background/service-factories/auth-service.factory";
|
|
|
|
import { configApiServiceFactory, ConfigApiServiceInitOptions } from "./config-api.service.factory";
|
|
import {
|
|
environmentServiceFactory,
|
|
EnvironmentServiceInitOptions,
|
|
} from "./environment-service.factory";
|
|
import { FactoryOptions, CachedServices, factory } from "./factory-options";
|
|
import { logServiceFactory, LogServiceInitOptions } from "./log-service.factory";
|
|
import { stateProviderFactory } from "./state-provider.factory";
|
|
import { stateServiceFactory, StateServiceInitOptions } from "./state-service.factory";
|
|
|
|
type ConfigServiceFactoryOptions = FactoryOptions & {
|
|
configServiceOptions?: {
|
|
subscribe?: boolean;
|
|
};
|
|
};
|
|
|
|
export type ConfigServiceInitOptions = ConfigServiceFactoryOptions &
|
|
StateServiceInitOptions &
|
|
ConfigApiServiceInitOptions &
|
|
AuthServiceInitOptions &
|
|
EnvironmentServiceInitOptions &
|
|
LogServiceInitOptions;
|
|
|
|
export function configServiceFactory(
|
|
cache: { configService?: ConfigServiceAbstraction } & CachedServices,
|
|
opts: ConfigServiceInitOptions,
|
|
): Promise<ConfigServiceAbstraction> {
|
|
return factory(
|
|
cache,
|
|
"configService",
|
|
opts,
|
|
async () =>
|
|
new ConfigService(
|
|
await stateServiceFactory(cache, opts),
|
|
await configApiServiceFactory(cache, opts),
|
|
await authServiceFactory(cache, opts),
|
|
await environmentServiceFactory(cache, opts),
|
|
await logServiceFactory(cache, opts),
|
|
await stateProviderFactory(cache, opts),
|
|
opts.configServiceOptions?.subscribe ?? true,
|
|
),
|
|
);
|
|
}
|