diff --git a/.github/actions/package-lock.json b/.github/actions/package-lock.json index 2216a9f1b9..9d7e352279 100644 --- a/.github/actions/package-lock.json +++ b/.github/actions/package-lock.json @@ -9,8 +9,8 @@ "version": "1.0.0", "dependencies": { "@actions/core": "^1.9.1", - "@actions/github": "^5.0.3", - "@octokit/rest": "^19.0.3", + "@actions/github": "^6.0.0", + "@octokit/rest": "^21.1.1", "@slack/web-api": "^6.9.1", "applicationinsights": "^2.5.1", "axios": "^1.8.2", @@ -49,15 +49,15 @@ } }, "node_modules/@actions/github": { - "version": "5.1.1", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@actions/github/-/github-5.1.1.tgz", - "integrity": "sha1-QLm54TI6Xvz0/32t0z2OpRZRu8s=", + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@actions/github/-/github-6.0.0.tgz", + "integrity": "sha1-ZYg0M/nYFSG3gqZMwf1F7vIZHqc=", "license": "MIT", "dependencies": { - "@actions/http-client": "^2.0.1", - "@octokit/core": "^3.6.0", - "@octokit/plugin-paginate-rest": "^2.17.0", - "@octokit/plugin-rest-endpoint-methods": "^5.13.0" + "@actions/http-client": "^2.2.0", + "@octokit/core": "^5.0.1", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0" } }, "node_modules/@actions/http-client": { @@ -1269,285 +1269,312 @@ } }, "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha1-J8N+omwgXyhENAJHf/0mExHyHjY=", + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha1-QNID6oJ7nxf0KinGr7k7d0XvgMc=", "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3" + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha1-M3bLnzAI2bPREDcNkOCh/NX+YIU=", + "version": "5.2.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/core/-/core-5.2.1.tgz", + "integrity": "sha1-WMIaX2ie6B4LiDtap3Vzp/8bTqE=", "license": "MIT", "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha1-O01HpLDnmxAn+4111CIZKLLQVlg=", + "version": "9.0.6", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha1-EU2RIQj+aS2LE5z+f8CEbf0RtsA=", "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha1-Zk2bEcDhIRLL944Q9JoFlZqiLMM=", + "version": "7.1.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha1-ednz0Mlqj9E9ZBhv5cM2BtSLecw=", "license": "MIT", "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", + "@octokit/request": "^8.4.1", + "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha1-2lY41k8rkZvKic5mAtBZ8bUtPvA=", + "version": "24.2.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha1-PVXDLqwNONoacIOpw7DMp3kk99M=", "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha1-fxJTJ5d3VkDbuCJNpXfafcIQyH4=", + "version": "9.2.2", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz", + "integrity": "sha1-xRa8SYc2vNqpCVuaHRDZ0FAa6DE=", "license": "MIT", "dependencies": { - "@octokit/types": "^6.40.0" + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=2" + "@octokit/core": "5" } }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha1-XlDtcIOmE4FrHkooruxft/FGLoU=", + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha1-nsLaoAkO64Ze4UdjbgwA9zeQxuU=", + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha1-gQD7nu7f4IOq5mRzvZexW2Ku3LI=", "license": "MIT", - "peerDependencies": { - "@octokit/core": ">=3" + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha1-fui/WG35fdaGjPaPZBNU6QjCU0I=", + "version": "10.4.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha1-QbpHilWLn1VHkwdbLiDNLvlzvhc=", "license": "MIT", "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha1-nsLaoAkO64Ze4UdjbgwA9zeQxuU=", + "license": "MIT" + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha1-gQD7nu7f4IOq5mRzvZexW2Ku3LI=", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha1-GaAiUVpbupZawGydEzRRTrUMSLA=", + "version": "8.4.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha1-cVoBXM+ZMIeXfqQ2XER5H8RXJIY=", "license": "MIT", "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha1-nhUDV4Mb/HiNE6T9SxkT1gx01nc=", + "version": "5.1.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha1-uSGPnBFm5ou00MibY47cYskzSAU=", "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", + "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/rest": { - "version": "19.0.13", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/rest/-/rest-19.0.13.tgz", - "integrity": "sha1-55k5MmTtxtPGfu2p5b14Mtz5dOQ=", + "version": "21.1.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/rest/-/rest-21.1.1.tgz", + "integrity": "sha1-enBFXKRRsdJT5bcG81F4zu+3TeI=", "license": "MIT", "dependencies": { - "@octokit/core": "^4.2.1", - "@octokit/plugin-paginate-rest": "^6.1.2", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^7.1.2" + "@octokit/core": "^6.1.4", + "@octokit/plugin-paginate-rest": "^11.4.2", + "@octokit/plugin-request-log": "^5.3.1", + "@octokit/plugin-rest-endpoint-methods": "^13.3.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/rest/node_modules/@octokit/auth-token": { - "version": "3.0.4", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/auth-token/-/auth-token-3.0.4.tgz", - "integrity": "sha1-cOlBunQr3StJvbc5PoId6oUgo9s=", + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/auth-token/-/auth-token-5.1.2.tgz", + "integrity": "sha1-aKSGcU16f9HfVsubyJqGCg3oZt4=", "license": "MIT", "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/rest/node_modules/@octokit/core": { - "version": "4.2.4", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/core/-/core-4.2.4.tgz", - "integrity": "sha1-2HaewrQ/83zD6onsRoGiC6WO+Qc=", + "version": "6.1.4", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/core/-/core-6.1.4.tgz", + "integrity": "sha1-9cz5EcyVsc6dr23kJdFmQ5L4Z9s=", "license": "MIT", "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^5.0.0", + "@octokit/graphql": "^8.1.2", + "@octokit/request": "^9.2.1", + "@octokit/request-error": "^6.1.7", + "@octokit/types": "^13.6.2", + "before-after-hook": "^3.0.2", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/rest/node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha1-eR9l05N1VRQftsCPkdYYp9ZF8eI=", + "version": "10.1.3", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/endpoint/-/endpoint-10.1.3.tgz", + "integrity": "sha1-v+j/LsIT60IWBl53ZUv7ug/G1N4=", "license": "MIT", "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^13.6.2", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/rest/node_modules/@octokit/graphql": { - "version": "5.0.6", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/graphql/-/graphql-5.0.6.tgz", - "integrity": "sha1-nqxBGsQ1PMxdP8p9dnNuaIjF0kg=", + "version": "8.2.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/graphql/-/graphql-8.2.1.tgz", + "integrity": "sha1-DLg2AOa0AJgFrMHFaujgfmyZG3g=", "license": "MIT", "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^9.2.2", + "@octokit/types": "^13.8.0", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, - "node_modules/@octokit/rest/node_modules/@octokit/openapi-types": { - "version": "18.1.1", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", - "integrity": "sha1-Cb39q/2OFtFjJDJtpRSAENdl8Ak=", - "license": "MIT" - }, "node_modules/@octokit/rest/node_modules/@octokit/plugin-paginate-rest": { - "version": "6.1.2", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", - "integrity": "sha1-+GRWp6H+nlj+xjhahc8bNAcjQfg=", + "version": "11.6.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz", + "integrity": "sha1-5en/NTDoZ8ODf9v/lM4VokaKHzc=", "license": "MIT", "dependencies": { - "@octokit/tsconfig": "^1.0.2", - "@octokit/types": "^9.2.3" + "@octokit/types": "^13.10.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=4" + "@octokit/core": ">=6" } }, - "node_modules/@octokit/rest/node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "7.2.3", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz", - "integrity": "sha1-N6hLFxpstmWIFsgsQIKsNRICF5c=", + "node_modules/@octokit/rest/node_modules/@octokit/plugin-request-log": { + "version": "5.3.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz", + "integrity": "sha1-zLddlwXedpsqqCvNEFzJbrDAD2k=", "license": "MIT", - "dependencies": { - "@octokit/types": "^10.0.0" - }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": ">=6" } }, - "node_modules/@octokit/rest/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "10.0.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/types/-/types-10.0.0.tgz", - "integrity": "sha1-fuGcRk6kraMGxD8aRdREAA9Bmko=", + "node_modules/@octokit/rest/node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "13.5.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.5.0.tgz", + "integrity": "sha1-2MjKISOzBVlslZqRNN+osElbC6Y=", "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "@octokit/types": "^13.10.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=6" } }, "node_modules/@octokit/rest/node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha1-qvSAsyqyshDp2t2CcdGHyTFx2Os=", + "version": "9.2.2", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/request/-/request-9.2.2.tgz", + "integrity": "sha1-dURS7EaS1/3DJDihTgKOug5rLAk=", "license": "MIT", "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^10.1.3", + "@octokit/request-error": "^6.1.7", + "@octokit/types": "^13.6.2", + "fast-content-type-parse": "^2.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/rest/node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha1-7z3Qi46WTlPlXUcaz+ALqokrnGk=", + "version": "6.1.7", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/request-error/-/request-error-6.1.7.tgz", + "integrity": "sha1-RPxZj1zfRZPg5YtRVf4udyMP9to=", "license": "MIT", "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^13.6.2" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, - "node_modules/@octokit/rest/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha1-P1+JkDtp9qLRlteOw1+IjAATysU=", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^18.0.0" - } + "node_modules/@octokit/rest/node_modules/before-after-hook": { + "version": "3.0.2", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/before-after-hook/-/before-after-hook-3.0.2.tgz", + "integrity": "sha1-1WZaX6i2IpSlqgpJn5M/ShAWGV0=", + "license": "Apache-2.0" }, - "node_modules/@octokit/tsconfig": { - "version": "1.0.2", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", - "integrity": "sha1-WbAk1vPA7YLwDQjq1bN1BGkSWvc=", - "license": "MIT" + "node_modules/@octokit/rest/node_modules/universal-user-agent": { + "version": "7.0.2", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/universal-user-agent/-/universal-user-agent-7.0.2.tgz", + "integrity": "sha1-UufQ6bPcTfBswzyyuf15BBpUgn4=", + "license": "ISC" }, "node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha1-5Y73jXhZbS+335xiWYAkZLX4SgQ=", + "version": "13.10.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha1-PnxrGcAjbCcGVuTqZmFIwrUf0aM=", "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^12.11.0" + "@octokit/openapi-types": "^24.2.0" } }, "node_modules/@opentelemetry/api": { @@ -3709,6 +3736,22 @@ "node": ">=0.8.x" } }, + "node_modules/fast-content-type-parse": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz", + "integrity": "sha1-wjYSRTTuLLQnyNjlujWkhWlHhHs=", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4332,15 +4375,6 @@ "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha1-RCf1CrNCnpAl6n1S6QQ6nvQVk0Q=", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/is-stream/-/is-stream-1.1.0.tgz", @@ -4742,48 +4776,6 @@ "node": ">= 10.13" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha1-0PD6bj4twdJ+/NitmdVQvalNGH0=", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/normalize-path/-/normalize-path-3.0.0.tgz", diff --git a/.github/actions/package.json b/.github/actions/package.json index ec52778d4a..6ada8fda4f 100644 --- a/.github/actions/package.json +++ b/.github/actions/package.json @@ -11,8 +11,8 @@ "author": "", "dependencies": { "@actions/core": "^1.9.1", - "@actions/github": "^5.0.3", - "@octokit/rest": "^19.0.3", + "@actions/github": "^6.0.0", + "@octokit/rest": "^21.1.1", "@slack/web-api": "^6.9.1", "applicationinsights": "^2.5.1", "axios": "^1.8.2", diff --git a/Build/cg/cg.yml b/Build/cg/cg.yml index fae5d8d91f..129262e85a 100644 --- a/Build/cg/cg.yml +++ b/Build/cg/cg.yml @@ -84,35 +84,26 @@ extends: inputs: version: 18.x - - task: CmdLine@2 + - script: IF EXIST %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc del %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc displayName: Delete .npmrc if it exists - inputs: - script: IF EXIST %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc del %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc - task: Npm@0 - name: NpmInstall_2 displayName: Install vsce inputs: arguments: --global @vscode/vsce - - task: CmdLine@1 - name: ProcessRunner_11 + - script: mkdir $(Build.ArtifactStagingDirectory)\Extension displayName: Create Extension Staging Directory - inputs: - filename: mkdir - arguments: $(Build.ArtifactStagingDirectory)\Extension - script: yarn run vsix-prepublish displayName: Build files workingDirectory: $(Build.SourcesDirectory)\Extension - - task: CmdLine@1 + - script: | + cd $(Build.SourcesDirectory)\Extension + vsce package --yarn -o $(Build.ArtifactStagingDirectory)\Extension\cpptools.vsix name: ProcessRunner_12 displayName: Run VSCE to package vsix - inputs: - filename: vsce - arguments: package --yarn -o $(Build.ArtifactStagingDirectory)\Extension\cpptools.vsix - workingFolder: $(Build.SourcesDirectory)\Extension - task: Npm@0 displayName: Uninstall vsce diff --git a/Build/package/jobs_package_vsix.yml b/Build/package/jobs_package_vsix.yml index 60cf67580b..ec9713ade1 100644 --- a/Build/package/jobs_package_vsix.yml +++ b/Build/package/jobs_package_vsix.yml @@ -34,18 +34,13 @@ jobs: - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3 displayName: Use Yarn 1.x - - task: CmdLine@1 + - script: mkdir $(Build.ArtifactStagingDirectory)\vsix displayName: Create Staging Directory - inputs: - filename: mkdir - arguments: $(Build.ArtifactStagingDirectory)\vsix - - task: CmdLine@1 + - script: | + cd $(Build.SourcesDirectory)\${{ parameters.srcDir }} + vsce package -o $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }} displayName: Run VSCE to package vsix - inputs: - filename: vsce - arguments: package -o $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }} - workingFolder: $(Build.SourcesDirectory)\${{ parameters.srcDir }} - task: Npm@0 displayName: Uninstall vsce diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index b80daadf0a..2c9ddc6db0 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,19 @@ # C/C++ for Visual Studio Code Changelog +## Version 1.24.4: March 25, 2025 +### Enhancements +* Add a new `recursiveIncludes` property to `c_cpp_properties.json`. [PR #13374](https://github.com/microsoft/vscode-cpptools/pull/13374) +* Turn Copilot hover on by default. [PR #13385](https://github.com/microsoft/vscode-cpptools/pull/13385) +* On shutdown, immediately terminate the IntelliSense process instead of waiting 2 seconds. + +### Bug Fixes +* Fix one potential cause of the `get_mangled_function_name` IntelliSense process crash. [#13358](https://github.com/Microsoft/vscode-cpptools/issues/13358) +* Fix Copilot-related logging appearing when it shouldn't. [PR #13388](https://github.com/microsoft/vscode-cpptools/pull/13388) +* Fix relative compiler paths being expanded in `compile_commands.json`. [#13405](https://github.com/microsoft/vscode-cpptools/issues/13405) +* Fix all caps clang-format logging on Windows. [#13406](https://github.com/microsoft/vscode-cpptools/issues/13406) +* Fix an IntelliSense process crash in `handle_function`. +* Avoid reporting an error due to multiple `didOpen` requests after a crash. + ## Version 1.24.3: March 18, 2025 ### Enhancements * Add detected test frameworks to the Copilot context when `#cpp` is used. [PR #13285](https://github.com/microsoft/vscode-cpptools/pull/13285) diff --git a/Extension/c_cpp_properties.schema.json b/Extension/c_cpp_properties.schema.json index cd7e174d90..939cb8a344 100644 --- a/Extension/c_cpp_properties.schema.json +++ b/Extension/c_cpp_properties.schema.json @@ -180,7 +180,10 @@ "mergeConfigurations": { "markdownDescription": "Set to `true` to merge include paths, defines, and forced includes with those from a configuration provider.", "descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.", - "type": "boolean" + "type": [ + "boolean", + "string" + ] }, "browse": { "type": "object", @@ -208,6 +211,42 @@ }, "additionalProperties": false }, + "recursiveIncludes": { + "type": "object", + "properties": { + "reduce": { + "markdownDescription": "Set to `always` to always reduce the number of recursive include paths provided to IntelliSense to only those paths currently referenced by #include statements. This requires first parsing files to determine which headers are included. Set to `never` to provide all recursive include paths to IntelliSense. Reducing the number of recursive include paths may improve IntelliSense performance when a very large number of recursive include paths are involved. Not reducing the number of recursive include paths can improve IntelliSense performance by avoiding the need to parse files to determine which include paths to provide. The `default` value is currently to reduce the number of recursive include paths provided to IntelliSense.", + "descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.", + "type": "string", + "enum": [ + "always", + "never", + "default", + "${default}" + ] + }, + "priority": { + "markdownDescription": "The priority of recursive include paths. If set to `beforeSystemIncludes`, the recursive include paths will be searched before system include paths. If set to `afterSystemIncludes`, the recursive include paths will be searched after system include paths. `beforeSystemIncludes` would more closely reflect the search order of a compiler, while `afterSystemIncludes` may result in improved performance.", + "descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.", + "type": "string", + "enum": [ + "beforeSystemIncludes", + "afterSystemIncludes", + "${default}" + ] + }, + "order": { + "markdownDescription": "The order in which subdirectories of recursive includes are searched.", + "type": "string", + "enum": [ + "depthFirst", + "breadthFirst", + "${default}" + ] + } + }, + "additionalProperties": false + }, "customConfigurationVariables": { "type": "object", "markdownDescription": "Custom variables that can be queried through the command `${cpptools:activeConfigCustomVariable}` to use for the input variables in `launch.json` or `tasks.json`.", diff --git a/Extension/package.json b/Extension/package.json index 28174d3863..c8f354ce53 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.24.3-main", + "version": "1.24.4-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", @@ -897,6 +897,37 @@ "markdownDescription": "%c_cpp.configuration.default.dotConfig.markdownDescription%", "scope": "resource" }, + "C_Cpp.default.recursiveIncludes.reduce": { + "type": "string", + "enum": [ + "always", + "never", + "default" + ], + "default": "default", + "markdownDescription": "%c_cpp.configuration.default.recursiveIncludes.reduce.markdownDescription%", + "scope": "resource" + }, + "C_Cpp.default.recursiveIncludes.priority": { + "type": "string", + "enum": [ + "beforeSystemIncludes", + "afterSystemIncludes" + ], + "default": "afterSystemIncludes", + "markdownDescription": "%c_cpp.configuration.default.recursiveIncludes.priority.markdownDescription%", + "scope": "resource" + }, + "C_Cpp.default.recursiveIncludes.order": { + "type": "string", + "enum": [ + "depthFirst", + "breadthFirst" + ], + "default": "depthFirst", + "markdownDescription": "%c_cpp.configuration.default.recursiveIncludes.order.markdownDescription%", + "scope": "resource" + }, "C_Cpp.configurationWarnings": { "type": "string", "enum": [ @@ -3339,7 +3370,8 @@ "type": "string", "enum": [ "default", - "disabled" + "disabled", + "enabled" ], "default": "default", "markdownDescription": "%c_cpp.configuration.copilotHover.markdownDescription%", @@ -6580,7 +6612,6 @@ "gulp-typescript": "^5.0.1", "minimist": "^1.2.8", "mocha": "^10.4.0", - "parse-git-config": "^3.0.0", "parse5": "^7.1.2", "parse5-traverse": "^1.0.3", "proxyquire": "^2.1.3", diff --git a/Extension/package.nls.json b/Extension/package.nls.json index d8c3599a7b..6d9d9d2b5b 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -682,7 +682,7 @@ ] }, "c_cpp.configuration.default.mergeConfigurations.markdownDescription": { - "message": "Set to `true` to merge include paths, defines, and forced includes with those from a configuration provider.", + "message": "The value to use in a configuration if `mergeConfigurations` is either not specified or set to `${default}`.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] @@ -724,7 +724,25 @@ ] }, "c_cpp.configuration.default.dotConfig.markdownDescription": { - "message": "The value to use in a configuration if `dotConfig` is not specified, or the value to insert if `${default}` is present in `dotConfig`.", + "message": "The value to use in a configuration if `dotConfig` is either not specified or set to `${default}`.", + "comment": [ + "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + ] + }, + "c_cpp.configuration.default.recursiveIncludes.reduce.markdownDescription": { + "message": "The value to use in a configuration if `recursiveIncludes.reduce` is either not specified or set to `${default}`.", + "comment": [ + "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + ] + }, + "c_cpp.configuration.default.recursiveIncludes.priority.markdownDescription": { + "message": "The value to use in a configuration if `recursiveIncludes.priority` is either not specified or set to `${default}`.", + "comment": [ + "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + ] + }, + "c_cpp.configuration.default.recursiveIncludes.order.markdownDescription": { + "message": "The value to use in a configuration if `recursiveIncludes.order` is either not specified or set to `${default}`.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] diff --git a/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts b/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts index 06f22e5ac2..8a0038b373 100644 --- a/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts +++ b/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts @@ -33,7 +33,10 @@ export class CopilotHoverProvider implements vscode.HoverProvider { await this.client.ready; const settings: CppSettings = new CppSettings(vscode.workspace.getWorkspaceFolder(document.uri)?.uri); - if (settings.hover === "disabled") { + if (settings.hover === "disabled" || + settings.copilotHover === "disabled" || + (settings.copilotHover === "default" && await telemetry.isFlightEnabled("CppCopilotHoverDisabled"))) { + // Either disabled by the user or by the flight. return undefined; } @@ -46,13 +49,6 @@ export class CopilotHoverProvider implements vscode.HoverProvider { } } - if (new CppSettings().copilotHover === "default") { - // Check flight to make sure the feature is enabled. - if (!await telemetry.isFlightEnabled("CppCopilotHover")) { - return undefined; - } - } - const newHover = this.isNewHover(document, position); if (newHover) { this.reset(); diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 8a7ae0cec5..024e862b6b 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1332,17 +1332,9 @@ export class DefaultClient implements Client { initializedClientCount = 0; this.inlayHintsProvider = new InlayHintsProvider(); this.hoverProvider = new HoverProvider(this); + this.copilotHoverProvider = new CopilotHoverProvider(this); - const settings: CppSettings = new CppSettings(); - this.currentCopilotHoverEnabled = new PersistentWorkspaceState("cpp.copilotHover", settings.copilotHover); - if (settings.copilotHover !== "disabled") { - this.copilotHoverProvider = new CopilotHoverProvider(this); - this.disposables.push(vscode.languages.registerHoverProvider(util.documentSelector, instrument(this.copilotHoverProvider))); - } - - if (settings.copilotHover !== this.currentCopilotHoverEnabled.Value) { - this.currentCopilotHoverEnabled.Value = settings.copilotHover; - } + this.disposables.push(vscode.languages.registerHoverProvider(util.documentSelector, instrument(this.copilotHoverProvider))); this.disposables.push(vscode.languages.registerHoverProvider(util.documentSelector, instrument(this.hoverProvider))); this.disposables.push(vscode.languages.registerInlayHintsProvider(util.documentSelector, instrument(this.inlayHintsProvider))); this.disposables.push(vscode.languages.registerRenameProvider(util.documentSelector, instrument(new RenameProvider(this)))); @@ -1362,6 +1354,7 @@ export class DefaultClient implements Client { this.codeFoldingProvider = new FoldingRangeProvider(this); this.codeFoldingProviderDisposable = vscode.languages.registerFoldingRangeProvider(util.documentSelector, instrument(this.codeFoldingProvider)); + const settings: CppSettings = new CppSettings(); if (settings.isEnhancedColorizationEnabled && semanticTokensLegend) { this.semanticTokensProvider = instrument(new SemanticTokensProvider()); this.semanticTokensProviderDisposable = vscode.languages.registerDocumentSemanticTokensProvider(util.documentSelector, this.semanticTokensProvider, semanticTokensLegend); diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 8be51b0a70..ccd7723f9f 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -83,8 +83,9 @@ export interface Configuration { forcedInclude?: string[]; configurationProviderInCppPropertiesJson?: string; configurationProvider?: string; - mergeConfigurations?: boolean; + mergeConfigurations?: boolean | string; browse?: Browse; + recursiveIncludes?: RecursiveIncludes; customConfigurationVariables?: { [key: string]: string }; } @@ -107,6 +108,12 @@ export interface Browse { databaseFilename?: string; } +export interface RecursiveIncludes { + reduce?: string; + priority?: string; + order?: string; +} + export interface KnownCompiler { path: string; isC: boolean; @@ -813,13 +820,16 @@ export class CppProperties { return resolvedGlob; } - private updateConfigurationString(property: string | undefined | null, defaultValue: string | undefined | null, env: Environment, acceptBlank?: boolean): string | undefined { + private updateConfigurationString(property: string | undefined | null, defaultValue: string | undefined | null, env?: Environment, acceptBlank?: boolean): string | undefined { if (property === null || property === undefined || property === "${default}") { property = defaultValue; } if (property === null || property === undefined || (acceptBlank !== true && property === "")) { return undefined; } + if (env === undefined) { + return property; + } return util.resolveVariables(property, env); } @@ -843,21 +853,8 @@ export class CppProperties { return paths; } - private updateConfigurationStringOrBoolean(property: string | boolean | undefined | null, defaultValue: boolean | undefined | null, env: Environment): string | boolean | undefined { - if (!property || property === "${default}") { - property = defaultValue; - } - if (!property || property === "") { - return undefined; - } - if (typeof property === "boolean") { - return property; - } - return util.resolveVariables(property, env); - } - - private updateConfigurationBoolean(property: boolean | undefined | null, defaultValue: boolean | undefined | null): boolean | undefined { - if (property === null || property === undefined) { + private updateConfigurationBoolean(property: boolean | string | undefined | null, defaultValue: boolean | undefined | null): boolean | undefined { + if (property === null || property === undefined || property === "${default}") { property = defaultValue; } @@ -865,7 +862,7 @@ export class CppProperties { return undefined; } - return property; + return property === true || property === "true"; } private updateConfigurationStringDictionary(property: { [key: string]: string } | undefined, defaultValue: { [key: string]: string } | undefined, env: Environment): { [key: string]: string } | undefined { @@ -939,6 +936,12 @@ export class CppProperties { configuration.cStandardIsExplicit = configuration.cStandardIsExplicit || settings.defaultCStandard !== ""; configuration.cppStandardIsExplicit = configuration.cppStandardIsExplicit || settings.defaultCppStandard !== ""; configuration.mergeConfigurations = this.updateConfigurationBoolean(configuration.mergeConfigurations, settings.defaultMergeConfigurations); + if (!configuration.recursiveIncludes) { + configuration.recursiveIncludes = {}; + } + configuration.recursiveIncludes.reduce = this.updateConfigurationString(configuration.recursiveIncludes.reduce, settings.defaultRecursiveIncludesReduce); + configuration.recursiveIncludes.priority = this.updateConfigurationString(configuration.recursiveIncludes.priority, settings.defaultRecursiveIncludesPriority); + configuration.recursiveIncludes.order = this.updateConfigurationString(configuration.recursiveIncludes.order, settings.defaultRecursiveIncludesOrder); if (!configuration.compileCommands) { // compile_commands.json already specifies a compiler. compilerPath overrides the compile_commands.json compiler so // don't set a default when compileCommands is in use. @@ -1002,7 +1005,7 @@ export class CppProperties { configuration.browse.path = this.updateConfigurationPathsArray(configuration.browse.path, settings.defaultBrowsePath, env); } - configuration.browse.limitSymbolsToIncludedHeaders = this.updateConfigurationStringOrBoolean(configuration.browse.limitSymbolsToIncludedHeaders, settings.defaultLimitSymbolsToIncludedHeaders, env); + configuration.browse.limitSymbolsToIncludedHeaders = this.updateConfigurationBoolean(configuration.browse.limitSymbolsToIncludedHeaders, settings.defaultLimitSymbolsToIncludedHeaders); configuration.browse.databaseFilename = this.updateConfigurationString(configuration.browse.databaseFilename, settings.defaultDatabaseFilename, env); if (i === this.CurrentConfigurationIndex) { diff --git a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts index 14992e71a1..51396a9b12 100644 --- a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts +++ b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts @@ -197,7 +197,7 @@ export class CopilotCompletionContextProvider implements ContextResolver= endAddressPos) { - addressData += "Unexpected offset"; + addressData += "Unexpected offset\n"; } else { - addressData += line.substring(startAddressPos, endAddressPos); - } - continue; - } - const offsetPos: number = line.indexOf(offsetStr, startPos + startStr.length); - if (offsetPos === -1) { - crashCallStack += "\nMissing offsetStr"; - addressData += "\n"; - continue; // unexpected - } - const startPos2: number = startPos + 1; - let funcStr: string = line.substring(startPos2, offsetPos); - if (filtPath && filtPath.length !== 0) { - let ret: util.ProcessReturnType | undefined = await util.spawnChildProcess(filtPath, ["--no-strip-underscore", funcStr], undefined, true).catch(logAndReturn.undefined); - if (ret?.output === funcStr) { - ret = await util.spawnChildProcess(filtPath, [funcStr], undefined, true).catch(logAndReturn.undefined); - } - if (ret !== undefined && ret.succeeded && !ret.output.startsWith("Could not open input file")) { - funcStr = ret.output; - funcStr = funcStr.replace(/std::(?:__1|__cxx11)/g, "std"); // simplify std namespaces. - funcStr = funcStr.replace(/std::basic_/g, "std::"); - funcStr = funcStr.replace(/ >/g, ">"); - funcStr = funcStr.replace(/, std::(?:allocator|char_traits)/g, ""); - funcStr = funcStr.replace(//g, ""); - funcStr = funcStr.replace(/, std::allocator/g, ""); - } - } - if (containsFilteredTelemetryData(funcStr)) { - funcStr = "?"; - } else if (!validFrameFound && (funcStr.startsWith("crash_handler(") || funcStr.startsWith("_sigtramp"))) { - continue; // Skip these on early frames. - } - validFrameFound = true; - crashCallStack += "\n"; - addressData += "\n"; - crashCallStack += funcStr + offsetStr; - const offsetPos2: number = offsetPos + offsetStr.length; - if (isMac) { - const pendingOffset: string = line.substring(offsetPos2); - if (containsFilteredTelemetryData(pendingOffset)) { - crashCallStack += "?"; - } else { - crashCallStack += pendingOffset; - } - const startAddressPos: number = line.indexOf("0x"); - if (startAddressPos === -1 || startAddressPos >= startPos) { - // unexpected - crashCallStack += ""; - continue; + let pendingAddressData: string = line.substring(startAddressPos, endAddressPos) + "\n"; + if (containsFilteredTelemetryData(pendingAddressData)) { + pendingAddressData = "?\n"; + } + addressData += pendingAddressData; } - addressData += `${line.substring(startAddressPos, startPos)}`; } else { - const endPos: number = line.indexOf(">", offsetPos2); - if (endPos === -1) { - crashCallStack += " >"; - continue; // unexpected - } - const pendingOffset: string = line.substring(offsetPos2, endPos); - if (containsFilteredTelemetryData(pendingOffset)) { - crashCallStack += "?"; + const offsetPos: number = line.indexOf(offsetStr, startPos + startStr.length); + if (offsetPos === -1) { + pendingCallStack = "Missing offsetStr\n"; + addressData += "\n"; } else { - crashCallStack += pendingOffset; + const startPos2: number = startPos + 1; + let funcStr: string = line.substring(startPos2, offsetPos); + let origFuncStr: string = ""; + if (filtPath && filtPath.length !== 0) { + let ret: util.ProcessReturnType | undefined = await util.spawnChildProcess(filtPath, ["--no-strip-underscore", funcStr], undefined, true).catch(logAndReturn.undefined); + if (ret?.output === funcStr) { + ret = await util.spawnChildProcess(filtPath, [funcStr], undefined, true).catch(logAndReturn.undefined); + } + if (ret !== undefined && ret.succeeded && !ret.output.startsWith("Could not open input file")) { + origFuncStr = funcStr; + funcStr = ret.output; + funcStr = funcStr.replace(/std::(?:__1|__cxx11)/g, "std"); // simplify std namespaces. + funcStr = funcStr.replace(/std::basic_/g, "std::"); + funcStr = funcStr.replace(/ >/g, ">"); + funcStr = funcStr.replace(/, std::(?:allocator|char_traits)/g, ""); + funcStr = funcStr.replace(//g, ""); + funcStr = funcStr.replace(/, std::allocator/g, ""); + } + } + if (!validFrameFound && (funcStr.startsWith("crash_handler(") || funcStr.startsWith("_sigtramp"))) { + continue; // Skip these on early frames. + } + validFrameFound = true; + + let pendingOffset: string = offsetStr; + const offsetPos2: number = offsetPos + offsetStr.length; + // Compute pendingOffset. + if (isMac) { + pendingOffset += line.substring(offsetPos2); + const startAddressPos: number = line.indexOf("0x"); + if (startAddressPos === -1 || startAddressPos >= startPos) { + // unexpected + pendingOffset += ""; + addressData += "\n"; + } else { + let pendingAddressData: string = line.substring(startAddressPos, startPos) + "\n"; + if (containsFilteredTelemetryData(pendingAddressData)) { + pendingAddressData = "?\n"; + } + addressData += pendingAddressData; + } + } else { + const endPos: number = line.indexOf(">", offsetPos2); + if (endPos === -1) { + pendingOffset += " >"; // unexpected + } else { + pendingOffset += line.substring(offsetPos2, endPos); + } + addressData += "\n"; + // TODO: It seems like addressData should be obtained on Linux in case the function is filtered. + } + pendingOffset += "\n"; + pendingCallStack = funcStr + pendingOffset; + if (containsFilteredTelemetryData(pendingCallStack)) { + if (origFuncStr.length > 0 && origFuncStr !== funcStr) { + pendingCallStack = origFuncStr + pendingOffset; + if (containsFilteredTelemetryData(pendingCallStack)) { + pendingCallStack = "?\n"; + } + } else { + pendingCallStack = "?\n"; + } + } } } + if (data.length + crashCallStack.length + pendingCallStack.length > 8191) { // The API has an 8k limit. + crashCallStack += "…"; + break; + } + crashCallStack += pendingCallStack; } + crashCallStack = crashCallStack.trimEnd(); + addressData = addressData.trimEnd(); + if (crashCallStack !== prevCppCrashCallStackData) { prevCppCrashCallStackData = crashCallStack; if (lines.length >= 6 && util.getLoggingLevel() >= 1) { - getCrashCallStacksChannel().appendLine(`\n${isCppToolsSrv ? "cpptools-srv" : "cpptools"}\n${crashDate.toLocaleString()}\n${signalType}${crashCallStack}\n\n${crashLog}`); + getCrashCallStacksChannel().appendLine(`\n${isCppToolsSrv ? "cpptools-srv" : "cpptools"}\n${crashDate.toLocaleString()}\n${signalType}${crashCallStack}${crashLog.length > 0 ? "\n\n" + crashLog : ""}`); } } - data = telemetryHeader + signalType + crashCallStack; - - if (data.length > 8192) { // The API has an 8k limit. - data = data.substring(0, 8191) + "…"; - } - - if (containsFilteredTelemetryData(addressData)) { - addressData = "?"; - } + data += crashCallStack; logCppCrashTelemetry(data, addressData, crashLog); diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index 58a28e87b4..fb8b3c4584 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -444,6 +444,9 @@ export class CppSettings extends Settings { public get defaultBrowsePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.browse.path"); } public get defaultDatabaseFilename(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.browse.databaseFilename")); } public get defaultLimitSymbolsToIncludedHeaders(): boolean { return this.getAsBoolean("default.browse.limitSymbolsToIncludedHeaders"); } + public get defaultRecursiveIncludesReduce(): string { return this.getAsString("default.recursiveIncludes.reduce"); } + public get defaultRecursiveIncludesPriority(): string { return this.getAsString("default.recursiveIncludes.priority"); } + public get defaultRecursiveIncludesOrder(): string { return this.getAsString("default.recursiveIncludes.order"); } public get defaultSystemIncludePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.systemIncludePath"); } public get defaultEnableConfigurationSquiggles(): boolean { return this.getAsBoolean("default.enableConfigurationSquiggles"); } public get defaultCustomConfigurationVariables(): Associations | undefined { return this.getAsAssociations("default.customConfigurationVariables", true) ?? undefined; } diff --git a/Extension/src/LanguageServer/settingsPanel.ts b/Extension/src/LanguageServer/settingsPanel.ts index a13ef8109c..6352e428f2 100644 --- a/Extension/src/LanguageServer/settingsPanel.ts +++ b/Extension/src/LanguageServer/settingsPanel.ts @@ -52,6 +52,9 @@ const elementId: { [key: string]: string } = { mergeConfigurations: "mergeConfigurations", configurationProvider: "configurationProvider", forcedInclude: "forcedInclude", + recursiveIncludesReduce: "recursiveIncludes.reduce", + recursiveIncludesPriority: "recursiveIncludes.priority", + recursiveIncludesOrder: "recursiveIncludes.order", // Browse properties browsePath: "browsePath", @@ -351,6 +354,24 @@ export class SettingsPanel { case elementId.forcedInclude: this.configValues.forcedInclude = splitEntries(message.value); break; + case elementId.recursiveIncludesReduce: + if (!this.configValues.recursiveIncludes) { + this.configValues.recursiveIncludes = {}; + } + this.configValues.recursiveIncludes.reduce = message.value; + break; + case elementId.recursiveIncludesPriority: + if (!this.configValues.recursiveIncludes) { + this.configValues.recursiveIncludes = {}; + } + this.configValues.recursiveIncludes.priority = message.value; + break; + case elementId.recursiveIncludesOrder: + if (!this.configValues.recursiveIncludes) { + this.configValues.recursiveIncludes = {}; + } + this.configValues.recursiveIncludes.order = message.value; + break; case elementId.browsePath: if (!this.configValues.browse) { this.configValues.browse = {}; diff --git a/Extension/translations_auto_pr.js b/Extension/translations_auto_pr.js index c8577b8ca3..05c9229bdf 100644 --- a/Extension/translations_auto_pr.js +++ b/Extension/translations_auto_pr.js @@ -3,7 +3,6 @@ const fs = require("fs-extra"); const cp = require("child_process"); const path = require('path'); -const parseGitConfig = require('parse-git-config'); const branchName = 'localization'; const mergeTo = 'main'; @@ -105,8 +104,8 @@ cp.execSync('git fetch'); // Remove old localization branch, if any if (hasBranch("localization")) { - console.log(`Remove old localization branch, if any (git branch -D localization)`); - cp.execSync('git branch -D localization'); + console.log(`Remove old localization branch, if any (git branch -D localization)`); + cp.execSync('git branch -D localization'); } // Check out local branch @@ -128,13 +127,17 @@ if (!hasAnyChanges()) { // Save existing user name and email, in case already set. var existingUserName; var existingUserEmail; -var gitConfigPath = path.resolve(process.cwd(), '../.git/config'); -var config = parseGitConfig.sync({ path: gitConfigPath }); -if (typeof config === 'object' && config.hasOwnProperty('user')) { - existingUserName = config.user.name; - existingUserEmail = config.user.email; +try { + existingUserName = cp.execSync('git config --local user.name', { encoding: 'utf8', cwd: process.cwd() }).trim() || undefined +} catch { +} + +try { + existingUserEmail = cp.execSync('git config --local user.email', { encoding: 'utf8', cwd: process.cwd() }).trim() || undefined +} catch { } + if (existingUserName === undefined) { console.log(`Existing user name: undefined`); } else { diff --git a/Extension/ui/settings.html b/Extension/ui/settings.html index 5bfe020512..a8deeb3c30 100644 --- a/Extension/ui/settings.html +++ b/Extension/ui/settings.html @@ -722,6 +722,49 @@ +
+
Recursive includes: priority
+
+ Set to always to reduce the number of recursive include paths provided to IntelliSense to only those paths currently referenced by #include statements. This requires first parsing files to determine which files are included. Set to never to provide all recursive include paths to IntelliSense. Reducing the number of recursive include paths may improve IntelliSense performance when a very large number of recursive include paths are involved. Not reducing the number of recursive include paths can improve IntelliSense performance by avoiding the need to parse files to determine which include paths to provide. +
+
+ +
+
+ +
+
Recursive includes: priority
+
+ The priority of recursive include paths. If set to beforeSystemIncludes, the recursive include paths will be searched before system include paths. If set to afterSystemIncludes, the recursive include paths will be searched after system include paths. +
+
+ +
+
+ +
+
Recursive includes: priority
+
+ The order in which subdirectories under recursive include paths are searched. +
+
+ +
+
+ diff --git a/Extension/ui/settings.ts b/Extension/ui/settings.ts index fc75f4cbdf..ce5a23ab22 100644 --- a/Extension/ui/settings.ts +++ b/Extension/ui/settings.ts @@ -42,6 +42,9 @@ const elementId: { [key: string]: string } = { mergeConfigurations: "mergeConfigurations", dotConfig: "dotConfig", dotConfigInvalid: "dotConfigInvalid", + recursiveIncludesReduce: "recursiveIncludes.reduce", + recursiveIncludesPriority: "recursiveIncludes.priority", + recursiveIncludesOrder: "recursiveIncludes.order", // Browse properties browsePath: "browsePath", @@ -300,6 +303,11 @@ class SettingsApp { (document.getElementById(elementId.configurationProvider)).value = config.configurationProvider ? config.configurationProvider : ""; (document.getElementById(elementId.forcedInclude)).value = joinEntries(config.forcedInclude); (document.getElementById(elementId.dotConfig)).value = config.dotConfig ? config.dotConfig : ""; + if (config.recursiveIncludes) { + (document.getElementById(elementId.recursiveIncludesReduce)).value = config.recursiveIncludes.reduce; + (document.getElementById(elementId.recursiveIncludesPriority)).value = config.recursiveIncludes.priority; + (document.getElementById(elementId.recursiveIncludesOrder)).value = config.recursiveIncludes.order; + } if (config.browse) { (document.getElementById(elementId.browsePath)).value = joinEntries(config.browse.path); diff --git a/Extension/yarn.lock b/Extension/yarn.lock index c9952dfcee..c35c500270 100644 --- a/Extension/yarn.lock +++ b/Extension/yarn.lock @@ -2430,11 +2430,6 @@ get-symbol-description@^1.1.0: es-errors "^1.3.0" get-intrinsic "^1.2.6" -git-config-path@^2.0.0: - version "2.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/git-config-path/-/git-config-path-2.0.0.tgz#62633d61af63af4405a5024efd325762f58a181b" - integrity sha1-YmM9Ya9jr0QFpQJO/TJXYvWKGBs= - glob-parent@^3.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -2798,7 +2793,7 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= -ini@^1.3.4, ini@^1.3.5: +ini@^1.3.4: version "1.3.8" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw= @@ -3773,14 +3768,6 @@ parse-filepath@^1.0.2: map-cache "^0.2.0" path-root "^0.1.1" -parse-git-config@^3.0.0: - version "3.0.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/parse-git-config/-/parse-git-config-3.0.0.tgz#4a2de08c7b74a2555efa5ae94d40cd44302a6132" - integrity sha1-Si3gjHt0olVe+lrpTUDNRDAqYTI= - dependencies: - git-config-path "^2.0.0" - ini "^1.3.5" - parse-imports@^2.1.1: version "2.2.1" resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/parse-imports/-/parse-imports-2.2.1.tgz#0a6e8b5316beb5c9905f50eb2bbb8c64a4805642" diff --git a/ExtensionPack/.npmrc b/ExtensionPack/.npmrc new file mode 100644 index 0000000000..d8324806fb --- /dev/null +++ b/ExtensionPack/.npmrc @@ -0,0 +1,2 @@ +registry=https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ +always-auth=true \ No newline at end of file diff --git a/Themes/.npmrc b/Themes/.npmrc new file mode 100644 index 0000000000..d8324806fb --- /dev/null +++ b/Themes/.npmrc @@ -0,0 +1,2 @@ +registry=https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ +always-auth=true \ No newline at end of file