From 8a170f1e090610291ec270b7b4daa32033f8f95d Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Tue, 4 Nov 2025 12:49:28 -0800 Subject: [PATCH 01/13] Migration example v4 --- package-lock.json | 394 ++++++++++++++++-- package.json | 4 +- .../api/createContainerAppsApiProvider.ts | 42 ++ .../api/getAzureContainerAppsApiProvider.ts | 17 - .../api/vscode-azurecontainerapps.api.d.ts | 4 +- src/extension.ts | 15 +- 6 files changed, 409 insertions(+), 67 deletions(-) create mode 100644 src/commands/api/createContainerAppsApiProvider.ts delete mode 100644 src/commands/api/getAzureContainerAppsApiProvider.ts diff --git a/package-lock.json b/package-lock.json index 0bd1b1aa3..683b68cad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,8 +23,8 @@ "@fluentui/react-icons": "^2.0.265", "@microsoft/vscode-azext-azureutils": "^3.5.2", "@microsoft/vscode-azext-github": "^1.0.7", - "@microsoft/vscode-azext-utils": "^3.5.1", - "@microsoft/vscode-azureresources-api": "^2.6.3", + "@microsoft/vscode-azext-utils": "file:../vscode-azuretools/utils/microsoft-vscode-azext-utils-4.0.1.tgz", + "@microsoft/vscode-azureresources-api": "file:../vscode-azureresourcegroups/api/microsoft-vscode-azureresources-api-3.0.0.tgz", "@vscode/codicons": "0.0.38", "buffer": "^6.0.3", "dayjs": "^1.11.3", @@ -2545,6 +2545,102 @@ "@azure/ms-rest-azure-env": "^2.0.0" } }, + "node_modules/@microsoft/vscode-azext-azureutils/node_modules/@microsoft/vscode-azext-utils": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@microsoft/vscode-azext-utils/-/vscode-azext-utils-3.5.1.tgz", + "integrity": "sha512-+HGxhaPZrNg6eHUxMSVJSwxHV5q+DGnHdKYUneMkHVCG6JJYMf67S2ll6Uhvts1ItSBNOASUNy0MVm7nnIN98w==", + "license": "MIT", + "dependencies": { + "@microsoft/vscode-azureresources-api": "^2.6.2", + "@vscode/extension-telemetry": "^0.9.6", + "dayjs": "^1.11.2", + "escape-string-regexp": "^2.0.0", + "html-to-text": "^8.2.0", + "semver": "^7.3.7", + "uuid": "^9.0.0", + "vscode-tas-client": "^0.1.84", + "vscode-uri": "^3.0.6" + }, + "peerDependencies": { + "@azure/ms-rest-azure-env": "^2.0.0" + } + }, + "node_modules/@microsoft/vscode-azext-azureutils/node_modules/@microsoft/vscode-azureresources-api": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@microsoft/vscode-azureresources-api/-/vscode-azureresources-api-2.6.3.tgz", + "integrity": "sha512-uwFHLc9fsbuBPKC/WOU+p5JMj9VyNyU1k+3T1uFp00l4OMmazqBqiJYKao6jc/d525hy9FW6EzniGPHdocKApA==", + "license": "MIT", + "peerDependencies": { + "@azure/ms-rest-azure-env": "^2.0.0" + } + }, + "node_modules/@microsoft/vscode-azext-azureutils/node_modules/@selderee/plugin-htmlparser2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz", + "integrity": "sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==", + "license": "MIT", + "dependencies": { + "domhandler": "^4.2.0", + "selderee": "^0.6.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/@microsoft/vscode-azext-azureutils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@microsoft/vscode-azext-azureutils/node_modules/html-to-text": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.2.1.tgz", + "integrity": "sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==", + "license": "MIT", + "dependencies": { + "@selderee/plugin-htmlparser2": "^0.6.0", + "deepmerge": "^4.2.2", + "he": "^1.2.0", + "htmlparser2": "^6.1.0", + "minimist": "^1.2.6", + "selderee": "^0.6.0" + }, + "bin": { + "html-to-text": "bin/cli.js" + }, + "engines": { + "node": ">=10.23.2" + } + }, + "node_modules/@microsoft/vscode-azext-azureutils/node_modules/parseley": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.7.0.tgz", + "integrity": "sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==", + "license": "MIT", + "dependencies": { + "moo": "^0.5.1", + "nearley": "^2.20.1" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/@microsoft/vscode-azext-azureutils/node_modules/selderee": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.6.0.tgz", + "integrity": "sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==", + "license": "MIT", + "dependencies": { + "parseley": "^0.7.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, "node_modules/@microsoft/vscode-azext-azureutils/node_modules/uuid": { "version": "9.0.1", "funding": [ @@ -2709,10 +2805,11 @@ "@octokit/rest": "^20.1.2" } }, - "node_modules/@microsoft/vscode-azext-utils": { + "node_modules/@microsoft/vscode-azext-github/node_modules/@microsoft/vscode-azext-utils": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/@microsoft/vscode-azext-utils/-/vscode-azext-utils-3.5.1.tgz", "integrity": "sha512-+HGxhaPZrNg6eHUxMSVJSwxHV5q+DGnHdKYUneMkHVCG6JJYMf67S2ll6Uhvts1ItSBNOASUNy0MVm7nnIN98w==", + "license": "MIT", "dependencies": { "@microsoft/vscode-azureresources-api": "^2.6.2", "@vscode/extension-telemetry": "^0.9.6", @@ -2728,15 +2825,83 @@ "@azure/ms-rest-azure-env": "^2.0.0" } }, - "node_modules/@microsoft/vscode-azext-utils/node_modules/escape-string-regexp": { + "node_modules/@microsoft/vscode-azext-github/node_modules/@microsoft/vscode-azureresources-api": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@microsoft/vscode-azureresources-api/-/vscode-azureresources-api-2.6.3.tgz", + "integrity": "sha512-uwFHLc9fsbuBPKC/WOU+p5JMj9VyNyU1k+3T1uFp00l4OMmazqBqiJYKao6jc/d525hy9FW6EzniGPHdocKApA==", + "license": "MIT", + "peerDependencies": { + "@azure/ms-rest-azure-env": "^2.0.0" + } + }, + "node_modules/@microsoft/vscode-azext-github/node_modules/@selderee/plugin-htmlparser2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz", + "integrity": "sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==", + "license": "MIT", + "dependencies": { + "domhandler": "^4.2.0", + "selderee": "^0.6.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/@microsoft/vscode-azext-github/node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@microsoft/vscode-azext-utils/node_modules/uuid": { + "node_modules/@microsoft/vscode-azext-github/node_modules/html-to-text": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.2.1.tgz", + "integrity": "sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==", + "license": "MIT", + "dependencies": { + "@selderee/plugin-htmlparser2": "^0.6.0", + "deepmerge": "^4.2.2", + "he": "^1.2.0", + "htmlparser2": "^6.1.0", + "minimist": "^1.2.6", + "selderee": "^0.6.0" + }, + "bin": { + "html-to-text": "bin/cli.js" + }, + "engines": { + "node": ">=10.23.2" + } + }, + "node_modules/@microsoft/vscode-azext-github/node_modules/parseley": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.7.0.tgz", + "integrity": "sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==", + "license": "MIT", + "dependencies": { + "moo": "^0.5.1", + "nearley": "^2.20.1" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/@microsoft/vscode-azext-github/node_modules/selderee": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.6.0.tgz", + "integrity": "sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==", + "license": "MIT", + "dependencies": { + "parseley": "^0.7.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/@microsoft/vscode-azext-github/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", @@ -2744,14 +2909,48 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, + "node_modules/@microsoft/vscode-azext-utils": { + "version": "4.0.1", + "resolved": "file:../vscode-azuretools/utils/microsoft-vscode-azext-utils-4.0.1.tgz", + "integrity": "sha512-X8E/8aVwyVvUVe5QB/u0I9sXw4q7+WaDPUZ1nqAP3Gb5zHJNJi1F51sZbGzhq6J2GAitZfC61HLDqtyXr5iSsA==", + "license": "MIT", + "dependencies": { + "@microsoft/vscode-azureresources-api": "^3.0.0", + "@vscode/extension-telemetry": "^0.9.6", + "dayjs": "^1.11.2", + "escape-string-regexp": "^2.0.0", + "html-to-text": "^9.0.0", + "semver": "^7.3.7", + "vscode-tas-client": "^0.1.84" + }, + "engines": { + "vscode": "^1.105.0" + }, + "peerDependencies": { + "@azure/ms-rest-azure-env": "^2.0.0" + } + }, + "node_modules/@microsoft/vscode-azext-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, "node_modules/@microsoft/vscode-azureresources-api": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@microsoft/vscode-azureresources-api/-/vscode-azureresources-api-2.6.3.tgz", - "integrity": "sha512-uwFHLc9fsbuBPKC/WOU+p5JMj9VyNyU1k+3T1uFp00l4OMmazqBqiJYKao6jc/d525hy9FW6EzniGPHdocKApA==", + "version": "3.0.0", + "resolved": "file:../vscode-azureresourcegroups/api/microsoft-vscode-azureresources-api-3.0.0.tgz", + "integrity": "sha512-rZlfQivQVH7XieHG2GXJQQXvPhtFsmtrdG2LEzqtHcENM4onnvvCFC+GSbUhvjzTlAH6nEePvtm5yOLIZcmXaA==", + "license": "MIT", + "engines": { + "vscode": "^1.105.0" + }, "peerDependencies": { "@azure/ms-rest-azure-env": "^2.0.0" } @@ -3027,17 +3226,33 @@ "license": "MIT" }, "node_modules/@selderee/plugin-htmlparser2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz", - "integrity": "sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz", + "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==", + "license": "MIT", "dependencies": { - "domhandler": "^4.2.0", - "selderee": "^0.6.0" + "domhandler": "^5.0.3", + "selderee": "^0.11.0" }, "funding": { "url": "https://ko-fi.com/killymxi" } }, + "node_modules/@selderee/plugin-htmlparser2/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, "node_modules/@sindresorhus/merge-streams": { "version": "2.3.0", "dev": true, @@ -5667,6 +5882,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5874,7 +6090,8 @@ "node_modules/discontinuous-range": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", + "license": "MIT" }, "node_modules/dns-packet": { "version": "5.6.1", @@ -5919,7 +6136,9 @@ } }, "node_modules/domelementtype": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", @@ -7505,22 +7724,93 @@ } }, "node_modules/html-to-text": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.2.1.tgz", - "integrity": "sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz", + "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==", + "license": "MIT", "dependencies": { - "@selderee/plugin-htmlparser2": "^0.6.0", - "deepmerge": "^4.2.2", - "he": "^1.2.0", - "htmlparser2": "^6.1.0", - "minimist": "^1.2.6", - "selderee": "^0.6.0" + "@selderee/plugin-htmlparser2": "^0.11.0", + "deepmerge": "^4.3.1", + "dom-serializer": "^2.0.0", + "htmlparser2": "^8.0.2", + "selderee": "^0.11.0" }, - "bin": { - "html-to-text": "bin/cli.js" + "engines": { + "node": ">=14" + } + }, + "node_modules/html-to-text/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/html-to-text/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=10.23.2" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/html-to-text/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/html-to-text/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/html-to-text/node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, "node_modules/htmlparser2": { @@ -8421,6 +8711,15 @@ "shell-quote": "^1.8.1" } }, + "node_modules/leac": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", + "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==", + "license": "MIT", + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, "node_modules/lead": { "version": "4.0.0", "dev": true, @@ -9050,7 +9349,8 @@ "node_modules/moo": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "license": "BSD-3-Clause" }, "node_modules/ms": { "version": "2.1.3", @@ -9103,6 +9403,7 @@ "version": "2.20.1", "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "license": "MIT", "dependencies": { "commander": "^2.19.0", "moo": "^0.5.0", @@ -9123,7 +9424,8 @@ "node_modules/nearley/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.4", @@ -9541,12 +9843,13 @@ } }, "node_modules/parseley": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.7.0.tgz", - "integrity": "sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz", + "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==", + "license": "MIT", "dependencies": { - "moo": "^0.5.1", - "nearley": "^2.20.1" + "leac": "^0.6.0", + "peberminta": "^0.9.0" }, "funding": { "url": "https://ko-fi.com/killymxi" @@ -9631,6 +9934,15 @@ "node": ">=8" } }, + "node_modules/peberminta": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz", + "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==", + "license": "MIT", + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, "node_modules/pend": { "version": "1.2.0", "dev": true, @@ -10011,12 +10323,14 @@ "node_modules/railroad-diagrams": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", + "license": "CC0-1.0" }, "node_modules/randexp": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "license": "MIT", "dependencies": { "discontinuous-range": "1.0.0", "ret": "~0.1.10" @@ -10316,6 +10630,7 @@ "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "license": "MIT", "engines": { "node": ">=0.12" } @@ -10535,11 +10850,12 @@ } }, "node_modules/selderee": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.6.0.tgz", - "integrity": "sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz", + "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==", + "license": "MIT", "dependencies": { - "parseley": "^0.7.0" + "parseley": "^0.12.0" }, "funding": { "url": "https://ko-fi.com/killymxi" diff --git a/package.json b/package.json index 3de014095..300db71ec 100644 --- a/package.json +++ b/package.json @@ -864,8 +864,8 @@ "@fluentui/react-icons": "^2.0.265", "@microsoft/vscode-azext-azureutils": "^3.5.2", "@microsoft/vscode-azext-github": "^1.0.7", - "@microsoft/vscode-azext-utils": "^3.5.1", - "@microsoft/vscode-azureresources-api": "^2.6.3", + "@microsoft/vscode-azext-utils": "file:../vscode-azuretools/utils/microsoft-vscode-azext-utils-4.0.1.tgz", + "@microsoft/vscode-azureresources-api": "file:../vscode-azureresourcegroups/api/microsoft-vscode-azureresources-api-3.0.0.tgz", "@vscode/codicons": "0.0.38", "buffer": "^6.0.3", "dayjs": "^1.11.3", diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts new file mode 100644 index 000000000..f27210e8c --- /dev/null +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -0,0 +1,42 @@ +/*--------------------------------------------------------------------------------------------- +* Copyright (c) Microsoft Corporation. All rights reserved. +* Licensed under the MIT License. See License.md in the project root for license information. +*--------------------------------------------------------------------------------------------*/ + +import { createApiProvider, maskUserInfo, type apiUtils, type IActionContext } from "@microsoft/vscode-azext-utils"; +import { AzExtResourceType, prepareAzureResourcesApiRequest, type AzureResourcesApiRequestContext, type AzureResourcesApiRequestError, type AzureResourcesExtensionApi } from "@microsoft/vscode-azureresources-api"; +import { ext } from "../../extensionVariables"; +import { localize } from "../../utils/localize"; +import { deployImageApi } from "./deployImageApi"; +import { deployWorkspaceProjectApi } from "./deployWorkspaceProjectApi"; +import type * as api from "./vscode-azurecontainerapps.api"; + +export function createContainerAppsApiProvider(activationContext: IActionContext): apiUtils.AzureExtensionApiProvider { + const context: AzureResourcesApiRequestContext = { + azureResourcesApiVersions: ['2.0.0'], + clientExtensionId: ext.context.extension.id, + onDidReceiveAzureResourcesApis: (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { + const [rgApiV2] = azureResourcesApis; + if (!rgApiV2) { + throw new Error(localize('noHostApi', 'Failed to retrieve Azure Resources API for branch data registration.')); + } + + ext.rgApiV2 = rgApiV2; + ext.rgApiV2.resources.registerAzureResourceBranchDataProvider(AzExtResourceType.ContainerAppsEnvironment, ext.branchDataProvider); + }, + onApiRequestError: (error: AzureResourcesApiRequestError) => { + activationContext.telemetry.properties.handshakeError = maskUserInfo(error.message, []); + activationContext.telemetry.properties.handshakeErrorCode = error.code; + }, + }; + + const containerAppsApi: api.AzureContainerAppsExtensionApi = { + apiVersion: '1.0.0', + deployImage: deployImageApi, + deployWorkspaceProject: deployWorkspaceProjectApi, + }; + + const { clientApi, requestResourcesApis } = prepareAzureResourcesApiRequest(context, containerAppsApi); + requestResourcesApis(); + return createApiProvider([clientApi]); +} diff --git a/src/commands/api/getAzureContainerAppsApiProvider.ts b/src/commands/api/getAzureContainerAppsApiProvider.ts deleted file mode 100644 index 055cd5cd1..000000000 --- a/src/commands/api/getAzureContainerAppsApiProvider.ts +++ /dev/null @@ -1,17 +0,0 @@ -/*--------------------------------------------------------------------------------------------- -* Copyright (c) Microsoft Corporation. All rights reserved. -* Licensed under the MIT License. See License.md in the project root for license information. -*--------------------------------------------------------------------------------------------*/ - -import { createApiProvider, type apiUtils } from "@microsoft/vscode-azext-utils"; -import { deployImageApi } from "./deployImageApi"; -import { deployWorkspaceProjectApi } from "./deployWorkspaceProjectApi"; -import type * as api from "./vscode-azurecontainerapps.api"; - -export function getAzureContainerAppsApiProvider(): apiUtils.AzureExtensionApiProvider { - return createApiProvider([{ - apiVersion: '1.0.0', - deployImage: deployImageApi, - deployWorkspaceProject: deployWorkspaceProjectApi, - }]); -} diff --git a/src/commands/api/vscode-azurecontainerapps.api.d.ts b/src/commands/api/vscode-azurecontainerapps.api.d.ts index 28b950f3b..fce8f6176 100644 --- a/src/commands/api/vscode-azurecontainerapps.api.d.ts +++ b/src/commands/api/vscode-azurecontainerapps.api.d.ts @@ -3,7 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -export interface AzureContainerAppsExtensionApi { +import { type AzureExtensionApi } from "@microsoft/vscode-azureresources-api"; + +export interface AzureContainerAppsExtensionApi extends AzureExtensionApi { apiVersion: string; deployImage(options: DeployImageToAcaOptionsContract): Promise; deployWorkspaceProject(options: DeployWorkspaceProjectOptionsContract): Promise; diff --git a/src/extension.ts b/src/extension.ts index 8fe84ce02..56d7472aa 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -7,10 +7,9 @@ import { registerAzureUtilsExtensionVariables } from '@microsoft/vscode-azext-azureutils'; import { registerGitHubExtensionVariables } from '@microsoft/vscode-azext-github'; -import { TreeElementStateManager, callWithTelemetryAndErrorHandling, createAzExtOutputChannel, createExperimentationService, registerUIExtensionVariables, type IActionContext, type apiUtils } from '@microsoft/vscode-azext-utils'; -import { AzExtResourceType, getAzureResourcesExtensionApi } from '@microsoft/vscode-azureresources-api'; +import { TreeElementStateManager, callWithTelemetryAndErrorHandling, createApiProvider, createAzExtOutputChannel, createExperimentationService, registerUIExtensionVariables, type IActionContext, type apiUtils } from '@microsoft/vscode-azext-utils'; import * as vscode from 'vscode'; -import { getAzureContainerAppsApiProvider } from './commands/api/getAzureContainerAppsApiProvider'; +import { createContainerAppsApiProvider } from './commands/api/createContainerAppsApiProvider'; import { registerCommands } from './commands/registerCommands'; import { RevisionDraftFileSystem } from './commands/revisionDraft/RevisionDraftFileSystem'; import { ext } from './extensionVariables'; @@ -29,7 +28,8 @@ export async function activate(context: vscode.ExtensionContext, perfStats: { lo registerAzureUtilsExtensionVariables(ext); registerGitHubExtensionVariables(ext); - await callWithTelemetryAndErrorHandling('containerApps.activate', async (activateContext: IActionContext) => { + return await callWithTelemetryAndErrorHandling('containerApps.activate', async (activateContext: IActionContext) => { + activateContext.errorHandling.rethrow = true; activateContext.telemetry.properties.isActivationEvent = 'true'; activateContext.telemetry.measurements.mainFileLoad = (perfStats.loadEndTime - perfStats.loadStartTime) / 1000; @@ -40,12 +40,11 @@ export async function activate(context: vscode.ExtensionContext, perfStats: { lo context.subscriptions.push(vscode.workspace.registerFileSystemProvider(RevisionDraftFileSystem.scheme, ext.revisionDraftFileSystem)); ext.state = new TreeElementStateManager(); - ext.rgApiV2 = await getAzureResourcesExtensionApi(context, '2.0.0'); ext.branchDataProvider = new ContainerAppsBranchDataProvider(); - ext.rgApiV2.resources.registerAzureResourceBranchDataProvider(AzExtResourceType.ContainerAppsEnvironment, ext.branchDataProvider); - }); - return getAzureContainerAppsApiProvider(); + return createContainerAppsApiProvider(activateContext); + + }) ?? createApiProvider([]); } // eslint-disable-next-line @typescript-eslint/no-empty-function From 2bc3c6bce8778c78f9a39d9436029be7cc700b15 Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Tue, 4 Nov 2025 12:58:23 -0800 Subject: [PATCH 02/13] Update request version --- src/commands/api/createContainerAppsApiProvider.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index f27210e8c..2f9b3e956 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -12,15 +12,15 @@ import { deployWorkspaceProjectApi } from "./deployWorkspaceProjectApi"; import type * as api from "./vscode-azurecontainerapps.api"; export function createContainerAppsApiProvider(activationContext: IActionContext): apiUtils.AzureExtensionApiProvider { + const v2: string = '^2.0.0'; const context: AzureResourcesApiRequestContext = { - azureResourcesApiVersions: ['2.0.0'], + azureResourcesApiVersions: [v2], clientExtensionId: ext.context.extension.id, onDidReceiveAzureResourcesApis: (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { const [rgApiV2] = azureResourcesApis; if (!rgApiV2) { - throw new Error(localize('noHostApi', 'Failed to retrieve Azure Resources API for branch data registration.')); + throw new Error(localize('noMatchingApi', 'Failed to find a matching Azure Resources API for version "{0}".', v2)); } - ext.rgApiV2 = rgApiV2; ext.rgApiV2.resources.registerAzureResourceBranchDataProvider(AzExtResourceType.ContainerAppsEnvironment, ext.branchDataProvider); }, From 7a7e0767616259dce9f4434cbc027de9c41e2fec Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Tue, 4 Nov 2025 13:16:41 -0800 Subject: [PATCH 03/13] Wrap with telemetry --- .../api/createContainerAppsApiProvider.ts | 36 ++++++++++++------- src/extension.ts | 2 +- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index 2f9b3e956..cc57e4181 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.md in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { createApiProvider, maskUserInfo, type apiUtils, type IActionContext } from "@microsoft/vscode-azext-utils"; +import { callWithTelemetryAndErrorHandling, createApiProvider, maskUserInfo, type apiUtils, type IActionContext } from "@microsoft/vscode-azext-utils"; import { AzExtResourceType, prepareAzureResourcesApiRequest, type AzureResourcesApiRequestContext, type AzureResourcesApiRequestError, type AzureResourcesExtensionApi } from "@microsoft/vscode-azureresources-api"; import { ext } from "../../extensionVariables"; import { localize } from "../../utils/localize"; @@ -11,23 +11,35 @@ import { deployImageApi } from "./deployImageApi"; import { deployWorkspaceProjectApi } from "./deployWorkspaceProjectApi"; import type * as api from "./vscode-azurecontainerapps.api"; -export function createContainerAppsApiProvider(activationContext: IActionContext): apiUtils.AzureExtensionApiProvider { +export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProvider { const v2: string = '^2.0.0'; + const context: AzureResourcesApiRequestContext = { azureResourcesApiVersions: [v2], clientExtensionId: ext.context.extension.id, - onDidReceiveAzureResourcesApis: (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { - const [rgApiV2] = azureResourcesApis; - if (!rgApiV2) { - throw new Error(localize('noMatchingApi', 'Failed to find a matching Azure Resources API for version "{0}".', v2)); - } - ext.rgApiV2 = rgApiV2; - ext.rgApiV2.resources.registerAzureResourceBranchDataProvider(AzExtResourceType.ContainerAppsEnvironment, ext.branchDataProvider); + + onDidReceiveAzureResourcesApis: async (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { + await callWithTelemetryAndErrorHandling('containerApps.apiRequestSucceeded', async (actionContext: IActionContext) => { + actionContext.errorHandling.rethrow = true; + + const [rgApiV2] = azureResourcesApis; + if (!rgApiV2) { + throw new Error(localize('noMatchingApi', 'Failed to find a matching Azure Resources API for version "{0}".', v2)); + } + + ext.rgApiV2 = rgApiV2; + ext.rgApiV2.resources.registerAzureResourceBranchDataProvider(AzExtResourceType.ContainerAppsEnvironment, ext.branchDataProvider); + }); }, - onApiRequestError: (error: AzureResourcesApiRequestError) => { - activationContext.telemetry.properties.handshakeError = maskUserInfo(error.message, []); - activationContext.telemetry.properties.handshakeErrorCode = error.code; + + onApiRequestError: async (error: AzureResourcesApiRequestError) => { + await callWithTelemetryAndErrorHandling('containerApps.apiRequestFailed', async (actionContext: IActionContext) => { + actionContext.telemetry.properties.apiRequestErrorCode = error.code; + actionContext.telemetry.properties.apiRequestError = maskUserInfo(error.message, []); + }); + throw error; }, + }; const containerAppsApi: api.AzureContainerAppsExtensionApi = { diff --git a/src/extension.ts b/src/extension.ts index 56d7472aa..f95de2838 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -42,7 +42,7 @@ export async function activate(context: vscode.ExtensionContext, perfStats: { lo ext.state = new TreeElementStateManager(); ext.branchDataProvider = new ContainerAppsBranchDataProvider(); - return createContainerAppsApiProvider(activateContext); + return createContainerAppsApiProvider(); }) ?? createApiProvider([]); } From 4934cb983dbf8d933644441fcc9e66ce59df15e6 Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Tue, 4 Nov 2025 13:20:21 -0800 Subject: [PATCH 04/13] Update id --- src/commands/api/createContainerAppsApiProvider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index cc57e4181..dcf63359d 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -19,7 +19,7 @@ export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProv clientExtensionId: ext.context.extension.id, onDidReceiveAzureResourcesApis: async (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { - await callWithTelemetryAndErrorHandling('containerApps.apiRequestSucceeded', async (actionContext: IActionContext) => { + await callWithTelemetryAndErrorHandling('containerApps.hostApiRequestSucceeded', async (actionContext: IActionContext) => { actionContext.errorHandling.rethrow = true; const [rgApiV2] = azureResourcesApis; @@ -33,7 +33,7 @@ export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProv }, onApiRequestError: async (error: AzureResourcesApiRequestError) => { - await callWithTelemetryAndErrorHandling('containerApps.apiRequestFailed', async (actionContext: IActionContext) => { + await callWithTelemetryAndErrorHandling('containerApps.hostApiRequestFailed', async (actionContext: IActionContext) => { actionContext.telemetry.properties.apiRequestErrorCode = error.code; actionContext.telemetry.properties.apiRequestError = maskUserInfo(error.message, []); }); From d1ceaa2d3ec48b467833075daca26037adb124a2 Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Tue, 4 Nov 2025 13:21:37 -0800 Subject: [PATCH 05/13] Remove unnecessary asyncs --- src/commands/api/createContainerAppsApiProvider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index dcf63359d..aa8db3422 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -19,7 +19,7 @@ export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProv clientExtensionId: ext.context.extension.id, onDidReceiveAzureResourcesApis: async (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { - await callWithTelemetryAndErrorHandling('containerApps.hostApiRequestSucceeded', async (actionContext: IActionContext) => { + await callWithTelemetryAndErrorHandling('containerApps.hostApiRequestSucceeded', (actionContext: IActionContext) => { actionContext.errorHandling.rethrow = true; const [rgApiV2] = azureResourcesApis; @@ -33,7 +33,7 @@ export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProv }, onApiRequestError: async (error: AzureResourcesApiRequestError) => { - await callWithTelemetryAndErrorHandling('containerApps.hostApiRequestFailed', async (actionContext: IActionContext) => { + await callWithTelemetryAndErrorHandling('containerApps.hostApiRequestFailed', (actionContext: IActionContext) => { actionContext.telemetry.properties.apiRequestErrorCode = error.code; actionContext.telemetry.properties.apiRequestError = maskUserInfo(error.message, []); }); From fc79446b34f30cf71100518a9a049496b509e4fe Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Tue, 4 Nov 2025 13:37:00 -0800 Subject: [PATCH 06/13] Update telemetry names --- src/commands/api/createContainerAppsApiProvider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index aa8db3422..846b9089d 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -34,8 +34,8 @@ export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProv onApiRequestError: async (error: AzureResourcesApiRequestError) => { await callWithTelemetryAndErrorHandling('containerApps.hostApiRequestFailed', (actionContext: IActionContext) => { - actionContext.telemetry.properties.apiRequestErrorCode = error.code; - actionContext.telemetry.properties.apiRequestError = maskUserInfo(error.message, []); + actionContext.telemetry.properties.hostApiRequestErrorCode = error.code; + actionContext.telemetry.properties.hostApiRequestError = maskUserInfo(error.message, []); }); throw error; }, From 9e3e2646df7fe48021e90f5fe15c410967666b7e Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Mon, 10 Nov 2025 15:27:15 -0800 Subject: [PATCH 07/13] Update dependencies --- package-lock.json | 377 +++++----------------------------------------- package.json | 2 +- 2 files changed, 38 insertions(+), 341 deletions(-) diff --git a/package-lock.json b/package-lock.json index 683b68cad..f55195e00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@fluentui/react-icons": "^2.0.265", "@microsoft/vscode-azext-azureutils": "^3.5.2", "@microsoft/vscode-azext-github": "^1.0.7", - "@microsoft/vscode-azext-utils": "file:../vscode-azuretools/utils/microsoft-vscode-azext-utils-4.0.1.tgz", + "@microsoft/vscode-azext-utils": "^3.5.1", "@microsoft/vscode-azureresources-api": "file:../vscode-azureresourcegroups/api/microsoft-vscode-azureresources-api-3.0.0.tgz", "@vscode/codicons": "0.0.38", "buffer": "^6.0.3", @@ -2545,102 +2545,6 @@ "@azure/ms-rest-azure-env": "^2.0.0" } }, - "node_modules/@microsoft/vscode-azext-azureutils/node_modules/@microsoft/vscode-azext-utils": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@microsoft/vscode-azext-utils/-/vscode-azext-utils-3.5.1.tgz", - "integrity": "sha512-+HGxhaPZrNg6eHUxMSVJSwxHV5q+DGnHdKYUneMkHVCG6JJYMf67S2ll6Uhvts1ItSBNOASUNy0MVm7nnIN98w==", - "license": "MIT", - "dependencies": { - "@microsoft/vscode-azureresources-api": "^2.6.2", - "@vscode/extension-telemetry": "^0.9.6", - "dayjs": "^1.11.2", - "escape-string-regexp": "^2.0.0", - "html-to-text": "^8.2.0", - "semver": "^7.3.7", - "uuid": "^9.0.0", - "vscode-tas-client": "^0.1.84", - "vscode-uri": "^3.0.6" - }, - "peerDependencies": { - "@azure/ms-rest-azure-env": "^2.0.0" - } - }, - "node_modules/@microsoft/vscode-azext-azureutils/node_modules/@microsoft/vscode-azureresources-api": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@microsoft/vscode-azureresources-api/-/vscode-azureresources-api-2.6.3.tgz", - "integrity": "sha512-uwFHLc9fsbuBPKC/WOU+p5JMj9VyNyU1k+3T1uFp00l4OMmazqBqiJYKao6jc/d525hy9FW6EzniGPHdocKApA==", - "license": "MIT", - "peerDependencies": { - "@azure/ms-rest-azure-env": "^2.0.0" - } - }, - "node_modules/@microsoft/vscode-azext-azureutils/node_modules/@selderee/plugin-htmlparser2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz", - "integrity": "sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==", - "license": "MIT", - "dependencies": { - "domhandler": "^4.2.0", - "selderee": "^0.6.0" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/@microsoft/vscode-azext-azureutils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@microsoft/vscode-azext-azureutils/node_modules/html-to-text": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.2.1.tgz", - "integrity": "sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==", - "license": "MIT", - "dependencies": { - "@selderee/plugin-htmlparser2": "^0.6.0", - "deepmerge": "^4.2.2", - "he": "^1.2.0", - "htmlparser2": "^6.1.0", - "minimist": "^1.2.6", - "selderee": "^0.6.0" - }, - "bin": { - "html-to-text": "bin/cli.js" - }, - "engines": { - "node": ">=10.23.2" - } - }, - "node_modules/@microsoft/vscode-azext-azureutils/node_modules/parseley": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.7.0.tgz", - "integrity": "sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==", - "license": "MIT", - "dependencies": { - "moo": "^0.5.1", - "nearley": "^2.20.1" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/@microsoft/vscode-azext-azureutils/node_modules/selderee": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.6.0.tgz", - "integrity": "sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==", - "license": "MIT", - "dependencies": { - "parseley": "^0.7.0" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, "node_modules/@microsoft/vscode-azext-azureutils/node_modules/uuid": { "version": "9.0.1", "funding": [ @@ -2805,11 +2709,10 @@ "@octokit/rest": "^20.1.2" } }, - "node_modules/@microsoft/vscode-azext-github/node_modules/@microsoft/vscode-azext-utils": { + "node_modules/@microsoft/vscode-azext-utils": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/@microsoft/vscode-azext-utils/-/vscode-azext-utils-3.5.1.tgz", "integrity": "sha512-+HGxhaPZrNg6eHUxMSVJSwxHV5q+DGnHdKYUneMkHVCG6JJYMf67S2ll6Uhvts1ItSBNOASUNy0MVm7nnIN98w==", - "license": "MIT", "dependencies": { "@microsoft/vscode-azureresources-api": "^2.6.2", "@vscode/extension-telemetry": "^0.9.6", @@ -2825,7 +2728,7 @@ "@azure/ms-rest-azure-env": "^2.0.0" } }, - "node_modules/@microsoft/vscode-azext-github/node_modules/@microsoft/vscode-azureresources-api": { + "node_modules/@microsoft/vscode-azext-utils/node_modules/@microsoft/vscode-azureresources-api": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/@microsoft/vscode-azureresources-api/-/vscode-azureresources-api-2.6.3.tgz", "integrity": "sha512-uwFHLc9fsbuBPKC/WOU+p5JMj9VyNyU1k+3T1uFp00l4OMmazqBqiJYKao6jc/d525hy9FW6EzniGPHdocKApA==", @@ -2834,74 +2737,15 @@ "@azure/ms-rest-azure-env": "^2.0.0" } }, - "node_modules/@microsoft/vscode-azext-github/node_modules/@selderee/plugin-htmlparser2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz", - "integrity": "sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==", - "license": "MIT", - "dependencies": { - "domhandler": "^4.2.0", - "selderee": "^0.6.0" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/@microsoft/vscode-azext-github/node_modules/escape-string-regexp": { + "node_modules/@microsoft/vscode-azext-utils/node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@microsoft/vscode-azext-github/node_modules/html-to-text": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.2.1.tgz", - "integrity": "sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==", - "license": "MIT", - "dependencies": { - "@selderee/plugin-htmlparser2": "^0.6.0", - "deepmerge": "^4.2.2", - "he": "^1.2.0", - "htmlparser2": "^6.1.0", - "minimist": "^1.2.6", - "selderee": "^0.6.0" - }, - "bin": { - "html-to-text": "bin/cli.js" - }, - "engines": { - "node": ">=10.23.2" - } - }, - "node_modules/@microsoft/vscode-azext-github/node_modules/parseley": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.7.0.tgz", - "integrity": "sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==", - "license": "MIT", - "dependencies": { - "moo": "^0.5.1", - "nearley": "^2.20.1" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/@microsoft/vscode-azext-github/node_modules/selderee": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.6.0.tgz", - "integrity": "sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==", - "license": "MIT", - "dependencies": { - "parseley": "^0.7.0" - }, - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, - "node_modules/@microsoft/vscode-azext-github/node_modules/uuid": { + "node_modules/@microsoft/vscode-azext-utils/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", @@ -2909,44 +2753,14 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, - "node_modules/@microsoft/vscode-azext-utils": { - "version": "4.0.1", - "resolved": "file:../vscode-azuretools/utils/microsoft-vscode-azext-utils-4.0.1.tgz", - "integrity": "sha512-X8E/8aVwyVvUVe5QB/u0I9sXw4q7+WaDPUZ1nqAP3Gb5zHJNJi1F51sZbGzhq6J2GAitZfC61HLDqtyXr5iSsA==", - "license": "MIT", - "dependencies": { - "@microsoft/vscode-azureresources-api": "^3.0.0", - "@vscode/extension-telemetry": "^0.9.6", - "dayjs": "^1.11.2", - "escape-string-regexp": "^2.0.0", - "html-to-text": "^9.0.0", - "semver": "^7.3.7", - "vscode-tas-client": "^0.1.84" - }, - "engines": { - "vscode": "^1.105.0" - }, - "peerDependencies": { - "@azure/ms-rest-azure-env": "^2.0.0" - } - }, - "node_modules/@microsoft/vscode-azext-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "engines": { - "node": ">=8" - } - }, "node_modules/@microsoft/vscode-azureresources-api": { "version": "3.0.0", "resolved": "file:../vscode-azureresourcegroups/api/microsoft-vscode-azureresources-api-3.0.0.tgz", - "integrity": "sha512-rZlfQivQVH7XieHG2GXJQQXvPhtFsmtrdG2LEzqtHcENM4onnvvCFC+GSbUhvjzTlAH6nEePvtm5yOLIZcmXaA==", + "integrity": "sha512-ARnUynl0EpXa7yeKv+pZONTWFOTyDGqGbOF8prhlPy0RDsQ3iTg5XvlN7gVitdlh8wwYMlm5OviD7YbYcFlAyQ==", "license": "MIT", "engines": { "vscode": "^1.105.0" @@ -3226,33 +3040,17 @@ "license": "MIT" }, "node_modules/@selderee/plugin-htmlparser2": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz", - "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==", - "license": "MIT", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz", + "integrity": "sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==", "dependencies": { - "domhandler": "^5.0.3", - "selderee": "^0.11.0" + "domhandler": "^4.2.0", + "selderee": "^0.6.0" }, "funding": { "url": "https://ko-fi.com/killymxi" } }, - "node_modules/@selderee/plugin-htmlparser2/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, "node_modules/@sindresorhus/merge-streams": { "version": "2.3.0", "dev": true, @@ -5882,7 +5680,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6090,8 +5887,7 @@ "node_modules/discontinuous-range": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", - "license": "MIT" + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" }, "node_modules/dns-packet": { "version": "5.6.1", @@ -6136,9 +5932,7 @@ } }, "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "version": "2.2.0", "funding": [ { "type": "github", @@ -7724,93 +7518,22 @@ } }, "node_modules/html-to-text": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz", - "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==", - "license": "MIT", - "dependencies": { - "@selderee/plugin-htmlparser2": "^0.11.0", - "deepmerge": "^4.3.1", - "dom-serializer": "^2.0.0", - "htmlparser2": "^8.0.2", - "selderee": "^0.11.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/html-to-text/node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/html-to-text/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.2.1.tgz", + "integrity": "sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==", "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" + "@selderee/plugin-htmlparser2": "^0.6.0", + "deepmerge": "^4.2.2", + "he": "^1.2.0", + "htmlparser2": "^6.1.0", + "minimist": "^1.2.6", + "selderee": "^0.6.0" }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/html-to-text/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "bin": { + "html-to-text": "bin/cli.js" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/html-to-text/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/html-to-text/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "node": ">=10.23.2" } }, "node_modules/htmlparser2": { @@ -8711,15 +8434,6 @@ "shell-quote": "^1.8.1" } }, - "node_modules/leac": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", - "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==", - "license": "MIT", - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, "node_modules/lead": { "version": "4.0.0", "dev": true, @@ -9349,8 +9063,7 @@ "node_modules/moo": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", - "license": "BSD-3-Clause" + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" }, "node_modules/ms": { "version": "2.1.3", @@ -9403,7 +9116,6 @@ "version": "2.20.1", "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", - "license": "MIT", "dependencies": { "commander": "^2.19.0", "moo": "^0.5.0", @@ -9424,8 +9136,7 @@ "node_modules/nearley/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/negotiator": { "version": "0.6.4", @@ -9843,13 +9554,12 @@ } }, "node_modules/parseley": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz", - "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==", - "license": "MIT", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.7.0.tgz", + "integrity": "sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==", "dependencies": { - "leac": "^0.6.0", - "peberminta": "^0.9.0" + "moo": "^0.5.1", + "nearley": "^2.20.1" }, "funding": { "url": "https://ko-fi.com/killymxi" @@ -9934,15 +9644,6 @@ "node": ">=8" } }, - "node_modules/peberminta": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz", - "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==", - "license": "MIT", - "funding": { - "url": "https://ko-fi.com/killymxi" - } - }, "node_modules/pend": { "version": "1.2.0", "dev": true, @@ -10323,14 +10024,12 @@ "node_modules/railroad-diagrams": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", - "license": "CC0-1.0" + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" }, "node_modules/randexp": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "license": "MIT", "dependencies": { "discontinuous-range": "1.0.0", "ret": "~0.1.10" @@ -10630,7 +10329,6 @@ "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "license": "MIT", "engines": { "node": ">=0.12" } @@ -10850,12 +10548,11 @@ } }, "node_modules/selderee": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz", - "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==", - "license": "MIT", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.6.0.tgz", + "integrity": "sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==", "dependencies": { - "parseley": "^0.12.0" + "parseley": "^0.7.0" }, "funding": { "url": "https://ko-fi.com/killymxi" diff --git a/package.json b/package.json index 300db71ec..d57ae9b20 100644 --- a/package.json +++ b/package.json @@ -864,7 +864,7 @@ "@fluentui/react-icons": "^2.0.265", "@microsoft/vscode-azext-azureutils": "^3.5.2", "@microsoft/vscode-azext-github": "^1.0.7", - "@microsoft/vscode-azext-utils": "file:../vscode-azuretools/utils/microsoft-vscode-azext-utils-4.0.1.tgz", + "@microsoft/vscode-azext-utils": "^3.5.1", "@microsoft/vscode-azureresources-api": "file:../vscode-azureresourcegroups/api/microsoft-vscode-azureresources-api-3.0.0.tgz", "@vscode/codicons": "0.0.38", "buffer": "^6.0.3", From 8e14fdb1f61da5526eeb9c0330ca229bb2c7a093 Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Wed, 12 Nov 2025 14:04:05 -0800 Subject: [PATCH 08/13] Update how we display the error --- package-lock.json | 2 +- src/commands/api/createContainerAppsApiProvider.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index f55195e00..317dfa39b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2760,7 +2760,7 @@ "node_modules/@microsoft/vscode-azureresources-api": { "version": "3.0.0", "resolved": "file:../vscode-azureresourcegroups/api/microsoft-vscode-azureresources-api-3.0.0.tgz", - "integrity": "sha512-ARnUynl0EpXa7yeKv+pZONTWFOTyDGqGbOF8prhlPy0RDsQ3iTg5XvlN7gVitdlh8wwYMlm5OviD7YbYcFlAyQ==", + "integrity": "sha512-wG97CHPiU6DIrtYKo63kCbEAByDh010luCj81uRYGnQVNZz4FbweVzA3dRLOoGvWaDwdsbokoMpzFEDx0m8Xxg==", "license": "MIT", "engines": { "vscode": "^1.105.0" diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index 846b9089d..d9787b932 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -5,6 +5,7 @@ import { callWithTelemetryAndErrorHandling, createApiProvider, maskUserInfo, type apiUtils, type IActionContext } from "@microsoft/vscode-azext-utils"; import { AzExtResourceType, prepareAzureResourcesApiRequest, type AzureResourcesApiRequestContext, type AzureResourcesApiRequestError, type AzureResourcesExtensionApi } from "@microsoft/vscode-azureresources-api"; +import * as vscode from "vscode"; import { ext } from "../../extensionVariables"; import { localize } from "../../utils/localize"; import { deployImageApi } from "./deployImageApi"; @@ -37,7 +38,11 @@ export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProv actionContext.telemetry.properties.hostApiRequestErrorCode = error.code; actionContext.telemetry.properties.hostApiRequestError = maskUserInfo(error.message, []); }); - throw error; + + // Generic for now, will improve this later + ext.outputChannel.appendLog('Error: Failed to connect extension to the Azure Resources host.'); + ext.outputChannel.appendLog(`{ code: "${error.code}", message: "${error.message}" }`); + void vscode.window.showWarningMessage('Failed to load extension, see output log for more details.'); }, }; From 93bcdb0484e9a3218f885de6ab594d3729df38a4 Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Wed, 12 Nov 2025 16:32:54 -0800 Subject: [PATCH 09/13] Update sample error cb --- package-lock.json | 2 +- src/commands/api/createContainerAppsApiProvider.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 317dfa39b..84c2b6c9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2760,7 +2760,7 @@ "node_modules/@microsoft/vscode-azureresources-api": { "version": "3.0.0", "resolved": "file:../vscode-azureresourcegroups/api/microsoft-vscode-azureresources-api-3.0.0.tgz", - "integrity": "sha512-wG97CHPiU6DIrtYKo63kCbEAByDh010luCj81uRYGnQVNZz4FbweVzA3dRLOoGvWaDwdsbokoMpzFEDx0m8Xxg==", + "integrity": "sha512-gSwSo/75wLKvW/B9Og9KdD9yXYQ3Jy4rwujfRGusIWDbhCL9ISIn480ihuWXroz8VETxqWKCsgUDhCSUDFgv6w==", "license": "MIT", "engines": { "vscode": "^1.105.0" diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index d9787b932..4ab178372 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -5,7 +5,6 @@ import { callWithTelemetryAndErrorHandling, createApiProvider, maskUserInfo, type apiUtils, type IActionContext } from "@microsoft/vscode-azext-utils"; import { AzExtResourceType, prepareAzureResourcesApiRequest, type AzureResourcesApiRequestContext, type AzureResourcesApiRequestError, type AzureResourcesExtensionApi } from "@microsoft/vscode-azureresources-api"; -import * as vscode from "vscode"; import { ext } from "../../extensionVariables"; import { localize } from "../../utils/localize"; import { deployImageApi } from "./deployImageApi"; @@ -42,7 +41,6 @@ export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProv // Generic for now, will improve this later ext.outputChannel.appendLog('Error: Failed to connect extension to the Azure Resources host.'); ext.outputChannel.appendLog(`{ code: "${error.code}", message: "${error.message}" }`); - void vscode.window.showWarningMessage('Failed to load extension, see output log for more details.'); }, }; From fadd7d856d7b6ac31e88063979fc31734fdb070d Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Wed, 12 Nov 2025 16:35:19 -0800 Subject: [PATCH 10/13] Update sample error cb again --- src/commands/api/createContainerAppsApiProvider.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index 4ab178372..896afb87d 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -19,7 +19,7 @@ export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProv clientExtensionId: ext.context.extension.id, onDidReceiveAzureResourcesApis: async (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { - await callWithTelemetryAndErrorHandling('containerApps.hostApiRequestSucceeded', (actionContext: IActionContext) => { + await callWithTelemetryAndErrorHandling('hostApiRequestSucceeded', (actionContext: IActionContext) => { actionContext.errorHandling.rethrow = true; const [rgApiV2] = azureResourcesApis; @@ -33,14 +33,12 @@ export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProv }, onApiRequestError: async (error: AzureResourcesApiRequestError) => { - await callWithTelemetryAndErrorHandling('containerApps.hostApiRequestFailed', (actionContext: IActionContext) => { + await callWithTelemetryAndErrorHandling('hostApiRequestFailed', (actionContext: IActionContext) => { actionContext.telemetry.properties.hostApiRequestErrorCode = error.code; actionContext.telemetry.properties.hostApiRequestError = maskUserInfo(error.message, []); + ext.outputChannel.appendLog(localize('apiRequestError', 'Error: Failed to connect extension to the Azure Resources host.')); + ext.outputChannel.appendLog(JSON.stringify(error)); }); - - // Generic for now, will improve this later - ext.outputChannel.appendLog('Error: Failed to connect extension to the Azure Resources host.'); - ext.outputChannel.appendLog(`{ code: "${error.code}", message: "${error.message}" }`); }, }; From 4aa5c686b6545c0446fbd29c5ea19fe7e7a39a25 Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Wed, 19 Nov 2025 12:51:25 -0800 Subject: [PATCH 11/13] Small refactor to logic --- package-lock.json | 2 +- .../api/createContainerAppsApiProvider.ts | 39 +++++-------------- src/extension.ts | 30 +++++++++++++- 3 files changed, 38 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 84c2b6c9d..23940c58e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2760,7 +2760,7 @@ "node_modules/@microsoft/vscode-azureresources-api": { "version": "3.0.0", "resolved": "file:../vscode-azureresourcegroups/api/microsoft-vscode-azureresources-api-3.0.0.tgz", - "integrity": "sha512-gSwSo/75wLKvW/B9Og9KdD9yXYQ3Jy4rwujfRGusIWDbhCL9ISIn480ihuWXroz8VETxqWKCsgUDhCSUDFgv6w==", + "integrity": "sha512-1lUCGvYIUDJHv4o+sqkak203mSmLoKzFR1ETBHLhZJ3dt5B9DJ/Z4IIo0Lg3bvOY0yZXm/HNLNvPkeRtfH05Zg==", "license": "MIT", "engines": { "vscode": "^1.105.0" diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index 896afb87d..e59d28a85 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -3,44 +3,23 @@ * Licensed under the MIT License. See License.md in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { callWithTelemetryAndErrorHandling, createApiProvider, maskUserInfo, type apiUtils, type IActionContext } from "@microsoft/vscode-azext-utils"; -import { AzExtResourceType, prepareAzureResourcesApiRequest, type AzureResourcesApiRequestContext, type AzureResourcesApiRequestError, type AzureResourcesExtensionApi } from "@microsoft/vscode-azureresources-api"; +import { createApiProvider, type apiUtils } from "@microsoft/vscode-azext-utils"; +import { prepareAzureResourcesApiRequest, type AzureResourcesApiRequestContext } from "@microsoft/vscode-azureresources-api"; import { ext } from "../../extensionVariables"; -import { localize } from "../../utils/localize"; import { deployImageApi } from "./deployImageApi"; import { deployWorkspaceProjectApi } from "./deployWorkspaceProjectApi"; import type * as api from "./vscode-azurecontainerapps.api"; -export function createContainerAppsApiProvider(): apiUtils.AzureExtensionApiProvider { - const v2: string = '^2.0.0'; +export function createContainerAppsApiProvider( + registerBranchResources: AzureResourcesApiRequestContext["onDidReceiveAzureResourcesApis"], + onFailedRegistration: AzureResourcesApiRequestContext["onApiRequestError"], +): apiUtils.AzureExtensionApiProvider { const context: AzureResourcesApiRequestContext = { - azureResourcesApiVersions: [v2], + azureResourcesApiVersions: ['^2.0.0'], clientExtensionId: ext.context.extension.id, - - onDidReceiveAzureResourcesApis: async (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { - await callWithTelemetryAndErrorHandling('hostApiRequestSucceeded', (actionContext: IActionContext) => { - actionContext.errorHandling.rethrow = true; - - const [rgApiV2] = azureResourcesApis; - if (!rgApiV2) { - throw new Error(localize('noMatchingApi', 'Failed to find a matching Azure Resources API for version "{0}".', v2)); - } - - ext.rgApiV2 = rgApiV2; - ext.rgApiV2.resources.registerAzureResourceBranchDataProvider(AzExtResourceType.ContainerAppsEnvironment, ext.branchDataProvider); - }); - }, - - onApiRequestError: async (error: AzureResourcesApiRequestError) => { - await callWithTelemetryAndErrorHandling('hostApiRequestFailed', (actionContext: IActionContext) => { - actionContext.telemetry.properties.hostApiRequestErrorCode = error.code; - actionContext.telemetry.properties.hostApiRequestError = maskUserInfo(error.message, []); - ext.outputChannel.appendLog(localize('apiRequestError', 'Error: Failed to connect extension to the Azure Resources host.')); - ext.outputChannel.appendLog(JSON.stringify(error)); - }); - }, - + onDidReceiveAzureResourcesApis: registerBranchResources, + onApiRequestError: onFailedRegistration, }; const containerAppsApi: api.AzureContainerAppsExtensionApi = { diff --git a/src/extension.ts b/src/extension.ts index f95de2838..240d8201b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -7,13 +7,15 @@ import { registerAzureUtilsExtensionVariables } from '@microsoft/vscode-azext-azureutils'; import { registerGitHubExtensionVariables } from '@microsoft/vscode-azext-github'; -import { TreeElementStateManager, callWithTelemetryAndErrorHandling, createApiProvider, createAzExtOutputChannel, createExperimentationService, registerUIExtensionVariables, type IActionContext, type apiUtils } from '@microsoft/vscode-azext-utils'; +import { TreeElementStateManager, callWithTelemetryAndErrorHandling, createApiProvider, createAzExtOutputChannel, createExperimentationService, maskUserInfo, registerUIExtensionVariables, type IActionContext, type apiUtils } from '@microsoft/vscode-azext-utils'; +import { AzExtResourceType, type AzureResourcesApiRequestError, type AzureResourcesExtensionApi } from '@microsoft/vscode-azureresources-api'; import * as vscode from 'vscode'; import { createContainerAppsApiProvider } from './commands/api/createContainerAppsApiProvider'; import { registerCommands } from './commands/registerCommands'; import { RevisionDraftFileSystem } from './commands/revisionDraft/RevisionDraftFileSystem'; import { ext } from './extensionVariables'; import { ContainerAppsBranchDataProvider } from './tree/ContainerAppsBranchDataProvider'; +import { localize } from './utils/localize'; export async function activate(context: vscode.ExtensionContext, perfStats: { loadStartTime: number; loadEndTime: number }, ignoreBundle?: boolean): Promise { // the entry point for vscode.dev is this activate, not main.js, so we need to instantiate perfStats here @@ -42,7 +44,31 @@ export async function activate(context: vscode.ExtensionContext, perfStats: { lo ext.state = new TreeElementStateManager(); ext.branchDataProvider = new ContainerAppsBranchDataProvider(); - return createContainerAppsApiProvider(); + // Register branch data resources with Azure Resources Host extension: + const registerBranchResources = async (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { + await callWithTelemetryAndErrorHandling('hostApiRequestSucceeded', (actionContext: IActionContext) => { + actionContext.errorHandling.rethrow = true; + + const [rgApiV2] = azureResourcesApis; + if (!rgApiV2 || !rgApiV2.apiVersion.match(/^2\./)) { + throw new Error(localize('noMatchingApi', 'Failed to find a matching Azure Resources API for version "{0}".', '^2.0.0')); + } + + ext.rgApiV2 = rgApiV2; + ext.rgApiV2.resources.registerAzureResourceBranchDataProvider(AzExtResourceType.ContainerAppsEnvironment, ext.branchDataProvider); + }); + }; + + const onRegistrationFailed = async (error: AzureResourcesApiRequestError) => { + await callWithTelemetryAndErrorHandling('hostApiRequestFailed', (actionContext: IActionContext) => { + actionContext.telemetry.properties.hostApiRequestErrorCode = error.code; + actionContext.telemetry.properties.hostApiRequestError = maskUserInfo(error.message, []); + ext.outputChannel.appendLog(localize('apiRequestError', 'Error: Failed to connect extension to the Azure Resources host.')); + ext.outputChannel.appendLog(JSON.stringify(error)); + }); + }; + + return createContainerAppsApiProvider(registerBranchResources, onRegistrationFailed); }) ?? createApiProvider([]); } From ad78c1669636f50319af2e69c87c89b489fe0bd4 Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Wed, 19 Nov 2025 12:52:32 -0800 Subject: [PATCH 12/13] Formatting --- src/commands/api/createContainerAppsApiProvider.ts | 6 +----- src/extension.ts | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index e59d28a85..6949c4355 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -10,11 +10,7 @@ import { deployImageApi } from "./deployImageApi"; import { deployWorkspaceProjectApi } from "./deployWorkspaceProjectApi"; import type * as api from "./vscode-azurecontainerapps.api"; -export function createContainerAppsApiProvider( - registerBranchResources: AzureResourcesApiRequestContext["onDidReceiveAzureResourcesApis"], - onFailedRegistration: AzureResourcesApiRequestContext["onApiRequestError"], -): apiUtils.AzureExtensionApiProvider { - +export function createContainerAppsApiProvider(registerBranchResources: AzureResourcesApiRequestContext["onDidReceiveAzureResourcesApis"], onFailedRegistration: AzureResourcesApiRequestContext["onApiRequestError"]): apiUtils.AzureExtensionApiProvider { const context: AzureResourcesApiRequestContext = { azureResourcesApiVersions: ['^2.0.0'], clientExtensionId: ext.context.extension.id, diff --git a/src/extension.ts b/src/extension.ts index 240d8201b..6301761f5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -59,7 +59,7 @@ export async function activate(context: vscode.ExtensionContext, perfStats: { lo }); }; - const onRegistrationFailed = async (error: AzureResourcesApiRequestError) => { + const onFailedRegistration = async (error: AzureResourcesApiRequestError) => { await callWithTelemetryAndErrorHandling('hostApiRequestFailed', (actionContext: IActionContext) => { actionContext.telemetry.properties.hostApiRequestErrorCode = error.code; actionContext.telemetry.properties.hostApiRequestError = maskUserInfo(error.message, []); @@ -68,7 +68,7 @@ export async function activate(context: vscode.ExtensionContext, perfStats: { lo }); }; - return createContainerAppsApiProvider(registerBranchResources, onRegistrationFailed); + return createContainerAppsApiProvider(registerBranchResources, onFailedRegistration); }) ?? createApiProvider([]); } From af5e6e173eb2b1c44b642eceacaae37a1c525f87 Mon Sep 17 00:00:00 2001 From: MicroFish91 <40250218+MicroFish91@users.noreply.github.com> Date: Wed, 19 Nov 2025 12:57:17 -0800 Subject: [PATCH 13/13] Only pass in branch resource registration cb --- .../api/createContainerAppsApiProvider.ts | 16 ++++++++++++---- src/extension.ts | 16 +++------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/commands/api/createContainerAppsApiProvider.ts b/src/commands/api/createContainerAppsApiProvider.ts index 6949c4355..41f568034 100644 --- a/src/commands/api/createContainerAppsApiProvider.ts +++ b/src/commands/api/createContainerAppsApiProvider.ts @@ -3,19 +3,27 @@ * Licensed under the MIT License. See License.md in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { createApiProvider, type apiUtils } from "@microsoft/vscode-azext-utils"; -import { prepareAzureResourcesApiRequest, type AzureResourcesApiRequestContext } from "@microsoft/vscode-azureresources-api"; +import { callWithTelemetryAndErrorHandling, createApiProvider, maskUserInfo, type apiUtils, type IActionContext } from "@microsoft/vscode-azext-utils"; +import { prepareAzureResourcesApiRequest, type AzureResourcesApiRequestContext, type AzureResourcesApiRequestError } from "@microsoft/vscode-azureresources-api"; import { ext } from "../../extensionVariables"; +import { localize } from "../../utils/localize"; import { deployImageApi } from "./deployImageApi"; import { deployWorkspaceProjectApi } from "./deployWorkspaceProjectApi"; import type * as api from "./vscode-azurecontainerapps.api"; -export function createContainerAppsApiProvider(registerBranchResources: AzureResourcesApiRequestContext["onDidReceiveAzureResourcesApis"], onFailedRegistration: AzureResourcesApiRequestContext["onApiRequestError"]): apiUtils.AzureExtensionApiProvider { +export function createContainerAppsApiProvider(registerBranchResources: AzureResourcesApiRequestContext["onDidReceiveAzureResourcesApis"]): apiUtils.AzureExtensionApiProvider { const context: AzureResourcesApiRequestContext = { azureResourcesApiVersions: ['^2.0.0'], clientExtensionId: ext.context.extension.id, onDidReceiveAzureResourcesApis: registerBranchResources, - onApiRequestError: onFailedRegistration, + onApiRequestError: async (error: AzureResourcesApiRequestError) => { + await callWithTelemetryAndErrorHandling('hostApiRequestFailed', (actionContext: IActionContext) => { + actionContext.telemetry.properties.hostApiRequestErrorCode = error.code; + actionContext.telemetry.properties.hostApiRequestError = maskUserInfo(error.message, []); + ext.outputChannel.appendLog(localize('apiRequestError', 'Error: Failed to connect extension to the Azure Resources host.')); + ext.outputChannel.appendLog(`code: ${error.code}, message: ${error.message}`); + }); + }, }; const containerAppsApi: api.AzureContainerAppsExtensionApi = { diff --git a/src/extension.ts b/src/extension.ts index 6301761f5..73019c22e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -7,8 +7,8 @@ import { registerAzureUtilsExtensionVariables } from '@microsoft/vscode-azext-azureutils'; import { registerGitHubExtensionVariables } from '@microsoft/vscode-azext-github'; -import { TreeElementStateManager, callWithTelemetryAndErrorHandling, createApiProvider, createAzExtOutputChannel, createExperimentationService, maskUserInfo, registerUIExtensionVariables, type IActionContext, type apiUtils } from '@microsoft/vscode-azext-utils'; -import { AzExtResourceType, type AzureResourcesApiRequestError, type AzureResourcesExtensionApi } from '@microsoft/vscode-azureresources-api'; +import { TreeElementStateManager, callWithTelemetryAndErrorHandling, createApiProvider, createAzExtOutputChannel, createExperimentationService, registerUIExtensionVariables, type IActionContext, type apiUtils } from '@microsoft/vscode-azext-utils'; +import { AzExtResourceType, type AzureResourcesExtensionApi } from '@microsoft/vscode-azureresources-api'; import * as vscode from 'vscode'; import { createContainerAppsApiProvider } from './commands/api/createContainerAppsApiProvider'; import { registerCommands } from './commands/registerCommands'; @@ -44,7 +44,6 @@ export async function activate(context: vscode.ExtensionContext, perfStats: { lo ext.state = new TreeElementStateManager(); ext.branchDataProvider = new ContainerAppsBranchDataProvider(); - // Register branch data resources with Azure Resources Host extension: const registerBranchResources = async (azureResourcesApis: (AzureResourcesExtensionApi | undefined)[]) => { await callWithTelemetryAndErrorHandling('hostApiRequestSucceeded', (actionContext: IActionContext) => { actionContext.errorHandling.rethrow = true; @@ -59,16 +58,7 @@ export async function activate(context: vscode.ExtensionContext, perfStats: { lo }); }; - const onFailedRegistration = async (error: AzureResourcesApiRequestError) => { - await callWithTelemetryAndErrorHandling('hostApiRequestFailed', (actionContext: IActionContext) => { - actionContext.telemetry.properties.hostApiRequestErrorCode = error.code; - actionContext.telemetry.properties.hostApiRequestError = maskUserInfo(error.message, []); - ext.outputChannel.appendLog(localize('apiRequestError', 'Error: Failed to connect extension to the Azure Resources host.')); - ext.outputChannel.appendLog(JSON.stringify(error)); - }); - }; - - return createContainerAppsApiProvider(registerBranchResources, onFailedRegistration); + return createContainerAppsApiProvider(registerBranchResources); }) ?? createApiProvider([]); }