diff --git a/common/autoinstallers/rush-plugins/package.json b/common/autoinstallers/rush-plugins/package.json index 126239bc09f..a5bb132b557 100644 --- a/common/autoinstallers/rush-plugins/package.json +++ b/common/autoinstallers/rush-plugins/package.json @@ -8,7 +8,7 @@ "fast-xml-builder": "1.1.7", "minimatch": "3.1.5", "brace-expansion": "1.1.13", - "undici": "6.24.0" + "undici": "6.27.0" } }, "dependencies": { diff --git a/common/autoinstallers/rush-plugins/pnpm-lock.yaml b/common/autoinstallers/rush-plugins/pnpm-lock.yaml index d3629b16c91..f4a1ce317ba 100644 --- a/common/autoinstallers/rush-plugins/pnpm-lock.yaml +++ b/common/autoinstallers/rush-plugins/pnpm-lock.yaml @@ -9,7 +9,7 @@ overrides: fast-xml-builder: 1.1.7 minimatch: 3.1.5 brace-expansion: 1.1.13 - undici: 6.24.0 + undici: 6.27.0 importers: @@ -51,8 +51,8 @@ packages: resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==} engines: {node: '>=20.0.0'} - '@azure/core-client@1.10.1': - resolution: {integrity: sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==} + '@azure/core-client@1.10.2': + resolution: {integrity: sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ==} engines: {node: '>=20.0.0'} '@azure/core-http-compat@2.4.0': @@ -70,8 +70,8 @@ packages: resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} engines: {node: '>=18.0.0'} - '@azure/core-rest-pipeline@1.23.0': - resolution: {integrity: sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==} + '@azure/core-rest-pipeline@1.24.0': + resolution: {integrity: sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==} engines: {node: '>=20.0.0'} '@azure/core-tracing@1.3.1': @@ -90,19 +90,19 @@ packages: resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} engines: {node: '>=20.0.0'} - '@azure/storage-blob@12.31.0': - resolution: {integrity: sha512-DBgNv10aCSxopt92DkTDD0o9xScXeBqPKGmR50FPZQaEcH4JLQ+GEOGEDv19V5BMkB7kxr+m4h6il/cCDPvmHg==} + '@azure/storage-blob@12.32.0': + resolution: {integrity: sha512-80LzSNnFQye2LCCBFghAJS6jJQJ7N4bfgZ6qDMgVGRtugZ7TLDKQZ2hczMigmZH3jAcMRdma/IygsC5+0gT7Tw==} engines: {node: '>=20.0.0'} - '@azure/storage-common@12.3.0': - resolution: {integrity: sha512-/OFHhy86aG5Pe8dP5tsp+BuJ25JOAl9yaMU3WZbkeoiFMHFtJ7tu5ili7qEdBXNW9G5lDB19trwyI6V49F/8iQ==} + '@azure/storage-common@12.4.0': + resolution: {integrity: sha512-kNhJKMxQb374KOVt63CZnGIpDcrKNzJeyANLJymxE9mCJSdRGzb+Iv9oSIiCj6tNMLypr530b9ObOiA/5OvwOg==} engines: {node: '>=20.0.0'} '@gigara/rush-github-action-build-cache-plugin@1.1.8': resolution: {integrity: sha512-lkZbhG11/26hibbfNoEyCN2L2GcpY1YzO6rsEWozcOmxVct82Hr7xKspmwUavo4dpA38FlJQMqBM3w5kz/uVAg==} - '@nodable/entities@2.1.0': - resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==} + '@nodable/entities@2.2.0': + resolution: {integrity: sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==} '@protobuf-ts/runtime-rpc@2.11.1': resolution: {integrity: sha512-4CqqUmNA+/uMz00+d3CYKgElXO9VrEbucjnBFEjqI4GuDrEQ32MaI3q+9qPBvIGOlL4PmHXrzM32vBPWRhQKWQ==} @@ -110,14 +110,17 @@ packages: '@protobuf-ts/runtime@2.11.1': resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} - '@typespec/ts-http-runtime@0.3.5': - resolution: {integrity: sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==} + '@typespec/ts-http-runtime@0.3.6': + resolution: {integrity: sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==} engines: {node: '>=20.0.0'} agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} + anynum@1.0.1: + resolution: {integrity: sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -161,16 +164,16 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - path-expression-matcher@1.5.0: - resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} + path-expression-matcher@1.6.0: + resolution: {integrity: sha512-e5y7RCLHKjemsgQ4eqGJtPyr10ILz25HO7flzxhTV8bgvd5yHx98DGtCAtbVW9f2TqnYI/gEVZd+vz7snrdPTw==} engines: {node: '>=14.0.0'} semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - strnum@2.3.0: - resolution: {integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==} + strnum@2.4.1: + resolution: {integrity: sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg==} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -179,8 +182,8 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - undici@6.24.0: - resolution: {integrity: sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA==} + undici@6.27.0: + resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==} engines: {node: '>=18.17'} snapshots: @@ -193,8 +196,8 @@ snapshots: '@actions/http-client': 3.0.2 '@actions/io': 2.0.0 '@azure/abort-controller': 1.1.0 - '@azure/core-rest-pipeline': 1.23.0 - '@azure/storage-blob': 12.31.0 + '@azure/core-rest-pipeline': 1.24.0 + '@azure/storage-blob': 12.32.0 '@protobuf-ts/runtime-rpc': 2.11.1 semver: 6.3.1 transitivePeerDependencies: @@ -217,7 +220,7 @@ snapshots: '@actions/http-client@3.0.2': dependencies: tunnel: 0.0.6 - undici: 6.24.0 + undici: 6.27.0 '@actions/io@2.0.0': {} @@ -237,11 +240,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@azure/core-client@1.10.1': + '@azure/core-client@1.10.2': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 - '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-rest-pipeline': 1.24.0 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 @@ -249,11 +252,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@azure/core-http-compat@2.4.0(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0)': + '@azure/core-http-compat@2.4.0(@azure/core-client@1.10.2)(@azure/core-rest-pipeline@1.24.0)': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-client': 1.10.1 - '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-client': 1.10.2 + '@azure/core-rest-pipeline': 1.24.0 '@azure/core-lro@2.7.2': dependencies: @@ -268,14 +271,14 @@ snapshots: dependencies: tslib: 2.8.1 - '@azure/core-rest-pipeline@1.23.0': + '@azure/core-rest-pipeline@1.24.0': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 - '@typespec/ts-http-runtime': 0.3.5 + '@typespec/ts-http-runtime': 0.3.6 tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -287,7 +290,7 @@ snapshots: '@azure/core-util@1.13.1': dependencies: '@azure/abort-controller': 2.1.2 - '@typespec/ts-http-runtime': 0.3.5 + '@typespec/ts-http-runtime': 0.3.6 tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -299,36 +302,36 @@ snapshots: '@azure/logger@1.3.0': dependencies: - '@typespec/ts-http-runtime': 0.3.5 + '@typespec/ts-http-runtime': 0.3.6 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/storage-blob@12.31.0': + '@azure/storage-blob@12.32.0': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 - '@azure/core-client': 1.10.1 - '@azure/core-http-compat': 2.4.0(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0) + '@azure/core-client': 1.10.2 + '@azure/core-http-compat': 2.4.0(@azure/core-client@1.10.2)(@azure/core-rest-pipeline@1.24.0) '@azure/core-lro': 2.7.2 '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-rest-pipeline': 1.24.0 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/core-xml': 1.5.1 '@azure/logger': 1.3.0 - '@azure/storage-common': 12.3.0(@azure/core-client@1.10.1) + '@azure/storage-common': 12.4.0(@azure/core-client@1.10.2) events: 3.3.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/storage-common@12.3.0(@azure/core-client@1.10.1)': + '@azure/storage-common@12.4.0(@azure/core-client@1.10.2)': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 - '@azure/core-http-compat': 2.4.0(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0) - '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-http-compat': 2.4.0(@azure/core-client@1.10.2)(@azure/core-rest-pipeline@1.24.0) + '@azure/core-rest-pipeline': 1.24.0 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 @@ -345,7 +348,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@nodable/entities@2.1.0': {} + '@nodable/entities@2.2.0': {} '@protobuf-ts/runtime-rpc@2.11.1': dependencies: @@ -353,7 +356,7 @@ snapshots: '@protobuf-ts/runtime@2.11.1': {} - '@typespec/ts-http-runtime@0.3.5': + '@typespec/ts-http-runtime@0.3.6': dependencies: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -363,6 +366,8 @@ snapshots: agent-base@7.1.4: {} + anynum@1.0.1: {} + balanced-match@1.0.2: {} brace-expansion@1.1.13: @@ -380,14 +385,14 @@ snapshots: fast-xml-builder@1.1.7: dependencies: - path-expression-matcher: 1.5.0 + path-expression-matcher: 1.6.0 fast-xml-parser@5.7.0: dependencies: - '@nodable/entities': 2.1.0 + '@nodable/entities': 2.2.0 fast-xml-builder: 1.1.7 - path-expression-matcher: 1.5.0 - strnum: 2.3.0 + path-expression-matcher: 1.6.0 + strnum: 2.4.1 http-proxy-agent@7.0.2: dependencies: @@ -409,14 +414,16 @@ snapshots: ms@2.1.3: {} - path-expression-matcher@1.5.0: {} + path-expression-matcher@1.6.0: {} semver@6.3.1: {} - strnum@2.3.0: {} + strnum@2.4.1: + dependencies: + anynum: 1.0.1 tslib@2.8.1: {} tunnel@0.0.6: {} - undici@6.24.0: {} + undici@6.27.0: {} diff --git a/common/config/rush/pnpm-config.json b/common/config/rush/pnpm-config.json index d4a5f1da1c7..434f77fc829 100644 --- a/common/config/rush/pnpm-config.json +++ b/common/config/rush/pnpm-config.json @@ -101,7 +101,9 @@ "markdown-it": ">=14.2.0", "protobufjs": ">=7.6.3 <8", "tmp": ">=0.2.7", - "webpack-dev-server": ">=5.2.5" + "webpack-dev-server": ">=5.2.5", + "undici": ">=7.28.0", + "http-proxy-middleware": ">=3.0.6" }, /** diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 2b9094d261e..df58220aab8 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -18,6 +18,8 @@ overrides: protobufjs: '>=7.6.3 <8' tmp: '>=0.2.7' webpack-dev-server: '>=5.2.5' + undici: '>=7.28.0' + http-proxy-middleware: '>=3.0.6' pnpmfileChecksum: sha256-XTeZQwJtKk4dimqf7175GhJCXrnq3Yh7+kwb86Bwcdo= @@ -10582,9 +10584,6 @@ packages: '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/http-proxy@1.17.17': - resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} - '@types/is-function@1.0.3': resolution: {integrity: sha512-/CLhCW79JUeLKznI6mbVieGbl4QU5Hfn+6udw1YHZoofASjbQ5zaP5LzAUZYDpRYEjS4/P+DhEgyJ/PQmGGTWw==} @@ -15518,14 +15517,9 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} - http-proxy-middleware@2.0.9: - resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true + http-proxy-middleware@4.1.1: + resolution: {integrity: sha512-KX5ZofGXLFXqFAkQoOWZ+rTtaLTut7m0gyL+QzJrdejtIZ+F4bPPDoe7reISg2+v0CAz5OfVwEJEhty7X+e57g==} + engines: {node: ^22.15.0 || ^24.0.0 || >=26.0.0} http-proxy@1.18.1: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} @@ -15555,6 +15549,9 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} + httpxy@0.5.3: + resolution: {integrity: sha512-SMS9V6Sn7VWaS11lYhoAr0ceoaiolTWf4jYdJn0NJhCdKMu9R2H9Fh0LBDWBHQF6HRLI1PmaePYsjanSpE5PEw==} + human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} @@ -15980,10 +15977,6 @@ packages: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -21933,9 +21926,9 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@7.24.0: - resolution: {integrity: sha512-jxytwMHhsbdpBXxLAcuu0fzlQeXCNnWdDyRHpvWsUl8vd98UwYdl9YTyn8/HcpcJPC3pwUveefsa3zTxyD/ERg==} - engines: {node: '>=20.18.1'} + undici@8.5.0: + resolution: {integrity: sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==} + engines: {node: '>=22.19.0'} unfetch@4.2.0: resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} @@ -34683,10 +34676,6 @@ snapshots: '@types/http-errors@2.0.5': {} - '@types/http-proxy@1.17.17': - dependencies: - '@types/node': 20.19.17 - '@types/is-function@1.0.3': {} '@types/istanbul-lib-coverage@2.0.6': {} @@ -37520,7 +37509,7 @@ snapshots: parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.24.0 + undici: 8.5.0 whatwg-mimetype: 4.0.0 chokidar@2.1.8: @@ -41272,17 +41261,15 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.25): + http-proxy-middleware@4.1.1: dependencies: - '@types/http-proxy': 1.17.17 - http-proxy: 1.18.1 + debug: 4.4.3(supports-color@8.1.1) + httpxy: 0.5.3 is-glob: 4.0.3 - is-plain-obj: 3.0.0 + is-plain-obj: 4.1.0 micromatch: 4.0.8 - optionalDependencies: - '@types/express': 4.17.25 transitivePeerDependencies: - - debug + - supports-color http-proxy@1.18.1: dependencies: @@ -41338,6 +41325,8 @@ snapshots: transitivePeerDependencies: - supports-color + httpxy@0.5.3: {} + human-signals@1.1.1: {} human-signals@2.1.0: {} @@ -41679,8 +41668,6 @@ snapshots: is-plain-obj@2.1.0: {} - is-plain-obj@3.0.0: {} - is-plain-obj@4.1.0: {} is-plain-object@2.0.4: @@ -50347,7 +50334,7 @@ snapshots: undici-types@6.21.0: {} - undici@7.24.0: {} + undici@8.5.0: {} unfetch@4.2.0: {} @@ -51304,7 +51291,7 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.22.1 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.25) + http-proxy-middleware: 4.1.1 ipaddr.js: 2.4.0 launch-editor: 2.14.1 open: 10.2.0 @@ -51321,7 +51308,6 @@ snapshots: webpack-cli: 4.10.0(webpack-dev-server@5.2.5)(webpack@5.104.1) transitivePeerDependencies: - bufferutil - - debug - supports-color - utf-8-validate optional: true @@ -51344,7 +51330,7 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.22.1 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.25) + http-proxy-middleware: 4.1.1 ipaddr.js: 2.4.0 launch-editor: 2.14.1 open: 10.2.0 @@ -51361,7 +51347,6 @@ snapshots: webpack-cli: 5.1.4(webpack-dev-server@5.2.5)(webpack@5.104.1) transitivePeerDependencies: - bufferutil - - debug - supports-color - utf-8-validate @@ -51383,7 +51368,7 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.22.1 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.25) + http-proxy-middleware: 4.1.1 ipaddr.js: 2.4.0 launch-editor: 2.14.1 open: 10.2.0 @@ -51400,7 +51385,6 @@ snapshots: webpack-cli: 6.0.1(webpack-dev-server@5.2.5)(webpack@5.104.1) transitivePeerDependencies: - bufferutil - - debug - supports-color - utf-8-validate @@ -51422,7 +51406,7 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.22.1 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.25) + http-proxy-middleware: 4.1.1 ipaddr.js: 2.4.0 launch-editor: 2.14.1 open: 10.2.0 @@ -51438,7 +51422,6 @@ snapshots: webpack: 5.104.1(webpack-cli@5.1.4) transitivePeerDependencies: - bufferutil - - debug - supports-color - utf-8-validate optional: true diff --git a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/run-concurrent/run-concurrent.spec.ts b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/run-concurrent/run-concurrent.spec.ts index 677513e93f8..a6878269b6a 100644 --- a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/run-concurrent/run-concurrent.spec.ts +++ b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/run-concurrent/run-concurrent.spec.ts @@ -47,7 +47,7 @@ async function waitForWorkspaceTree(firstItem: string) { const projectExplorer = new ProjectExplorer(page.page); await projectExplorer.init().catch(() => undefined); await page.page - .locator(`div[role="treeitem"][aria-label='${firstItem}']`) + .locator(ProjectExplorer.treeItemSelector(firstItem)) .first() .waitFor({ timeout: 90000 }); } diff --git a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/run-conflict/run-conflict.spec.ts b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/run-conflict/run-conflict.spec.ts index 900e5a5d402..8566aa833f7 100644 --- a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/run-conflict/run-conflict.spec.ts +++ b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/run-conflict/run-conflict.spec.ts @@ -97,7 +97,7 @@ export default function createTests() { const projectExplorer = new ProjectExplorer(page.page); await projectExplorer.init().catch(() => undefined); await page.page - .locator(`div[role="treeitem"][aria-label='${DEFAULT_PROJECT_NAME}']`) + .locator(ProjectExplorer.treeItemSelector(DEFAULT_PROJECT_NAME)) .first() .waitFor({ timeout: 90000 }); diff --git a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/helpers/setup.ts b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/helpers/setup.ts index 10ef1899472..0606afab264 100644 --- a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/helpers/setup.ts +++ b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/helpers/setup.ts @@ -32,7 +32,7 @@ export const dataFolder = path.join(__dirname, '..', '..', '..', 'data'); const emptyProjectPath = path.join(__dirname, '..', '..', 'data', 'empty_project'); export const extensionsFolder = path.join(__dirname, '..', '..', '..', '..', 'vsix'); const repoRootExtensionsFolder = path.join(__dirname, '..', '..', '..', '..', '..', '..', '..'); -const vscodeVersion = 'latest'; +const vscodeVersion = '1.125.1'; const baseVsCodeProfileName = process.env.BI_E2E_PROFILE_NAME ?? `bi-test-profile-${process.pid}`; let vscodeLaunchAttempt = 0; export const resourcesFolder = path.join(__dirname, '..', '..', '..', 'test-resources'); diff --git a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/helpers/sidebar.ts b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/helpers/sidebar.ts index aaf7beb3b39..84dc36b1c5d 100644 --- a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/helpers/sidebar.ts +++ b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/helpers/sidebar.ts @@ -17,12 +17,30 @@ */ import { ExtendedPage } from "@wso2/playwright-vscode-tester"; -import { BI_SIDEBAR_VIEW_ID } from "./constants"; +import { BI_INTEGRATOR_LABEL, BI_SIDEBAR_VIEW_ID } from "./constants"; /** * Wait until BI extension sidebar tree container is available. + * + * After a window reload the BI view container is not guaranteed to be the + * active viewlet — newer VS Code versions don't reliably restore the last + * open view, so its DOM is absent and a passive wait would time out. We first + * actively open the WSO2 Integrator activity-bar view (mirroring how + * ProjectExplorer.init() opens it), then wait for its pane to attach. */ export async function waitForBISidebarTreeView(page: ExtendedPage, timeout: number = 30000): Promise { + try { + const activityTab = page.page.locator(`[role="tab"][aria-label="${BI_INTEGRATOR_LABEL}"]`).first(); + await activityTab.waitFor({ state: 'visible', timeout: Math.min(timeout, 15000) }); + const isActive = await activityTab.evaluate((el) => el.classList.contains('checked')).catch(() => false); + if (!isActive) { + await activityTab.click(); + } + } catch { + // Activity tab not ready yet; fall through to selector polling below, + // which throws with a detailed error if the view never appears. + } + const selectors = [ `div.composite.viewlet#${BI_SIDEBAR_VIEW_ID} div.monaco-pane-view`, `div.composite.viewlet[id^="${BI_SIDEBAR_VIEW_ID}"] div.monaco-pane-view`, diff --git a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/pages/ProjectExplorer.ts b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/pages/ProjectExplorer.ts index db66f7d38c9..23b9d04b549 100644 --- a/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/pages/ProjectExplorer.ts +++ b/workspaces/ballerina/ballerina-extension/e2e-test/e2e-playwright-tests/utils/pages/ProjectExplorer.ts @@ -26,6 +26,20 @@ export class ProjectExplorer { this.explorer = this.page.getByRole('tree').locator('div').first(); } + /** + * Builds a tree-item selector that tolerates VS Code appending a + * ", " suffix to the aria-label (behaviour introduced in + * newer VS Code versions). Matches either the exact label or the label + * followed by the ", " separator, so it works on old and new VS Code. + */ + public static treeItemSelector(label: string): string { + // Escape backslashes and double quotes so labels that themselves + // contain quotes (e.g. `RabbitMQ Event Integration - "myQueue"`) don't + // produce a malformed double-quoted CSS attribute selector. + const escaped = label.replace(/\\/g, '\\\\').replace(/"/g, '\\"'); + return `div[role="treeitem"][aria-label="${escaped}"], div[role="treeitem"][aria-label^="${escaped}, "]`; + } + public async init() { const wso2IntegratorActivityTab = this.page.locator(`[role="tab"][aria-label="${BI_INTEGRATOR_LABEL}"]`).first(); const isChecked = await wso2IntegratorActivityTab.evaluate((el) => el.classList.contains('checked')); @@ -38,7 +52,7 @@ export class ProjectExplorer { let currentItem; for (let i = 0; i < path.length; i++) { - currentItem = this.explorer.locator(`div[role="treeitem"][aria-label='${path[i]}']`); + currentItem = this.explorer.locator(ProjectExplorer.treeItemSelector(path[i])); await currentItem.waitFor({ timeout: 5000 }); } return currentItem; @@ -46,7 +60,7 @@ export class ProjectExplorer { public async goToOverview(projectName: string) { // wait for 1s - const projectExplorerRoot = this.explorer.locator(`div[role="treeitem"][aria-label="${projectName}"]`); + const projectExplorerRoot = this.explorer.locator(ProjectExplorer.treeItemSelector(projectName)); await projectExplorerRoot.waitFor(); await projectExplorerRoot.hover(); const locator = this.explorer.getByLabel('Open View'); diff --git a/workspaces/ballerina/ballerina-extension/package.json b/workspaces/ballerina/ballerina-extension/package.json index 78c37f853a9..9cf534916f5 100644 --- a/workspaces/ballerina/ballerina-extension/package.json +++ b/workspaces/ballerina/ballerina-extension/package.json @@ -2,7 +2,7 @@ "name": "ballerina", "displayName": "Ballerina", "description": "Ballerina Language support, debugging, graphical visualization, AI-based data-mapping and many more.", - "version": "5.12.0", + "version": "5.12.1", "publisher": "wso2", "icon": "resources/images/ballerina.png", "homepage": "https://wso2.com/ballerina/vscode/docs", diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/utils/ai-client.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/utils/ai-client.ts index ffdb55ea702..2c6b8922b2d 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/utils/ai-client.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/utils/ai-client.ts @@ -27,8 +27,10 @@ import { AIMachineEventType, AnthropicKeySecrets, LoginMethod, BIIntelSecrets } export const ANTHROPIC_HAIKU = "claude-haiku-4-5-20251001"; export const ANTHROPIC_SONNET_4 = "claude-sonnet-4-6"; -// TODO: add a quota request portal link once available so users can request more quota. -export const USAGE_LIMIT_EXCEEDED_MESSAGE = "Usage limit exceeded."; +// Contact for requesting more Copilot quota once the usage limit is reached. +export const QUOTA_REQUEST_CONTACT_EMAIL = "support@wso2.com"; +export const USAGE_LIMIT_EXCEEDED_MESSAGE = + `Usage limit exceeded. To request additional quota, contact ${QUOTA_REQUEST_CONTACT_EMAIL}.`; type AnthropicModel = | typeof ANTHROPIC_HAIKU diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/AIChat/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/AIChat/index.tsx index 43ef88b03ef..3a1d6600265 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/AIChat/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/AIChat/index.tsx @@ -97,6 +97,7 @@ const NO_DRIFT_FOUND = "No drift identified between the code and the documentati const DRIFT_CHECK_ERROR = "Failed to check drift between the code and the documentation. Please try again."; const USAGE_EXCEEDED_THRESHOLD_PERCENT = 3; +const QUOTA_CONTACT_EMAIL = "support@wso2.com"; //TODO: Add better error handling from backend. stream error type and non 200 status codes