From f9c6806151a4e2bcf8f52473c7ef53c283cc7fa8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 11:20:11 +0800 Subject: [PATCH 1/3] Bump vite from 7.1.5 to 7.1.11 (#236) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.1.5 to 7.1.11. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v7.1.11/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 7.1.11 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 87cf916..98a2c16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5319,9 +5319,9 @@ } }, "node_modules/vite": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", - "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", + "version": "7.1.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", + "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", "dev": true, "license": "MIT", "dependencies": { From a9a4ab1e40f696894a591c749c95d949c3a47229 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 11:23:23 +0800 Subject: [PATCH 2/3] Bump playwright from 1.55.0 to 1.56.1 (#235) Bumps [playwright](https://github.com/microsoft/playwright) from 1.55.0 to 1.56.1. - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.55.0...v1.56.1) --- updated-dependencies: - dependency-name: playwright dependency-version: 1.56.1 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 98a2c16..1b99f9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4359,13 +4359,13 @@ } }, "node_modules/playwright": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.0.tgz", - "integrity": "sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", + "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.55.0" + "playwright-core": "1.56.1" }, "bin": { "playwright": "cli.js" @@ -4378,9 +4378,9 @@ } }, "node_modules/playwright-core": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.0.tgz", - "integrity": "sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", + "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true, "license": "Apache-2.0", "bin": { From 75466183bf9390c6b7f855454f969dffae991645 Mon Sep 17 00:00:00 2001 From: Zhiyuan Liang <141655842+zhiyuanliang-ms@users.noreply.github.com> Date: Fri, 7 Nov 2025 15:00:33 +0800 Subject: [PATCH 3/3] fix the bug that sentinel key etag is not updaed (#237) --- src/appConfigurationImpl.ts | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/appConfigurationImpl.ts b/src/appConfigurationImpl.ts index 7f957b7..1077567 100644 --- a/src/appConfigurationImpl.ts +++ b/src/appConfigurationImpl.ts @@ -619,23 +619,22 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration { // try refresh if any of watched settings is changed. let needRefresh = false; - let changedSentinel; - let changedSentinelWatcher; + let changedSentinel: WatchedSetting | undefined; + let changedSentinelWatcher: SettingWatcher | undefined; if (this.#watchAll) { needRefresh = await this.#checkConfigurationSettingsChange(this.#kvSelectors); } else { for (const watchedSetting of this.#sentinels.keys()) { const configurationSettingId: ConfigurationSettingId = { key: watchedSetting.key, label: watchedSetting.label, etag: this.#sentinels.get(watchedSetting)?.etag }; - const response = await this.#getConfigurationSetting(configurationSettingId, { - onlyIfChanged: true - }); - - const watcher = this.#sentinels.get(watchedSetting); - if (response?.statusCode === 200 // created or changed - || (response === undefined && watcher?.etag !== undefined) // deleted - ) { + const response: GetConfigurationSettingResponse | undefined + = await this.#getConfigurationSetting(configurationSettingId, { onlyIfChanged: true }); + + const watcher: SettingWatcher = this.#sentinels.get(watchedSetting)!; // watcher should always exist for sentinels + const isDeleted = response === undefined && watcher.etag !== undefined; // previously existed, now deleted + const isChanged = response && response.statusCode === 200 && watcher.etag !== response.etag; // etag changed + if (isDeleted || isChanged) { changedSentinel = watchedSetting; - changedSentinelWatcher = watcher; + changedSentinelWatcher = { etag: isChanged ? response.etag : undefined }; needRefresh = true; break; } @@ -647,7 +646,11 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration { await adapter.onChangeDetected(); } await this.#loadSelectedKeyValues(); - this.#sentinels.set(changedSentinel, changedSentinelWatcher); // update the changed sentinel's watcher + + if (changedSentinel && changedSentinelWatcher) { + // update the changed sentinel's watcher after loading new values, this can ensure a failed refresh will retry on next refresh + this.#sentinels.set(changedSentinel, changedSentinelWatcher); + } } this.#kvRefreshTimer.reset();