Skip to content

Commit 7eb4fe0

Browse files
Merge pull request #193 from Azure/zhiyuanliang/small-fix
Use strong type for parseKeyVaultSecretIdentifier
1 parent 5c1f4a3 commit 7eb4fe0

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

src/keyvault/AzureKeyVaultKeyValueAdapter.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ConfigurationSetting, isSecretReference, parseSecretReference } from "@
55
import { IKeyValueAdapter } from "../IKeyValueAdapter.js";
66
import { KeyVaultOptions } from "./KeyVaultOptions.js";
77
import { ArgumentError, KeyVaultReferenceError } from "../common/error.js";
8-
import { SecretClient, parseKeyVaultSecretIdentifier } from "@azure/keyvault-secrets";
8+
import { KeyVaultSecretIdentifier, SecretClient, parseKeyVaultSecretIdentifier } from "@azure/keyvault-secrets";
99
import { isRestError } from "@azure/core-rest-pipeline";
1010
import { AuthenticationError } from "@azure/identity";
1111

@@ -29,32 +29,28 @@ export class AzureKeyVaultKeyValueAdapter implements IKeyValueAdapter {
2929
if (!this.#keyVaultOptions) {
3030
throw new ArgumentError("Failed to process the Key Vault reference because Key Vault options are not configured.");
3131
}
32-
let secretName, vaultUrl, sourceId, version;
32+
let secretIdentifier: KeyVaultSecretIdentifier;
3333
try {
34-
const { name: parsedName, vaultUrl: parsedVaultUrl, sourceId: parsedSourceId, version: parsedVersion } = parseKeyVaultSecretIdentifier(
34+
secretIdentifier = parseKeyVaultSecretIdentifier(
3535
parseSecretReference(setting).value.secretId
3636
);
37-
secretName = parsedName;
38-
vaultUrl = parsedVaultUrl;
39-
sourceId = parsedSourceId;
40-
version = parsedVersion;
4137
} catch (error) {
4238
throw new KeyVaultReferenceError(buildKeyVaultReferenceErrorMessage("Invalid Key Vault reference.", setting), { cause: error });
4339
}
4440

4541
try {
4642
// precedence: secret clients > credential > secret resolver
47-
const client = this.#getSecretClient(new URL(vaultUrl));
43+
const client = this.#getSecretClient(new URL(secretIdentifier.vaultUrl));
4844
if (client) {
49-
const secret = await client.getSecret(secretName, { version });
45+
const secret = await client.getSecret(secretIdentifier.name, { version: secretIdentifier.version });
5046
return [setting.key, secret.value];
5147
}
5248
if (this.#keyVaultOptions.secretResolver) {
53-
return [setting.key, await this.#keyVaultOptions.secretResolver(new URL(sourceId))];
49+
return [setting.key, await this.#keyVaultOptions.secretResolver(new URL(secretIdentifier.sourceId))];
5450
}
5551
} catch (error) {
5652
if (isRestError(error) || error instanceof AuthenticationError) {
57-
throw new KeyVaultReferenceError(buildKeyVaultReferenceErrorMessage("Failed to resolve Key Vault reference.", setting, sourceId), { cause: error });
53+
throw new KeyVaultReferenceError(buildKeyVaultReferenceErrorMessage("Failed to resolve Key Vault reference.", setting, secretIdentifier.sourceId), { cause: error });
5854
}
5955
throw error;
6056
}

0 commit comments

Comments
 (0)