diff --git a/xref-helper/dist/xref-helper.vsix b/xref-helper/dist/xref-helper.vsix index edb2f6f9..f13e62b1 100644 Binary files a/xref-helper/dist/xref-helper.vsix and b/xref-helper/dist/xref-helper.vsix differ diff --git a/xref-helper/package-lock.json b/xref-helper/package-lock.json index 29e8ed34..16bea6d3 100644 --- a/xref-helper/package-lock.json +++ b/xref-helper/package-lock.json @@ -32,7 +32,7 @@ "eslint": "^9.31.0", "glob": "^11.1.0", "mocha": "^11.7.1", - "rimraf": "^6.0.1", + "rimraf": "^6.1.3", "semantic-release": "^25.0.2", "semantic-release-stop-before-publish": "^1.0.0", "semantic-release-vsce": "^6.0.11", @@ -6902,11 +6902,11 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -9887,9 +9887,9 @@ } }, "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -9897,7 +9897,7 @@ "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -10422,14 +10422,14 @@ } }, "node_modules/rimraf": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", - "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", + "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "glob": "^11.0.0", - "package-json-from-dist": "^1.0.0" + "glob": "^13.0.3", + "package-json-from-dist": "^1.0.1" }, "bin": { "rimraf": "dist/esm/bin.mjs" @@ -10441,6 +10441,63 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", diff --git a/xref-helper/package.json b/xref-helper/package.json index 33da833e..b72d078f 100644 --- a/xref-helper/package.json +++ b/xref-helper/package.json @@ -2,7 +2,7 @@ "name": "xref-helper", "displayName": "API Reference Link Helper", "description": "A Visual Studio Code extension to help you quickly insert API reference (xref) links.", - "version": "1.0.30", + "version": "1.0.40", "engines": { "vscode": "^1.102.0" }, @@ -187,7 +187,7 @@ "eslint": "^9.31.0", "glob": "^11.1.0", "mocha": "^11.7.1", - "rimraf": "^6.0.1", + "rimraf": "^6.1.3", "semantic-release": "^25.0.2", "semantic-release-stop-before-publish": "^1.0.0", "semantic-release-vsce": "^6.0.11", diff --git a/xref-helper/src/services/docid-service.ts b/xref-helper/src/services/docid-service.ts index 19799e53..666a3c5a 100644 --- a/xref-helper/src/services/docid-service.ts +++ b/xref-helper/src/services/docid-service.ts @@ -172,17 +172,16 @@ async function parseXml(text: string, displayName: string, apiType: ItemType, gi apiType === ItemType.event || apiType === ItemType.attachedEvent || apiType === ItemType.field) { - // Special case for "Item" property (which is actually - // an indexer, not a property. Go figure.) - // The displayName is "Item[String]" or "Item[Int32]" etc., - // but in the ECMAXML, the MemberName is just "Item". - // And, this "property" also has parameter(s)! - if (memberName.split('[')[0] === "Item") { + // Special case for indexer properties (e.g. "Item[String]", "Chars[Int32]"). + // The displayName includes parameters in square brackets, + // but in the ECMAXML, the MemberName doesn't include the brackets/params. + if (memberName.includes('[')) { + const baseName = memberName.split('[')[0]; const paramList = memberName.split('[')[1].slice(0, -1); const paramTypes = paramList.length > 0 ? paramList.split(',').map(x => x.trim().split(' ')[0]) : []; const candidates = xml.Type.Members[0].Member?.filter((x: any) => - x.$.MemberName === "Item" && + x.$.MemberName === baseName && x.MemberType[0] === memberType && x.Parameters[0].Parameter?.length === paramTypes.length );