From beefef75c6f4cb2bcdaf06b3556d5df3ee558da7 Mon Sep 17 00:00:00 2001 From: Kristoffer K Date: Fri, 10 Jun 2022 11:31:54 +0200 Subject: [PATCH] fix(sdks): update for VSCode 1.68 (#4485) --- .yarn/sdks/typescript/lib/tsserver.js | 35 ++++++++++++++------ .yarn/sdks/typescript/lib/tsserverlibrary.js | 35 ++++++++++++++------ .yarn/versions/0d403b34.yml | 2 ++ packages/yarnpkg-sdks/sources/sdks/base.ts | 35 ++++++++++++++------ 4 files changed, 77 insertions(+), 30 deletions(-) create mode 100644 .yarn/versions/0d403b34.yml diff --git a/.yarn/sdks/typescript/lib/tsserver.js b/.yarn/sdks/typescript/lib/tsserver.js index 830ad9f2c399..9f9f4d6f4696 100644 --- a/.yarn/sdks/typescript/lib/tsserver.js +++ b/.yarn/sdks/typescript/lib/tsserver.js @@ -61,14 +61,18 @@ const moduleWrapper = tsserver => { // // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 // - // Update 2021-10-08: VSCode changed their format in 1.61. + // 2021-10-08: VSCode changed the format in 1.61. // Before | ^zip:/c:/foo/bar.zip/package.json // After | ^/zip//c:/foo/bar.zip/package.json // - // Update 2022-04-06: VSCode changed the format in 1.66. + // 2022-04-06: VSCode changed the format in 1.66. // Before | ^/zip//c:/foo/bar.zip/package.json // After | ^/zip/c:/foo/bar.zip/package.json // + // 2022-05-06: VSCode changed the format in 1.68 + // Before | ^/zip/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // case `vscode <1.61`: { str = `^zip:${str}`; } break; @@ -77,10 +81,14 @@ const moduleWrapper = tsserver => { str = `^/zip/${str}`; } break; - case `vscode`: { + case `vscode <1.68`: { str = `^/zip${str}`; } break; + case `vscode`: { + str = `^/zip/${str}`; + } break; + // To make "go to definition" work, // We have to resolve the actual file system path from virtual path // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) @@ -127,9 +135,7 @@ const moduleWrapper = tsserver => { case `vscode`: default: { - return process.platform === `win32` - ? str.replace(/^\^?(zip:|\/zip)\/+/, ``) - : str.replace(/^\^?(zip:|\/zip)\/+/, `/`); + return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`) } break; } } @@ -169,10 +175,19 @@ const moduleWrapper = tsserver => { ) { hostInfo = parsedMessage.arguments.hostInfo; if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) { - if (/(\/|-)1\.([1-5][0-9]|60)\./.test(process.env.VSCODE_IPC_HOOK)) { - hostInfo += ` <1.61`; - } else if (/(\/|-)1\.(6[1-5])\./.test(process.env.VSCODE_IPC_HOOK)) { - hostInfo += ` <1.66`; + const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match( + // The RegExp from https://semver.org/ but without the caret at the start + /(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/ + ) ?? []).map(Number) + + if (major === 1) { + if (minor < 61) { + hostInfo += ` <1.61`; + } else if (minor < 66) { + hostInfo += ` <1.66`; + } else if (minor < 68) { + hostInfo += ` <1.68`; + } } } } diff --git a/.yarn/sdks/typescript/lib/tsserverlibrary.js b/.yarn/sdks/typescript/lib/tsserverlibrary.js index 0f7084cdf406..878b11946a4c 100644 --- a/.yarn/sdks/typescript/lib/tsserverlibrary.js +++ b/.yarn/sdks/typescript/lib/tsserverlibrary.js @@ -61,14 +61,18 @@ const moduleWrapper = tsserver => { // // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 // - // Update 2021-10-08: VSCode changed their format in 1.61. + // 2021-10-08: VSCode changed the format in 1.61. // Before | ^zip:/c:/foo/bar.zip/package.json // After | ^/zip//c:/foo/bar.zip/package.json // - // Update 2022-04-06: VSCode changed the format in 1.66. + // 2022-04-06: VSCode changed the format in 1.66. // Before | ^/zip//c:/foo/bar.zip/package.json // After | ^/zip/c:/foo/bar.zip/package.json // + // 2022-05-06: VSCode changed the format in 1.68 + // Before | ^/zip/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // case `vscode <1.61`: { str = `^zip:${str}`; } break; @@ -77,10 +81,14 @@ const moduleWrapper = tsserver => { str = `^/zip/${str}`; } break; - case `vscode`: { + case `vscode <1.68`: { str = `^/zip${str}`; } break; + case `vscode`: { + str = `^/zip/${str}`; + } break; + // To make "go to definition" work, // We have to resolve the actual file system path from virtual path // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) @@ -127,9 +135,7 @@ const moduleWrapper = tsserver => { case `vscode`: default: { - return process.platform === `win32` - ? str.replace(/^\^?(zip:|\/zip)\/+/, ``) - : str.replace(/^\^?(zip:|\/zip)\/+/, `/`); + return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`) } break; } } @@ -169,10 +175,19 @@ const moduleWrapper = tsserver => { ) { hostInfo = parsedMessage.arguments.hostInfo; if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) { - if (/(\/|-)1\.([1-5][0-9]|60)\./.test(process.env.VSCODE_IPC_HOOK)) { - hostInfo += ` <1.61`; - } else if (/(\/|-)1\.(6[1-5])\./.test(process.env.VSCODE_IPC_HOOK)) { - hostInfo += ` <1.66`; + const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match( + // The RegExp from https://semver.org/ but without the caret at the start + /(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/ + ) ?? []).map(Number) + + if (major === 1) { + if (minor < 61) { + hostInfo += ` <1.61`; + } else if (minor < 66) { + hostInfo += ` <1.66`; + } else if (minor < 68) { + hostInfo += ` <1.68`; + } } } } diff --git a/.yarn/versions/0d403b34.yml b/.yarn/versions/0d403b34.yml new file mode 100644 index 000000000000..49cfdd45ad88 --- /dev/null +++ b/.yarn/versions/0d403b34.yml @@ -0,0 +1,2 @@ +releases: + "@yarnpkg/sdks": patch diff --git a/packages/yarnpkg-sdks/sources/sdks/base.ts b/packages/yarnpkg-sdks/sources/sdks/base.ts index 0528360910ee..1ffa80203241 100644 --- a/packages/yarnpkg-sdks/sources/sdks/base.ts +++ b/packages/yarnpkg-sdks/sources/sdks/base.ts @@ -88,14 +88,18 @@ export const generateTypescriptBaseWrapper: GenerateBaseWrapper = async (pnpApi: // // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 // - // Update 2021-10-08: VSCode changed their format in 1.61. + // 2021-10-08: VSCode changed the format in 1.61. // Before | ^zip:/c:/foo/bar.zip/package.json // After | ^/zip//c:/foo/bar.zip/package.json // - // Update 2022-04-06: VSCode changed the format in 1.66. + // 2022-04-06: VSCode changed the format in 1.66. // Before | ^/zip//c:/foo/bar.zip/package.json // After | ^/zip/c:/foo/bar.zip/package.json // + // 2022-05-06: VSCode changed the format in 1.68 + // Before | ^/zip/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // case \`vscode <1.61\`: { str = \`^zip:\${str}\`; } break; @@ -104,10 +108,14 @@ export const generateTypescriptBaseWrapper: GenerateBaseWrapper = async (pnpApi: str = \`^/zip/\${str}\`; } break; - case \`vscode\`: { + case \`vscode <1.68\`: { str = \`^/zip\${str}\`; } break; + case \`vscode\`: { + str = \`^/zip/\${str}\`; + } break; + // To make "go to definition" work, // We have to resolve the actual file system path from virtual path // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) @@ -154,9 +162,7 @@ export const generateTypescriptBaseWrapper: GenerateBaseWrapper = async (pnpApi: case \`vscode\`: default: { - return process.platform === \`win32\` - ? str.replace(/^\\^?(zip:|\\/zip)\\/+/, \`\`) - : str.replace(/^\\^?(zip:|\\/zip)\\/+/, \`/\`); + return str.replace(/^\\^?(zip:|\\/zip(\\/ts-nul-authority)?)\\/+/, process.platform === \`win32\` ? \`\` : \`/\`) } break; } } @@ -196,10 +202,19 @@ export const generateTypescriptBaseWrapper: GenerateBaseWrapper = async (pnpApi: ) { hostInfo = parsedMessage.arguments.hostInfo; if (hostInfo === \`vscode\` && process.env.VSCODE_IPC_HOOK) { - if (/(\\/|-)1\\.([1-5][0-9]|60)\\./.test(process.env.VSCODE_IPC_HOOK)) { - hostInfo += \` <1.61\`; - } else if (/(\\/|-)1\\.(6[1-5])\\./.test(process.env.VSCODE_IPC_HOOK)) { - hostInfo += \` <1.66\`; + const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match( + // The RegExp from https://semver.org/ but without the caret at the start + /(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/ + ) ?? []).map(Number) + + if (major === 1) { + if (minor < 61) { + hostInfo += \` <1.61\`; + } else if (minor < 66) { + hostInfo += \` <1.66\`; + } else if (minor < 68) { + hostInfo += \` <1.68\`; + } } } }