diff --git a/libs/tools/generator/core/src/metadata/password/sdk-eff-word-list.ts b/libs/tools/generator/core/src/metadata/password/sdk-eff-word-list.ts index f41cf1d520b..d9a60e21297 100644 --- a/libs/tools/generator/core/src/metadata/password/sdk-eff-word-list.ts +++ b/libs/tools/generator/core/src/metadata/password/sdk-eff-word-list.ts @@ -2,7 +2,6 @@ import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { GENERATOR_DISK } from "@bitwarden/common/platform/state"; import { PublicClassifier } from "@bitwarden/common/tools/public-classifier"; import { ObjectKey } from "@bitwarden/common/tools/state/object-key"; -import { BitwardenClient } from "@bitwarden/sdk-internal"; import { SdkPasswordRandomizer } from "../../engine"; import { passphraseLeastPrivilege, PassphrasePolicyConstraints } from "../../policies"; @@ -31,7 +30,7 @@ const sdkPassphrase: GeneratorMetadata = { create( dependencies: GeneratorDependencyProvider, ): CredentialGenerator { - return new SdkPasswordRandomizer(new BitwardenClient()); // @TODO hook up a real SDK client + return new SdkPasswordRandomizer(dependencies.sdk); }, }, profiles: { diff --git a/libs/tools/generator/core/src/metadata/password/sdk-random-password.ts b/libs/tools/generator/core/src/metadata/password/sdk-random-password.ts index e63730225e3..96ac290ea36 100644 --- a/libs/tools/generator/core/src/metadata/password/sdk-random-password.ts +++ b/libs/tools/generator/core/src/metadata/password/sdk-random-password.ts @@ -2,7 +2,6 @@ import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { GENERATOR_DISK } from "@bitwarden/common/platform/state"; import { PublicClassifier } from "@bitwarden/common/tools/public-classifier"; import { deepFreeze } from "@bitwarden/common/tools/util"; -import { BitwardenClient } from "@bitwarden/sdk-internal"; import { SdkPasswordRandomizer } from "../../engine"; import { DynamicPasswordPolicyConstraints, passwordLeastPrivilege } from "../../policies"; @@ -31,7 +30,7 @@ const sdkPassword: GeneratorMetadata = deepFreeze({ create( dependencies: GeneratorDependencyProvider, ): CredentialGenerator { - return new SdkPasswordRandomizer(new BitwardenClient()); // @TODO hook up a real SDK client + return new SdkPasswordRandomizer(dependencies.sdk); }, }, profiles: { diff --git a/libs/tools/generator/core/src/providers/generator-dependency-provider.ts b/libs/tools/generator/core/src/providers/generator-dependency-provider.ts index a333745bb53..fcda85ebdc8 100644 --- a/libs/tools/generator/core/src/providers/generator-dependency-provider.ts +++ b/libs/tools/generator/core/src/providers/generator-dependency-provider.ts @@ -1,6 +1,6 @@ import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; -import { SdkService } from "@bitwarden/common/platform/abstractions/sdk/sdk.service"; import { RestClient } from "@bitwarden/common/tools/integration/rpc"; +import { BitwardenClient } from "@bitwarden/sdk-internal"; import { Randomizer } from "../abstractions"; @@ -10,5 +10,5 @@ export type GeneratorDependencyProvider = { // FIXME: introduce `I18nKeyOrLiteral` into forwarder // structures and remove this dependency i18nService: I18nService; - sdkService: SdkService; + sdk: BitwardenClient; }; diff --git a/libs/tools/generator/core/src/services/default-credential-generator.service.ts b/libs/tools/generator/core/src/services/default-credential-generator.service.ts index 56c9b63c3fc..937f09f2807 100644 --- a/libs/tools/generator/core/src/services/default-credential-generator.service.ts +++ b/libs/tools/generator/core/src/services/default-credential-generator.service.ts @@ -16,12 +16,14 @@ import { } from "rxjs"; import { Account } from "@bitwarden/common/auth/abstractions/account.service"; +import { SdkService } from "@bitwarden/common/platform/abstractions/sdk/sdk.service"; import { BoundDependency, OnDependency } from "@bitwarden/common/tools/dependencies"; import { VendorId } from "@bitwarden/common/tools/extension"; import { SemanticLogger } from "@bitwarden/common/tools/log"; import { SystemServiceProvider } from "@bitwarden/common/tools/providers"; -import { anyComplete, memoizedMap } from "@bitwarden/common/tools/rx"; +import { anyComplete, memoizedMap, withLatestReady } from "@bitwarden/common/tools/rx"; import { UserStateSubject } from "@bitwarden/common/tools/state/user-state-subject"; +import { BitwardenClient } from "@bitwarden/sdk-internal"; import { CredentialGeneratorService } from "../abstractions"; import { @@ -33,7 +35,7 @@ import { toVendorId, CredentialType, } from "../metadata"; -import { CredentialGeneratorProviders } from "../providers"; +import { CredentialGeneratorProviders, GeneratorDependencyProvider } from "../providers"; import { GenerateRequest } from "../types"; import { isAlgorithmRequest, isTypeRequest } from "../types/metadata-request"; @@ -48,6 +50,7 @@ export class DefaultCredentialGeneratorService implements CredentialGeneratorSer constructor( private readonly provide: CredentialGeneratorProviders, private readonly system: SystemServiceProvider, + private readonly sdkService: SdkService, ) { this.log = system.log({ type: "CredentialGeneratorService" }); } @@ -108,9 +111,10 @@ export class DefaultCredentialGeneratorService implements CredentialGeneratorSer // load the algorithm's engine const engine$ = metadata$.pipe( + withLatestReady(this.sdkService.client$), memoizedMap( - (metadata) => { - const engine = metadata.engine.create(this.provide.generator); + ([metadata, sdk]) => { + const engine = metadata.engine.create(this.getGeneratorDependencies(sdk)); this.log.debug({ algorithm: metadata.id }, "engine cached"); return engine; @@ -213,4 +217,10 @@ export class DefaultCredentialGeneratorService implements CredentialGeneratorSer return this.provide.profile.constraints$(activeProfile, dependencies); } + + getGeneratorDependencies(sdk: BitwardenClient): GeneratorDependencyProvider { + const provider = this.provide.generator; + provider.sdk = sdk; + return provider; + } }