Skip to content

Commit 108e76b

Browse files
Merge pull request #272 from Azure/linglingye/resolve-conflict
Merge main to preview 2/4
2 parents 76677d2 + 19f4832 commit 108e76b

File tree

6 files changed

+265
-51
lines changed

6 files changed

+265
-51
lines changed

examples/console-app/package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/web-app/package-lock.json

Lines changed: 105 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/web-app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
"@azure/app-configuration-provider": "latest",
44
"@azure/identity": "^4.1.0",
55
"dotenv": "^16.3.1",
6-
"express": "^4.21.2"
6+
"express": "^4.22.1"
77
}
88
}

src/keyvault/keyVaultSecretProvider.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT license.
33

4-
import { KeyVaultOptions } from "./keyVaultOptions.js";
4+
import { KeyVaultOptions, MIN_SECRET_REFRESH_INTERVAL_IN_MS } from "./keyVaultOptions.js";
55
import { RefreshTimer } from "../refresh/refreshTimer.js";
66
import { ArgumentError } from "../common/errors.js";
77
import { SecretClient, KeyVaultSecretIdentifier } from "@azure/keyvault-secrets";
@@ -10,6 +10,7 @@ import { KeyVaultReferenceErrorMessages } from "../common/errorMessages.js";
1010
export class AzureKeyVaultSecretProvider {
1111
#keyVaultOptions: KeyVaultOptions | undefined;
1212
#secretRefreshTimer: RefreshTimer | undefined;
13+
#minSecretRefreshTimer: RefreshTimer;
1314
#secretClients: Map<string, SecretClient>; // map key vault hostname to corresponding secret client
1415
#cachedSecretValues: Map<string, any> = new Map<string, any>(); // map secret identifier to secret value
1516

@@ -24,6 +25,7 @@ export class AzureKeyVaultSecretProvider {
2425
}
2526
this.#keyVaultOptions = keyVaultOptions;
2627
this.#secretRefreshTimer = refreshTimer;
28+
this.#minSecretRefreshTimer = new RefreshTimer(MIN_SECRET_REFRESH_INTERVAL_IN_MS);
2729
this.#secretClients = new Map();
2830
for (const client of this.#keyVaultOptions?.secretClients ?? []) {
2931
const clientUrl = new URL(client.vaultUrl);
@@ -47,7 +49,10 @@ export class AzureKeyVaultSecretProvider {
4749
}
4850

4951
clearCache(): void {
50-
this.#cachedSecretValues.clear();
52+
if (this.#minSecretRefreshTimer.canRefresh()) {
53+
this.#cachedSecretValues.clear();
54+
this.#minSecretRefreshTimer.reset();
55+
}
5156
}
5257

5358
async #getSecretValueFromKeyVault(secretIdentifier: KeyVaultSecretIdentifier): Promise<unknown> {

src/types.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@ export type SettingSelector = {
1111
* @remarks
1212
* An asterisk `*` can be added to the end to return all key-values whose key begins with the key filter.
1313
* e.g. key filter `abc*` returns all key-values whose key starts with `abc`.
14-
* A comma `,` can be used to select multiple key-values. Comma separated filters must exactly match a key to select it.
15-
* Using asterisk to select key-values that begin with a key filter while simultaneously using comma separated key filters is not supported.
16-
* E.g. the key filter `abc*,def` is not supported. The key filters `abc*` and `abc,def` are supported.
17-
* For all other cases the characters: asterisk `*`, comma `,`, and backslash `\` are reserved. Reserved characters must be escaped using a backslash (\).
14+
* Characters: asterisk `*`, comma `,`, and backslash `\` are reserved. Reserved characters must be escaped using a backslash (\).
1815
* e.g. the key filter `a\\b\,\*c*` returns all key-values whose key starts with `a\b,*c`.
1916
*/
2017
keyFilter?: string,

0 commit comments

Comments
 (0)