diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 2043e48c7aa..a0435cb1d3e 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,9 +1,9 @@ --- name: Question -about: The issue tracker is not for questions. Please ask questions on https://stackoverflow.com/questions/tagged/vscode. +about: The issue tracker is not for questions. Please ask questions on https://stackoverflow.com/questions/tagged/visual-studio-code. --- 🚨 The issue tracker is not for questions 🚨 -If you have a question, please ask it on https://stackoverflow.com/questions/tagged/vscode. +If you have a question, please ask it on https://stackoverflow.com/questions/tagged/visual-studio-code. diff --git a/.github/classifier.yml b/.github/classifier.yml index af9e2f84e41..c1c067e5c53 100644 --- a/.github/classifier.yml +++ b/.github/classifier.yml @@ -1,43 +1,69 @@ { perform: true, alwaysRequireAssignee: false, - labelsRequiringAssignee: [ feature-request ], + labelsRequiringAssignee: [], autoAssignees: { + L10N: [], + VIM: [], api: { assignees: [ jrieken ], assignLabel: false }, - color-picker: [], - css-less-sass: [ aeschli ], + cli: [], + color-palette: [], + config: [], + css-less-scss: [ aeschli ], + debug-console: [], debug: { assignees: [ weinand ], assignLabel: false }, diff-editor: [], + dropdown: [], editor: [], editor-1000-limit: [], editor-autoclosing: [], editor-autoindent: [], editor-brackets: [], editor-clipboard: [], + editor-code-actions: [], + editor-code-lens: [], + editor-color-picker: [], + editor-colors: [], editor-columnselect: [], + editor-commands: [], editor-contrib: [], - editor-core: [], - editor-find-widget: [], + editor-drag-and-drop: [], + editor-find: [], editor-folding: [], + editor-hover: [], editor-ime: [], editor-input: [], + editor-ligatures: [], + editor-links: [], editor-minimap: [], editor-multicursor: [], + editor-parameter-hints: [], + editor-rendering: [], editor-smooth: [], + editor-symbols: [], + editor-textbuffer: [], editor-wrapping: [], emmet: [ ramya-rao-a ], error-list: [], + explorer-custom: [], + extension-host: [], extensions: [], + file-decorations: [], file-encoding: { assignees: [], assignLabel: false }, + file-explorer: { + assignees: [ isidorn ], + assignLabel: false + }, + file-glob: [], file-io: { assignees: [], assignLabel: false @@ -46,45 +72,73 @@ assignees: [], assignLabel: false }, - file-explorer: { - assignees: [ isidorn ], - assignLabel: false - }, - format: [], + formatting: [], git: [ joaomoreno ], + grammar: [], hot-exit: [ Tyriar ], html: [ aeschli ], - i18n: [], install-update: [], integrated-terminal: [ Tyriar ], + integration-test: [], + intellisense-config: [], + issue-reporter: [ RMacfarlane ], javascript: [ mjbvz ], json: [], - keybindings: [], keyboard-layout: [], + keybindings: [], + keybindings-editor: [], + lang-diagnostics: [], languages basic: [], + list: [], + log: [], markdown: [ mjbvz ], + marketplace: [], + menus: [], merge-conflict: [ chrmarti ], multi-root: { assignees: [], assignLabel: false }, + os-integration: [], + outline: [], + output: [], perf-profile: [], + perf-bloat: [], + perf-startup: [], php: [ roblourens ], proxy: [], + quick-pick: [ chrmarti ], + release-notes: [], remote: { assignees: [ jrieken ], assignLabel: false }, + rename: [], + run-as-admin: [], + samples: [], scm: [], search: [ roblourens ], + search-replace: [], + settings-editor: [], + shared-process: [], + smart-select: [], + smoke-test: [], snippets: { assignees: [ jrieken ], assignLabel: false }, + suggest: [], tasks: [ dbaeumer ], telemetry: [], themes: [], + tokenization: [], + tree: [], typescript: [ mjbvz ], + unit-test: [], + uri: [], + ux: [], + vscode-build: [], + webview: [], workbench: { assignees: [], assignLabel: false @@ -109,6 +163,10 @@ assignees: [], assignLabel: false }, + workbench-grid: { + assignees: [], + assignLabel: false + }, workbench-history: { assignees: [], assignLabel: false @@ -145,6 +203,10 @@ assignees: [], assignLabel: false }, + workbench-views: { + assignees: [], + assignLabel: false + }, workbench-welcome: [ chrmarti ] } } diff --git a/build/builtInExtensions.json b/build/builtInExtensions.json index ad7d8680ade..2d53c46e935 100644 --- a/build/builtInExtensions.json +++ b/build/builtInExtensions.json @@ -1,12 +1,12 @@ [ { "name": "ms-vscode.node-debug", - "version": "1.25.3", + "version": "1.26.0", "repo": "https://github.com/Microsoft/vscode-node-debug" }, { "name": "ms-vscode.node-debug2", - "version": "1.25.4", + "version": "1.26.0", "repo": "https://github.com/Microsoft/vscode-node-debug2" } ] diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js index a84e78dece1..6a4cd05d17f 100644 --- a/build/gulpfile.hygiene.js +++ b/build/gulpfile.hygiene.js @@ -82,6 +82,7 @@ const indentationFilter = [ '!build/{lib,tslintRules}/**/*.js', '!build/**/*.sh', '!build/tfs/**/*.js', + '!build/tfs/**/*.config', '!**/Dockerfile', '!extensions/markdown-language-features/media/*.js' ]; @@ -104,6 +105,7 @@ const copyrightFilter = [ '!**/*.code-workspace', '!build/**/*.init', '!resources/linux/snap/snapcraft.yaml', + '!resources/linux/snap/electron-launch', '!resources/win32/bin/code.js', '!extensions/markdown-language-features/media/highlight.css', '!extensions/html-language-features/server/src/modes/typescript/*', diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index 47f243676b5..526e5e56f5a 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -71,7 +71,7 @@ const vscodeResources = [ 'out-build/paths.js', 'out-build/vs/**/*.{svg,png,cur,html}', 'out-build/vs/base/common/performance.js', - 'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh, cpuUsage.sh}', + 'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh,cpuUsage.sh}', 'out-build/vs/base/browser/ui/octiconLabel/octicons/**', 'out-build/vs/workbench/browser/media/*-theme.css', 'out-build/vs/workbench/electron-browser/bootstrap/**', @@ -265,10 +265,17 @@ function packageTask(platform, arch, opts) { const packageJsonStream = gulp.src(['package.json'], { base: '.' }) .pipe(json({ name, version })); - const settingsSearchBuildId = getSettingsSearchBuildId(packageJson); const date = new Date().toISOString(); + const productJsonUpdate = { commit, date, checksums }; + + try { + productJsonUpdate.settingsSearchBuildId = getSettingsSearchBuildId(packageJson); + } catch (err) { + console.warn(err); + } + const productJsonStream = gulp.src(['product.json'], { base: '.' }) - .pipe(json({ commit, date, checksums, settingsSearchBuildId })); + .pipe(json(productJsonUpdate)); const license = gulp.src(['LICENSES.chromium.html', 'LICENSE.txt', 'ThirdPartyNotices.txt', 'licenses/**'], { base: '.' }); @@ -508,6 +515,10 @@ gulp.task('generate-vscode-configuration', () => { return reject(new Error('$AGENT_BUILDDIRECTORY not set')); } + if (process.env.VSCODE_QUALITY !== 'insider' && process.env.VSCODE_QUALITY !== 'stable') { + return resolve(); + } + const userDataDir = path.join(os.tmpdir(), 'tmpuserdata'); const extensionsDir = path.join(os.tmpdir(), 'tmpextdir'); const appName = process.env.VSCODE_QUALITY === 'insider' ? 'Visual\\ Studio\\ Code\\ -\\ Insiders.app' : 'Visual\\ Studio\\ Code.app'; diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js index 49595d5f078..a4268e7ce34 100644 --- a/build/gulpfile.vscode.win32.js +++ b/build/gulpfile.vscode.win32.js @@ -26,6 +26,7 @@ const zipPath = arch => path.join(zipDir(arch), `VSCode-win32-${arch}.zip`); const setupDir = (arch, target) => path.join(repoPath, '.build', `win32-${arch}`, `${target}-setup`); const issPath = path.join(__dirname, 'win32', 'code.iss'); const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup-compiler'))), 'bin', 'ISCC.exe'); +const signPS1 = path.join(repoPath, 'build', 'tfs', 'win32', 'sign.ps1'); function packageInnoSetup(iss, options, cb) { options = options || {}; @@ -42,7 +43,11 @@ function packageInnoSetup(iss, options, cb) { keys.forEach(key => assert(typeof definitions[key] === 'string', `Missing value for '${key}' in Inno Setup package step`)); const defs = keys.map(key => `/d${key}=${definitions[key]}`); - const args = [iss].concat(defs); + const args = [ + iss, + ...defs, + `/sesrp=powershell.exe -ExecutionPolicy bypass ${signPS1} $f` + ]; cp.spawn(innoSetupPath, args, { stdio: ['ignore', 'inherit', 'inherit'] }) .on('error', cb) @@ -74,14 +79,15 @@ function buildWin32Setup(arch, target) { DirName: product.win32DirName, Version: pkg.version, RawVersion: pkg.version.replace(/-\w+$/, ''), - NameVersion: product.win32NameVersion, + NameVersion: product.win32NameVersion + (target === 'user' ? ' (User)' : ''), ExeBasename: product.nameShort, RegValueName: product.win32RegValueName, ShellNameShort: product.win32ShellNameShort, AppMutex: product.win32MutexName, Arch: arch, AppId: arch === 'ia32' ? ia32AppId : x64AppId, - IncompatibleAppId: arch === 'ia32' ? x64AppId : ia32AppId, + IncompatibleTargetAppId: arch === 'ia32' ? product.win32AppId : product.win32x64AppId, + IncompatibleArchAppId: arch === 'ia32' ? x64AppId : ia32AppId, AppUserId: product.win32AppUserModelId, ArchitecturesAllowed: arch === 'ia32' ? '' : 'x64', ArchitecturesInstallIn64BitMode: arch === 'ia32' ? '' : 'x64', @@ -108,7 +114,7 @@ defineWin32SetupTasks('x64', 'user'); function archiveWin32Setup(arch) { return cb => { - const args = ['a', '-tzip', zipPath(arch), '.', '-r']; + const args = ['a', '-tzip', zipPath(arch), '-x!CodeSignSummary*.md', '.', '-r']; cp.spawn(_7z, args, { stdio: 'inherit', cwd: buildPath(arch) }) .on('error', cb) diff --git a/build/lib/i18n.resources.json b/build/lib/i18n.resources.json index 87da5e9bb0d..81fda4c4e9e 100644 --- a/build/lib/i18n.resources.json +++ b/build/lib/i18n.resources.json @@ -78,6 +78,10 @@ "name": "vs/workbench/parts/logs", "project": "vscode-workbench" }, + { + "name": "vs/workbench/parts/navigation", + "project": "vscode-workbench" + }, { "name": "vs/workbench/parts/output", "project": "vscode-workbench" diff --git a/build/tfs/product-build.yml b/build/tfs/product-build.yml index dec69a68a11..e0ac588a85a 100644 --- a/build/tfs/product-build.yml +++ b/build/tfs/product-build.yml @@ -125,91 +125,29 @@ phases: ] SessionTimeout: 120 + - task: NuGetCommand@2 + displayName: Install ESRPClient.exe + inputs: + restoreSolution: 'build\tfs\win32\ESRPClient\packages.config' + feedsToUse: config + nugetConfigPath: 'build\tfs\win32\ESRPClient\NuGet.config' + externalFeedCredentials: 3fc0b7f7-da09-4ae7-a9c8-d69824b1819b + restoreDirectory: packages + + - task: ESRPImportCertTask@1 + displayName: Import ESRP Request Signing Certificate + inputs: + ESRP: 'ESRP CodeSign' + + - powershell: | + $ErrorActionPreference = "Stop" + .\build\tfs\win32\import-esrp-auth-cert.ps1 -AuthCertificateBase64 $(ESRP_AUTH_CERTIFICATE) -AuthCertificateKey $(ESRP_AUTH_CERTIFICATE_KEY) + displayName: Import ESRP Auth Certificate + - powershell: | $ErrorActionPreference = "Stop" npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-archive" "vscode-win32-$(VSCODE_ARCH)-system-setup" "vscode-win32-$(VSCODE_ARCH)-user-setup" - - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 - inputs: - ConnectedServiceName: 'ESRP CodeSign' - FolderPath: '$(agent.builddirectory)' - Pattern: VSCodeSetup.exe - signConfigType: inlineSignParams - inlineOperation: | - [ - { - "keyCode": "CP-229803", - "operationSetCode": "SigntoolSign", - "parameters": [ - { - "parameterName": "OpusName", - "parameterValue": "VS Code" - }, - { - "parameterName": "OpusInfo", - "parameterValue": "https://code.visualstudio.com/" - }, - { - "parameterName": "PageHash", - "parameterValue": "/NPH" - }, - { - "parameterName": "TimeStamp", - "parameterValue": "/t \"http://ts4096.gtm.microsoft.com/TSS/AuthenticodeTS\"" - } - ], - "toolName": "sign", - "toolVersion": "1.0" - }, - { - "keyCode": "CP-230012", - "operationSetCode": "SigntoolSign", - "parameters": [ - { - "parameterName": "OpusName", - "parameterValue": "VS Code" - }, - { - "parameterName": "OpusInfo", - "parameterValue": "https://code.visualstudio.com/" - }, - { - "parameterName": "Append", - "parameterValue": "/as" - }, - { - "parameterName": "FileDigest", - "parameterValue": "/fd \"SHA256\"" - }, - { - "parameterName": "PageHash", - "parameterValue": "/NPH" - }, - { - "parameterName": "TimeStamp", - "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" - } - ], - "toolName": "sign", - "toolVersion": "1.0" - }, - { - "keyCode": "CP-230012", - "operationSetCode": "SigntoolVerify", - "parameters": [ - { - "parameterName": "VerifyAll", - "parameterValue": "/all" - } - ], - "toolName": "sign", - "toolVersion": "1.0" - } - ] - SessionTimeout: 120 - - - powershell: | - $ErrorActionPreference = "Stop" $Repo = "$(pwd)" $Root = "$Repo\.." $SystemExe = "$Repo\.build\win32-$(VSCODE_ARCH)\system-setup\VSCodeSetup.exe" diff --git a/build/tfs/win32/ESRPClient/NuGet.config b/build/tfs/win32/ESRPClient/NuGet.config new file mode 100644 index 00000000000..6d6da347fd2 --- /dev/null +++ b/build/tfs/win32/ESRPClient/NuGet.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/build/tfs/win32/ESRPClient/packages.config b/build/tfs/win32/ESRPClient/packages.config new file mode 100644 index 00000000000..d7a6f144f47 --- /dev/null +++ b/build/tfs/win32/ESRPClient/packages.config @@ -0,0 +1,4 @@ + + + + diff --git a/build/tfs/win32/import-esrp-auth-cert.ps1 b/build/tfs/win32/import-esrp-auth-cert.ps1 new file mode 100644 index 00000000000..c345c780231 --- /dev/null +++ b/build/tfs/win32/import-esrp-auth-cert.ps1 @@ -0,0 +1,14 @@ +Param( + [string]$AuthCertificateBase64, + [string]$AuthCertificateKey +) + +# Import auth certificate +$AuthCertificateFileName = [System.IO.Path]::GetTempFileName() +$AuthCertificateBytes = [Convert]::FromBase64String($AuthCertificateBase64) +[IO.File]::WriteAllBytes($AuthCertificateFileName, $AuthCertificateBytes) +$AuthCertificate = Import-PfxCertificate -FilePath $AuthCertificateFileName -CertStoreLocation Cert:\LocalMachine\My -Password (ConvertTo-SecureString $AuthCertificateKey -AsPlainText -Force) +rm $AuthCertificateFileName +$ESRPAuthCertificateSubjectName = $AuthCertificate.Subject + +Write-Output ("##vso[task.setvariable variable=ESRPAuthCertificateSubjectName;]$ESRPAuthCertificateSubjectName") \ No newline at end of file diff --git a/build/tfs/win32/sign.ps1 b/build/tfs/win32/sign.ps1 new file mode 100644 index 00000000000..d888a7d104f --- /dev/null +++ b/build/tfs/win32/sign.ps1 @@ -0,0 +1,82 @@ +function Create-TmpJson($Obj) { + $FileName = [System.IO.Path]::GetTempFileName() + ConvertTo-Json -Depth 100 $Obj | Out-File -Encoding UTF8 $FileName + return $FileName +} + +$Auth = Create-TmpJson @{ + Version = "1.0.0" + AuthenticationType = "AAD_CERT" + ClientId = $env:ESRPClientId + AuthCert = @{ + SubjectName = $env:ESRPAuthCertificateSubjectName + StoreLocation = "LocalMachine" + StoreName = "My" + } + RequestSigningCert = @{ + SubjectName = $env:ESRPCertificateSubjectName + StoreLocation = "LocalMachine" + StoreName = "My" + } +} + +$Policy = Create-TmpJson @{ + Version = "1.0.0" +} + +$Input = Create-TmpJson @{ + Version = "1.0.0" + SignBatches = @( + @{ + SourceLocationType = "UNC" + SignRequestFiles = @( + @{ + SourceLocation = $args[0] + } + ) + SigningInfo = @{ + Operations = @( + @{ + KeyCode = "CP-229803" + OperationCode = "SigntoolSign" + Parameters = @{ + OpusName = "VS Code" + OpusInfo = "https://code.visualstudio.com/" + PageHash = "/NPH" + TimeStamp = "/t `"http://ts4096.gtm.microsoft.com/TSS/AuthenticodeTS`"" + } + ToolName = "sign" + ToolVersion = "1.0" + }, + @{ + KeyCode = "CP-230012" + OperationCode = "SigntoolSign" + Parameters = @{ + OpusName = "VS Code" + OpusInfo = "https://code.visualstudio.com/" + Append = "/as" + FileDigest = "/fd `"SHA256`"" + PageHash = "/NPH" + TimeStamp = "/tr `"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer`" /td sha256" + } + ToolName = "sign" + ToolVersion = "1.0" + }, + @{ + KeyCode = "CP-230012" + OperationCode = "SigntoolVerify" + Parameters = @{ + VerifyAll = "/all" + } + ToolName = "sign" + ToolVersion = "1.0" + } + ) + } + } + ) +} + +$Output = [System.IO.Path]::GetTempFileName() +$ScriptPath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent +& "$ScriptPath\ESRPClient\packages\EsrpClient.1.0.27\tools\ESRPClient.exe" Sign -a $Auth -p $Policy -i $Input -o $Output \ No newline at end of file diff --git a/build/win32/OSSREADME.json b/build/win32/OSSREADME.json index 5e1078b9519..6e9bb4b251a 100755 --- a/build/win32/OSSREADME.json +++ b/build/win32/OSSREADME.json @@ -545,33 +545,6 @@ ], "isProd": true }, - { - "name": "retep998/winapi-rs", - "version": "0.3.4", - "repositoryUrl": "https://github.com/retep998/winapi-rs", - "licenseDetail": [ - "Copyright (c) 2015 The winapi-rs Developers", - "", - "Permission is hereby granted, free of charge, to any person obtaining a copy", - "of this software and associated documentation files (the \"Software\"), to deal", - "in the Software without restriction, including without limitation the rights", - "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell", - "copies of the Software, and to permit persons to whom the Software is", - "furnished to do so, subject to the following conditions:", - "", - "The above copyright notice and this permission notice shall be included in all", - "copies or substantial portions of the Software.", - "", - "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR", - "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,", - "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE", - "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER", - "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,", - "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE", - "SOFTWARE." - ], - "isProd": true - }, { "name": "retep998/winapi-rs", "version": "0.2.8", @@ -707,6 +680,33 @@ ], "isProd": true }, + { + "name": "retep998/winapi-rs", + "version": "0.3.4", + "repositoryUrl": "https://github.com/retep998/winapi-rs", + "licenseDetail": [ + "Copyright (c) 2015 The winapi-rs Developers", + "", + "Permission is hereby granted, free of charge, to any person obtaining a copy", + "of this software and associated documentation files (the \"Software\"), to deal", + "in the Software without restriction, including without limitation the rights", + "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell", + "copies of the Software, and to permit persons to whom the Software is", + "furnished to do so, subject to the following conditions:", + "", + "The above copyright notice and this permission notice shall be included in all", + "copies or substantial portions of the Software.", + "", + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR", + "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,", + "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE", + "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER", + "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,", + "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE", + "SOFTWARE." + ], + "isProd": true + }, { "name": "rust-lang-nursery/lazy-static.rs", "version": "1.0.0", @@ -1791,4 +1791,4 @@ ], "isProd": true } -] +] \ No newline at end of file diff --git a/build/win32/code.iss b/build/win32/code.iss index 3126cb76789..cad2e27d65e 100644 --- a/build/win32/code.iss +++ b/build/win32/code.iss @@ -32,6 +32,7 @@ VersionInfoVersion={#RawVersion} ShowLanguageDialog=auto ArchitecturesAllowed={#ArchitecturesAllowed} ArchitecturesInstallIn64BitMode={#ArchitecturesInstallIn64BitMode} +SignTool=esrp #if "user" == InstallTarget DefaultDirName={userpf}\{#DirName} @@ -91,7 +92,7 @@ Filename: "{app}\{#ExeBasename}.exe"; Description: "{cm:LaunchProgram,{#NameLong #if "user" == InstallTarget #define SoftwareClassesRootKey "HKCU" #else -#define SoftwareClassesRootKey "HKCR" +#define SoftwareClassesRootKey "HKLM" #endif Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ascx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles @@ -945,7 +946,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\Drive\shell\{#RegValu #define Uninstall64RootKey "HKCU64" #define Uninstall32RootKey "HKCU32" #else -#define EnvironmentRootKey "HKCR" +#define EnvironmentRootKey "HKLM" #define EnvironmentKey "System\CurrentControlSet\Control\Session Manager\Environment" #define Uninstall64RootKey "HKLM64" #define Uninstall32RootKey "HKLM32" @@ -963,8 +964,26 @@ var begin Result := True; - if IsWin64 then begin - RegKey := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + copy('{#IncompatibleAppId}', 2, 38) + '_is1'; + #if "user" == InstallTarget + #if "ia32" == Arch + #define IncompatibleArchRootKey "HKLM32" + #else + #define IncompatibleArchRootKey "HKLM64" + #endif + + if not WizardSilent() then begin + RegKey := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + copy('{#IncompatibleTargetAppId}', 2, 38) + '_is1'; + + if RegKeyExists({#IncompatibleArchRootKey}, RegKey) then begin + if MsgBox('{#NameShort} is already installed on this system for all users. Are you sure you want to install it for this user?', mbConfirmation, MB_YESNO) = IDNO then begin + Result := false; + end; + end; + end; + #endif + + if Result and IsWin64 then begin + RegKey := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + copy('{#IncompatibleArchAppId}', 2, 38) + '_is1'; if '{#Arch}' = 'ia32' then begin Result := not RegKeyExists({#Uninstall64RootKey}, RegKey); diff --git a/build/win32/inno_updater.exe b/build/win32/inno_updater.exe index 6d83b2b748b..d2715b864f5 100755 Binary files a/build/win32/inno_updater.exe and b/build/win32/inno_updater.exe differ diff --git a/extensions/configuration-editing/package.json b/extensions/configuration-editing/package.json index e66a313c9f6..f63d8c84087 100644 --- a/extensions/configuration-editing/package.json +++ b/extensions/configuration-editing/package.json @@ -18,7 +18,7 @@ }, "dependencies": { "jsonc-parser": "^1.0.0", - "vscode-nls": "^3.2.1" + "vscode-nls": "^3.2.4" }, "contributes": { "languages": [ diff --git a/extensions/configuration-editing/yarn.lock b/extensions/configuration-editing/yarn.lock index 29d3d43ae80..bcf4ddb12d8 100644 --- a/extensions/configuration-editing/yarn.lock +++ b/extensions/configuration-editing/yarn.lock @@ -10,6 +10,6 @@ jsonc-parser@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-1.0.0.tgz#ddcc864ae708e60a7a6dd36daea00172fa8d9272" -vscode-nls@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.1.tgz#b1f3e04e8a94a715d5a7bcbc8339c51e6d74ca51" +vscode-nls@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.4.tgz#2166b4183c8aea884d20727f5449e62be69fd398" diff --git a/extensions/css-language-features/package.json b/extensions/css-language-features/package.json index 9bfc56b2e3f..dc78673bf07 100644 --- a/extensions/css-language-features/package.json +++ b/extensions/css-language-features/package.json @@ -709,7 +709,7 @@ "dependencies": { "vscode-languageclient": "^4.1.4", "vscode-languageserver-protocol-foldingprovider": "^2.0.1", - "vscode-nls": "^3.2.2" + "vscode-nls": "^3.2.4" }, "devDependencies": { "@types/node": "7.0.43", diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json index 661b18831b2..59fb5eefee2 100644 --- a/extensions/css-language-features/server/package.json +++ b/extensions/css-language-features/server/package.json @@ -8,7 +8,7 @@ "node": "*" }, "dependencies": { - "vscode-css-languageservice": "^3.0.9-next.18", + "vscode-css-languageservice": "^3.0.9-next.20", "vscode-languageserver": "^4.1.3", "vscode-languageserver-protocol-foldingprovider": "^2.0.1" }, diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock index 7003f400a78..dd17147de5b 100644 --- a/extensions/css-language-features/server/yarn.lock +++ b/extensions/css-language-features/server/yarn.lock @@ -194,9 +194,9 @@ supports-color@5.4.0: dependencies: has-flag "^3.0.0" -vscode-css-languageservice@^3.0.9-next.18: - version "3.0.9-next.18" - resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.18.tgz#f8f25123b5a8cdc9f72fafcd2c0088f726322437" +vscode-css-languageservice@^3.0.9-next.20: + version "3.0.9-next.20" + resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.9-next.20.tgz#8229aee66aa877929af5d2fd81a21731b415c92e" dependencies: vscode-languageserver-types "^3.7.2" vscode-nls "^3.2.2" diff --git a/extensions/css-language-features/yarn.lock b/extensions/css-language-features/yarn.lock index 840422a34db..ac76cfede80 100644 --- a/extensions/css-language-features/yarn.lock +++ b/extensions/css-language-features/yarn.lock @@ -161,9 +161,9 @@ vscode-languageserver-types@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.7.2.tgz#aad8846f8e3e27962648554de5a8417e358f34eb" -vscode-nls@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.2.tgz#3817eca5b985c2393de325197cf4e15eb2aa5350" +vscode-nls@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.4.tgz#2166b4183c8aea884d20727f5449e62be69fd398" wrappy@1: version "1.0.2" diff --git a/extensions/css/package.json b/extensions/css/package.json index 9517029a69f..13f737e92fc 100644 --- a/extensions/css/package.json +++ b/extensions/css/package.json @@ -8,7 +8,7 @@ "vscode": "0.10.x" }, "scripts": { - "update-grammar": "node ../../build/npm/update-grammar.js atom/language-css grammars/css.cson ./syntaxes/css.tmLanguage.json" + "update-grammar": "node ../../build/npm/update-grammar.js octref/language-css grammars/css.cson ./syntaxes/css.tmLanguage.json" }, "contributes": { "languages": [ diff --git a/extensions/css/syntaxes/css.tmLanguage.json b/extensions/css/syntaxes/css.tmLanguage.json index d1be44fc3d9..ec7659719bb 100644 --- a/extensions/css/syntaxes/css.tmLanguage.json +++ b/extensions/css/syntaxes/css.tmLanguage.json @@ -1,10 +1,10 @@ { "information_for_contributors": [ - "This file has been converted from https://github.com/atom/language-css/blob/master/grammars/css.cson", + "This file has been converted from https://github.com/octref/language-css/blob/master/grammars/css.cson", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/atom/language-css/commit/17ad55bc5f65c16585e80ea1c7c19e0c0814f6d5", + "version": "https://github.com/octref/language-css/commit/ea1d7e3619966e47c57498913a5eabea0cce7538", "name": "CSS", "scopeName": "source.css", "patterns": [ @@ -604,6 +604,45 @@ "include": "#string" } ] + }, + { + "begin": "(?i)(?=@[\\w-]+(\\s|\\(|/\\*|$))", + "end": "(?<=})(?!\\G)", + "patterns": [ + { + "begin": "(?i)\\G(@)[\\w-]+", + "beginCaptures": { + "0": { + "name": "keyword.control.at-rule.css" + }, + "1": { + "name": "punctuation.definition.keyword.css" + } + }, + "end": "(?=\\s*[{;])", + "name": "meta.at-rule.header.css" + }, + { + "begin": "{", + "beginCaptures": { + "0": { + "name": "punctuation.section.begin.bracket.curly.css" + } + }, + "end": "}", + "endCaptures": { + "0": { + "name": "punctuation.section.end.bracket.curly.css" + } + }, + "name": "meta.at-rule.body.css", + "patterns": [ + { + "include": "$self" + } + ] + } + ] } ] }, @@ -1411,7 +1450,7 @@ "name": "invalid.illegal.colon.css" } }, - "match": "(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|disabled|empty|enabled|first\n | (?:first|last|only)-(?:child|of-type)|focus|focus-within|fullscreen|host|hover\n | in-range|indeterminate|invalid|left|link|optional|out-of-range\n | read-only|read-write|required|right|root|scope|target|unresolved\n | valid|visited\n)(?![\\w-]|\\s*[;}])", + "match": "(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|defined|disabled|empty|enabled|first\n | (?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within\n | fullscreen|host|hover|in-range|indeterminate|invalid|left|link\n | optional|out-of-range|placeholder-shown|read-only|read-write\n | required|right|root|scope|target|unresolved\n | valid|visited\n)(?![\\w-]|\\s*[;}])", "name": "entity.other.attribute-name.pseudo-class.css" }, "pseudo-elements": { diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json index 397a5a35a09..406b25c97d2 100644 --- a/extensions/emmet/package.json +++ b/extensions/emmet/package.json @@ -449,6 +449,6 @@ "image-size": "^0.5.2", "vscode-emmet-helper": "^1.2.10", "vscode-languageserver-types": "^3.5.0", - "vscode-nls": "3.2.1" + "vscode-nls": "3.2.4" } } diff --git a/extensions/emmet/src/balance.ts b/extensions/emmet/src/balance.ts index 5e323f29e22..4687b734524 100644 --- a/extensions/emmet/src/balance.ts +++ b/extensions/emmet/src/balance.ts @@ -61,7 +61,7 @@ function balance(out: boolean) { } function getRangeToBalanceOut(document: vscode.TextDocument, selection: vscode.Selection, rootNode: HtmlNode): vscode.Selection { - let nodeToBalance = getHtmlNode(document, rootNode, selection.start); + let nodeToBalance = getHtmlNode(document, rootNode, selection.start, false); if (!nodeToBalance) { return selection; } diff --git a/extensions/emmet/src/mergeLines.ts b/extensions/emmet/src/mergeLines.ts index 848966de4d1..cebcea3010f 100644 --- a/extensions/emmet/src/mergeLines.ts +++ b/extensions/emmet/src/mergeLines.ts @@ -34,7 +34,7 @@ function getRangesToReplace(document: vscode.TextDocument, selection: vscode.Sel let endNodeToUpdate: Node | null; if (selection.isEmpty) { - startNodeToUpdate = endNodeToUpdate = getNode(rootNode, selection.start); + startNodeToUpdate = endNodeToUpdate = getNode(rootNode, selection.start, true); } else { startNodeToUpdate = getNode(rootNode, selection.start, true); endNodeToUpdate = getNode(rootNode, selection.end, true); diff --git a/extensions/emmet/src/removeTag.ts b/extensions/emmet/src/removeTag.ts index 0ea6e4dde96..9209a6d75e8 100644 --- a/extensions/emmet/src/removeTag.ts +++ b/extensions/emmet/src/removeTag.ts @@ -38,7 +38,7 @@ export function removeTag() { function getRangeToRemove(editor: vscode.TextEditor, rootNode: HtmlNode, selection: vscode.Selection, indentInSpaces: string): vscode.Range[] { - let nodeToUpdate = getHtmlNode(editor.document, rootNode, selection.start); + let nodeToUpdate = getHtmlNode(editor.document, rootNode, selection.start, true); if (!nodeToUpdate) { return []; } diff --git a/extensions/emmet/src/selectItemHTML.ts b/extensions/emmet/src/selectItemHTML.ts index d5dbbf33d05..6fe1825fd87 100644 --- a/extensions/emmet/src/selectItemHTML.ts +++ b/extensions/emmet/src/selectItemHTML.ts @@ -8,7 +8,7 @@ import { getDeepestNode, findNextWord, findPrevWord, getHtmlNode } from './util' import { HtmlNode } from 'EmmetNode'; export function nextItemHTML(selectionStart: vscode.Position, selectionEnd: vscode.Position, editor: vscode.TextEditor, rootNode: HtmlNode): vscode.Selection | undefined { - let currentNode = getHtmlNode(editor.document, rootNode, selectionEnd); + let currentNode = getHtmlNode(editor.document, rootNode, selectionEnd, false); let nextNode: HtmlNode | undefined = undefined; if (!currentNode) { @@ -31,7 +31,7 @@ export function nextItemHTML(selectionStart: vscode.Position, selectionEnd: vsco // Get the first child of current node which is right after the cursor and is not a comment nextNode = currentNode.firstChild; - while (nextNode && (selectionEnd.isAfterOrEqual(nextNode.start) || nextNode.type === 'comment')) { + while (nextNode && (selectionEnd.isAfterOrEqual(nextNode.end) || nextNode.type === 'comment')) { nextNode = nextNode.nextSibling; } } @@ -54,7 +54,7 @@ export function nextItemHTML(selectionStart: vscode.Position, selectionEnd: vsco } export function prevItemHTML(selectionStart: vscode.Position, selectionEnd: vscode.Position, editor: vscode.TextEditor, rootNode: HtmlNode): vscode.Selection | undefined { - let currentNode = getHtmlNode(editor.document, rootNode, selectionStart); + let currentNode = getHtmlNode(editor.document, rootNode, selectionStart, false); let prevNode: HtmlNode | undefined = undefined; if (!currentNode) { @@ -63,7 +63,7 @@ export function prevItemHTML(selectionStart: vscode.Position, selectionEnd: vsco if (currentNode.type !== 'comment' && selectionStart.translate(0, -1).isAfter(currentNode.open.start)) { - if (selectionStart.isBefore(currentNode.open.end) || !currentNode.firstChild) { + if (selectionStart.isBefore(currentNode.open.end) || !currentNode.firstChild || selectionEnd.isBeforeOrEqual(currentNode.firstChild.start)) { prevNode = currentNode; } else { // Select the child that appears just before the cursor and is not a comment diff --git a/extensions/emmet/src/selectItemStylesheet.ts b/extensions/emmet/src/selectItemStylesheet.ts index 3a63a8cb79f..29df659c564 100644 --- a/extensions/emmet/src/selectItemStylesheet.ts +++ b/extensions/emmet/src/selectItemStylesheet.ts @@ -51,7 +51,7 @@ export function nextItemStylesheet(startOffset: vscode.Position, endOffset: vsco } export function prevItemStylesheet(startOffset: vscode.Position, endOffset: vscode.Position, editor: vscode.TextEditor, rootNode: CssNode): vscode.Selection | undefined { - let currentNode = getNode(rootNode, startOffset); + let currentNode = getNode(rootNode, startOffset, false); if (!currentNode) { currentNode = rootNode; } diff --git a/extensions/emmet/src/splitJoinTag.ts b/extensions/emmet/src/splitJoinTag.ts index c437d5d14f3..a5f1d255c85 100644 --- a/extensions/emmet/src/splitJoinTag.ts +++ b/extensions/emmet/src/splitJoinTag.ts @@ -20,7 +20,7 @@ export function splitJoinTag() { return editor.edit(editBuilder => { editor.selections.reverse().forEach(selection => { - let nodeToUpdate = getHtmlNode(editor.document, rootNode, selection.start); + let nodeToUpdate = getHtmlNode(editor.document, rootNode, selection.start, true); if (nodeToUpdate) { let textEdit = getRangesToReplace(editor.document, nodeToUpdate); editBuilder.replace(textEdit.range, textEdit.newText); diff --git a/extensions/emmet/src/test/editPointSelectItemBalance.test.ts b/extensions/emmet/src/test/editPointSelectItemBalance.test.ts index a9f25685b91..f05469ab440 100644 --- a/extensions/emmet/src/test/editPointSelectItemBalance.test.ts +++ b/extensions/emmet/src/test/editPointSelectItemBalance.test.ts @@ -113,6 +113,22 @@ suite('Tests for Next/Previous Select/Edit point and Balance actions', () => { }); }); + test('Emmet Select Next/Prev item at boundary', function(): any { + return withRandomFileEditor(htmlContents, '.html', (editor, doc) => { + editor.selections = [new Selection(4, 1, 4, 1)]; + + fetchSelectItem('next'); + testSelection(editor.selection, 2, 4, 6); + + editor.selections = [new Selection(4, 1, 4, 1)]; + + fetchSelectItem('prev'); + testSelection(editor.selection, 1, 3, 5); + + return Promise.resolve(); + }); + }); + test('Emmet Next/Prev Item in html template', function (): any { const templateContents = ` + + + + \ No newline at end of file diff --git a/test/tree/server.js b/test/tree/server.js new file mode 100644 index 00000000000..2a931b51727 --- /dev/null +++ b/test/tree/server.js @@ -0,0 +1,39 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +const fs = require('mz/fs'); +const path = require('path'); +const Koa = require('koa'); +const _ = require('koa-route'); +const serve = require('koa-static'); +const mount = require('koa-mount'); + +const app = new Koa(); +const root = path.dirname(path.dirname(__dirname)); + +async function getTree(fsPath, level) { + const element = path.basename(fsPath); + const stat = await fs.stat(fsPath); + + if (!stat.isDirectory() || element === '.git' || element === '.build' || level >= 3) { + return { element }; + } + + const childNames = await fs.readdir(fsPath); + const children = await Promise.all(childNames.map(async childName => await getTree(path.join(fsPath, childName), level + 1))); + return { element, collapsed: false, children }; +} + +app.use(serve('public')); +app.use(mount('/static', serve('../../out'))); +app.use(_.get('/api/ls', async ctx => { + const relativePath = ctx.query.path; + const absolutePath = path.join(root, relativePath); + + ctx.body = await getTree(absolutePath, 0); +})) + +app.listen(3000); +console.log('http://localhost:3000'); \ No newline at end of file diff --git a/test/tree/yarn.lock b/test/tree/yarn.lock new file mode 100644 index 00000000000..8ed55756e19 --- /dev/null +++ b/test/tree/yarn.lock @@ -0,0 +1,290 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +accepts@^1.2.2: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +any-promise@^1.0.0, any-promise@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +content-disposition@~0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +cookies@~0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.7.1.tgz#7c8a615f5481c61ab9f16c833731bcb8f663b99b" + dependencies: + depd "~1.1.1" + keygrip "~1.0.2" + +debug@*, debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +debug@^2.6.1: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@^1.1.0, depd@~1.1.1, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +destroy@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +error-inject@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" + +escape-html@~1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +fresh@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +http-assert@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.3.0.tgz#a31a5cf88c873ecbb5796907d4d6f132e8c01e4a" + dependencies: + deep-equal "~1.0.1" + http-errors "~1.6.1" + +http-errors@^1.2.8, http-errors@^1.6.3, http-errors@~1.6.1, http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +is-generator-function@^1.0.3: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +keygrip@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.0.2.tgz#ad3297c557069dea8bcfe7a4fa491b75c5ddeb91" + +koa-compose@^3.0.0, koa-compose@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7" + dependencies: + any-promise "^1.1.0" + +koa-compose@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" + +koa-convert@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0" + dependencies: + co "^4.6.0" + koa-compose "^3.0.0" + +koa-is-json@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14" + +koa-mount@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/koa-mount/-/koa-mount-3.0.0.tgz#08cab3b83d31442ed8b7e75c54b1abeb922ec197" + dependencies: + debug "^2.6.1" + koa-compose "^3.2.1" + +koa-route@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/koa-route/-/koa-route-3.2.0.tgz#76298b99a6bcfa9e38cab6fe5c79a8733e758bce" + dependencies: + debug "*" + methods "~1.1.0" + path-to-regexp "^1.2.0" + +koa-send@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/koa-send/-/koa-send-5.0.0.tgz#5e8441e07ef55737734d7ced25b842e50646e7eb" + dependencies: + debug "^3.1.0" + http-errors "^1.6.3" + mz "^2.7.0" + resolve-path "^1.4.0" + +koa-static@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" + dependencies: + debug "^3.1.0" + koa-send "^5.0.0" + +koa@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.5.1.tgz#79f8b95f8d72d04fe9a58a8da5ebd6d341103f9c" + dependencies: + accepts "^1.2.2" + content-disposition "~0.5.0" + content-type "^1.0.0" + cookies "~0.7.0" + debug "*" + delegates "^1.0.0" + depd "^1.1.0" + destroy "^1.0.3" + error-inject "~1.0.0" + escape-html "~1.0.1" + fresh "^0.5.2" + http-assert "^1.1.0" + http-errors "^1.2.8" + is-generator-function "^1.0.3" + koa-compose "^4.0.0" + koa-convert "^1.2.0" + koa-is-json "^1.0.0" + mime-types "^2.0.7" + on-finished "^2.1.0" + only "0.0.2" + parseurl "^1.3.0" + statuses "^1.2.0" + type-is "^1.5.5" + vary "^1.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +methods@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + +mime-types@^2.0.7, mime-types@~2.1.18: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +on-finished@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +only@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" + +parseurl@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +path-is-absolute@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-to-regexp@^1.2.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +resolve-path@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" + dependencies: + http-errors "~1.6.2" + path-is-absolute "1.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +"statuses@>= 1.4.0 < 2", statuses@^1.2.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + dependencies: + any-promise "^1.0.0" + +type-is@^1.5.5: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +vary@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" diff --git a/yarn.lock b/yarn.lock index 3c5efb1299a..1ac2e5486b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3974,9 +3974,9 @@ node-abi@^2.2.0: dependencies: semver "^5.4.1" -node-pty@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.7.5.tgz#dd7fa8df90a5bf7c5f5273ec5aeecabcbfbc921f" +node-pty@0.7.6: + version "0.7.6" + resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.7.6.tgz#bff6148c9c5836ca7e73c7aaaec067dcbdac2f7b" dependencies: nan "2.10.0" @@ -5913,9 +5913,9 @@ typescript-formatter@7.1.0: commandpost "^1.0.0" editorconfig "^0.15.0" -typescript@2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.1.tgz#fdb19d2c67a15d11995fd15640e373e09ab09961" +typescript@2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" typescript@^2.6.2: version "2.6.2" @@ -6210,9 +6210,9 @@ vscode-chokidar@1.6.2: optionalDependencies: vscode-fsevents "0.3.8" -vscode-debugprotocol@1.28.0: - version "1.28.0" - resolved "https://registry.yarnpkg.com/vscode-debugprotocol/-/vscode-debugprotocol-1.28.0.tgz#b9fb97c3fb2dadbec78e5c1619ff12bf741ce406" +vscode-debugprotocol@1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/vscode-debugprotocol/-/vscode-debugprotocol-1.30.0.tgz#ece6d8559733e87bc7a2147b385899777a92af69" vscode-fsevents@0.3.8: version "0.3.8" @@ -6256,9 +6256,9 @@ vscode-textmate@^4.0.1: dependencies: oniguruma "^7.0.0" -vscode-xterm@3.5.0-beta17: - version "3.5.0-beta17" - resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.5.0-beta17.tgz#9a7dd13cdd9a45257aacb815501f71ed788c2e48" +vscode-xterm@3.6.0-beta1: + version "3.6.0-beta1" + resolved "https://registry.yarnpkg.com/vscode-xterm/-/vscode-xterm-3.6.0-beta1.tgz#6ce8b79d33f7506ac3571d92c15f9d65e8b856ca" vso-node-api@^6.1.2-preview: version "6.1.2-preview"