diff --git a/package-lock.json b/package-lock.json index d5f0977c..d76c09ff 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": "^3.5.1", + "@microsoft/vscode-azext-utils": "file:../vscode-azuretools/utils/microsoft-vscode-azext-utils-4.0.2.tgz", "@microsoft/vscode-azureresources-api": "^2.6.3", "@vscode/codicons": "0.0.38", "buffer": "^6.0.3", @@ -2525,6 +2525,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/@microsoft/vscode-azext-azureutils/-/vscode-azext-azureutils-3.5.2.tgz", "integrity": "sha512-0jAkM2jAdrVq+lR5yNNQnL/O7Vp6yQo5l0oAyVcddp6WB2bUQrWUUZo1YeTaWl/23MMadWtFmhM4RRJPGWoYoQ==", + "license": "MIT", "dependencies": { "@azure/arm-authorization": "^9.0.0", "@azure/arm-authorization-profile-2020-09-01-hybrid": "^2.1.0", @@ -2545,8 +2546,97 @@ "@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/@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", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -2709,10 +2799,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 +2819,74 @@ "@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/@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,10 +2894,53 @@ "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.2", + "resolved": "file:../vscode-azuretools/utils/microsoft-vscode-azext-utils-4.0.2.tgz", + "integrity": "sha512-5r7QaInfYnjc6OZDmOvFnQFee0t3cpqWs2JWGLdhsuy0K/7PT66EUZB8z10u9lpf8x1SyVGDUx894Rl1mK+qVQ==", + "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/@microsoft/vscode-azureresources-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@microsoft/vscode-azureresources-api/-/vscode-azureresources-api-3.0.0.tgz", + "integrity": "sha512-IfivhAfLjUQtIJa3kqfZPJanb9m3XVBgRmYrFQtnRp6GWeKGKhkyMC44MunodtX0k4C7A1LmG3lM4z38sxCcpQ==", + "license": "MIT", + "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==", + "license": "MIT", + "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", @@ -3027,17 +3220,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 +5876,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 +6084,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 +6130,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 +7718,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": { @@ -8423,6 +8707,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, @@ -9052,7 +9345,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", @@ -9105,6 +9399,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", @@ -9125,7 +9420,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", @@ -9543,12 +9839,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" @@ -9633,6 +9930,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, @@ -10013,12 +10319,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" @@ -10318,6 +10626,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" } @@ -10537,11 +10846,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 d34e65e7..d3cbecb4 100644 --- a/package.json +++ b/package.json @@ -874,7 +874,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": "^3.5.1", + "@microsoft/vscode-azext-utils": "file:../vscode-azuretools/utils/microsoft-vscode-azext-utils-4.0.2.tgz", "@microsoft/vscode-azureresources-api": "^2.6.3", "@vscode/codicons": "0.0.38", "buffer": "^6.0.3", diff --git a/src/commands/createContainerApp/ContainerAppListStep.ts b/src/commands/createContainerApp/ContainerAppListStep.ts index af0ff68c..7f8eb7ad 100644 --- a/src/commands/createContainerApp/ContainerAppListStep.ts +++ b/src/commands/createContainerApp/ContainerAppListStep.ts @@ -5,7 +5,7 @@ import { type ContainerApp, type ContainerAppsAPIClient } from "@azure/arm-appcontainers"; import { LocationListStep, parseAzureResourceId, ResourceGroupListStep, uiUtils } from "@microsoft/vscode-azext-azureutils"; -import { AzureWizardPromptStep, nonNullProp, type AzureWizardExecuteStep, type IAzureQuickPickItem, type IWizardOptions } from "@microsoft/vscode-azext-utils"; +import { AzureWizardPromptStep, nonNullProp, nonNullValueAndProp, type AzureWizardExecuteStep, type ConfirmationViewProperty, type IAzureQuickPickItem, type IWizardOptions } from "@microsoft/vscode-azext-utils"; import { containerAppProvider, containerAppResourceType } from "../../constants"; import { ContainerAppItem } from "../../tree/ContainerAppItem"; import { createContainerAppsAPIClient } from "../../utils/azureClients"; @@ -59,6 +59,14 @@ export class ContainerAppListStep extends A return !context.containerApp && !context.newContainerAppName; } + public confirmationViewProperty(context: T): ConfirmationViewProperty { + return { + name: localize('containerApp', 'Container App'), + value: nonNullValueAndProp(context.containerApp, 'name'), + contextPropertyName: 'containerApp', + } + } + private async getPicks(context: T): Promise[]> { const client: ContainerAppsAPIClient = await createContainerAppsAPIClient(context); @@ -72,7 +80,7 @@ export class ContainerAppListStep extends A } if (context.managedEnvironment) { - containerApps = containerApps.filter(ca => ca.managedEnvironmentId === context.managedEnvironment.id); + containerApps = containerApps.filter(ca => ca.managedEnvironmentId === context.managedEnvironment?.id); } return containerApps.map(ca => { diff --git a/src/commands/createManagedEnvironment/ManagedEnvironmentListStep.ts b/src/commands/createManagedEnvironment/ManagedEnvironmentListStep.ts index 5377b32e..998d7c2f 100644 --- a/src/commands/createManagedEnvironment/ManagedEnvironmentListStep.ts +++ b/src/commands/createManagedEnvironment/ManagedEnvironmentListStep.ts @@ -7,7 +7,7 @@ import { type ContainerAppsAPIClient, type ManagedEnvironment } from "@azure/arm import { type Workspace } from "@azure/arm-operationalinsights"; import { type ResourceGroup } from "@azure/arm-resources"; import { getResourceGroupFromId, LocationListStep, ResourceGroupListStep, uiUtils } from "@microsoft/vscode-azext-azureutils"; -import { AzureWizardPromptStep, nonNullProp, type AzureWizardExecuteStep, type IAzureQuickPickItem, type ISubscriptionActionContext, type IWizardOptions } from "@microsoft/vscode-azext-utils"; +import { AzureWizardPromptStep, nonNullProp, nonNullValueAndProp, type AzureWizardExecuteStep, type ConfirmationViewProperty, type IAzureQuickPickItem, type ISubscriptionActionContext, type IWizardOptions } from "@microsoft/vscode-azext-utils"; import { logAnalyticsProvider, logAnalyticsResourceType, managedEnvironmentProvider, managedEnvironmentResourceType } from "../../constants"; import { createContainerAppsAPIClient } from "../../utils/azureClients"; import { localize } from "../../utils/localize"; @@ -57,6 +57,14 @@ export class ManagedEnvironmentListStep { const client: ContainerAppsAPIClient = await createContainerAppsAPIClient(context); diff --git a/src/commands/deployContainerApp/deployContainerApp.ts b/src/commands/deployContainerApp/deployContainerApp.ts index 7e0b6568..cd6786e6 100644 --- a/src/commands/deployContainerApp/deployContainerApp.ts +++ b/src/commands/deployContainerApp/deployContainerApp.ts @@ -4,7 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { KnownActiveRevisionsMode } from "@azure/arm-appcontainers"; -import { AzureWizard, CopilotUserInput, createSubscriptionContext, nonNullProp, type AzureWizardPromptStep, type IActionContext, type ISubscriptionActionContext, type ISubscriptionContext } from "@microsoft/vscode-azext-utils"; +import { AzureWizard, createSubscriptionContext, nonNullProp, type AzureWizardPromptStep, type IActionContext, type ISubscriptionActionContext, type ISubscriptionContext } from "@microsoft/vscode-azext-utils"; +import { type AzureSubscription } from "@microsoft/vscode-azureresources-api"; import { ImageSource } from "../../constants"; import { type ContainerAppItem } from "../../tree/ContainerAppItem"; import { createActivityContext } from "../../utils/activityUtils"; @@ -14,9 +15,11 @@ import { getVerifyProvidersStep } from "../../utils/getVerifyProvidersStep"; import { localize } from "../../utils/localize"; import { pickContainerApp } from "../../utils/pickItem/pickContainerApp"; import { OpenConfirmationViewStep } from "../../webviews/OpenConfirmationViewStep"; -import { OpenLoadingViewStep } from "../../webviews/OpenLoadingViewStep"; +import { openLoadingViewPanel } from "../../webviews/OpenLoadingViewStep"; import { CommandAttributes } from "../CommandAttributes"; import { ContainerAppOverwriteConfirmStep } from "../ContainerAppOverwriteConfirmStep"; +import { ContainerAppListStep } from "../createContainerApp/ContainerAppListStep"; +import { ManagedEnvironmentListStep } from "../createManagedEnvironment/ManagedEnvironmentListStep"; import { deployWorkspaceProject } from "../deployWorkspaceProject/deployWorkspaceProject"; import { type DeployWorkspaceProjectResults } from "../deployWorkspaceProject/getDeployWorkspaceProjectResults"; import { editContainerCommandName } from "../editContainer/editContainer"; @@ -45,29 +48,58 @@ export async function deployContainerApp(context: IActionContext, node?: Contain return await deployWorkspaceProject(context, item); } - const wizardContext: ContainerAppDeployContext = { - ...subscriptionActionContext, - ...await createActivityContext({ withChildren: true }), - subscription: item.subscription, - containerApp: item.containerApp, - managedEnvironment: await getManagedEnvironmentFromContainerApp(subscriptionActionContext, item.containerApp), - imageSource, - activityAttributes: CommandAttributes.DeployContainerAppContainerRegistry, - }; - - if (isAzdExtensionInstalled()) { - wizardContext.telemetry.properties.isAzdExtensionInstalled = 'true'; + return await deployContainerAppInternal(subscriptionActionContext, item, imageSource); +} + +export async function deployContainerAppInternal(context: ISubscriptionActionContext, node?: ContainerAppItem, imageSource?: ImageSource, subscription?: AzureSubscription): Promise { + if (isCopilotUserInput(context)) { + await openLoadingViewPanel(context); + } + + const promptSteps: AzureWizardPromptStep[] = []; + + if (!node) { + promptSteps.push(new ManagedEnvironmentListStep(), new ContainerAppListStep()); + } + + let wizardContext: ContainerAppDeployContext = {} as ContainerAppDeployContext; + + if (context.subscriptionId && node && imageSource) { + // If this command gets re run we only want the internal portion of the command to run, so we set the callbackid + context.callbackId = 'containerApps.deployContainerAppInternal'; + wizardContext = { + ...context, + ...await createActivityContext({ withChildren: true }), + subscription: node.subscription, + containerApp: node.containerApp, + managedEnvironment: await getManagedEnvironmentFromContainerApp(context, node.containerApp), + imageSource, + activityAttributes: { + ...CommandAttributes.DeployContainerAppContainerRegistry, + subscription: node.subscription, + }, + }; + + if (isAzdExtensionInstalled()) { + wizardContext.telemetry.properties.isAzdExtensionInstalled = 'true'; + } + wizardContext.telemetry.properties.revisionMode = node.containerApp.revisionsMode; + } else if (context.subscriptionId && subscription) { + wizardContext = { + ...context, + ...await createActivityContext({ withChildren: true }), + subscription: subscription, + //at the moment we are only supporting re run with container registry image source + imageSource: ImageSource.ContainerRegistry + } } - wizardContext.telemetry.properties.revisionMode = item.containerApp.revisionsMode; const confirmationViewTitle: string = localize('summary', 'Summary'); let confirmationViewDescription: string = localize('viewDescription', 'Please select an input you would like to change. Note: Any input proceeding the changed input will need to change as well'); let confirmationViewTabTitle: string = localize('deployContainerAppTabTitle', 'Summary - Deploy Image to Container App'); let title: string = localize('deployContainerAppTitle', 'Deploy image to container app'); - const promptSteps: AzureWizardPromptStep[] = [] - if (wizardContext.ui instanceof CopilotUserInput) { - promptSteps.push(new OpenLoadingViewStep()); + if (isCopilotUserInput(wizardContext)) { confirmationViewDescription = localize('viewDescription', 'Please review AI generated inputs and select any you would like to modify. Note: Any input proceeding the modified input will need to change as well'); confirmationViewTabTitle = localize('deployContainerAppTabTitle', 'Summary - Deploy Image to Container App using Copilot'); title = localize('deployContainerAppWithCopilotTitle', 'Deploy image to container app using copilot'); @@ -105,3 +137,7 @@ async function promptImageSource(context: ISubscriptionActionContext): Promise extends AzureWizardPromptStep { diff --git a/src/webviews/OpenLoadingViewStep.ts b/src/webviews/OpenLoadingViewStep.ts index c706e596..d05d3dae 100644 --- a/src/webviews/OpenLoadingViewStep.ts +++ b/src/webviews/OpenLoadingViewStep.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.md in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { AzureWizardPromptStep, type IActionContext } from "@microsoft/vscode-azext-utils"; +import { AzureWizardPromptStep, runGenericPromptStep, type IActionContext } from "@microsoft/vscode-azext-utils"; import * as vscode from 'vscode'; import { localize } from "../utils/localize"; import { LoadingViewController } from "./LoadingViewController"; @@ -20,3 +20,11 @@ export class OpenLoadingViewStep extends AzureWizardPr return true; } } + +export async function openLoadingViewPanel(context: IActionContext): Promise { + const promptSteps: AzureWizardPromptStep[] = [new OpenLoadingViewStep()]; + + return await runGenericPromptStep(context, { + promptSteps + }); +}